1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-02 14:20:56 +11:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Virgil Dupras
fb2117dc2e sms/vdp: use fonts from kernel/fnt
Instead of its own version of one. Additionally, add a 7x7 font to
the collection.
2020-01-07 22:15:35 -05:00
Virgil Dupras
439f880abe Rewrite font_compile.pl to C 2020-01-07 18:26:40 -05:00
11 changed files with 779 additions and 253 deletions

658
fonts/7x7.txt Normal file
View File

@ -0,0 +1,658 @@
..
..
..
..
..
..
.. ..
.. ..
.. ..
.. ..
.. ..
.......
.. ..
.......
.. ..
.. ..
..
......
.. .
.....
. ..
......
..
..
.. ..
..
..
..
.. ..
..
...
.. ..
.. ..
...
.. .. .
.. ..
... ..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
......
....
......
..
..
..
......
..
..
..
..
......
..
..
..
..
..
..
..
....
.. ..
.. ...
......
... ..
.. ..
....
..
...
..
..
..
..
......
....
.. ..
..
..
..
..
......
....
.. ..
..
...
..
.. ..
....
..
...
....
.. ..
......
..
..
......
..
.....
..
..
.. ..
....
...
..
..
.....
.. ..
.. ..
....
......
..
..
..
..
..
..
....
.. ..
.. ..
....
.. ..
.. ..
....
....
.. ..
.. ..
.....
..
..
...
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
......
......
..
..
..
..
..
..
..
....
.. ..
..
..
..
..
....
.. ..
.. ...
.. . .
.. ...
..
....
....
.. ..
.. ..
......
.. ..
.. ..
.. ..
.....
.. ..
.. ..
.....
.. ..
.. ..
.....
....
.. ..
..
..
..
.. ..
....
....
.. ..
.. ..
.. ..
.. ..
.. ..
....
......
..
..
.....
..
..
......
......
..
..
.....
..
..
..
....
.. ..
..
.. ...
.. ..
.. ..
....
.. ..
.. ..
.. ..
......
.. ..
.. ..
.. ..
......
..
..
..
..
..
......
.....
..
..
..
..
.. ..
...
.. ..
.. ..
....
...
....
.. ..
.. ..
..
..
..
..
..
..
......
.. ..
... ...
.......
.. . ..
.. . ..
.. ..
.. ..
.. ..
.. ..
... ..
......
.. ...
.. ..
.. ..
....
.. ..
.. ..
.. ..
.. ..
.. ..
....
.....
.. ..
.. ..
.....
..
..
..
....
.. ..
.. ..
.. ..
.. . .
.. ..
.. ..
.....
.. ..
.. ..
.....
.. ..
.. ..
.. ..
....
.. ..
..
....
..
.. ..
....
......
..
..
..
..
..
..
.. ..
.. ..
.. ..
.. ..
.. ..
.. ..
....
.. ..
.. ..
.. ..
.. ..
.. ..
....
..
.. ..
.. ..
.. . ..
.. . ..
.......
... ...
.. ..
.. ..
.. ..
....
..
....
.. ..
.. ..
.. ..
.. ..
.. ..
....
..
..
..
......
..
..
..
..
..
......
.....
..
..
..
..
..
.....
..
..
..
..
..
.....
..
..
..
..
..
.....
..
....
.. ..
. .
...
.. ..
..
.....
..
..
......
....
..
.....
.. ..
.....
..
..
.....
.. ..
.. ..
.. ..
.....
....
.. ..
..
.. ..
....
..
..
.....
.. ..
.. ..
.. ..
.....
....
.. ..
......
..
....
...
..
..
.....
..
..
..
.....
.. ..
.. ..
.....
..
..
..
.....
.. ..
.. ..
.. ..
.. ..
..
...
..
..
..
....
..
...
..
..
..
..
..
..
.. ..
.. ..
....
.. ..
.. ..
...
..
..
..
..
..
....
.. ..
.......
.. . ..
.. . ..
.. ..
.....
.. ..
.. ..
.. ..
.. ..
....
.. ..
.. ..
.. ..
....
.....
.. ..
.. ..
.....
..
.....
.. ..
.. ..
.....
..
.. ..
... ..
..
..
..
.....
..
....
..
.....
..
..
.....
..
..
..
...
.. ..
.. ..
.. ..
.. ..
.....
.. ..
.. ..
.. ..
....
..
.. ..
.. . ..
.. . ..
.......
.. ..
.. ..
....
..
....
.. ..
.. ..
.. ..
.. ..
.....
..
......
..
..
..
......
..
..
..
...
..
..
..
..
..
..
..
..
..
..
..
..
...
..
..
..
.. .
.. . ..
. ..

BIN
kernel/fnt/7x7.bin Normal file

