Finish the spider sprites and the explosion sprites. Remove "and" masking from the spider and scorpion sprites because they will be drawn first and will not overlap with anything on the foreground. Split the sprite.s file into a series of smaller files for each type of sprite. Add a file to describe the overall plan for the design of the sprites.

This commit is contained in:
Jeremy Rand 2020-07-02 22:57:52 -04:00
parent e7ca4d4624
commit 598934446b
15 changed files with 9758 additions and 7273 deletions

View File

@ -63,8 +63,18 @@
9D1716A42491C49300C83148 /* system601.2mg */ = {isa = PBXFileReference; lastKnownFileType = file; path = system601.2mg; sourceTree = "<group>"; };
9D1716A62491C49300C83148 /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; path = tail.mk; sourceTree = "<group>"; };
9D1716A92491C49300C83148 /* BuGS.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = BuGS.xcscheme; path = ../../BuGS.xcodeproj/xcshareddata/xcschemes/BuGS.xcscheme; sourceTree = "<group>"; };
9D3396F424AECB1D003222B3 /* explosions.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = explosions.s; sourceTree = "<group>"; };
9D3396F524AECBB1003222B3 /* spiders.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = spiders.s; sourceTree = "<group>"; };
9D3396F624AECC40003222B3 /* scorpions.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = scorpions.s; sourceTree = "<group>"; };
9D3396F724AECCAC003222B3 /* scores.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = scores.s; sourceTree = "<group>"; };
9D3396F824AECD11003222B3 /* fleas.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = fleas.s; sourceTree = "<group>"; };
9D3396F924AECD7A003222B3 /* numbers.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = numbers.s; sourceTree = "<group>"; };
9D3396FA24AECDE9003222B3 /* solid.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = solid.s; sourceTree = "<group>"; };
9D3396FB24AECF7C003222B3 /* symbols.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = symbols.s; sourceTree = "<group>"; };
9D3396FC24AECFBB003222B3 /* letters.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = letters.s; sourceTree = "<group>"; };
9D3396FD24AECFF5003222B3 /* mushrooms.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = mushrooms.s; sourceTree = "<group>"; };
9D3396FF24AED09D003222B3 /* sprites.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = sprites.md; sourceTree = "<group>"; };
9D62AF3B249871A300348F45 /* colour.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = colour.s; sourceTree = "<group>"; };
9D62AF3C24994B1600348F45 /* sprites.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = sprites.s; sourceTree = "<group>"; };
9D62AF3E2499660100348F45 /* local.macros */ = {isa = PBXFileReference; lastKnownFileType = text; path = local.macros; sourceTree = "<group>"; };
9D62AF3F2499CD1E00348F45 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
9D62AF402499CD3A00348F45 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@ -111,7 +121,7 @@
9D8FFC602491CA28005C9327 /* game.s */,
9D8FFC612491CAF0005C9327 /* game.h */,
9D62AF3B249871A300348F45 /* colour.s */,
9D62AF3C24994B1600348F45 /* sprites.s */,
9D3396F324AECACC003222B3 /* sprites */,
9D62AF3E2499660100348F45 /* local.macros */,
9D1716912491C49300C83148 /* main.rez */,
9D1716932491C49300C83148 /* Makefile */,
@ -145,6 +155,24 @@
path = "Supporting Files";
sourceTree = "<group>";
};
9D3396F324AECACC003222B3 /* sprites */ = {
isa = PBXGroup;
children = (
9D3396FF24AED09D003222B3 /* sprites.md */,
9D3396F424AECB1D003222B3 /* explosions.s */,
9D3396F524AECBB1003222B3 /* spiders.s */,
9D3396F624AECC40003222B3 /* scorpions.s */,
9D3396F724AECCAC003222B3 /* scores.s */,
9D3396F824AECD11003222B3 /* fleas.s */,
9D3396F924AECD7A003222B3 /* numbers.s */,
9D3396FA24AECDE9003222B3 /* solid.s */,
9D3396FB24AECF7C003222B3 /* symbols.s */,
9D3396FC24AECFBB003222B3 /* letters.s */,
9D3396FD24AECFF5003222B3 /* mushrooms.s */,
);
path = sprites;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXLegacyTarget section */

View File

@ -30,7 +30,7 @@ TARGETTYPE=desktop
# Add any other directories where you are putting C or assembly source
# files to this list:
# SRCDIRS+=
SRCDIRS+=sprites
# If you put your main entry point for your project in a file called main.c
# Then you don't need to change this value. If you want to call your entry

View File

@ -264,6 +264,54 @@ game start
ldx #$523b
jsl spider2s
ldx #$524b
jsl spider3
ldx #$525b
jsl spider3s
ldx #$526b
jsl spider4
ldx #$527b
jsl spider4s
ldx #$528b
jsl spider5
ldx #$529b
jsl spider5s
ldx #$5c0b
jsl spider6
ldx #$5c1b
jsl spider6s
ldx #$5c2b
jsl spider7
ldx #$5c3b
jsl spider7s
ldx #$5c43
jsl explosion1
ldx #$5c4b
jsl explosion2
ldx #$5c53
jsl explosion3
ldx #$5c5b
jsl explosion4
ldx #$5c63
jsl explosion5
ldx #$5c6b
jsl explosion6
jsl waitForKey
rtl

File diff suppressed because it is too large Load Diff

664
BuGS/sprites/explosions.s Normal file
View File

@ -0,0 +1,664 @@
;
; explosions.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy explosions.macros
keep explosions
explosions start
explosion1 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ..RR|.R..
; .OGR|G...
; .GGG|GGR.
; RGGG|GGO.
; RGG.|GGG.
; OGGG|GGOG
; .OGG|RGO.
; .ROR|.R.G
;
lda $1,s
and #$00ff
ora #$4400
sta $1,s
lda $3,s
and #$fff0
ora #$0004
sta $3,s
lda $a1,s
and #$00f0
ora #$c408
sta $a1,s
lda $a3,s
; and #$ff0f not necessary with pure green
ora #$00c0
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
; and #$ff0f not necessary with pure green
ora #$cc0c
sta $1,s
lda $3,s
and #$0f00
ora #$40cc
sta $3,s
lda #$cc4c
sta $a1,s
lda $a3,s
and #$0f00
ora #$80cc
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$0f00
ora #$c04c
sta $1,s
lda $3,s
; and #$fff0 not necessary with pure green
ora #$c0cc
sta $3,s
lda #$cc8c
sta $a1,s
lda #$8ccc
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$00f0
ora #$cc08
sta $1,s
lda $3,s
and #$0f00
ora #$804c
sta $3,s
lda $a1,s
and #$00f0
ora #$8404
sta $a1,s
lda $a3,s
and #$f0f0
ora #$0c04
sta $a3,s
_spriteFooter
rtl
explosion2 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ..GR|G.R.
; .GGG|GGRG
; OGGG|GGGO
; OGGO|OGGG
; OGGO|OGGO
; OGGG|GGGG
; OGGR|GGGO
; .G.R|.G..
;
lda $1,s
and #$00ff
ora #$c400
sta $1,s
lda $3,s
and #$0f0f
ora #$40c0
sta $3,s
lda $a1,s
; and #$00f0 not necessary with pure green
ora #$cc0c
sta $a1,s
lda #$4ccc
sta $a3,s
tsc
adc #$144
tcs
pea $c8cc
pea $cc8c
adc #$a0
tcs
pea $cc8c
pea $c88c
adc #$a0
tcs
pea $c88c
pea $c88c
adc #$a0
tcs
pea $cccc
pea $cc8c
adc #$a0
tcs
pea $c8cc
pea $c48c
lda $a1,s
and #$f0f0
ora #$040c
sta $a1,s
lda $a3,s
; and #$f0f0 not necessary for pure green
ora #$000c
sta $a3,s
_spriteFooter
rtl
explosion3 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; .GOG|RG..
; G.GG|GGGR
; GGGO|GOG.
; RGO.|.GGG
; GG..|.G..
; GRRG|RGGG
; RGGG|GGG.
; .OG.|.G.O
lda $1,s
and #$00f0
ora #$8c0c
sta $1,s
lda $3,s
and #$ff00
ora #$004c
sta $3,s
lda $a1,s
; and #$000f not necessary with pure green
ora #$ccc0
sta $a1,s
lda #$c4cc
sta $a3,s
tsc
adc #$140
tcs
lda #$c8cc
sta $1,s
lda $3,s
and #$0f00
ora #$c0c8
sta $3,s
lda $a1,s
and #$0f00
ora #$804c
sta $a1,s
lda $a3,s
; and #$00f0 not necessary with pure green
ora #$cc0c
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
; and #$ff00 not necessary with pure green
ora #$00cc
sta $1,s
lda $3,s
; and #$fff0 not necessary with pure green
ora #$000c
sta $3,s
lda #$4cc4
sta $a1,s
lda #$cc4c
sta $a3,s
tsc
adc #$140
tcs
lda #$cc4c
sta $1,s
lda $3,s
; and #$0f00 not necessary with pure green
ora #$c0cc
sta $3,s
lda $a1,s
and #$0ff0
ora #$c008
sta $a1,s
lda $a3,s
and #$f0f0
ora #$080c
sta $a3,s
_spriteFooter
rtl
explosion4 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; G.GO|.R.G
; .O.G|G.G.
; RG.R|.O.R
; G.R.|..G.
; GG..|...O
; .R.R|.RGO
; O.R.|R.GR
; RG.G|GGO.
;
lda $1,s
and #$000f
ora #$c8c0
sta $1,s
lda $3,s
and #$f0f0
ora #$0c04
sta $3,s
lda $a1,s
and #$f0f0
ora #$0c08
sta $a1,s
lda $a3,s
; and #$0f0f not necessary with pure green
ora #$c0c0
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$f000
ora #$044c
sta $1,s
lda $3,s
and #$f0f0
ora #$0408
sta $3,s
lda $a1,s
and #$0f0f
ora #$40c0
sta $a1,s
lda $a3,s
; and #$0fff not necessary with pure green
ora #$c000
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
; and #$ff00 not necessary with pure green
ora #$00cc
sta $1,s
lda $3,s
and #$f0ff
ora #$0800
sta $3,s
lda $a1,s
and #$f0f0
ora #$0404
sta $a1,s
lda $a3,s
and #$00f0
ora #$c804
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$0f0f
ora #$4080
sta $1,s
lda $3,s
and #$000f
ora #$c440
sta $3,s
lda $a1,s
and #$f000
ora #$0c4c
sta $a1,s
lda $a3,s
and #$0f00
ora #$80cc
sta $a3,s
_spriteFooter
rtl
explosion5 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; .G..|G.G.
; .ROG|.RG.
; GO..|G..O
; .R..|..R.
; G.R.|.R.R
; .O.G|.GO.
; RGR.|..G.
; .G.G|OR..
;
lda $1,s
; and #$000f not necessary with pure green
ora #$000c
sta $1,s
lda $3,s
; and #$f0f0 not necessary with pure green
ora #$c0c0
sta $3,s
lda $a1,s
and #$00f0
ora #$8c04
sta $a1,s
lda $a3,s
and #$0ff0
ora #$c004
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$ff00
ora #$00c8
sta $1,s
lda $3,s
and #$f00f
ora #$08c0
sta $3,s
lda $a1,s
and #$fff0
ora #$0004
sta $a1,s
lda $a3,s
and #$0fff
ora #$4000
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$0f0f
ora #$40c0
sta $1,s
lda $3,s
and #$f0f0
ora #$0404
sta $3,s
lda $a1,s
and #$f0f0
ora #$0c08
sta $a1,s
lda $a3,s
and #$0ff0
ora #$800c
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$0f00
ora #$404c
sta $1,s
lda $3,s
; and #$0fff not necessary with pure green
ora #$c000
sta $3,s
lda $a1,s
; and #$f0f0 not necessary with pure green
ora #$0c0c
sta $a1,s
lda $a3,s
and #$ff00
ora #$0084
sta $a3,s
_spriteFooter
rtl
explosion6 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; .O.G|..G.
; R.G.|OR.R
; ....|....
; G...|..G.
; .O..|...G
; .O..|..O.
; R.G.|...G
; .O.O|R.R.
;
lda $1,s
and #$f0f0
ora #$0c08
sta $1,s
lda $3,s
; and #$0fff not necessary with pure green
ora #$c000
sta $3,s
lda $a1,s
and #$0f0f
ora #$c040
sta $a1,s
lda $a3,s
and #$f000
ora #$0484
sta $a3,s
tsc
adc #$140
tcs
lda $a1,s
; and #$ff0f not necessary with pure green
ora #$00c0
sta $a1,s
lda $a3,s
; and #$0fff not necessary with pure green
ora #$c000
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$fff0
ora #$0008
sta $1,s
lda $3,s
; and #$f0ff not necessary with pure green
ora #$0c00
sta $3,s
lda $a1,s
and #$fff0
ora #$0008
sta $a1,s
lda $a3,s
and #$0fff
ora #$8000
sta $a3,s
tsc
adc #$140
tcs
lda $1,s
and #$0f0f
ora #$c040
sta $1,s
lda $3,s
; and #$f0ff not necessary with pure green
ora #$0c00
sta $3,s
lda $a1,s
and #$f0f0
ora #$0808
sta $a1,s
lda $a3,s
and #$0f0f
ora #$4040
sta $a3,s
_spriteFooter
rtl
backupStack dc i2'0'
end

465
BuGS/sprites/fleas.s Normal file
View File

@ -0,0 +1,465 @@
;
; fleas.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy fleas.macros
keep fleas
fleas start
flea1 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|..OO|O...
; ....|.ROO|OO..
; ....|RROO|OOO.
; ...O|OOOO|OOOO
; ...O|OOG.|GOOO
; ....|..G.|G.OO
; ....|..G.|G.G.
; ....|.G.G|...G
;
lda $1,s
and #$00ff
ora #$8800
sta $1,s
lda $3,s
and #$ff0f
ora #$0080
sta $3,s
lda $a1,s
and #$00f0
ora #$8804
sta $a1,s
lda $a3,s
and #$ff00
ora #$0088
sta $a3,s
tsc
adc #$0142
tcs
pea $8844
lda $3,s
and #$0f00
ora #$8088
sta $3,s
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
tsc
adc #$00a4
tcs
pea $8888
pea $8888
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
lda $a1,s
and #$0f00
ora #$c088
sta $a1,s
tsc
adc #$00a4
tcs
pea $88c8
lda $9f,s
ora #$c000
sta $9f,s
lda $a1,s
and #$000f
ora #$88c0
sta $a1,s
tsc
adc #$013e
tcs
lda $1,s
ora #$c000
sta $1,s
lda $3,s
ora #$c0c0
sta $3,s
lda $a1,s
ora #$0c0c
sta $a1,s
lda $a3,s
ora #$0c00
sta $a3,s
_spriteFooter
rtl
flea2 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|..OO|O...
; ....|.ROO|OO..
; ....|RROO|OOO.
; ...O|OOOO|OOOO
; ...O|OO.G|.OOO
; ....|..G.|.GOO
; ....|.G..|G..G
; ....|.G.G|..G.
;
lda $1,s
and #$00ff
ora #$8800
sta $1,s
lda $3,s
and #$ff0f
ora #$0080
sta $3,s
lda $a1,s
and #$00f0
ora #$8804
sta $a1,s
lda $a3,s
and #$ff00
ora #$0088
sta $a3,s
tsc
adc #$0142
tcs
pea $8844
lda $3,s
and #$0f00
ora #$8088
sta $3,s
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
tsc
adc #$00a4
tcs
pea $8888
pea $8888
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
lda $a1,s
and #$f000
ora #$0c88
sta $a1,s
lda $a3,s
and #$00f0
ora #$8808
sta $a3,s
tsc
adc #$0140
tcs
lda $1,s
ora #$c000
sta $1,s
lda $3,s
and #$00f0
ora #$880c
sta $3,s
tsc
adc #$00a0
tcs
lda $1,s
ora #$000c
sta $1,s
lda $3,s
ora #$0cc0
sta $3,s
lda $a1,s
ora #$0c0c
sta $a1,s
lda $a3,s
ora #$c000
sta $a3,s
_spriteFooter
rtl
flea3 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|..OO|O...
; ....|.ROO|OO..
; ....|RROO|OOO.
; ...O|OOOO|OOOO
; ...O|OO.G|.OOO
; ....|..G.|G.OO
; ....|..G.|.G.G
; ....|...G|..G.
;
lda $1,s
and #$00ff
ora #$8800
sta $1,s
lda $3,s
and #$ff0f
ora #$0080
sta $3,s
lda $a1,s
and #$00f0
ora #$8804
sta $a1,s
lda $a3,s
and #$ff00
ora #$0088
sta $a3,s
tsc
adc #$0142
tcs
pea $8844
lda $3,s
and #$0f00
ora #$8088
sta $3,s
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
tsc
adc #$00a4
tcs
pea $8888
pea $8888
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
lda $a1,s
and #$f000
ora #$0c88
sta $a1,s
lda $a3,s
and #$00f0
ora #$8808
sta $a3,s
tsc
adc #$0140
tcs
lda $1,s
ora #$c000
sta $1,s
lda $3,s
and #$000f
ora #$88c0
sta $3,s
tsc
adc #$00a0
tcs
lda $1,s
ora #$c000
sta $1,s
lda $3,s
ora #$0c0c
sta $3,s
lda $a1,s
ora #$0c00
sta $a1,s
lda $a3,s
ora #$c000
sta $a3,s
_spriteFooter
rtl
flea4 entry
dex
dex
dex
dex
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|..OO|O...
; ....|.ROO|OO..
; ....|RROO|OOO.
; ...O|OOOO|OOOO
; ...O|OOG.|GOOO
; ....|..G.|G.OO
; ....|..G.|.G.G
; ....|...G|.G.G
;
lda $1,s
and #$00ff
ora #$8800
sta $1,s
lda $3,s
and #$ff0f
ora #$0080
sta $3,s
lda $a1,s
and #$00f0
ora #$8804
sta $a1,s
lda $a3,s
and #$ff00
ora #$0088
sta $a3,s
tsc
adc #$0142
tcs
pea $8844
lda $3,s
and #$0f00
ora #$8088
sta $3,s
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
tsc
adc #$00a4
tcs
pea $8888
pea $8888
lda $9f,s
and #$f0ff
ora #$0800
sta $9f,s
lda $a1,s
and #$0f00
ora #$c088
sta $a1,s
tsc
adc #$00a4
tcs
pea $88c8
lda $9f,s
ora #$c000
sta $9f,s
lda $a1,s
and #$000f
ora #$88c0
sta $a1,s
tsc
adc #$013e
tcs
lda $1,s
ora #$c000
sta $1,s
lda $3,s
ora #$0c0c
sta $3,s
lda $a1,s
ora #$0c00
sta $a1,s
lda $a3,s
ora #$0c0c
sta $a3,s
_spriteFooter
rtl
backupStack dc i2'0'
end

1614
BuGS/sprites/letters.s Normal file

File diff suppressed because it is too large Load Diff

529
BuGS/sprites/mushrooms.s Normal file
View File

@ -0,0 +1,529 @@
;
; mushrooms.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy mushrooms.macros
keep mushrooms
mushrooms start
mushroom1 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x2)
; #$0022 - Red, Red, Black, Black (x2)
; #$1102 - Black, Red, Green, Green (x1)
; #$2011 - Green, Green, Red, Black (x1)
; #$1121 - Red, Green, Green, Green (x2)
; #$1211 - Green, Green, Green, Red (x2)
; #$2222 - Red, Red, Red, Red (x2)
; #$2100 - Black, Black, Red, Green (x2)
; #$0012 - Green, Red, Black, Black (x2)
;
pea $0022
pea $2200
adc #$00a0
tcs
pea $2011
pea $1102
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $2222
pea $2222
adc #$00a0
tcs
pea $0012
pea $2100
adc #$00a0
tcs
pea $0012
pea $2100
adc #$00a0
tcs
pea $0022
pea $2200
_spriteFooter
rtl
mushroom2 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$1102 - Black, Red, Green, Green (x1)
; #$2011 - Green, Green, Red, Black (x1)
; #$1121 - Red, Green, Green, Green (x2)
; #$1211 - Green, Green, Green, Red (x2)
; #$2220 - Red, Black, Red, Red (x1)
; #$2222 - Red, Red, Red, Red (x1)
; #$2100 - Black, Black, Red, Green (x1)
; #$0012 - Green, Red, Black, Black (x1)
; #$0100 - Black, Black, Black, Green (x1)
; #$0000 - Black, Black, Black, Black (x3)
;
pea $0022
pea $2200
adc #$00a0
tcs
pea $2011
pea $1102
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $2222
pea $2220
adc #$00a0
tcs
pea $0012
pea $2100
adc #$00a0
tcs
pea $0000
pea $0100
adc #$00a0
tcs
pea $0000
pea $0000
_spriteFooter
rtl
mushroom3 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$1102 - Black, Red, Green, Green (x1)
; #$2011 - Green, Green, Red, Black (x1)
; #$1121 - Red, Green, Green, Green (x2)
; #$1211 - Green, Green, Green, Red (x2)
; #$2020 - Red, Black, Red, Black (x2)
; #$2000 - Black, Black, Red, Black (x1)
; #$0000 - Black, Black, Black, Black (x5)
;
ldx #$0000 ; Black, Black, Black, Black
pea $0022
pea $2200
adc #$00a0
tcs
pea $2011
pea $1102
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $1211
pea $1121
adc #$00a0
tcs
pea $2020
pea $2020
adc #$00a0
tcs
phx
pea $2000
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
mushroom4 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$1102 - Black, Red, Green, Green (x1)
; #$2011 - Green, Green, Red, Black (x1)
; #$1021 - Red, Green, Green, Black (x1)
; #$1211 - Green, Green, Green, Red (x1)
; #$1020 - Red, Black, Green, Black (x1)
; #$1210 - Green, Black, Green, Red (x1)
; #$0000 - Black, Black, Black, Black (x8)
;
ldx #$0000 ; Black, Black, Black, Black
pea $0022
pea $2200
adc #$00a0
tcs
pea $2011
pea $1102
adc #$00a0
tcs
pea $1211
pea $1021
adc #$00a0
tcs
pea $1210
pea $1020
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
poisonedMushroom1 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x2)
; #$0022 - Red, Red, Black, Black (x2)
; #$3302 - Black, Red, Off-white, Off-white (x1)
; #$2033 - Off-white, Off-white, Red, Black (x1)
; #$3323 - Red, Off-white, Off-white, Off-white (x2)
; #$3233 - Off-white, Off-white, Off-white, Red (x2)
; #$2222 - Red, Red, Red, Red (x2)
; #$2300 - Black, Black, Red, Off-white (x2)
; #$0032 - Off-white, Red, Black, Black (x2)
;
pea $0022
pea $2200
adc #$00a0
tcs
pea $2033
pea $3302
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $2222
pea $2222
adc #$00a0
tcs
pea $0032
pea $2300
adc #$00a0
tcs
pea $0032
pea $2300
adc #$00a0
tcs
pea $0022
pea $2200
_spriteFooter
rtl
poisonedMushroom2 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$3302 - Black, Red, Off-white, Off-white (x1)
; #$2033 - Off-white, Off-white, Red, Black (x1)
; #$3323 - Red, Off-white, Off-white, Off-white (x2)
; #$3233 - Off-white, Off-white, Off-white, Red (x2)
; #$2220 - Red, Black, Red, Red (x1)
; #$2222 - Red, Red, Red, Red (x1)
; #$2300 - Black, Black, Red, Off-white (x1)
; #$0032 - Off-white, Red, Black, Black (x1)
; #$0300 - Black, Black, Black, Off-white (x1)
; #$0000 - Black, Black, Black, Black (x3)
;
pea $0022
pea $2200
adc #$00a0
tcs
pea $2033
pea $3302
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $2222
pea $2220
adc #$00a0
tcs
pea $0032
pea $2300
adc #$00a0
tcs
pea $0000
pea $0300
adc #$00a0
tcs
pea $0000
pea $0000
_spriteFooter
rtl
poisonedMushroom3 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$3302 - Black, Red, Off-white, Off-white (x1)
; #$2033 - Off-white, Off-white, Red, Black (x1)
; #$3323 - Red, Off-white, Off-white, Off-white (x2)
; #$3233 - Off-white, Off-white, Off-white, Red (x2)
; #$2020 - Red, Black, Red, Black (x2)
; #$2000 - Black, Black, Red, Black (x1)
; #$0000 - Black, Black, Black, Black (x5)
;
ldx #$0000 ; Black, Black, Black, Black
pea $0022
pea $2200
adc #$00a0
tcs
pea $2033
pea $3302
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $3233
pea $3323
adc #$00a0
tcs
pea $2020
pea $2020
adc #$00a0
tcs
phx
pea $2000
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
poisonedMushroom4 entry
_spriteHeader
; Colours #$2200 - Black, Black, Red, Red (x1)
; #$0022 - Red, Red, Black, Black (x1)
; #$3302 - Black, Red, Off-white, Off-white (x1)
; #$2033 - Off-white, Off-white, Red, Black (x1)
; #$3023 - Red, Off-white, Off-white, Black (x1)
; #$3233 - Off-white, Off-white, Off-white, Red (x1)
; #$3020 - Red, Black, Off-white, Black (x1)
; #$3230 - Off-white, Black, Off-white, Red (x1)
; #$0000 - Black, Black, Black, Black (x8)
;
ldx #$0000 ; Black, Black, Black, Black
pea $0022
pea $2200
adc #$00a0
tcs
pea $2033
pea $3302
adc #$00a0
tcs
pea $3233
pea $3023
adc #$00a0
tcs
pea $3230
pea $3020
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
backupStack dc i2'0'
end

