mirror of
https://github.com/blondie7575/GSCats.git
synced 2025-02-19 14:30:58 +00:00
Groundwork for font compiler
This commit is contained in:
parent
1977553b83
commit
1079535020
BIN
Art/Assets/Font8x8.gif
Normal file
BIN
Art/Assets/Font8x8.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
Art/Assets/Font8x8.xcf
Normal file
BIN
Art/Assets/Font8x8.xcf
Normal file
Binary file not shown.
@ -22,6 +22,8 @@
|
||||
705C54E62124B7F300515A6B /* fan.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = fan.s; sourceTree = "<group>"; };
|
||||
706DF1641F2D39F700AA6680 /* loader.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = loader.s; sourceTree = "<group>"; };
|
||||
706DF1651F2D4A8100AA6680 /* terrain.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = terrain.s; sourceTree = "<group>"; };
|
||||
7076E9222A57AED90006E295 /* GenerateFont.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateFont.py; sourceTree = "<group>"; };
|
||||
7076E9232A59113F0006E295 /* font8x8.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = font8x8.s; sourceTree = "<group>"; };
|
||||
7088096D1F2ECE8D00D4C950 /* GenerateRenderSpans.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateRenderSpans.py; sourceTree = "<group>"; };
|
||||
708D1B1E27B9A1A600909AFC /* crosshair.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = crosshair.s; sourceTree = "<group>"; };
|
||||
709175C01F60D263008FAFAB /* GenerateCircles.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = GenerateCircles.py; sourceTree = "<group>"; };
|
||||
@ -83,6 +85,8 @@
|
||||
70BDCBC92006AD5F00CB51F1 /* linkerConfig */,
|
||||
70FE79D21F8814A600E0095C /* MerlinToCA65.sh */,
|
||||
700F72872112428D00225B17 /* RenumberSpriteFiles.sh */,
|
||||
7076E9222A57AED90006E295 /* GenerateFont.py */,
|
||||
7076E9232A59113F0006E295 /* font8x8.s */,
|
||||
7088096D1F2ECE8D00D4C950 /* GenerateRenderSpans.py */,
|
||||
7059502B1F37A0BE00BBE90F /* GenerateVRAMTable.py */,
|
||||
7099E3851F4107B100182A82 /* GenerateVRAMYOffset.py */,
|
||||
|
91
GenerateFont.py
Executable file
91
GenerateFont.py
Executable file
@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import PIL
|
||||
from PIL import Image
|
||||
from numpy import asarray
|
||||
|
||||
CHAR_WIDTH = 8
|
||||
CHAR_HEIGHT = 8
|
||||
CHAR_FIRST = 32
|
||||
CHROMA = 14
|
||||
|
||||
def main(argv):
|
||||
image = Image.open('Art/Assets/Font8x8.gif')
|
||||
pixels = asarray(image)
|
||||
numCharX = (int)(image.size[0]/CHAR_WIDTH)
|
||||
numCharY = (int)(image.size[1]/CHAR_HEIGHT)
|
||||
|
||||
for charY in range(0,1): #numCharY):
|
||||
for charX in range(1,2): #numCharX):
|
||||
charIndex = charY*numCharX + charX
|
||||
currChar = chr(charIndex+CHAR_FIRST)
|
||||
|
||||
print ("char%d:\n" % ord(currChar), end="")
|
||||
|
||||
# Header for each rendering operation
|
||||
print ("\ttya") # Transfer character VRAM position from Y to stack pointer
|
||||
print ("\ttcs")
|
||||
|
||||
# Iteratre through all the pixels
|
||||
charOriginX = charX*CHAR_WIDTH
|
||||
charOriginY = charY*CHAR_HEIGHT
|
||||
|
||||
for charRow in reversed(range(0,CHAR_HEIGHT)):
|
||||
print ("\t; Line %d" % charRow)
|
||||
nextRowDelta = 160
|
||||
for charCol in reversed(range(0,CHAR_WIDTH,4)):
|
||||
nibbles = [pixels[charOriginY+charRow][charOriginX+charCol],
|
||||
pixels[charOriginY+charRow][charOriginX+charCol+1],
|
||||
pixels[charOriginY+charRow][charOriginX+charCol+2],
|
||||
pixels[charOriginY+charRow][charOriginX+charCol+3]]
|
||||
|
||||
word = nibbles[2]<<12 | nibbles[3]<<8 | nibbles[0]<<4 | nibbles[1]
|
||||
|
||||
if (nibbles[0]==CHROMA and nibbles[1]==CHROMA and nibbles[2]==CHROMA and nibbles[3]==CHROMA):
|
||||
pass # Case 1 : All chroma, so let stack advance with no work
|
||||
elif (nibbles[0]!=CHROMA and nibbles[1]!=CHROMA and nibbles[2]!=CHROMA and nibbles[3]!=CHROMA):
|
||||
print ("\tpea $%04x" % word) # Case 2 : No chroma, so fast push
|
||||
nextRowDelta -= 2
|
||||
else:
|
||||
mask = 0 # Case 3 : Mixed chroma, so mask and or
|
||||
if (nibbles[0]!=CHROMA):
|
||||
mask = mask | 0xFF0F
|
||||
if (nibbles[1]!=CHROMA):
|
||||
mask = mask | 0xFFF0
|
||||
if (nibbles[2]!=CHROMA):
|
||||
mask = mask | 0x0FFF
|
||||
if (nibbles[3]!=CHROMA):
|
||||
mask = mask | 0xF0FF
|
||||
|
||||
sprite = word
|
||||
if (nibbles[0]==CHROMA):
|
||||
sprite = sprite & 0xFF0F
|
||||
if (nibbles[1]==CHROMA):
|
||||
sprite = sprite & 0xFFF0
|
||||
if (nibbles[2]==CHROMA):
|
||||
sprite = sprite & 0x0FFF
|
||||
if (nibbles[3]==CHROMA):
|
||||
sprite = sprite & 0xF0FF
|
||||
|
||||
print ("\ttsc") # Keep stack moving, even though we didn't use it
|
||||
print ("\tdec")
|
||||
print ("\tdec")
|
||||
print ("\ttcs")
|
||||
print ("\tlda 0,S") # Blend mask, sprite, and background
|
||||
print ("\tand #$%04x" % mask)
|
||||
print ("\tora #$%04x" % sprite)
|
||||
print ("\tsta 0,S")
|
||||
nextRowDelta -= 2
|
||||
|
||||
# Advance stack pointer to next row
|
||||
print ("\ttsc")
|
||||
print ("\tsec")
|
||||
print ("\tsbc #%d" % nextRowDelta)
|
||||
print ("\ttcs")
|
||||
|
||||
# Footer for each rendering operation
|
||||
print ("\tjmp returnFromTest")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
140
font8x8.s
Normal file
140
font8x8.s
Normal file
@ -0,0 +1,140 @@
|
||||
char33:
|
||||
tya
|
||||
tcs
|
||||
; Line 7
|
||||
tsc
|
||||
sec
|
||||
sbc #160
|
||||
tcs
|
||||
; Line 6
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00d0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0d00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
; Line 5
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00d0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0d00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
; Line 4
|
||||
tsc
|
||||
sec
|
||||
sbc #160
|
||||
tcs
|
||||
; Line 3
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00d0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0a00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
; Line 2
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00a0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0a00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
; Line 1
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00b0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0b00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
; Line 0
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$ff0f
|
||||
ora #$00f0
|
||||
sta 0,S
|
||||
tsc
|
||||
dec
|
||||
dec
|
||||
tcs
|
||||
lda 0,S
|
||||
and #$f0ff
|
||||
ora #$0f00
|
||||
sta 0,S
|
||||
tsc
|
||||
sec
|
||||
sbc #156
|
||||
tcs
|
||||
jmp returnFromTest
|
@ -67,16 +67,14 @@ beginGameplay:
|
||||
|
||||
jsr compileTerrain
|
||||
jsr clipTerrain
|
||||
; jsl renderTerrainSpans ; Part of the now disabled fill-mode renderer
|
||||
|
||||
; lda #7
|
||||
; sta PARAML0
|
||||
; lda #50
|
||||
; sta PARAML1
|
||||
; ldy #3
|
||||
; jsr craterTerrain
|
||||
; jsr compileTerrain
|
||||
; jsr clipTerrain
|
||||
; Test font renderer
|
||||
; FASTGRAPHICS
|
||||
; ldy #$3000 ;#$2504
|
||||
; jmp char33
|
||||
returnFromTest:
|
||||
; SLOWGRAPHICS
|
||||
; ;HARDBRK
|
||||
|
||||
gameplayLoop:
|
||||
lda projectileActive
|
||||
@ -417,7 +415,7 @@ fire:
|
||||
|
||||
|
||||
basePalette:
|
||||
.word $0aef,$0080,$0080,$0861,$0c93,$0eb4,$0d66,$0f9a,$0777,$0f00,$0bbb,$ddd,$007b,$0ff0,$0000,$0fff
|
||||
.word $0aef,$0080,$0080,$0861,$0c93,$0eb4,$0d66,$0f9a,$0777,$0f00,$0bbb,$ddd,$007b,$0a5b,$0000,$0fff
|
||||
statusBarPalette:
|
||||
.word $0aef,$0fff,$0aef,$0aef,$0aef,$0aef,$0d66,$0aef,$0aef,$0aef,$0aef,$0aef,$0aef,$0aef,$0aef,$0000
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user