Binary file not shown.

View File

@ -11,6 +11,8 @@
;
; When reaching a new line, we clear that line and the next to help readability.
;
; *** Defines ***
; FNT_DATA: Pointer to 7x7 font data.
; *** Consts ***
;
.equ VDP_CTLPORT 0xbf
@ -62,15 +64,37 @@ vdpInit:
out (VDP_CTLPORT), a
ld a, 0x40
out (VDP_CTLPORT), a
ld hl, vdpFontData
ld bc, vdpFontDataEnd-vdpFontData
ld hl, FNT_DATA
ld c, 0x7e-0x20 ; range of displayable chars in font.
; Each row in FNT_DATA is a row of the glyph and there is 7 of them.
; We insert a blank one at the end of those 7. For each row we set, we
; need to send 3 zero-bytes because each pixel in the tile is actually
; 4 bits because it can select among 16 palettes. We use only 2 of them,
; which is why those bytes always stay zero.
.loop2:
ld b, 7
.loop3:
ld a, (hl)
out (VDP_DATAPORT), a
; send 3 blanks
xor a
out (VDP_DATAPORT), a
nop ; the VDP needs 16 T-states to breathe
out (VDP_DATAPORT), a
nop
out (VDP_DATAPORT), a
inc hl
dec bc
ld a, b
or c
djnz .loop3
; Send a blank row after the 7th row
xor a
out (VDP_DATAPORT), a
nop
out (VDP_DATAPORT), a
nop
out (VDP_DATAPORT), a
nop
out (VDP_DATAPORT), a
dec c
jr nz, .loop2
ld a, 0b11000000
@ -263,197 +287,3 @@ vdpPaletteDataEnd:
vdpInitData:
.db 0x04,0x80,0x00,0x81,0xff,0x82,0xff,0x85,0xff,0x86,0xff,0x87,0x00,0x88,0x00,0x89,0xff,0x8a
vdpInitDataEnd:
vdpFontData:
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x6C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x36,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x36,0x00,0x00,0x00
.db 0x7F,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x3E,0x00,0x00,0x00
.db 0x0B,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x38,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x38,0x00,0x00,0x00
.db 0x6D,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x76,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x1C,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x1C,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x6A,0x00,0x00,0x00
.db 0x6E,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x78,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x6E,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3E,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x70,0x00,0x00,0x00
.db 0x78,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x63,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x6B,0x00,0x00,0x00
.db 0x6B,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x76,0x00,0x00,0x00,0x7E,0x00,0x00,0x00
.db 0x6E,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x6A,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x6C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x63,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x6B,0x00,0x00,0x00,0x6B,0x00,0x00,0x00
.db 0x7F,0x00,0x00,0x00,0x77,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x7C,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x3E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x42,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00
.db 0x1C,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x06,0x00,0x00,0x00
.db 0x3E,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x7E,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x1C,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7C,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x70,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x6C,0x00,0x00,0x00
.db 0x78,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x7F,0x00,0x00,0x00
.db 0x6B,0x00,0x00,0x00,0x6B,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x76,0x00,0x00,0x00
.db 0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x60,0x00,0x00,0x00
.db 0x3C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x30,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x00,0x00,0x00,0x6B,0x00,0x00,0x00
.db 0x6B,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x00,0x00,0x66,0x00,0x00,0x00
.db 0x66,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x3C,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0C,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x70,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0E,0x00,0x00,0x00
.db 0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x31,0x00,0x00,0x00,0x6B,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00
.db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
vdpFontDataEnd:

View File

@ -56,5 +56,8 @@ init:
call basInit
jp basStart
FNT_DATA:
.bin "fnt/7x7.bin"
.fill 0x7ff0-$
.db "TMR SEGA", 0x00, 0x00, 0xfb, 0x68, 0x00, 0x00, 0x00, 0x4c

View File

@ -68,6 +68,9 @@ init:
call basInit
jp basStart
FNT_DATA:
.bin "fnt/7x7.bin"
.fill 0x7ff0-$
.db "TMR SEGA", 0x00, 0x00, 0xfb, 0x68, 0x00, 0x00, 0x00, 0x4c

View File

@ -174,5 +174,8 @@ f1PutB:
.fill 0x2400-$
.bin "zasm.bin"
FNT_DATA:
.bin "fnt/7x7.bin"
.fill 0x7ff0-$
.db "TMR SEGA", 0x00, 0x00, 0xfb, 0x68, 0x00, 0x00, 0x00, 0x4c

1
tools/.gitignore vendored
View File

@ -1,3 +1,4 @@
/memdump
/blkdump
/upload
/fontcompile

View File