645
BuGS/sprites/numbers.s Normal file
View File

@ -0,0 +1,645 @@
;
; numbers.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy numbers.macros
keep numbers
numbers start
number0 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x2)
; #$0020 - Red, Black, Black, Black (x2)
; #$2200 - Black, Black, Red, Red (x2)
; #$0022 - Red, Red, Black, Black (x4)
; #$2002 - Black, Red, Red, Black (x4)
; #$0002 - Black, Red, Black, Black (x2)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$2002 ; Black, Red, Red, Black
pea $0000
pea $0000
adc #$00a0
tcs
pea $0020
pea $2200
adc #$00a0
tcs
phx
pea $0002
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
pea $0002
phy
adc #$00a0
tcs
pea $0020
pea $2200
_spriteFooter
rtl
number1 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x8)
; #$2200 - Black, Black, Red, Red (x5)
; #$0022 - Red, Red, Black, Black (x1)
; #$2202 - Black, Red, Red, Red (x1)
; #$2222 - Red, Red, Red, Red (x1)
;
ldx #$2200 ; Black, Black, Red, Red
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
pea $2202
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
pea $0022
pea $2222
_spriteFooter
rtl
number2 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x4)
; #$2202 - Black, Red, Red, Red (x2)
; #$0022 - Red, Red, Black, Black (x3)
; #$2002 - Black, Red, Red, Black (x1)
; #$2022 - Red, Red, Red, Black (x3)
; #$2200 - Black, Black, Red, Red (x1)
; #$0020 - Red, Black, Black, Black (x1)
; #$2222 - Red, Red, Red, Red (x1)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phx
pea $2202
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
pea $2022
phy
adc #$00a0
tcs
phx
pea $2200
adc #$00a0
tcs
pea $0020
pea $2202
adc #$00a0
tcs
phy
pea $2022
adc #$00a0
tcs
pea $2022
pea $2222
_spriteFooter
rtl
number3 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x4)
; #$2202 - Black, Red, Red, Red (x2)
; #$2022 - Red, Red, Red, Black (x1)
; #$0022 - Red, Red, Black, Black (x4)
; #$0020 - Red, Black, Black, Black (x1)
; #$0200 - Black, Black, Black, Red (x1)
; #$2200 - Black, Black, Red, Red (x1)
; #$2002 - Black, Red, Red, Black (x2)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
pea $2022
pea $2202
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
pea $0020
pea $0200
adc #$00a0
tcs
phx
pea $2200
adc #$00a0
tcs
pea $2002
phy
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
phx
pea $2202
_spriteFooter
rtl
number4 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x4)
; #$0022 - Red, Red, Black, Black (x7)
; #$0200 - Black, Black, Black, Red (x1)
; #$2200 - Black, Black, Red, Red (x1)
; #$2002 - Black, Red, Red, Black (x1)
; #$2222 - Red, Red, Red, Red (x1)
; #$2022 - Red, Red, Red, Black (x1)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phx
pea $0200
adc #$00a0
tcs
phx
pea $2200
adc #$00a0
tcs
phx
pea $2002
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
pea $2022
pea $2222
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
phx
phy
_spriteFooter
rtl
number5 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x5)
; #$0022 - Red, Red, Black, Black (x5)
; #$2222 - Red, Red, Red, Red (x2)
; #$2002 - Black, Red, Red, Black (x3)
; #$2202 - Black, Red, Red, Red (x1)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phx
pea $2222
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phx
pea $2222
adc #$00a0
tcs
pea $2002
phy
adc #$00a0
tcs
pea $2002
phy
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
phx
pea $2202
_spriteFooter
rtl
number6 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x4)
; #$0022 - Red, Red, Black, Black (x6)
; #$2200 - Black, Black, Red, Red (x1)
; #$2002 - Black, Red, Red, Black (x3)
; #$2222 - Red, Red, Red, Red (x1)
; #$2202 - Black, Red, Red, Red (x1)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phx
pea $2200
adc #$00a0
tcs
phy
pea $2002
adc #$00a0
tcs
phy
phx
adc #$00a0
tcs
phx
pea $2222
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
phx
pea $2202
_spriteFooter
rtl
number7 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x6)
; #$2222 - Red, Red, Red, Red (x1)
; #$2022 - Red, Red, Red, Black (x1)
; #$2002 - Black, Red, Red, Black (x1)
; #$0022 - Red, Red, Black, Black (x2)
; #$0020 - Red, Black, Black, Black (x1)
; #$0200 - Black, Black, Black, Red (x1)
; #$2200 - Black, Black, Red, Red (x3)
;
ldx #$0000 ; Black, Black, Black, Black
ldy #$2200 ; Black, Black, Red, Red
phx
phx
adc #$00a0
tcs
pea $2022
pea $2222
adc #$00a0
tcs
pea $2002
pea $0022
adc #$00a0
tcs
pea $0022
phx
adc #$00a0
tcs
pea $0020
pea $0200
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
phx
phy
_spriteFooter
rtl
number8 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x2)
; #$0020 - Red, Black, Black, Black (x3)
; #$2202 - Black, Red, Red, Red (x3)
; #$0002 - Black, Red, Black, Black (x2)
; #$0022 - Red, Red, Black, Black (x2)
; #$2022 - Red, Red, Red, Black (x2)
; #$2002 - Black, Red, Red, Black (x1)
; #$0220 - Red, Black, Black, Red (x1)
;
ldx #$0020 ; Red, Black, Black, Black
ldy #$2202 ; Black, Red, Red, Red
pea $0000
pea $0000
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
pea $0002
pea $0022
adc #$00a0
tcs
pea $0002
pea $2022
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
pea $2022
pea $0220
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
pea $0022
phy
_spriteFooter
rtl
number9 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x4)
; #$0022 - Red, Red, Black, Black (x4)
; #$2202 - Black, Red, Red, Red (x3)
; #$2002 - Black, Red, Red, Black (x3)
; #$2022 - Red, Red, Red, Black (x1)
; #$0020 - Red, Black, Black, Black (x1)
;
ldx #$0022 ; Red, Red, Black, Black
ldy #$0000 ; Black, Black, Black, Black
phy
phy
adc #$00a0
tcs
phx
pea $2202
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
pea $2002
phx
adc #$00a0
tcs
pea $2022
pea $2202
adc #$00a0
tcs
pea $2002
phy
adc #$00a0
tcs
phx
phy
adc #$00a0
tcs
pea $0020
pea $2202
_spriteFooter
rtl
backupStack dc i2'0'
end

341
BuGS/sprites/scores.s Normal file
View File

@ -0,0 +1,341 @@
;
; scores.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy scores.macros
keep scores
scores start
score300 entry
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|....|....
; ....|....|....
; .OOO|.OOO|.OOO
; ...O|.O.O|.O.O
; .OOO|.O.O|.O.O
; ...O|.O.O|.O.O
; .OOO|.OOO|.OOO
; ....|....|....
;
tsc
adc #$013a
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
lda $a1,s
; and #$f0ff
ora #$0800
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$f0f0
ora #$0808
sta $3,s
lda $5,s
; and #$f0f0
ora #$0808
sta $5,s
lda $a1,s
; and #$f0ff
ora #$0800
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
_spriteFooter
rtl
score600 entry
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|....|....
; ....|....|....
; .OOO|.OOO|.OOO
; .O..|.O.O|.O.O
; .OOO|.O.O|.O.O
; .O.O|.O.O|.O.O
; .OOO|.OOO|.OOO
; ....|....|....
;
tsc
adc #$013a
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
lda $a1,s
; and #$fff0
ora #$0008
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$f0f0
ora #$0808
sta $3,s
lda $5,s
; and #$f0f0
ora #$0808
sta $5,s
lda $a1,s
; and #$f0f0
ora #$0808
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
_spriteFooter
rtl
score900 entry
_spriteHeader
; $c - Green
; $4 - Red
; $8 - Off-white
;
; ....|....|....
; ....|....|....
; .OOO|.OOO|.OOO
; .O.O|.O.O|.O.O
; .OOO|.O.O|.O.O
; ...O|.O.O|.O.O
; .OOO|.OOO|.OOO
; ....|....|....
;
tsc
adc #$013a
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
lda $a1,s
; and #$f0f0
ora #$0808
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$f0f0
ora #$0808
sta $3,s
lda $5,s
; and #$f0f0
ora #$0808
sta $5,s
lda $a1,s
; and #$f0ff
ora #$0800
sta $a1,s
lda $a3,s
; and #$f0f0
ora #$0808
sta $a3,s
lda $a5,s
; and #$f0f0
ora #$0808
sta $a5,s
tsc
adc #$0140
tcs
lda $1,s
; and #$00f0
ora #$8808
sta $1,s
lda $3,s
; and #$00f0
ora #$8808
sta $3,s
lda $5,s
; and #$00f0
ora #$8808
sta $5,s
_spriteFooter
rtl
backupStack dc i2'0'
end