@ -1,10 +1,8 @@
MEMDUMP_TGT = memdump
MEMDUMP_SRC = memdump.c
BLKDUMP_TGT = blkdump
BLKDUMP_SRC = blkdump.c
UPLOAD_TGT = upload
UPLOAD_SRC = upload.c
TARGETS = $(MEMDUMP_TGT) $(BLKDUMP_TGT) $(UPLOAD_TGT)
FONTCOMPILE_TGT = fontcompile
TARGETS = $(MEMDUMP_TGT) $(BLKDUMP_TGT) $(UPLOAD_TGT) $(FONTCOMPILE_TGT)
OBJS = common.o
all: $(TARGETS)
@ -13,14 +11,8 @@ all: $(TARGETS)
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
$(MEMDUMP_TGT): $(MEMDUMP_SRC) $(OBJS)
$(CC) $(CFLAGS) $(MEMDUMP_SRC) $(OBJS) -o $@
$(BLKDUMP_TGT): $(BLKDUMP_SRC) $(OBJS)
$(CC) $(CFLAGS) $(BLKDUMP_SRC) $(OBJS) -o $@
$(UPLOAD_TGT): $(UPLOAD_SRC) $(OBJS)
$(CC) $(CFLAGS) $(UPLOAD_SRC) $(OBJS) -o $@
$(TARGETS): $@.c $(OBJS)
$(CC) $(CFLAGS) $@.c $(OBJS) -o $@
.PHONY: clean
clean:

View File

@ -1,35 +0,0 @@
#!/usr/bin/perl
use strict;
# This script converts "space-dot" fonts to binary "glyph rows". One byte for
# each row. In a 5x7 font, each glyph thus use 7 bytes.
# Resulting bytes are aligned to the **left** of the byte. Therefore, for
# a 5-bit wide char, ". . ." translates to 0b10101000
# Left-aligned bytes are easier to work with when compositing glyphs.
my $fn = @ARGV[0];
unless ($fn =~ /.*(\d)x(\d)\.txt/) { die "$fn isn't a font filename" };
my ($width, $height) = ($1, $2);
if ($width > 8) { die "Can't have a width > 8"; }
print STDERR "Reading a $width x $height font.\n";
my $handle;
unless (open($handle, '<', $fn)) { die "Can't open $fn"; }
# We start the binary data with our first char, space, which is not in our input
# but needs to be in our output.
print pack('C*', (0) x $height);
while (<$handle>) {
unless (/( |\.){0,${width}}\n/) { die "Invalid line format '$_'"; }
my @line = split //, $_;
my $num = 0;
for (my $i=0; $i<$width; $i++) {
if (@line[$i] eq '.') {
$num += (1 << (7-$i));
}
}
print pack('C', $num);
}

71
tools/fontcompile.c Normal file
View File

@ -0,0 +1,71 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libgen.h>
/* This script converts "space-dot" fonts to binary "glyph rows". One byte for
* each row. In a 5x7 font, each glyph thus use 7 bytes.
* Resulting bytes are aligned to the **left** of the byte. Therefore, for
* a 5-bit wide char, ". . ." translates to 0b10101000
* Left-aligned bytes are easier to work with when compositing glyphs.
*/
int main(int argc, char **argv)
{
if (argc != 2) {
fprintf(stderr, "Usage: ./fontcompile fpath\n");
return 1;
}
char *fn = basename(argv[1]);
if (!fn) {
return 1;
}
int w = 0;
if ((fn[0] >= '3') && (fn[0] <= '8')) {
w = fn[0] - '0';
}
int h = 0;
if ((fn[2] >= '3') && (fn[2] <= '8')) {
h = fn[2] - '0';
}
if (!w || !h || fn[1] != 'x') {
fprintf(stderr, "Not a font filename: (3-8)x(3-8).txt.\n");
return 1;
}
fprintf(stderr, "Reading a %d x %d font\n", w, h);
FILE *fp = fopen(argv[1], "r");
if (!fp) {
fprintf(stderr, "Can't open %s.\n", argv[1]);
return 1;
}
// We start the binary data with our first char, space, which is not in our
// input but needs to be in our output.
for (int i=0; i<h; i++) {
putchar(0);
}
int lineno = 1;
char buf[0x10];
while (fgets(buf, 0x10, fp)) {
size_t l = strlen(buf);
if (l > w+1) { // +1 because of the newline char.
fprintf(stderr, "Line %d too long.\n", lineno);
fclose(fp);
return 1;
}
// line can be narrower than width. It's padded with spaces.
while (l < w+1) {
buf[l] = ' ';
l++;
}
unsigned char c = 0;
for (int i=0; i<w; i++) {
if (buf[i] == '.') {
c |= (1 << (7-i));
}
}
putchar(c);
lineno++;
}
fclose(fp);
return 0;
}