2655
BuGS/sprites/scorpions.s Normal file

File diff suppressed because it is too large Load Diff

242
BuGS/sprites/solid.s Normal file
View File

@ -0,0 +1,242 @@
;
; solid.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy solid.macros
keep solid
solid start
solid0 entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x16)
;
ldx #$0000 ; Black, Black, Black, Black
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
solid1 entry
_spriteHeader
; Colours #$1111 - Green, Green, Green, Green (x16)
;
ldx #$1111 ; Green, Green, Green, Green
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
solid2 entry
_spriteHeader
; Colours #$2222 - Red, Red, Red, Red (x16)
;
ldx #$2222 ; Red, Red, Red, Red
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
solid3 entry
_spriteHeader
; Colours #$3333 - Off-white, Off-white, Off-white, Off-white (x16)
;
ldx #$3333 ; Off-white, Off-white, Off-white, Off-white
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
backupStack dc i2'0'
end

2205
BuGS/sprites/spiders.s Normal file

File diff suppressed because it is too large Load Diff

58
BuGS/sprites/sprites.md Normal file
View File

@ -0,0 +1,58 @@
# Sprites Design
## Performance of Different Stack Ops
Performance of two approaches:
```
ldx #$abcd 3 cycles
phx 4 cycles (per push)
```
versus:
```
pea $abcd 5 cycles
```
When the pattern $abcd appears just once:
* ldx/phx takes 7 cycles
* pea takes 5 cycles (best)
When the pattern $abcd appears twice:
* ldx/phx/phx takes 11 cycles
* pea/pea takes 10 cycles (best)
When the pattern $abcd appears three times:
* ldx/phx/phx/phx takes 15 cycles
* pea/pea/pea takes 15 cycles
When the pattern $abcd appears four times:
* ldx/phx/phx/phx takes 19 cycles (best)
* pea/pea/pea takes 20 cycles
So, if a pattern appears four or more times, it is worth using a register for the pattern. If it appears exactly three times, a register can be used but it buys nothing. If it appears two or fewer times, a register for the pattern should not be used.
## Colours and Layers
Every level has three primary colours which are used for all sprites. Because the GS can have up to 16 colours on a line, we have more colours available in the HW than is required for the game.
Each colour is 4 bits wide. All zeros is always black in all the different palletes for each level. The bottom two bits are used by the "lowest layer" which is drawn first. The bottom layer consists of:
* mushrooms
* numbers
* letters
* symbols
* solid squares (primarily the all black square)
These sprites generally draw first and overwrite what may have been there before. After the background layer is drawn, other things are drawn in this order:
* spiders
* scorpions
* fleas
* scores
* centipede segments
* missle
* player
If that item is exploding, the explosion is also drawn at this time. Because we only have three non-black colours, the bottom two bits of the colour is used for the "background colour". Background sprites only set these bits.
Then, these forground sprites can just set the upper two bits to overwrite the background colour. This turns a load, and, or, store into a load, or, store cycle for each 4 pixels. Spiders and scorpions never overlap with each other so they can avoid the "and" operation. Fleas, scores and centipede segments may overlap with other sprites so they maybe need to perform an and operation to preserve background or other foreground pixels from other sprites.
But there is one more optimization I have made. The majority of foreground sprites are centipede segments and the centipede is mostly green (in the first level colour pallete). This colour is always 11xx. That means to make a foreground pixel green, we only need to set the two high bits of the pixel and that can always be done with just an or operation. If the four pixels consist of only green pixels (one, two, three or four green pixels and no other colours), then that can always be done with just an or operation. No masking is required. Again, centipede segments are mostly green and there tends to be lots of segments so this is a useful optimization.

261
BuGS/sprites/symbols.s Normal file
View File

@ -0,0 +1,261 @@
;
; symbols.s
; BuGS
;
; Created by Jeremy Rand on 2020-07-02.
;Copyright © 2020 Jeremy Rand. All rights reserved.
;
case on
mcopy symbols.macros
keep symbols
symbols start
symbolC entry
_spriteHeader
; Colours #$1100 - Black, Black, Green, Green (x2)
; #$0011 - Green, Green, Black, Black (x2)
; #$0201 - Black, Green, Black, Red (x2)
; #$1020 - Red, Black, Green, Black (x2)
; #$2010 - Green, Black, Red, Black (x4)
; #$0102 - Black, Red, Black, Green (x2)
; #$0100 - Black, Black, Black, Green (x2)
;
ldx #$2010 ; Green, Black, Red, Black
pea $0011
pea $1100
adc #$00a0
tcs
pea $1020
pea $0201
adc #$00a0
tcs
pea $0102
phx
adc #$00a0
tcs
pea $0100
phx
adc #$00a0
tcs
pea $0100
phx
adc #$00a0
tcs
pea $0102
phx
adc #$00a0
tcs
pea $1020
pea $0201
adc #$00a0
tcs
pea $0011
pea $1100
_spriteFooter
rtl
symbolP entry
_spriteHeader
; Colours #$1100 - Black, Black, Green, Green (x2)
; #$0011 - Green, Green, Black, Black (x2)
; #$0201 - Black, Green, Black, Red (x1)
; #$1020 - Red, Black, Green, Black (x1)
; #$2010 - Green, Black, Red, Black (x3)
; #$0102 - Black, Red, Black, Green (x2)
; #$2210 - Green, Black, Red, Red (x1)
; #$0120 - Red, Black, Black, Green (x1)
; #$0100 - Black, Black, Black, Green (x1)
; #$2001 - Black, Green, Red, Black (x1)
; #$1000 - Black, Black, Green, Black (x1)
;
ldx #$2010 ; Green, Black, Red, Black
pea $0011
pea $1100
adc #$00a0
tcs
pea $1020
pea $0201
adc #$00a0
tcs
pea $0102
phx
adc #$00a0
tcs
pea $0102
phx
adc #$00a0
tcs
pea $0120
pea $2210
adc #$00a0
tcs
pea $0100
phx
adc #$00a0
tcs
pea $1000
pea $2001
adc #$00a0
tcs
pea $0011
pea $1100
_spriteFooter
rtl
symbolDot entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x15)
; #$0030 - Off-white, Black, Black, Black (x1)
;
ldx #$0000 ; Black, Black, Black, Black
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
pea $0030
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
symbolColon entry
_spriteHeader
; Colours #$0000 - Black, Black, Black, Black (x8)
; #$0020 - Red, Black, Black, Black (x4)
; #$0200 - Black, Black, Black, Red (x4)
;
ldx #$0000 ; Black, Black, Black, Black
ldy #$0200 ; Black, Black, Black, Red
phx
phx
adc #$00a0
tcs
pea $0020
phy
adc #$00a0
tcs
pea $0020
phy
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
phx
phx
adc #$00a0
tcs
pea $0020
phy
adc #$00a0
tcs
pea $0020
phy
adc #$00a0
tcs
phx
phx
_spriteFooter
rtl
backupStack dc i2'0'
end