Jump to content

Photo

Digitized Sound on Aquarius


105 replies to this topic

#1 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • 277 posts
  • Location:Massachusetts

Posted Sun Apr 17, 2011 6:28 PM

Can you guys take a look at the below code and see if you can see something I am doing wrong? I have a 1 bit audio sample encoded in the .DB statements and I am trying to send it to the sound port. I have to grab a byte of data, send the 1's and 0's from the byte left to right, then load the next byte. I realize that the emulator doesn't work for sound, but I am not getting anything for sound out of the program. Any ideas? Am I reinventing the wheel, does somebody have code to play sampled sound already?

; Program to Create Sound

.org $E000			

.db $b6, $b7, $24, $2a, $8d, $9c, $42, $b0
.db $53, $6c, $90, $64, $89, $a8, $f9, $70

MAIN:
	ld hl, SAMPLE		; Memory Location to ROM Sample
	ld bc, 1377		; Number of Samples
	push bc	
	
replay:	ld d, 8			; Sub-Samples
	ld a, (hl)			; load an 8 bit set
	ld e, a			; store a into e

subsamp:	
	ld a,e			; grab e into a
	out ($fc),a	
delay:	ld bc, 50
	dec bc
	ld a,c
	or b
	jp nz, delay
	RLA			; shift left
	dec d			; countdown
	ld e, a 			; drop a into e
	ld a, d			; check on d
	jp nz, subsamp		; repeat until 8 samples

	pop bc
	dec bc			; Decrement Sample Counter
	push bc
	ld a, c			; Load C 
	or b			; Is BC Zero
	jp nz, replay		; If it isn't zero, keep playing

FINISH:
	jp FINISH

SAMPLE:

.db $6B,$51,$59,$99,$95,$8D,$99,$35,$95,$53,$55,$53,$55,$36,$2D,$32
.db $D3,$96,$53,$6A,$66,$96,$36,$58,$E8,$E6,$4C,$E6,$2D,$2C,$B5,$93
.db $52,$C9,$65,$A6,$B3,$39,$39,$A9,$C5,$4B,$53,$33,$36,$33,$35,$66
.db $99,$94,$D3,$64,$CA,$AC,$A7,$2A,$D6,$34,$B3,$32,$A9,$6B,$36,$63
.db $95,$63,$93,$5A,$66,$8E,$65,$56,$33,$55,$33,$4B,$4C,$9C,$AC,$D4
.db $B4,$B3,$47,$32,$AA,$B3,$39,$59,$56,$65,$1B,$4B,$4B,$59,$55,$55
.db $52,$99,$AA,$CA,$A6,$66,$71,$65,$55,$69,$5A,$B5,$4C,$D5,$32,$AA
.db $73,$54,$CB,$2B,$35,$36,$63,$19,$CA,$A9,$9A,$65,$94,$E6,$6B,$34
.db $AA,$73,$19,$CE,$35,$9C,$63,$31,$CA,$D6,$AA,$94,$9C,$C6,$73,$54
.db $D3,$49,$A6,$34,$D7,$39,$54,$A4,$CE,$33,$9A,$CB,$59,$66,$31,$96
.db $B5,$9A,$A5,$26,$63,$AC,$E5,$32,$CE,$51,$8C,$B5,$AD,$4A,$A8,$CC
.db $E6,$B3,$58,$CD,$2C,$A6,$59,$9B,$5A,$A4,$A5,$54,$E7,$39,$49,$65
.db $96,$63,$32,$CD,$AD,$52,$A8,$D7,$31,$CE,$32,$9B,$2B,$98,$D2,$B5
.db $65,$99,$4A,$53,$39,$CC,$69,$A5,$95,$CA,$69,$65,$35,$9A,$CA,$95
.db $56,$B9,$C6,$63,$4A,$B4,$D5,$54,$96,$AB,$55,$4A,$A5,$66,$AB,$4A
.db $99,$59,$66,$59,$9A,$AA,$6A,$CD,$33,$4B,$4D,$2A,$AA,$AC,$CB,$53
.db $53,$2A,$AA,$6A,$6A,$AA,$AA,$AC,$A9,$96,$96,$5B,$4B,$39,$54,$D2
.db $AA,$A6,$AA,$B5,$65,$95,$65,$94,$A6,$9A,$CA,$59,$6A,$A5,$AA,$AA
.db $AB,$2A,$CA,$5A,$A9,$A6,$B3,$53,$4B,$2D,$4D,$2B,$4B,$54,$B2,$CA
.db $5A,$96,$A5,$A5,$AC,$A6,$5A,$53,$4D,$65,$69,$6A,$CC,$D3,$52,$5B
.db $4B,$29,$69,$AC,$D5,$54,$B2,$96,$55,$55,$4D,$55,$55,$95,$55,$55
.db $69,$59,$69,$69,$69,$69,$66,$9A,$9A,$AA,$A9,$A6,$AA,$55,$55,$55
.db $55,$54,$D3,$53,$55,$65,$53,$4D,$34,$D6,$69,$A9,$AA,$96,$59,$65
.db $A5,$A5,$AA,$96,$95,$59,$54,$B4,$D5,$53,$52,$D5,$53,$4B,$65,$55
.db $56,$A5,$66,$AA,$AA,$A5,$55,$56,$55,$A5,$A9,$95,$4D,$4B,$2D,$2A
.db $CB,$32,$D2,$B5,$54,$B2,$CB,$55,$65,$96,$CA,$5A,$5A,$6A,$A6,$99
.db $95,$65,$A5,$55,$55,$35,$34,$D2,$CB,$4D,$35,$4C,$AD,$36,$9A,$5A
.db $6A,$65,$55,$65,$A5,$AA,$AA,$AA,$9A,$59,$55,$35,$2B,$55,$55,$54
.db $D5,$4D,$55,$55,$59,$55,$96,$AA,$6A,$AA,$AC,$A6,$A5,$AA,$AA,$AA
.db $AA,$65,$65,$55,$55,$55,$55,$55,$55,$55,$55,$55,$66,$AA,$55,$56
.db $99,$65,$AA,$AA,$AA,$9A,$96,$55,$55,$55,$55,$35,$55,$55,$55,$55
.db $55,$55,$65,$55,$6D,$2A,$54,$D6,$AA,$AA,$A6,$66,$53,$69,$2A,$77
.db $32,$32,$57,$56,$A5,$52,$A9,$95,$DA,$4A,$CF,$69,$12,$95,$DB,$2A
.db $56,$65,$38,$BB,$41,$9B,$9D,$41,$1A,$D7,$A9,$4A,$D5,$29,$99,$DA
.db $13,$AF,$68,$84,$D6,$ED,$24,$D6,$59,$1C,$6F,$80,$9E,$F6,$40,$2E
.db $db,$68,$9A,$B5,$48,$B5,$9E,$42,$7F,$B4,$20,$AF,$AD,$24,$B6,$A9
.db $15,$E3,$6C,$82,$FF,$28,$4,$FB,$99,$45,$B5,$92,$55,$C9,$EC,$7
.db $FD,$40,$1D,$ED,$81,$6F,$52,$46,$E5,$C1,$F4,$0F,$B6,$80,$B5,$BA
.db $43,$ED,$48,$56,$AD,$83,$F0,$3E,$7E,$1,$D3,$E8,$2E,$D6,$82,$D5
.db $5E,$7,$E0,$73,$F8,$7,$17,$C2,$D5,$DA,$0B,$35,$5E,$0F,$C0,$E3
.db $F8,$1C,$1F,$83,$8B,$F0,$4D,$36,$9C,$1F,$81,$C7,$F8,$18,$3F,$7
.db $0F,$E0,$C9,$D9,$3C,$1F,$83,$87,$F0,$58,$3F,$0E,$0F,$C5,$49,$E4
.db $B8,$3F,$3,$87,$F0,$60,$FE,$14,$5F,$8A,$8D,$C9,$98,$3F,$0B,$0F
.db $E0,$C0,$FE,$50,$7F,$1A,$0F,$0D,$9C,$1F,$0A,$8F,$E1,$80,$FE,$50
.db $3F,$9C,$0F,$8E,$87,$0F,$C1,$63,$F8,$60,$7E,$B0,$3E,$B8,$0D,$9B
.db $82,$E0,$FC,$30,$7F,$18,$1F,$9C,$7,$BF,$4,$57,$E2,$4B,$87,$C3
.db $83,$F3,$C0,$B1,$F0,$53,$F8,$42,$7E,$34,$57,$0F,$8E,$7,$EE,$3
.db $3F,$84,$2F,$D6,$5,$B6,$98,$E3,$1F,$8C,$0F,$BE,$0,$3F,$98,$1F
.db $B5,$3,$B3,$94,$A3,$8F,$8E,$0F,$7E,$10,$3D,$CA,$27,$D3,$13,$4D
.db $CA,$93,$87,$9E,$8,$7E,$70,$39,$E3,$23,$CF,$85,$1C,$DC,$A2,$C7
.db $B7,$0,$FE,$70,$23,$F3,$83,$8F,$8E,$0C,$7C,$70,$B1,$E7,$C1,$0F
.db $BE,$8,$3C,$F4,$71,$E3,$A2,$97,$59,$29,$8F,$7C,$10,$FC,$E1,$81
.db $B7,$95,$0E,$9D,$31,$5A,$B1,$63,$1D,$F4,$21,$F7,$C2,$6,$DF,$4A
.db $8C,$AD,$55,$53,$94,$AB,$1E,$B2,$14,$EE,$71,$0C,$73,$B6,$38,$A9
.db $65,$AB,$52,$99,$C7,$CD,$41,$1D,$EA,$A2,$A5,$95,$D6,$CA,$52,$8D
.db $4D,$55,$96,$73,$35,$16,$6C,$A9,$4C,$E6,$AB,$55,$65,$54,$9A,$6D
.db $54,$D3,$4E,$A4,$5A,$69,$A9,$C6,$A5,$57,$1D,$55,$44,$A7,$6A,$CD
.db $32,$AD,$65,$2A,$6B,$56,$A5,$25,$5B,$75,$94,$49,$55,$66,$AA,$A9
.db $9D,$65,$25,$59,$CA,$D4,$A5,$35,$AD,$5A,$54,$56,$B4,$B5,$56,$54
.db $D4,$A6,$AC,$AA,$AA,$A5,$35,$6D,$55,$44,$CA,$D6,$D5,$52,$96,$B5
.db $4A,$6B,$55,$35,$4A,$6A,$D5,$AA,$64,$55,$55,$6B,$2A,$99,$6A,$A9
.db $55,$6A,$AA,$A9,$55,$5A,$D6,$A9,$49,$55,$AA,$D5,$32,$D2,$AD,$52
.db $55,$57,$55,$2A,$55,$5A,$B4,$AA,$52,$AB,$5A,$AA,$AA,$AA,$AB,$54
.db $95,$6A,$D3,$2A,$96,$9A,$D6,$95,$28,$CA,$DA,$AA,$95,$55,$36,$AA
.db $92,$D5,$AA,$AA,$95,$AB,$56,$A9,$26,$55,$5B,$55,$4A,$AA,$AB,$34
.db $A4,$AB,$57,$52,$92,$AA,$DD,$65,$25,$2A,$AE,$B2,$D4,$B2,$B1,$E6
.db $34,$C9,$E5,$98,$A6,$56,$D6,$64,$A9,$4D,$56,$99,$95,$6A,$E3,$8E
.db $46,$3C,$EC,$91,$57,$36,$65,$53,$54,$CB,$55,$52,$66,$B4,$72,$CC
.db $47,$BA,$92,$2B,$6A,$CD,$2A,$AA,$A9,$AB,$54,$C9,$AC,$E3,$8E,$4A
.db $79,$CA,$52,$9C,$D5,$53,$2A,$A6,$55,$AA,$CA,$69,$AB,$0E,$71,$A5
.db $CE,$65,$29,$6D,$55,$55,$54,$D2,$AA,$AD,$4A,$6A,$AC,$C3,$9C,$63
.db $53,$9A,$52,$CD,$AA,$AA,$9A,$CA,$A9,$AB,$4A,$6A,$AA,$A8,$E7,$19
.db $55,$AA,$98,$AB,$56,$59,$58,$E6,$31,$D5,$94,$B3,$5A,$9C,$C7,$19
.db $95,$AC,$71,$95,$6B,$31,$9C,$63,$35,$59,$4C,$B3,$56,$69,$52,$CC
.db $CB,$33,$55,$55,$55,$9A,$66,$AA,$65,$55,$66,$AC,$65,$66,$65,$58
.db $CC,$B2,$D5,$35,$4B,$2C,$E6,$38,$CC,$C7,$34,$CE,$35,$56,$AA,$A9
.db $55,$59,$55,$56,$A6,$65,$A5,$55,$33,$4C,$AA,$AA,$AB,$2A,$CB,$35
.db $32,$D5,$4C,$CC,$D5,$55,$59,$33,$35,$4D,$55,$55,$4D,$4D,$32,$AA
.db $AA,$B3,$2A,$AA,$AA,$AA,$A6,$AA,$AB,$2D,$55,$55,$55,$55,$55,$55
.db $4E,$55,$58,$E5,$55,$32,$B2,$A6,$69,$A9,$A6,$AA,$AA,$AA,$AA,$B2
.db $CA,$AD,$33,$33,$4C,$D4,$D3,$4D,$53,$55,$53,$2A,$AA,$AA,$AA,$AA
.db $AA,$AA,$AA,$A9,$5A,$69,$AA,$AA,$AC,$D5,$54,$CC,$AB,$4C,$AC,$B5
.db $35,$2C,$CC,$AA,$B2,$9A,$55,$96,$A6,$AA,$A6,$A5,$55,$AA,$AB,$2A
.db $CD,$4B,$2A,$B2,$CB,$2A,$AA,$B4,$CC,$AA,$9A,$59,$69,$59,$65,$55
.db $59,$55,$55,$55,$56,$66,$AA,$AB,$2A,$AA,$AA,$A9,$9A,$6A,$AA,$AA
.db $AA,$95,$55,$55,$55,$55,$55,$55,$55,$56,$55,$95,$A6,$A6,$AA,$AA

.END





#2 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Sun Apr 17, 2011 6:31 PM

Try this code... now I get garbage - have to figure out the right "sample" format now...

; Program to Create Sound

.org $E000			

.db $b6, $b7, $24, $2a, $8d, $9c, $42, $b0
.db $53, $6c, $90, $64, $89, $a8, $f9, $70

MAIN:
	ld hl, SAMPLE		; Memory Location to ROM Sample
	ld bc, 1377		; Number of Samples	
	
replay:	ld d, 8			; Sub-Samples
	ld a, (hl)			; load an 8 bit set
	ld e, a			; store a into e

subsamp:	
	ld a,e			; grab e into a
	out ($fc),a	
	RLA			; shift left
	dec d			; countdown
	ld e, a 			; drop a into e
	ld a, d			; check on d
	jp nz, subsamp		; repeat until 8 samples

	inc hl
	pop bc
	dec bc			; Decrement Sample Counter
	ld a, c			; Load C 
	or b			; Is BC Zero
	jp nz, replay		; If it isn't zero, keep playing

FINISH:
	jp FINISH

SAMPLE:

.db $6B,$51,$59,$99,$95,$8D,$99,$35,$95,$53,$55,$53,$55,$36,$2D,$32
.db $D3,$96,$53,$6A,$66,$96,$36,$58,$E8,$E6,$4C,$E6,$2D,$2C,$B5,$93
.db $52,$C9,$65,$A6,$B3,$39,$39,$A9,$C5,$4B,$53,$33,$36,$33,$35,$66
.db $99,$94,$D3,$64,$CA,$AC,$A7,$2A,$D6,$34,$B3,$32,$A9,$6B,$36,$63
.db $95,$63,$93,$5A,$66,$8E,$65,$56,$33,$55,$33,$4B,$4C,$9C,$AC,$D4
.db $B4,$B3,$47,$32,$AA,$B3,$39,$59,$56,$65,$1B,$4B,$4B,$59,$55,$55
.db $52,$99,$AA,$CA,$A6,$66,$71,$65,$55,$69,$5A,$B5,$4C,$D5,$32,$AA
.db $73,$54,$CB,$2B,$35,$36,$63,$19,$CA,$A9,$9A,$65,$94,$E6,$6B,$34
.db $AA,$73,$19,$CE,$35,$9C,$63,$31,$CA,$D6,$AA,$94,$9C,$C6,$73,$54
.db $D3,$49,$A6,$34,$D7,$39,$54,$A4,$CE,$33,$9A,$CB,$59,$66,$31,$96
.db $B5,$9A,$A5,$26,$63,$AC,$E5,$32,$CE,$51,$8C,$B5,$AD,$4A,$A8,$CC
.db $E6,$B3,$58,$CD,$2C,$A6,$59,$9B,$5A,$A4,$A5,$54,$E7,$39,$49,$65
.db $96,$63,$32,$CD,$AD,$52,$A8,$D7,$31,$CE,$32,$9B,$2B,$98,$D2,$B5
.db $65,$99,$4A,$53,$39,$CC,$69,$A5,$95,$CA,$69,$65,$35,$9A,$CA,$95
.db $56,$B9,$C6,$63,$4A,$B4,$D5,$54,$96,$AB,$55,$4A,$A5,$66,$AB,$4A
.db $99,$59,$66,$59,$9A,$AA,$6A,$CD,$33,$4B,$4D,$2A,$AA,$AC,$CB,$53
.db $53,$2A,$AA,$6A,$6A,$AA,$AA,$AC,$A9,$96,$96,$5B,$4B,$39,$54,$D2
.db $AA,$A6,$AA,$B5,$65,$95,$65,$94,$A6,$9A,$CA,$59,$6A,$A5,$AA,$AA
.db $AB,$2A,$CA,$5A,$A9,$A6,$B3,$53,$4B,$2D,$4D,$2B,$4B,$54,$B2,$CA
.db $5A,$96,$A5,$A5,$AC,$A6,$5A,$53,$4D,$65,$69,$6A,$CC,$D3,$52,$5B
.db $4B,$29,$69,$AC,$D5,$54,$B2,$96,$55,$55,$4D,$55,$55,$95,$55,$55
.db $69,$59,$69,$69,$69,$69,$66,$9A,$9A,$AA,$A9,$A6,$AA,$55,$55,$55
.db $55,$54,$D3,$53,$55,$65,$53,$4D,$34,$D6,$69,$A9,$AA,$96,$59,$65
.db $A5,$A5,$AA,$96,$95,$59,$54,$B4,$D5,$53,$52,$D5,$53,$4B,$65,$55
.db $56,$A5,$66,$AA,$AA,$A5,$55,$56,$55,$A5,$A9,$95,$4D,$4B,$2D,$2A
.db $CB,$32,$D2,$B5,$54,$B2,$CB,$55,$65,$96,$CA,$5A,$5A,$6A,$A6,$99
.db $95,$65,$A5,$55,$55,$35,$34,$D2,$CB,$4D,$35,$4C,$AD,$36,$9A,$5A
.db $6A,$65,$55,$65,$A5,$AA,$AA,$AA,$9A,$59,$55,$35,$2B,$55,$55,$54
.db $D5,$4D,$55,$55,$59,$55,$96,$AA,$6A,$AA,$AC,$A6,$A5,$AA,$AA,$AA
.db $AA,$65,$65,$55,$55,$55,$55,$55,$55,$55,$55,$55,$66,$AA,$55,$56
.db $99,$65,$AA,$AA,$AA,$9A,$96,$55,$55,$55,$55,$35,$55,$55,$55,$55
.db $55,$55,$65,$55,$6D,$2A,$54,$D6,$AA,$AA,$A6,$66,$53,$69,$2A,$77
.db $32,$32,$57,$56,$A5,$52,$A9,$95,$DA,$4A,$CF,$69,$12,$95,$DB,$2A
.db $56,$65,$38,$BB,$41,$9B,$9D,$41,$1A,$D7,$A9,$4A,$D5,$29,$99,$DA
.db $13,$AF,$68,$84,$D6,$ED,$24,$D6,$59,$1C,$6F,$80,$9E,$F6,$40,$2E
.db $db,$68,$9A,$B5,$48,$B5,$9E,$42,$7F,$B4,$20,$AF,$AD,$24,$B6,$A9
.db $15,$E3,$6C,$82,$FF,$28,$4,$FB,$99,$45,$B5,$92,$55,$C9,$EC,$7
.db $FD,$40,$1D,$ED,$81,$6F,$52,$46,$E5,$C1,$F4,$0F,$B6,$80,$B5,$BA
.db $43,$ED,$48,$56,$AD,$83,$F0,$3E,$7E,$1,$D3,$E8,$2E,$D6,$82,$D5
.db $5E,$7,$E0,$73,$F8,$7,$17,$C2,$D5,$DA,$0B,$35,$5E,$0F,$C0,$E3
.db $F8,$1C,$1F,$83,$8B,$F0,$4D,$36,$9C,$1F,$81,$C7,$F8,$18,$3F,$7
.db $0F,$E0,$C9,$D9,$3C,$1F,$83,$87,$F0,$58,$3F,$0E,$0F,$C5,$49,$E4
.db $B8,$3F,$3,$87,$F0,$60,$FE,$14,$5F,$8A,$8D,$C9,$98,$3F,$0B,$0F
.db $E0,$C0,$FE,$50,$7F,$1A,$0F,$0D,$9C,$1F,$0A,$8F,$E1,$80,$FE,$50
.db $3F,$9C,$0F,$8E,$87,$0F,$C1,$63,$F8,$60,$7E,$B0,$3E,$B8,$0D,$9B
.db $82,$E0,$FC,$30,$7F,$18,$1F,$9C,$7,$BF,$4,$57,$E2,$4B,$87,$C3
.db $83,$F3,$C0,$B1,$F0,$53,$F8,$42,$7E,$34,$57,$0F,$8E,$7,$EE,$3
.db $3F,$84,$2F,$D6,$5,$B6,$98,$E3,$1F,$8C,$0F,$BE,$0,$3F,$98,$1F
.db $B5,$3,$B3,$94,$A3,$8F,$8E,$0F,$7E,$10,$3D,$CA,$27,$D3,$13,$4D
.db $CA,$93,$87,$9E,$8,$7E,$70,$39,$E3,$23,$CF,$85,$1C,$DC,$A2,$C7
.db $B7,$0,$FE,$70,$23,$F3,$83,$8F,$8E,$0C,$7C,$70,$B1,$E7,$C1,$0F
.db $BE,$8,$3C,$F4,$71,$E3,$A2,$97,$59,$29,$8F,$7C,$10,$FC,$E1,$81
.db $B7,$95,$0E,$9D,$31,$5A,$B1,$63,$1D,$F4,$21,$F7,$C2,$6,$DF,$4A
.db $8C,$AD,$55,$53,$94,$AB,$1E,$B2,$14,$EE,$71,$0C,$73,$B6,$38,$A9
.db $65,$AB,$52,$99,$C7,$CD,$41,$1D,$EA,$A2,$A5,$95,$D6,$CA,$52,$8D
.db $4D,$55,$96,$73,$35,$16,$6C,$A9,$4C,$E6,$AB,$55,$65,$54,$9A,$6D
.db $54,$D3,$4E,$A4,$5A,$69,$A9,$C6,$A5,$57,$1D,$55,$44,$A7,$6A,$CD
.db $32,$AD,$65,$2A,$6B,$56,$A5,$25,$5B,$75,$94,$49,$55,$66,$AA,$A9
.db $9D,$65,$25,$59,$CA,$D4,$A5,$35,$AD,$5A,$54,$56,$B4,$B5,$56,$54
.db $D4,$A6,$AC,$AA,$AA,$A5,$35,$6D,$55,$44,$CA,$D6,$D5,$52,$96,$B5
.db $4A,$6B,$55,$35,$4A,$6A,$D5,$AA,$64,$55,$55,$6B,$2A,$99,$6A,$A9
.db $55,$6A,$AA,$A9,$55,$5A,$D6,$A9,$49,$55,$AA,$D5,$32,$D2,$AD,$52
.db $55,$57,$55,$2A,$55,$5A,$B4,$AA,$52,$AB,$5A,$AA,$AA,$AA,$AB,$54
.db $95,$6A,$D3,$2A,$96,$9A,$D6,$95,$28,$CA,$DA,$AA,$95,$55,$36,$AA
.db $92,$D5,$AA,$AA,$95,$AB,$56,$A9,$26,$55,$5B,$55,$4A,$AA,$AB,$34
.db $A4,$AB,$57,$52,$92,$AA,$DD,$65,$25,$2A,$AE,$B2,$D4,$B2,$B1,$E6
.db $34,$C9,$E5,$98,$A6,$56,$D6,$64,$A9,$4D,$56,$99,$95,$6A,$E3,$8E
.db $46,$3C,$EC,$91,$57,$36,$65,$53,$54,$CB,$55,$52,$66,$B4,$72,$CC
.db $47,$BA,$92,$2B,$6A,$CD,$2A,$AA,$A9,$AB,$54,$C9,$AC,$E3,$8E,$4A
.db $79,$CA,$52,$9C,$D5,$53,$2A,$A6,$55,$AA,$CA,$69,$AB,$0E,$71,$A5
.db $CE,$65,$29,$6D,$55,$55,$54,$D2,$AA,$AD,$4A,$6A,$AC,$C3,$9C,$63
.db $53,$9A,$52,$CD,$AA,$AA,$9A,$CA,$A9,$AB,$4A,$6A,$AA,$A8,$E7,$19
.db $55,$AA,$98,$AB,$56,$59,$58,$E6,$31,$D5,$94,$B3,$5A,$9C,$C7,$19
.db $95,$AC,$71,$95,$6B,$31,$9C,$63,$35,$59,$4C,$B3,$56,$69,$52,$CC
.db $CB,$33,$55,$55,$55,$9A,$66,$AA,$65,$55,$66,$AC,$65,$66,$65,$58
.db $CC,$B2,$D5,$35,$4B,$2C,$E6,$38,$CC,$C7,$34,$CE,$35,$56,$AA,$A9
.db $55,$59,$55,$56,$A6,$65,$A5,$55,$33,$4C,$AA,$AA,$AB,$2A,$CB,$35
.db $32,$D5,$4C,$CC,$D5,$55,$59,$33,$35,$4D,$55,$55,$4D,$4D,$32,$AA
.db $AA,$B3,$2A,$AA,$AA,$AA,$A6,$AA,$AB,$2D,$55,$55,$55,$55,$55,$55
.db $4E,$55,$58,$E5,$55,$32,$B2,$A6,$69,$A9,$A6,$AA,$AA,$AA,$AA,$B2
.db $CA,$AD,$33,$33,$4C,$D4,$D3,$4D,$53,$55,$53,$2A,$AA,$AA,$AA,$AA
.db $AA,$AA,$AA,$A9,$5A,$69,$AA,$AA,$AC,$D5,$54,$CC,$AB,$4C,$AC,$B5
.db $35,$2C,$CC,$AA,$B2,$9A,$55,$96,$A6,$AA,$A6,$A5,$55,$AA,$AB,$2A
.db $CD,$4B,$2A,$B2,$CB,$2A,$AA,$B4,$CC,$AA,$9A,$59,$69,$59,$65,$55
.db $59,$55,$55,$55,$56,$66,$AA,$AB,$2A,$AA,$AA,$A9,$9A,$6A,$AA,$AA
.db $AA,$95,$55,$55,$55,$55,$55,$55,$55,$56,$55,$95,$A6,$A6,$AA,$AA

.END





#3 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Sun Apr 17, 2011 6:47 PM

Ok, my 8080 is a bit rusty, but in your first version, it looks like your delay loop clobbers your sample. In your second version, it looks like you pop BC without ever pushing it.

#4 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Sun Apr 17, 2011 6:50 PM

Also, I'm not specifically familiar with the Aquarius. I take it "OUT ($FC), A" outputs bit 7 of the sample to the speaker?

#5 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Sun Apr 17, 2011 7:11 PM

Also, I'm not specifically familiar with the Aquarius. I take it "OUT ($FC), A" outputs bit 7 of the sample to the speaker?


That pop bc comment helped alot, thank you.

#6 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Mon Apr 18, 2011 8:10 PM

Well... I got some digitized sound to work. You guys might think this is pretty cool. Let's discuss for a second the severe limitation we have in terms of playing samples on the Aquarius. First off, all you have is a signal that is either 1 or a 0 to make the sound. Literally, you send a bit to the sound output port and it sends out a high signal or low signal. So the only waveform you really have available to you is a square wave. This works fine for buzzes and beeps, but terrible to reproduce sound. Now, we could go ahead and try to use what they used on PC Speakers and go for a pulse width modulation (gives you about 6 bit fidelity, but stored as 8 bits) but the problem there is that we just simply do not have enough space to do anything useful. I try to stick with 8k roms because a) you can compile it with TASM and b) you can run it on the emulator and c) I'm just not ready for bank switching yet. So here is the problem. The Aquarius can put out a 10 kHZ tone at best, well, at least that is what the specifications say. So, that means even 11025 hz is too much for a sampling rate... at least I think so.

Let's say we wanted 6 seconds of audio and a sampling rate of 8000 hz. That would mean 8,000 samples at 8 bits * 6 seconds, or a total of 384,000 bits / 8 / 1024 = 46.9 kb, or way over my self-imposed 8kb limit. I still want to encode 6 seconds of audio and that is where a 1 bit sample comes in. Without getting into too much theory, it is possible to represent audio with only 1 bit, there's lots of documentation out there about this. So I went ahead and converted my 6 second sample down to 1 bit, and then I wrote a program to send those bits (with a delay of course) to the sound output port of the Aquarius.

It works in the emulator. The sound quality kind of sucks, but hey, what do you want with a sample that is 6 seconds long and 7,012 bytes of data? Anyway, here is the BIN for you to try on the emulator and a wave file if you just want to listen to it. I'm not sure if it could be made to sound better, I have to experiment more. I've included the original wave file if you want to hear what I am trying to encode. Thoughts? Worth pursuing further?

Output from Real Aquarius: Attached File  Wave1.wav   1.12MB   241 downloads

BIN File for Emulator: Attached File  serious.bin   6.75KB   161 downloads

Original WAV File: Attached File  seriousBLEEP.wav   54.83KB   156 downloads

#7 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Mon Apr 18, 2011 9:33 PM

It works in the emulator. The sound quality kind of sucks, but hey, what do you want with a sample that is 6 seconds long and 7,012 bytes of data? Anyway, here is the BIN for you to try on the emulator and a wave file if you just want to listen to it. I'm not sure if it could be made to sound better, I have to experiment more. I've included the original wave file if you want to hear what I am trying to encode. Thoughts? Worth pursuing further?

Output from Real Aquarius: Attached File  Wave1.wav   1.12MB   241 downloads

BIN File for Emulator: Attached File  serious.bin   6.75KB   161 downloads

Original WAV File: Attached File  seriousBLEEP.wav   54.83KB   156 downloads


Hey, how's this data sound on a real Aquarius? If I counted right, it's 6400 bytes.

.db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$50,$12,$00,$48,$01,$00
 .db $00,$28,$14,$00,$50,$00,$00,$08,$14,$0A,$00,$40,$40,$80,$08,$50
 .db $12,$01,$41,$02,$00,$01,$40,$91,$04,$08,$08,$00,$05,$02,$00,$20
 .db $40,$20,$00,$50,$10,$02,$02,$00,$80,$02,$81,$00,$20,$20,$10,$00
 .db $28,$10,$02,$04,$81,$00,$0A,$02,$40,$80,$90,$20,$02,$80,$48,$10
 .db $08,$08,$00,$A0,$12,$02,$02,$01,$00,$28,$04,$80,$40,$00,$40,$0A
 .db $01,$20,$04,$80,$00,$01,$20,$09,$00,$90,$02,$00,$2A,$00,$90,$09
 .db $00,$20,$02,$40,$04,$80,$24,$00,$00,$12,$00,$44,$01,$00,$00,$00
 .db $90,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00
 .db $00,$00,$00,$40,$00,$00,$00,$00,$00,$48,$00,$00,$00,$00,$20,$A0
 .db $08,$00,$00,$00,$20,$A0,$08,$10,$00,$00,$00,$A0,$04,$10,$20,$00
 .db $00,$A0,$04,$00,$20,$00,$00,$A0,$04,$00,$40,$00,$10,$50,$00,$00
 .db $24,$00,$00,$28,$00,$00,$12,$00,$20,$0A,$00,$40,$04,$00,$40,$02
 .db $80,$09,$01,$20,$12,$00,$A0,$02,$40,$50,$00,$80,$14,$00,$48,$0A
 .db $00,$08,$02,$80,$0A,$00,$90,$02,$00,$28,$00,$40,$09,$00,$00,$02
 .db $40,$04,$00,$90,$00,$00,$20,$00,$20,$02,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $04,$00,$00,$01,$00,$00,$00,$04,$00,$00,$00,$20,$00,$00,$01,$00
 .db $00,$01,$24,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$81,$00,$00
 .db $00,$00,$00,$00,$00,$10,$00,$00,$02,$00,$00,$00,$02,$80,$02,$09
 .db $20,$00,$00,$20,$A0,$00,$00,$48,$00,$00,$00,$50,$02,$20,$48,$00
 .db $00,$00,$A0,$04,$80,$A4,$00,$80,$01,$40,$09,$00,$A0,$04,$80,$0A
 .db $00,$2A,$02,$80,$24,$00,$50,$02,$A0,$2A,$00,$90,$05,$00,$14,$01
 .db $48,$09,$01,$50,$02,$80,$52,$01,$20,$48,$01,$40,$12,$00,$40,$24
 .db $80,$52,$05,$40,$10,$12,$00,$48,$01,$20,$04,$12,$00,$28,$01,$20
 .db $00,$24,$00,$09,$00,$24,$00,$4A,$00,$12,$00,$48,$00,$94,$80,$24
 .db $00,$12,$01,$24,$00,$49,$00,$24,$89,$10,$00,$48,$00,$24,$44,$80
 .db $02,$40,$00,$81,$11,$00,$04,$90,$00,$42,$44,$00,$12,$00,$01,$02
 .db $44,$00,$12,$40,$00,$01,$12,$00,$04,$90,$00,$01,$08,$90,$00,$04
 .db $80,$00,$00,$00,$40,$00,$00,$20,$00,$00,$00,$00,$00,$00,$04,$80
 .db $00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$09,$00,$00
 .db $01,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$00
 .db $04,$44,$00,$00,$02,$04,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00
 .db $00,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$22,$00,$02,$40,$00,$00
 .db $09,$20,$00,$40,$00,$00,$01,$24,$00,$08,$00,$00,$00,$49,$00,$04
 .db $80,$00,$00,$12,$40,$09,$00,$00,$00,$01,$24,$01,$00,$09,$00,$00
 .db $24,$80,$10,$01,$20,$00,$02,$48,$01,$20,$12,$00,$00,$0A,$40,$02
 .db $00,$48,$00,$00,$09,$00,$00,$04,$90,$00,$00,$04,$80,$00,$01,$08
 .db $00,$00,$00,$20,$00,$00,$00,$80,$00,$00,$02,$08,$00,$01,$20,$00
 .db $00,$00,$02,$40,$00,$01,$08,$00,$00,$00,$00,$08,$00,$00,$20,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$12,$40,$04,$48,$04,$00,$00,$14,$80,$04,$40,$09,$00,$00,$14
 .db $80,$08,$40,$08,$00,$00,$14,$80,$08,$21,$04,$00,$00,$04,$80,$00
 .db $24,$80,$00,$00,$00,$42,$00,$01,$20,$00,$00,$00,$10,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$04,$20,$04,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00
 .db $00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$90,$00,$80,$00
 .db $00,$00,$00,$05,$00,$05,$00,$09,$00,$00,$00,$50,$00,$28,$00,$24
 .db $00,$00,$05,$00,$05,$08,$04,$80,$00,$02,$80,$02,$40,$05,$00,$00
 .db $05,$00,$04,$00,$12,$00,$40,$14,$00,$50,$00,$A0,$00,$02,$80,$05
 .db $20,$12,$00,$00,$A0,$01,$50,$01,$40,$00,$50,$00,$A8,$01,$40,$00
 .db $A4,$00,$A8,$01,$00,$01,$48,$02,$50,$0A,$00,$05,$40,$12,$40,$50
 .db $10,$15,$00,$90,$02,$80,$80,$54,$02,$90,$14,$02,$02,$A0,$0A,$00
 .db $A0,$20,$15,$01,$28,$0A,$01,$00,$A0,$09,$00,$50,$10,$05,$00,$48
 .db $02,$80,$80,$28,$02,$40,$10,$04,$01,$40,$12,$00,$A0,$20,$0A,$40
 .db $90,$02,$00,$80,$29,$02,$40,$14,$04,$00,$A4,$02,$00,$48,$00,$02
 .db $40,$04,$00,$20,$00,$04,$80,$09,$00,$20,$00,$04,$40,$01,$00,$12
 .db $00,$11,$10,$00,$40,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$04,$00,$00
 .db $00,$00,$00,$01,$20,$01,$00,$10,$00,$00,$00,$00,$24,$00,$04,$04
 .db $80,$00,$00,$00,$24,$00,$08,$01,$20,$00,$00,$00,$24,$00,$10,$02
 .db $40,$00,$00,$00,$48,$00,$48,$02,$00,$00,$00,$04,$80,$00,$40,$00
 .db $00,$00,$00,$12,$40,$00,$08,$00,$00,$00,$02,$48,$00,$00,$90,$00
 .db $00,$00,$49,$00,$00,$00,$00,$00,$00,$12,$00,$00,$00,$40,$00,$00
 .db $24,$80,$00,$00,$00,$00,$00,$92,$00,$48,$04,$90,$00,$09,$20,$04
 .db $80,$24,$00,$01,$48,$00,$90,$01,$20,$00,$52,$00,$24,$00,$20,$00
 .db $52,$00,$12,$00,$08,$00,$94,$00,$12,$00,$12,$04,$90,$00,$50,$00
 .db $00,$49,$00,$01,$24,$00,$04,$90,$00,$14,$80,$00,$A4,$00,$02,$90
 .db $00,$0A,$40,$00,$29,$00,$00,$92,$00,$01,$24,$00,$02,$40,$00,$04
 .db $80,$00,$00,$00,$00,$00,$00,$00,$00,$04,$40,$00,$00,$02,$00,$00
 .db $00,$80,$00,$00,$00,$10,$00,$00,$00,$40,$00,$00,$00,$04,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$40,$00,$00,$00,$20,$00,$00,$10,$80,$00,$00,$00,$00,$10
 .db $00,$00,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$04,$00,$00,$80
 .db $00,$01,$20,$00,$01,$00,$00,$0A,$48,$01,$28,$00,$80,$54,$80,$29
 .db $40,$09,$05,$48,$02,$90,$12,$00,$54,$80,$52,$02,$40,$05,$48,$05
 .db $20,$48,$00,$54,$00,$A2,$05,$00,$0A,$80,$14,$00,$A0,$01,$50,$02
 .db $90,$14,$00,$2A,$00,$54,$02,$80,$04,$A0,$0A,$80,$48,$00,$94,$01
 .db $50,$09,$00,$12,$80,$0A,$00,$A0,$02,$50,$01,$48,$04,$80,$4A,$00
 .db $2A,$00,$90,$09,$48,$04,$90,$02,$02,$44,$00,$12,$00,$00,$91,$00
 .db $48,$80,$00,$12,$40,$01,$10,$00,$84,$88,$00,$44,$00,$00,$91,$00
 .db $12,$40,$00,$12,$40,$01,$22,$00,$24,$A4,$00,$24,$80,$00,$49,$00
 .db $04,$90,$00,$09,$10,$00,$49,$20,$00,$91,$00,$04,$90,$00,$09,$10
 .db $00,$12,$90,$00,$92,$00,$00,$A4,$00,$02,$48,$00,$01,$20,$00,$09
 .db $20,$00,$01,$20,$00,$12,$40,$00,$09,$20,$00,$49,$10,$00,$24,$80
 .db $01,$24,$40,$01,$24,$00,$09,$24,$00,$0A,$90,$00,$4A,$90,$00,$49
 .db $00,$02,$48,$00,$12,$90,$00,$12,$40,$00,$94,$80,$00,$92,$00,$09
 .db $48,$00,$24,$88,$00,$24,$80,$02,$12,$20,$00,$92,$00,$11,$24,$40
 .db $02,$49,$00,$48,$49,$00,$01,$20,$00,$90,$91,$20,$09,$20,$00,$00
 .db $92,$40,$02,$40,$02,$00,$92,$00,$09,$20,$01,$24,$89,$20,$09,$20
 .db $00,$20,$49,$20,$01,$20,$00,$22,$44,$90,$00,$90,$00,$11,$24,$90
 .db $00,$92,$00,$00,$12,$24,$00,$24,$00,$00,$04,$90,$00,$12,$20,$02
 .db $00,$24,$40,$04,$80,$00,$00,$09,$20,$01,$20,$00,$10,$01,$20,$00
 .db $48,$00,$04,$80,$49,$00,$12,$00,$08,$80,$12,$00,$09,$20,$02,$40
 .db $92,$00,$09,$20,$01,$10,$12,$00,$09,$20,$04,$80,$12,$00,$12,$40
 .db $09,$00,$24,$00,$24,$80,$12,$00,$48,$00,$54,$00,$48,$09,$20,$01
 .db $48,$01,$24,$24,$80,$05,$20,$09,$00,$12,$00,$2A,$00,$24,$00,$90
 .db $00,$90,$00,$48,$24,$90,$02,$48,$02,$41,$12,$40,$12,$40,$09,$00
 .db $48,$00,$49,$00,$24,$11,$24,$00,$24,$00,$00,$20,$88,$00,$48,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$04,$80,$02,$00,$00,$00,$09,$00,$00,$00,$00,$01,$24,$00
 .db $12,$00,$00,$00,$90,$00,$90,$00,$40,$09,$20,$02,$40,$04,$00,$25
 .db $00,$09,$00,$10,$00,$92,$00,$24,$00,$80,$04,$A0,$01,$20,$02,$00
 .db $25,$00,$09,$00,$20,$01,$24,$00,$90,$01,$00,$09,$20,$04,$80,$00
 .db $00,$92,$00,$44,$01,$00,$09,$40,$02,$40,$00,$00,$49,$00,$22,$00
 .db $80,$02,$40,$01,$10,$04,$00,$12,$00,$08,$80,$20,$00,$94,$00,$52
 .db $01,$00,$02,$40,$02,$90,$04,$00,$12,$80,$08,$80,$24,$00,$48,$00
 .db $52,$00,$80,$02,$50,$01,$48,$04,$80,$04,$90,$02,$40,$09,$00,$12
 .db $80,$09,$20,$12,$00,$25,$00,$14,$80,$08,$00,$14,$40,$12,$00,$09
 .db $01,$24,$80,$24,$40,$12,$08,$92,$00,$92,$00,$08,$24,$90,$00,$88
 .db $00,$01,$12,$40,$12,$40,$00,$48,$92,$00,$92,$00,$10,$48,$80,$02
 .db $40,$00,$04,$48,$00,$24,$00,$00,$24,$40,$01,$20,$00,$01,$22,$00
 .db $09,$00,$00,$09,$10,$00,$92,$00,$00,$24,$80,$04,$40,$00,$21,$22
 .db $00,$12,$00,$01,$24,$88,$00,$24,$00,$00,$92,$20,$01,$24,$00,$12
 .db $44,$80,$04,$90,$00,$89,$12,$00,$12,$40,$01,$02,$49,$00,$49,$00
 .db $02,$09,$24,$01,$20,$00,$90,$24,$90,$04,$80,$02,$40,$92,$40,$14
 .db $80,$08,$02,$48,$00,$48,$00,$20,$09,$20,$00,$90,$00,$80,$12,$40
 .db $02,$90,$02,$40,$49,$00,$0A,$40,$09,$01,$24,$80,$29,$00,$24,$04
 .db $A8,$00,$A4,$02,$40,$02,$A0,$02,$90,$09,$00,$24,$80,$0A,$40,$24
 .db $00,$92,$00,$12,$00,$90,$02,$48,$01,$24,$01,$20,$09,$48,$04,$A0
 .db $04,$80,$12,$40,$05,$20,$12,$00,$49,$00,$0A,$40,$12,$01,$24,$00
 .db $29,$00,$24,$01,$20,$00,$90,$00,$90,$24,$90,$02,$40,$00,$80,$12
 .db $40,$05,$00,$02,$04,$88,$00,$24,$00,$08,$12,$20,$00,$24,$00,$20
 .db $48,$80,$00,$80,$00,$02,$44,$00,$04,$80,$00,$09,$10,$00,$08,$80
 .db $00,$22,$48,$00,$48,$00,$00,$48,$80,$00,$92,$00,$00,$92,$00,$01
 .db $24,$00,$01,$24,$00,$00,$80,$00,$01,$24,$00,$01,$20,$00,$01,$10
 .db $00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $A0,$00,$20,$00,$40,$01,$50,$00,$90,$01,$00,$02,$80,$01,$00,$80
 .db $00,$0A,$81,$04,$04,$08,$08,$14,$08,$20,$10,$40,$40,$A0,$20,$81
 .db $02,$02,$02,$81,$0A,$08,$08,$10,$14,$00,$48,$20,$40,$80,$50,$01
 .db $01,$02,$00,$02,$80,$04,$04,$08,$00,$0A,$00,$20,$20,$40,$00,$28
 .db $00,$80,$81,$00,$01,$40,$02,$04,$04,$00,$02,$80,$10,$10,$40,$00
 .db $0A,$00,$40,$20,$00,$08,$28,$01,$00,$84,$00,$40,$A0,$02,$02,$10
 .db $40,$82,$80,$12,$08,$41,$02,$05,$00,$20,$20,$04,$08,$14,$00,$80
 .db $82,$08,$10,$28,$01,$00,$04,$10,$20,$50,$01,$01,$08,$20,$40,$50
 .db $02,$40,$10,$20,$80,$50,$02,$40,$12,$40,$00,$A0,$02,$00,$10,$20
 .db $00,$50,$02,$40,$12,$00,$00,$50,$01,$20,$12,$00,$00,$28,$01,$40
 .db $09,$00,$00,$54,$01,$40,$09,$00,$00,$28,$01,$40,$09,$00,$00,$28
 .db $01,$40,$04,$80,$00,$28,$00,$A0,$0A,$00,$00,$50,$00,$80,$05,$00
 .db $00,$A0,$01,$08,$04,$80,$00,$A0,$00,$90,$04,$80,$00,$A0,$00,$48
 .db $01,$20,$00,$12,$00,$09,$00,$24,$00,$01,$20,$00,$20,$02,$00,$00
 .db $00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$12,$00,$08,$00,$80,$00,$02,$80,$04,$80,$09,$00,$20
 .db $A0,$00,$A0,$02,$40,$00,$28,$00,$28,$01,$20,$00,$14,$00,$28,$00
 .db $50,$00,$0A,$00,$14,$00,$A8,$00,$0A,$00,$14,$00,$50,$00,$14,$00
 .db $28,$01,$40,$00,$14,$00,$50,$02,$80,$00,$28,$00,$A0,$05,$00,$00
 .db $A8,$02,$80,$14,$00,$41,$50,$05,$00,$50,$01,$05,$20,$14,$00,$90
 .db $04,$14,$00,$50,$05,$00,$20,$50,$02,$80,$28,$01,$02,$80,$14,$01
 .db $40,$04,$14,$00,$A0,$0A,$00,$80,$A0,$05,$00,$A0,$04,$0A,$00,$50
 .db $0A,$00,$80,$A0,$05,$00,$A0,$04,$0A,$00,$50,$0A,$00,$40,$A0,$04
 .db $00,$A0,$08,$0A,$00,$40,$14,$00,$81,$40,$08,$02,$80,$10,$28,$01
 .db $20,$28,$01,$02,$80,$20,$05,$00,$20,$50,$05,$00,$A0,$04,$0A,$00
 .db $A0,$14,$01,$01,$40,$14,$02,$80,$10,$28,$02,$80,$48,$02,$05,$00
 .db $20,$09,$00,$20,$A0,$04,$80,$90,$02,$0A,$00,$48,$12,$00,$20,$A0
 .db $04,$81,$20,$08,$05,$00,$28,$12,$00,$80,$50,$02,$81,$40,$01,$02
 .db $80,$14,$0A,$00,$20,$14,$00,$A0,$50,$01,$00,$A0,$05,$01,$40,$04
 .db $02,$80,$12,$04,$80,$10,$0A,$00,$48,$14,$00,$00,$14,$00,$90,$28
 .db $00,$00,$28,$00,$A0,$28,$00,$80,$28,$00,$90,$28,$00,$00,$14,$00
 .db $50,$0A,$00,$10,$0A,$80,$28,$05,$00,$09,$02,$80,$0A,$01,$48,$04
 .db $80,$A8,$02,$80,$52,$01,$20,$14,$00,$50,$0A,$40,$48,$05,$40,$14
 .db $02,$A0,$09,$00,$A8,$02,$80,$54,$01,$20,$0A,$00,$50,$04,$80,$24
 .db $01,$50,$05,$00,$28,$02,$40,$15,$00,$50,$02,$80,$12,$00,$A8,$02
 .db $80,$14,$00,$90,$05,$40,$14,$00,$A0,$04,$80,$14,$00,$50,$05,$00
 .db $24,$00,$50,$02,$80,$14,$00,$90,$01,$40,$0A,$00,$50,$02,$40,$05
 .db $00,$14,$01,$40,$09,$00,$05,$00,$24,$02,$40,$08,$00,$05,$00,$24
 .db $01,$20,$12,$00,$01,$20,$09,$00,$40,$04,$00,$08,$20,$00,$00,$00
 .db $00,$40,$00,$82,$00,$00,$00,$00,$00,$00,$04,$04,$80,$02,$00,$00
 .db $00,$00,$04,$04,$00,$04,$00,$00,$00,$00,$08,$00,$80,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$90,$00,$00,$02,$48,$01
 .db $20,$00,$01,$08,$00,$08,$40,$00,$94,$00,$08,$00,$00,$09,$40,$01
 .db $20,$00,$09,$40,$04,$80,$10,$02,$50,$02,$50,$04,$01,$28,$01,$20
 .db $04,$00,$94,$00,$90,$01,$00,$94,$00,$90,$02,$40,$4A,$00,$48,$01
 .db $00,$4A,$00,$14,$00,$80,$25,$00,$0A,$00,$40,$09,$40,$02,$40,$00
 .db $02,$50,$00,$90,$00,$00,$94,$00,$12,$00,$00,$09,$20,$01,$24,$00
 .db $00,$49,$00,$09,$20,$04,$80,$48,$00,$29,$00,$24,$00,$A4,$00,$A4
 .db $00,$90,$01,$50,$01,$48,$00,$90,$02,$50,$01,$50,$01,$20,$01,$52
 .db $00,$A8,$01,$48,$00,$24,$80,$29,$00,$52,$00,$81,$28,$02,$90,$0A
 .db $40,$24,$04,$A0,$0A,$00,$54,$01,$20,$0A,$80,$14,$00,$A8,$04,$80
 .db $05,$00,$04,$00,$52,$04,$80,$01,$40,$01,$00,$28,$00,$80,$00,$28
 .db $00,$24,$02,$90,$08,$00,$05,$20,$02,$40,$24,$80,$00,$00,$52,$00
 .db $28,$00,$48,$00,$00,$02,$90,$01,$48,$01,$20,$00,$00,$09,$20,$0A
 .db $40,$09,$00,$00,$00,$52,$00,$29,$00,$50,$00,$00,$00,$92,$00,$A4
 .db $01,$20,$01,$00,$01,$24,$01,$24,$02,$40,$00,$00,$41,$24,$01,$48
 .db $02,$40,$00,$00,$40,$92,$00,$92,$01,$20,$00,$00,$20,$84,$00,$48
 .db $00,$90,$00,$00,$10,$49,$00,$24,$00,$48,$00,$00,$10,$24,$80,$12
 .db $40,$00,$00,$00,$08,$10,$80,$02,$40,$00,$00,$00,$02,$00,$00,$00
 .db $24,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$12,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$20
 .db $00,$04,$80,$00,$00,$02,$40,$00,$12,$00,$00,$00,$01,$20,$00,$12
 .db $00,$02,$00,$04,$00,$00,$90,$00,$00,$02,$48,$00,$09,$20,$00,$00
 .db $02,$40,$00,$24,$80,$00,$00,$09,$00,$00,$22,$00,$00,$02,$48,$00
 .db $09,$00,$00,$00,$02,$40,$00,$09,$20,$00,$00,$09,$00,$00,$24,$80
 .db $00,$00,$92,$00,$00,$92,$00,$00,$01,$24,$00,$04,$90,$00,$00,$00
 .db $24,$00,$00,$92,$00,$00,$00,$10,$00,$00,$92,$00,$00,$00,$12,$40
 .db $00,$09,$20,$00,$00,$00,$12,$00,$00,$48,$00,$00,$00,$01,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$80
 .db $00,$01,$20,$00,$40,$02,$10,$00,$00,$50,$00,$12,$00,$40,$00,$00
 .db $0A,$00,$01,$00,$00,$80,$00,$05,$00,$00,$00,$80,$04,$00,$00,$A0
 .db $00,$00,$12,$00,$00,$00,$0A,$00,$00,$00,$40,$00,$00,$00,$A4,$00
 .db $00,$04,$00,$00,$00,$05,$20,$00,$00,$04,$00,$00,$00,$09,$00,$00
 .db $02,$40,$00,$00,$00,$49,$00,$00,$08,$00,$20,$00,$00,$90,$00,$00
 .db $01,$00,$00,$00,$00,$90,$00,$00,$12,$40,$00,$00,$00,$24,$00,$00
 .db $00,$00,$80,$00,$00,$01,$20,$00,$40,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$10,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00
 .db $08,$10,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$08,$40,$00,$00,$00,$00
 .db $00,$00,$01,$00,$00,$00,$40,$00,$20,$01,$02,$00,$00,$00,$00,$00
 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 .db $00,$00,$04,$00,$00,$00,$00,$00,$09,$20,$00,$10,$00,$00,$04,$90
 .db $00,$24,$80,$00,$01,$24,$00,$24,$00,$12,$01,$28,$00,$24,$80,$00
 .db $02,$50,$00,$29,$00,$00,$04,$A0,$00,$A4,$00,$48,$09,$40,$01,$48
 .db $00,$48,$25,$00,$02,$90,$01,$00,$4A,$00,$12,$40,$02,$00,$94,$00
 .db $2A,$00,$12,$01,$28,$00,$94,$00,$24,$02,$50,$01,$28,$01,$20,$05
 .db $20,$02,$90,$02,$40,$05,$50,$02,$90,$05,$00,$05,$48,$02,$90,$05
 .db $20,$02,$90,$01,$48,$02,$90,$01,$48,$00,$A4,$01,$48,$00,$52,$00
 .db $54,$00,$48,$00,$29,$00,$15,$00,$24,$80,$0A,$80,$05,$40,$04,$80
 .db $05,$48,$01,$50,$00,$90,$01,$50,$00,$52,$00,$24,$00,$94,$00,$29
 .db $00,$09,$00,$54,$00,$14,$80,$09,$00,$29,$00,$14,$80,$04,$80,$29
 .db $00,$12,$40,$04,$80,$24,$00,$14,$80,$04,$80,$24,$80,$14,$80,$01
 .db $00,$24,$80,$12,$40,$00,$80,$12,$00,$0A,$40,$00,$80,$09,$20,$02
 .db $90,$00,$80,$05,$20,$01,$48,$00,$24,$01,$50,$00,$A4,$00,$12,$00
 .db $52,$00,$2A,$40,$04,$80,$14,$80,$0A,$90,$02,$40,$0A,$90,$02,$A0
 .db $01,$48,$01,$52,$00,$54,$00,$49,$00,$2A,$80,$0A,$80,$09,$20,$01
 .db $50,$00,$A4,$00,$A4,$00,$0A,$40,$04,$90,$04,$80,$00,$29,$00,$09
 .db $00,$12,$40,$00,$92,$00,$08,$00,$24,$00,$00,$90,$00,$00,$00,$00
 .db $00,$00,$49,$00,$00,$20,$00,$00,$00,$12,$40,$00,$00,$00,$00,$00
 .db $00,$04,$80,$00,$24,$00,$00,$00,$00,$80,$20,$00,$00,$08,$00,$00
 .db $00,$00,$20,$00,$00,$00,$00,$24,$00,$00,$21,$00,$00,$42,$10,$21
 .db $08,$40,$00,$81,$08,$04,$00,$00,$40,$90,$80,$00,$00,$80,$24,$09
 .db $09,$02,$00,$00,$01,$00,$00,$01,$08,$48,$42,$10,$84,$00,$04,$00
 .db $01,$20,$00,$40,$08,$01,$08,$44,$80,$00,$21,$02,$00,$10,$84,$00
 .db $40,$08,$42,$04,$21,$00,$00,$00,$08,$42,$10,$10,$84,$21,$08,$49
 .db $21,$08,$01,$04,$80,$00,$09,$08,$40,$40,$02,$42,$42,$01,$09,$00
 .db $00,$81,$00,$10,$02,$42,$10,$00,$48,$42,$10,$90,$00,$02,$40,$00
 .db $20,$48,$10,$21,$01,$21,$00,$00,$10,$24,$4A,$10,$00,$04,$20,$90
 .db $00,$09,$08,$52,$10,$90,$24,$04,$20,$40,$42,$40,$10,$81,$00,$91
 .db $20,$08,$24,$20,$09,$12,$00,$80,$02,$40,$08,$10,$89,$00,$48,$09
 .db $08,$42,$11,$09,$00,$21,$48,$91,$20,$40,$02,$10,$81,$02,$10,$20
 .db $42,$10,$92,$00,$00,$04,$01,$20,$08,$42,$11,$21,$00,$80,$04,$80
 .db $40,$01,$00,$00,$21,$08,$10,$24,$20,$24,$00,$24,$00,$21,$08,$42
 .db $10,$02,$00,$00,$09,$00,$10,$20,$01,$02,$00,$00,$20,$01,$20,$12
 .db $10,$00,$00,$48,$10,$04,$24,$00,$21,$08,$00,$80,$00,$90,$00,$00
 .db $00,$00,$00,$00,$00,$20,$00,$00,$92,$00,$02,$48,$00,$12,$40,$00
 .db $00,$0A,$80,$00,$24,$00,$00,$00,$54,$00,$04,$80,$04,$90,$05,$50
 .db $00,$A4,$00,$A4,$00,$0A,$90,$05,$20,$12,$90,$01,$04,$A0,$01,$00
 .db $24,$80,$20,$01,$54,$00,$48,$04,$90,$08,$00,$0A,$80,$05,$00,$29
 .db $00,$24,$00,$0A,$A0,$0A,$80,$29,$00,$48,$01,$20,$2A,$00,$24,$01
 .db $48,$02,$40,$08,$00,$00,$A8,$00,$A4,$04,$80,$04,$00,$12,$00,$00

Here's the program I made it with, in all its ugliness.

#include <stdio.h>

main()
{
    int c;
    int avg = 0;
    int out;
    int i;
    int v = 0;
    
    // skip WAV header
    for (i = 0; i < 44; i++)
        getchar();

    i = 0;
    while ((c = getchar()) != EOF)
    {
        c -= 0x60;
        c *= 96;
        c >>= 7;
        if (c < 0x20) c = 0;

        out = c > avg ? 255 : 0;
        avg = (3*out + avg + 1) >> 2;

        v <<= 1;
        if (out)
            v |= 1;

        if ((i & 127) == 0)
            printf(" .db ");
        else if ((i & 7) == 0)
            putchar(',');

        if ((i & 7) == 7)
            printf("$%.2X", v & 0xFF);

        if ((i & 127) == 127)
            putchar('\n');

        i++;
    }

    while ((i++ & 7) != 7)
        v <<= 1;
    printf("$%.2X\n", v);

    return 0;
}


#8 Jay Silverheels OFFLINE  

Jay Silverheels

    Moonsweeper

  • 383 posts
  • Location:Washington D.C.

Posted Tue Apr 19, 2011 9:48 AM

Well... I got some digitized sound to work. You guys might think this is pretty cool. Let's discuss for a second the severe limitation we have in terms of playing samples on the Aquarius. First off, all you have is a signal that is either 1 or a 0 to make the sound. Literally, you send a bit to the sound output port and it sends out a high signal or low signal. So the only waveform you really have available to you is a square wave. This works fine for buzzes and beeps, but terrible to reproduce sound. Now, we could go ahead and try to use what they used on PC Speakers and go for a pulse width modulation (gives you about 6 bit fidelity, but stored as 8 bits) but the problem there is that we just simply do not have enough space to do anything useful. I try to stick with 8k roms because a) you can compile it with TASM and b) you can run it on the emulator and c) I'm just not ready for bank switching yet. So here is the problem. The Aquarius can put out a 10 kHZ tone at best, well, at least that is what the specifications say. So, that means even 11025 hz is too much for a sampling rate... at least I think so.

Let's say we wanted 6 seconds of audio and a sampling rate of 8000 hz. That would mean 8,000 samples at 8 bits * 6 seconds, or a total of 384,000 bits / 8 / 1024 = 46.9 kb, or way over my self-imposed 8kb limit. I still want to encode 6 seconds of audio and that is where a 1 bit sample comes in. Without getting into too much theory, it is possible to represent audio with only 1 bit, there's lots of documentation out there about this. So I went ahead and converted my 6 second sample down to 1 bit, and then I wrote a program to send those bits (with a delay of course) to the sound output port of the Aquarius.

It works in the emulator. The sound quality kind of sucks, but hey, what do you want with a sample that is 6 seconds long and 7,012 bytes of data? Anyway, here is the BIN for you to try on the emulator and a wave file if you just want to listen to it. I'm not sure if it could be made to sound better, I have to experiment more. I've included the original wave file if you want to hear what I am trying to encode. Thoughts? Worth pursuing further?

Output from Real Aquarius: Attached File  Wave1.wav   1.12MB   241 downloads

BIN File for Emulator: Attached File  serious.bin   6.75KB   161 downloads

Original WAV File: Attached File  seriousBLEEP.wav   54.83KB   156 downloads



It is cool. The first couple times listening to the Aq wav, it reminded me of a part of Star Wars when X-Wing radio chatter can be heard in the background. Then, I made out the "serious bleep", part, but couldn't place it. Of course, once I heard the original, I could follow the quote through the Aq wav.

Always looking forward to more.

BTW, didn't Harrold Spier do a hack of Pac Mr. with some digitized speech?

It probably uses the AY sound, though. Coincidentally, it also used the same bleeped word. ;-)

I think it comes bundled with the emulator. I'll check.

Edit: I checked, and it is in the cassette folder of the emulator titled: PacMrOhShucks

It probably does not use the AY, since it actually sounds like a cleaner version of your method. It does still have the high pitched buzzing, though.

Edited by Jay Silverheels, Tue Apr 19, 2011 9:53 AM.


#9 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Tue Apr 19, 2011 9:59 AM

It is cool. The first couple times listening to the Aq wav, it reminded me of a part of Star Wars when X-Wing radio chatter can be heard in the background. Then, I made out the "serious bleep", part, but couldn't place it. Of course, once I heard the original, I could follow the quote through the Aq wav.

Always looking forward to more.

BTW, didn't Harrold Spier do a hack of Pac Mr. with some digitized speech?

It probably uses the AY sound, though. Coincidentally, it also used the same bleeped word. ;-)

I think it comes bundled with the emulator. I'll check.

Edit: I checked, and it is in the cassette folder of the emulator titled: PacMrOhShucks

It probably does not use the AY, since it actually sounds like a cleaner version of your method. It does still have the high pitched buzzing, though.


Too funny... I thought of the Star Wars radio chatter as well. The converter that Intvnut posted makes a better sound, but it still has the high pitched beep. I know that I am adding a significant pause in my code to get to the right speed, I have a sneaking suspicion that the Aquarius can handle a much higher 1 bit sampling rate, but then I would need a lot more cartridge space. Time to look at bank switching.

#10 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Tue Apr 19, 2011 10:01 AM

Hey, how's this data sound on a real Aquarius? If I counted right, it's 6400 bytes.


It sounds much better than mine. Did you just assign a 1 to anything over 127 and a 0 to anything under?

#11 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Tue Apr 19, 2011 10:26 AM


Hey, how's this data sound on a real Aquarius? If I counted right, it's 6400 bytes.


It sounds much better than mine. Did you just assign a 1 to anything over 127 and a 0 to anything under?


Not exactly. I realized that at this low sample rate that straddling DC with a 1/0/1/0 pattern would create an annoying whine. So, I did decide to focus mostly on the positive swing of the signal. I actually biased it slightly (0x60 instead of 0x80), scaled it (96/128), and then threw out anything below 0x20 treating it as 0. This did clamp noise near DC away, much like a squelch filter might on a walkie-talkie.

For what remained, I used a weighted average scheme. If the input was above the weighted average, I output a 1 (scoring it 255 against the weighted average), otherwise I output a 0. The weighted average just takes 1/4 the previous average plus 3/4 the current sample. (I experimented with different weightings, and it didn't make a dramatic difference.)

I think the biggest improvement came from getting rid of the 1/0/1/0 whistle that gave it that "Star Wars background intercom voice" quality.

I was actually rather surprised how well it worked. The resulting sample is actually mostly zeroes, which suggests you could compress it very, very well with some sort of run-length encoding rather than as a 1-bpp sample. Getting the timing of the RLE decompress loop down might be tricky, but it seems promising. That'd allow you to store much longer samples.

At any rate, I guess this shows that the technique works for getting a sample out of the speaker, and the rest of the creativity will be in the encoding. ;-)

Edited by intvnut, Tue Apr 19, 2011 10:29 AM.


#12 jaybird3rd ONLINE  

jaybird3rd

    Quadrunner

  • 7,001 posts
  • Location:806.4616.0110

Posted Tue Apr 19, 2011 11:00 AM

I'm glad to see the progress on this! Using sound samples was an area I had planned on looking into myself; it will be necessary for some game ideas I have in mind. If nothing else, perhaps this will make it easier to create more elaborate sound effects, particularly the kinds you hear in 2600 games (the "engine noise" and the other whooshing white noise effects many of us are familiar with). The original Aquarius releases used relatively simple buzzes and beeps, but I always knew that even the built-in sound was capable of doing more.

#13 mvdsteenoven OFFLINE  

mvdsteenoven

    Chopper Commander

  • 162 posts
  • Location:Netherlands

Posted Tue Apr 19, 2011 11:27 AM

BTW, didn't Harrold Spier do a hack of Pac Mr. with some digitized speech?

It probably uses the AY sound, though. Coincidentally, it also used the same bleeped word. ;-)

I think it comes bundled with the emulator. I'll check.

Edit: I checked, and it is in the cassette folder of the emulator titled: PacMrOhShucks


Yes, Harold used the common sound channel as well.
Also check the folder Quicktyp\OtherFun; you will find another program by Harold that records sound and plays it back.
You can record your voice into a 8-bits WAV file and use the Speech program to record it, and play it back.
Unfortunattely the recorded session is in RAM and the program does not stores it to tape.

You can disassemble the speech program; it is very interesting.

Regs
Martin

#14 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Tue Apr 19, 2011 4:55 PM

Here is the Intvnut version of the ROM.

Attached Files



#15 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Tue Apr 19, 2011 4:57 PM


BTW, didn't Harrold Spier do a hack of Pac Mr. with some digitized speech?

It probably uses the AY sound, though. Coincidentally, it also used the same bleeped word. ;-)

I think it comes bundled with the emulator. I'll check.

Edit: I checked, and it is in the cassette folder of the emulator titled: PacMrOhShucks


Yes, Harold used the common sound channel as well.
Also check the folder Quicktyp\OtherFun; you will find another program by Harold that records sound and plays it back.
You can record your voice into a 8-bits WAV file and use the Speech program to record it, and play it back.
Unfortunattely the recorded session is in RAM and the program does not stores it to tape.

You can disassemble the speech program; it is very interesting.

Regs
Martin


Excuse my ignorance, but how do I disassemble a program that is in data statements in a quick type?

#16 mvdsteenoven OFFLINE  

mvdsteenoven

    Chopper Commander

  • 162 posts
  • Location:Netherlands

Posted Wed Apr 20, 2011 11:30 AM

.. how do I disassemble a program that is in data statements in a quick type?


You can do it the old fashioned way; get a sheet with Z80 OpCodes and their codes and do it manually ;)
Or you can run the program in the Virtual Aquarius and dump the memory after the machine code has been loaded, next cut the piece of memory from the ram.bin that contains the machinecode and run it against dasmx (available with the virtual aquarius in the subfolder ml\dasmx).
That is how I did it.

This first piece of code records from microphone into memory;
;
;	Disassembled by:
;		DASMx object code disassembler
;		(c) Copyright 1996-1998   Conquest Consultants
;		Version 1.20 (Apr  2 1998)
;
;	File:	LOAD.BIN
;	Date:	Wed Apr 20 19:16:28 2011
;	CPU:	Zilog Z80 (Z80 family)
;
;
	org	$3E80
;
	ld	hl,$3F00
	ld	c,$FC
L3E85:
	ld	b,$08
L3E87:
	in	a,(c)
	out	(c),a
	cp	$FF
	rl	d
	ld	a,$0A
L3E91:
	dec	a
	jr	nz,L3E91
	djnz	L3E87
	ld	a,d
	inc	hl
	ld	(hl),a
	ld	($3002),hl
	ld	a,h
	cp	$7D
	jp	nz,L3E85
	ret

This second part plays the recorded sound;
;
;	Disassembled by:
;		DASMx object code disassembler
;		(c) Copyright 1996-1998   Conquest Consultants
;		Version 1.20 (Apr  2 1998)
;
;	File:	SPEECH.bin
;	Date:	Wed Apr 20 19:15:23 2011
;	CPU:	Zilog Z80 (Z80 family)
;
;
	org	$3E80
;
	ld	hl,$3F00
	ld	c,$FC
L3E85:
	inc	hl
	ld	a,(hl)
	ld	d,a
	ld	($3002),hl
	ld	b,$08
L3E8D:
	rl	d
	ld	e,$FF
	jr	nc,L3E95
	ld	e,$FE
L3E95:
	out	(c),e
	ld	a,$0A
L3E99:
	dec	a
	jr	nz,L3E99
	djnz	L3E8D
	ld	a,h
	cp	$7D
	jp	nz,L3E85
	ret


#17 mvdsteenoven OFFLINE  

mvdsteenoven

    Chopper Commander

  • 162 posts
  • Location:Netherlands

Posted Wed Apr 20, 2011 11:31 AM

.. how do I disassemble a program that is in data statements in a quick type?


You can do it the old fashioned way; get a sheet with Z80 OpCodes and their codes and do it manually ;)
Or you can run the program in the Virtual Aquarius and dump the memory after the machine code has been loaded, next cut the piece of memory from the ram.bin that contains the machinecode and run it against dasmx (available with the virtual aquarius in the subfolder ml\dasmx).
That is how I did it.

This first piece of code records from microphone into memory;
;
;	Disassembled by:
;		DASMx object code disassembler
;		(c) Copyright 1996-1998   Conquest Consultants
;		Version 1.20 (Apr  2 1998)
;
;	File:	LOAD.BIN
;	Date:	Wed Apr 20 19:16:28 2011
;	CPU:	Zilog Z80 (Z80 family)
;
;
	org	$3E80
;
	ld	hl,$3F00
	ld	c,$FC
L3E85:
	ld	b,$08
L3E87:
	in	a,(c)
	out	(c),a
	cp	$FF
	rl	d
	ld	a,$0A
L3E91:
	dec	a
	jr	nz,L3E91
	djnz	L3E87
	ld	a,d
	inc	hl
	ld	(hl),a
	ld	($3002),hl
	ld	a,h
	cp	$7D
	jp	nz,L3E85
	ret

This second part plays the recorded sound;
;
;	Disassembled by:
;		DASMx object code disassembler
;		(c) Copyright 1996-1998   Conquest Consultants
;		Version 1.20 (Apr  2 1998)
;
;	File:	SPEECH.bin
;	Date:	Wed Apr 20 19:15:23 2011
;	CPU:	Zilog Z80 (Z80 family)
;
;
	org	$3E80
;
	ld	hl,$3F00
	ld	c,$FC
L3E85:
	inc	hl
	ld	a,(hl)
	ld	d,a
	ld	($3002),hl
	ld	b,$08
L3E8D:
	rl	d
	ld	e,$FF
	jr	nc,L3E95
	ld	e,$FE
L3E95:
	out	(c),e
	ld	a,$0A
L3E99:
	dec	a
	jr	nz,L3E99
	djnz	L3E8D
	ld	a,h
	cp	$7D
	jp	nz,L3E85
	ret


#18 mvdsteenoven OFFLINE  

mvdsteenoven

    Chopper Commander

  • 162 posts
  • Location:Netherlands

Posted Wed Apr 20, 2011 2:01 PM

Oops, accidently posted it twice. :(

#19 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Sun Apr 24, 2011 9:25 PM

Oops, accidently posted it twice. :(



This is my problem with the Aquarius. So I want better digitized sound. Do I:

a) Work on the 1 BIT DAC Method, and try to optimize the encoder. Sub-options would include trying to utilize bank switching to increase the sample rate. I could put out 6 times more 1's and 0's to the audio port than I am right now, the current program has a delay built in to suck up CPU cycles. Another option would be to try to better optimize the 1 and 0 digital encoding. Lastly, a circuit could be attached to my RCA Audio out that filters the signal to a better reconstruction - but that feels like cheating to me.

B) try to utilize this http://www.msx.org/P...wspost3520.html and since the MSX-1 had a Z80 and the same same sound chip as the Aquarius, I bet you could convert this program over very easily to the extender. I hate that I am not better with ASM because it would be a one day task for somebody who really knew what they were doing.

C) try to build a serial to parallel DAC that could be attached to either the printer port or the audio output. The problem here is still the same, only 8k of data on a cart without bankswitching.

D) Try to encode a 4-bit audio decompression program, so you could encode with GSM or something like that and decode on the Aquarius.

The groups's thoughts?

#20 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Mon Apr 25, 2011 11:56 AM

B) try to utilize this http://www.msx.org/P...wspost3520.html and since the MSX-1 had a Z80 and the same same sound chip as the Aquarius, I bet you could convert this program over very easily to the extender. I hate that I am not better with ASM because it would be a one day task for somebody who really knew what they were doing.


I took a look at the "replayer_core" files in the PCM Encoder, and I have to say they're very simple. It appears that the bulk of the "porting" work would just involve setting up the right addresses for the PSG if the Z-80 clock rates are the same. I'm neither an Aquarius or an MSX expert, though.

I will say that Arnauld Chevallier's experiments with the PCM Encoder and the PSG on the Intellivision have been impressive. One drawback we have on the Intellivision, though, is that the display controller cycle-steals when the display is active, so you have to blank the display to play a sample cleanly. Does the Aquarius display cycle-steal?

#21 jaybird3rd ONLINE  

jaybird3rd

    Quadrunner

  • 7,001 posts
  • Location:806.4616.0110

Posted Mon Apr 25, 2011 12:08 PM

I will say that Arnauld Chevallier's experiments with the PCM Encoder and the PSG on the Intellivision have been impressive. One drawback we have on the Intellivision, though, is that the display controller cycle-steals when the display is active, so you have to blank the display to play a sample cleanly. Does the Aquarius display cycle-steal?

No. The Aquarius uses a simple character generator with its own character set ROM, and to the best of my knowledge, it reads the character and color matrices from RAM and builds the screen data completely independently of the CPU.

One of the benefits of having a popular sound chip like the PSG in the Aquarius Mini Expander is that it allows the Aquarius to benefit from all the PSG tools and sample code that have been created for other platforms. As you say, adapting the music players that have been developed for the MSX machines to the Aquarius should be a fairly simple task. I'm still curious to see what can be done with the Aquarius's built-in sound channel, particularly for short sound effects and speech samples, but I'd probably use the PSG for music.

#22 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Mon Apr 25, 2011 12:30 PM

I will say that Arnauld Chevallier's experiments with the PCM Encoder and the PSG on the Intellivision have been impressive. One drawback we have on the Intellivision, though, is that the display controller cycle-steals when the display is active, so you have to blank the display to play a sample cleanly. Does the Aquarius display cycle-steal?

No. The Aquarius uses a simple character generator with its own character set ROM, and to the best of my knowledge, it reads the character and color matrices from RAM and builds the screen data completely independently of the CPU.


It's the bolded part (reading the character/color matrices from RAM) that causes "cycle stealing" on the Intellivision. The display controller halts the CPU ~13 times per frame for 60 - 100 cycles each in order to fetch character data from the RAM, since the CPU and the STIC both share the same memory. In this diagram, it appears that it uses separate 1K RAMs for the character and color matrices, but it's still not clear if it might insert wait states for video access during active display. I couldn't find a schematic online to see what's hooked to the Z-80's wait state input.

If I recall correctly, the MSX won't have video-inserted wait states because it uses the VDP, and the VDP completely "owns" its own memory. It's not accessible directly by the CPU at all, only through a small register window in the VDP.

#23 jaybird3rd ONLINE  

jaybird3rd

    Quadrunner

  • 7,001 posts
  • Location:806.4616.0110

Posted Mon Apr 25, 2011 12:48 PM

It's the bolded part (reading the character/color matrices from RAM) that causes "cycle stealing" on the Intellivision. The display controller halts the CPU ~13 times per frame for 60 - 100 cycles each in order to fetch character data from the RAM, since the CPU and the STIC both share the same memory. In this diagram, it appears that it uses separate 1K RAMs for the character and color matrices, but it's still not clear if it might insert wait states for video access during active display. I couldn't find a schematic online to see what's hooked to the Z-80's wait state input.

You're right, it uses separate RAM chips for the two matrices, but those RAMs are also shared with the rest of the system. I've attached the Aquarius schematics that I have. They're not the easiest documents to read, but it seems that PLA2 (the chip that contains the character generator logic) is using the Z80's WAIT signal. I'm not sure if it needs it for the character generator, or for the other functions in the PLA.

Attached File  schematics.zip   891.48KB   119 downloads

#24 intvnut OFFLINE  

intvnut

    Stargunner

  • 1,148 posts
  • Location:@R6 (top of stack)

Posted Mon Apr 25, 2011 12:57 PM

It's the bolded part (reading the character/color matrices from RAM) that causes "cycle stealing" on the Intellivision. The display controller halts the CPU ~13 times per frame for 60 - 100 cycles each in order to fetch character data from the RAM, since the CPU and the STIC both share the same memory. In this diagram, it appears that it uses separate 1K RAMs for the character and color matrices, but it's still not clear if it might insert wait states for video access during active display. I couldn't find a schematic online to see what's hooked to the Z-80's wait state input.

You're right, it uses separate RAM chips for the two matrices, but those RAMs are also shared with the rest of the system. I've attached the Aquarius schematics that I have. They're not the easiest documents to read, but it seems that PLA2 (the chip that contains the character generator logic) is using the Z80's WAIT signal. I'm not sure if it needs it for the character generator, or for the other functions in the PLA.

Attached File  schematics.zip   891.48KB   119 downloads


Thanks. And yes, you're right, they're not the easiest to follow. The "wait" signal along with several related control signals come from a block that doesn't have any real description.

The technical overview from the BSRs doesn't clarify things. I can't tell if it means the PLA introduces wait states, or if the timing was designed so that things interleave perfectly (like how the Apple ][ and Lisa do it):

In analyzing the Block Diagram, it is seen that the bus lines (both Address and Data) are shared by more than two Integrated Circuits (IC's). Through a scheme called time-sharing, only one IC is allowed to "talk" (transfer data or addresses) on a bus at any one time. Only when this IC is through talking will another IC be allowed to talk. For example, data fed to the CPU may originate from one of several sources: the keyboard, ROM U2, Secondary Data Bus, Tape Drive, or from the Printer Drive. One section of Programmable Logic Array 1 (PLA1) reads instructions from the CPU and allows (enables) only one particular device to talk at one time.



#25 chjmartin2 OFFLINE  

chjmartin2

    Moonsweeper

  • Topic Starter
  • 277 posts
  • Location:Massachusetts

Posted Mon Apr 25, 2011 6:02 PM

Here is a demo of Pulse-Width-Modulation on the Aquarius. Different than the One-Bit Implementation.

I took an audio file, down-sampled it to 6kHz with 8 bits. The program does right-shifts to downconvert the 8 bit sample to 4 bit, then it sends a pattern of 16 1's and 0's to the sound port. The number of times in the 16 sends that the signal is high is equal to the audio level. The problem is that I get a constant buzz/humm/squeal because I can't do a higher sampling rate. Next I will try 4000 Hz and I will preconvert the sample down to 4-bits - I Cool Edit will let me get the sample to 4 bits but not save it in 4 bit raw format - go figure. So I will convert down to 4 bit, save as 8 bit and then write a quick program to convert it to 4 bit. This would save me some cycles because I have to shift-right multiple times per sample, if it were 4 bit native, then I would have a lot more time. I am not capable of cycle counting, so I have no idea how far over the limit I am, therefore, I have no idea if I could do 5 bit or 6 bit if I saved on the shift-right.

Here is the original sound:

Attached File  tng_torpedo3_clean.wav   20.13KB   109 downloads

Real Aquarius Output:

Attached File  Audio_6.wav   197KB   148 downloads

Sadly, the program does not work in the Emulator.


; Program to Play 8 Bit PCM file at 6kHz using 4 Bit Pulse Width Modulation on the Aqaurius Sound Port

.org $E000			

.db $b6, $b7, $24, $2a, $8d, $9c, $42, $b0
.db $53, $6c, $90, $64, $89, $a8, $f9, $70

MAIN:
	ld hl, SAMPLE		; Memory Location to ROM Sample
	ld bc, 7600		; Number of Samples	
	
replay:	ld e, (hl)			; load an 8 bit set	
	srl e			; Down to 7 Bits
	srl e			; Down to 6 Bits
	srl e			; Down to 5 Bits
	srl e			; Down to 4 Bits

subsamp:	
	ld d, 15			; 16 Cycles per Sample
highcycle:	
	ld a,0			; Give me the Low Bit
	out ($fc),a			; Send the Low Bit
	dec d			; Drop the Cycle Counter
	dec e			; Drop the High Cycle Counter
	ld a,e			; grab e
	jp nz, highcycle		; Send 1's Until we are done
lowcycle:
	ld a,1			; Gimme a One
	out ($fc),a			; Send Out the High Bit
	dec d			; Drop D again
	ld a, d			; Check on D
	jp nz, lowcycle

	inc hl			; Move to next Sample
	dec bc			; Decrement Sample Counter
	ld a, c			; Load C 
	or b			; Is BC Zero
	jp nz, replay		; If it isn't zero, keep playing

FINISH:

	jp FINISH

SAMPLE:
.db $7F,$82,$7F,$81,$7D,$80,$7D,$7F,$7B,$7E,$7B,$80,$7D,$80,$7B,$7F
.db $7D,$82,$81,$86,$83,$87,$82,$87,$7F,$84,$82,$85,$80,$84,$84,$8B
.db $86,$8C,$86,$8B,$85,$8E,$8B,$93,$8E,$98,$94,$9F,$99,$A2,$9A,$A4
.db $9E,$A3,$8C,$9A,$92,$A0,$8D,$9A,$85,$C7,$AC,$7E,$5C,$2E,$98,$A5
.db $BB,$90,$A8,$96,$AE,$97,$9B,$7E,$7E,$6F,$84,$67,$60,$52,$5C,$62
.db $7F,$8B,$AE,$98,$AA,$AB,$B3,$B5,$C7,$BD,$B3,$B6,$C5,$C4,$AA,$9E
.db $AA,$9C,$BA,$AA,$A9,$8F,$87,$99,$9E,$A4,$B4,$BA,$CD,$8D,$B6,$AB
.db $CB,$7F,$DC,$9A,$C9,$9B,$CE,$9B,$C1,$A3,$A5,$BA,$96,$E0,$6F,$F7
.db $7F,$BC,$CC,$64,$C4,$82,$5B,$C1,$1A,$72,$7C,$06,$6F,$7A,$11,$A8
.db $A5,$29,$64,$BD,$26,$3B,$C7,$73,$1C,$A4,$BC,$3F,$3D,$C4,$90,$2F
.db $5E,$E3,$9C,$45,$7D,$E0,$9B,$33,$61,$D4,$C1,$4E,$43,$B8,$E5,$99
.db $45,$81,$DE,$DC,$63,$2D,$75,$DC,$CE,$6C,$39,$76,$CE,$C9,$69,$3A
.db $4C,$AA,$C6,$8A,$3D,$2A,$63,$BF,$DC,$97,$30,$13,$42,$8F,$CD,$95
.db $46,$12,$43,$61,$C8,$BF,$99,$49,$28,$48,$80,$DA,$E6,$AE,$76,$25
.db $4D,$61,$C1,$E6,$B7,$84,$33,$21,$40,$5F,$A1,$CF,$CD,$BB,$9F,$71
.db $2D,$2A,$56,$76,$C5,$E1,$D3,$AE,$76,$33,$33,$5D,$8A,$D9,$BE,$9F
.db $67,$1B,$38,$4F,$90,$E2,$A9,$AB,$79,$60,$4B,$3B,$4D,$4A,$54,$70
.db $72,$9C,$9E,$4E,$33,$41,$2B,$57,$77,$B6,$EE,$C6,$95,$75,$3D,$18
.db $42,$6F,$8C,$A8,$BF,$D7,$DF,$E6,$CF,$A7,$7C,$5E,$2E,$15,$13,$24
.db $4D,$6B,$8A,$C0,$EA,$D6,$AD,$84,$62,$46,$2A,$16,$17,$3A,$6B,$8F
.db $B4,$CE,$E3,$E7,$E0,$E3,$BB,$99,$7F,$5C,$41,$1C,$15,$17,$12,$25
.db $5B,$7F,$A0,$BF,$E3,$EA,$E7,$E7,$ED,$D6,$A8,$81,$53,$2E,$14,$13
.db $11,$2A,$52,$7E,$9F,$BF,$D9,$E8,$E4,$E4,$E6,$E7,$9C,$6D,$97,$69
.db $31,$44,$49,$1B,$1A,$21,$1A,$15,$20,$25,$12,$19,$5D,$68,$7E,$A1
.db $BB,$D1,$DC,$E4,$E8,$E7,$E6,$ED,$C2,$86,$67,$53,$2E,$14,$12,$14
.db $15,$1C,$38,$6B,$51,$3F,$69,$A6,$B7,$C9,$E8,$EC,$EF,$EB,$EE,$F1
.db $DE,$7A,$64,$89,$A3,$79,$26,$2D,$7D,$5E,$23,$15,$72,$B5,$7B,$41
.db $57,$C8,$DB,$83,$4C,$76,$DE,$E6,$83,$2E,$5C,$AA,$E2,$7B,$3E,$75
.db $B7,$E7,$52,$2E,$65,$AC,$C6,$71,$24,$25,$8B,$C5,$9B,$3B,$1A,$5A
.db $C8,$F0,$9E,$3D,$38,$74,$B4,$B7,$4F,$28,$56,$8C,$DC,$CC,$70,$1D
.db $39,$77,$CB,$C8,$7B,$31,$39,$74,$9E,$C2,$87,$58,$4B,$65,$8E,$BC
.db $95,$5E,$3A,$2F,$56,$8A,$90,$72,$35,$2D,$30,$7E,$B6,$B6,$8C,$52
.db $40,$6A,$98,$B1,$9E,$83,$51,$47,$89,$95,$A0,$85,$3B,$1D,$37,$61
.db $A1,$96,$4C,$12,$2D,$5E,$B5,$EC,$BA,$76,$1D,$41,$6C,$C2,$F1,$CA
.db $98,$2C,$1B,$4B,$71,$DC,$D7,$AF,$5A,$16,$3D,$5F,$91,$DD,$D7,$9C
.db $6E,$18,$2A,$60,$7E,$C7,$F3,$BD,$90,$4B,$15,$35,$62,$86,$C0,$EC
.db $D9,$B0,$82,$22,$34,$66,$84,$BE,$F2,$DD,$A9,$85,$2B,$20,$58,$7A
.db $9A,$D6,$E0,$BA,$91,$6D,$23,$37,$69,$87,$AA,$E5,$F4,$C7,$9B,$69
.db $27,$17,$46,$6D,$95,$C8,$F0,$DF,$B8,$86,$56,$0F,$12,$38,$6C,$98
.db $DE,$F4,$DE,$B2,$7D,$44,$0B,$1D,$46,$75,$9C,$CF,$EE,$D4,$B4,$8C
.db $65,$31,$10,$26,$52,$74,$9A,$B8,$DC,$ED,$D0,$BA,$A0,$77,$63,$3C
.db $37,$4C,$51,$64,$7F,$A4,$C7,$CB,$C2,$BB,$9E,$73,$3B,$10,$1B,$3C
.db $5B,$81,$A5,$D1,$F2,$DB,$B5,$7D,$27,$12,$28,$28,$52,$8C,$88,$B4
.db $C4,$79,$80,$6E,$35,$64,$83,$70,$BF,$DE,$B4,$A9,$89,$4C,$43,$43
.db $2F,$53,$74,$96,$B9,$E0,$E7,$CD,$B8,$8C,$69,$46,$1B,$15,$38,$67
.db $8C,$B0,$C4,$D9,$E8,$E0,$BC,$96,$72,$4E,$30,$18,$1A,$1E,$35,$60
.db $89,$AC,$C8,$DC,$E5,$E4,$E3,$C1,$90,$6B,$48,$27,$12,$14,$11,$1B
.db $48,$7C,$9F,$C6,$E5,$E7,$E7,$EB,$E5,$C2,$95,$67,$39,$16,$0E,$10
.db $0F,$1B,$50,$81,$A9,$CC,$E7,$E6,$E5,$E6,$E9,$DB,$B2,$8A,$62,$42
.db $21,$11,$15,$16,$11,$1E,$49,$74,$97,$B6,$CE,$DE,$EE,$ED,$F3,$EC
.db $C1,$97,$71,$54,$2F,$11,$08,$12,$0D,$08,$1E,$4C,$7B,$A1,$C5,$E1
.db $F1,$F0,$EA,$EE,$EE,$D2,$A7,$77,$65,$4D,$23,$0E,$0D,$21,$15,$04
.db $1B,$49,$74,$98,$C0,$DB,$ED,$F1,$EE,$EF,$EF,$F3,$D7,$9C,$6F,$91
.db $82,$5A,$2A,$0E,$43,$43,$17,$16,$4E,$8D,$B2,$93,$BA,$D3,$EE,$ED
.db $EB,$E9,$F2,$EE,$DB,$7B,$2D,$69,$7F,$48,$1F,$03,$40,$74,$5A,$22
.db $15,$44,$93,$BB,$51,$5C,$87,$9E,$D6,$CE,$9D,$AE,$CE,$EC,$BA,$5E
.db $3C,$9B,$B3,$8B,$47,$12,$46,$AC,$B0,$53,$18,$3A,$83,$E0,$B7,$48
.db $3F,$76,$9B,$F1,$B0,$4D,$66,$95,$D3,$C6,$68,$20,$2E,$90,$B9,$8C
.db $23,$10,$35,$97,$C4,$78,$26,$2D,$70,$D7,$F9,$BA,$53,$55,$8C,$CE
.db $ED,$B4,$67,$4F,$8D,$E1,$D9,$AD,$5F,$12,$42,$8D,$CC,$94,$5B,$25
.db $27,$61,$C8,$CC,$60,$16,$4E,$68,$AC,$DC,$AF,$43,$19,$52,$9A,$BB
.db $BB,$8F,$32,$29,$7C,$D6,$D3,$C1,$86,$31,$40,$7B,$C6,$B7,$A4,$8C
.db $67,$6A,$A2,$EB,$CD,$8A,$70,$4D,$3E,$76,$D2,$C2,$7F,$3A,$39,$56
.db $9B,$DF,$CB,$84,$34,$44,$A2,$EA,$DC,$D7,$9A,$5E,$6B,$BD,$EC,$9F
.db $55,$42,$5E,$65,$95,$D4,$B5,$4E,$34,$58,$8B,$9B,$7C,$8A,$6B,$21
.db $35,$81,$B4,$98,$45,$35,$59,$43,$26,$68,$C9,$AE,$5F,$2B,$55,$88
.db $80,$A2,$F3,$C9,$79,$2F,$55,$97,$B3,$85,$91,$CE,$9A,$3F,$48,$83
.db $D9,$C9,$8B,$B7,$D1,$85,$2F,$46,$8F,$E4,$C2,$90,$76,$84,$51,$30
.db $56,$A7,$D1,$A7,$36,$13,$59,$6F,$63,$6F,$CD,$DB,$A9,$46,$13,$55
.db $91,$7A,$56,$97,$D1,$C5,$61,$17,$39,$84,$8F,$52,$6F,$BE,$BB,$80
.db $19,$2B,$5F,$B0,$B7,$89,$AC,$D5,$D0,$85,$35,$4F,$8A,$CE,$D2,$A7
.db $A9,$D7,$CC,$7A,$29,$3E,$8A,$E3,$D2,$8E,$63,$A3,$C5,$7E,$40,$52
.db $80,$C1,$D0,$9D,$42,$71,$9A,$6C,$20,$19,$4B,$80,$DA,$DB,$93,$76
.db $AB,$89,$53,$12,$46,$67,$B1,$E4,$C4,$81,$58,$3F,$33,$2E,$30,$5D
.db $7E,$C8,$E5,$B1,$73,$21,$1F,$45,$67,$87,$A1,$BB,$E4,$CF,$A2,$65
.db $11,$2D,$51,$72,$7F,$8F,$B1,$E4,$D5,$A3,$61,$07,$27,$4B,$7D,$A6
.db $C3,$CD,$B8,$E5,$C9,$98,$4D,$2A,$5F,$7F,$BC,$E4,$F0,$B4,$8C,$DF
.db $D4,$A5,$72,$27,$47,$6F,$A2,$E2,$E2,$8B,$66,$C8,$BE,$9D,$68,$13
.db $3B,$64,$83,$C9,$E6,$AE,$73,$5C,$50,$40,$3C,$0E,$1B,$4A,$76,$B4
.db $ED,$C3,$9A,$63,$1A,$04,$49,$6D,$57,$7B,$98,$B9,$F0,$E4,$B0,$7B
.db $2B,$05,$28,$52,$71,$8E,$B2,$E1,$D3,$E3,$E9,$B9,$88,$34,$0C,$2D
.db $5A,$7B,$B4,$EF,$DD,$AB,$93,$93,$77,$48,$19,$0D,$31,$64,$90,$C7
.db $F1,$DD,$B2,$78,$45,$38,$22,$07,$27,$42,$67,$83,$B3,$E6,$D0,$A6
.db $77,$1D,$10,$17,$20,$52,$67,$89,$9D,$B2,$C0,$DD,$D1,$A0,$79,$32
.db $0B,$0C,$0B,$3F,$6C,$95,$B8,$D6,$F5,$EA,$C0,$94,$70,$39,$06,$09
.db $22,$51,$71,$96,$AB,$BF,$D1,$E2,$E8,$D6,$B5,$8D,$5A,$19,$0F,$25
.db $5A,$75,$BB,$D8,$74,$8B,$A7,$C1,$E8,$D2,$A6,$80,$54,$1F,$14,$35
.db $5B,$84,$B4,$B6,$C8,$D0,$DF,$E4,$E6,$DC,$B3,$8B,$5A,$13,$24,$52
.db $77,$B0,$EA,$E7,$D1,$84,$4A,$74,$96,$D2,$D5,$A7,$8C,$52,$18,$2F
.db $66,$85,$C6,$F2,$EB,$B3,$4A,$25,$55,$62,$AD,$E6,$C2,$97,$68,$12
.db $19,$46,$73,$98,$DF,$DF,$AE,$56,$06,$37,$52,$79,$B5,$E6,$BE,$9A
.db $6A,$1E,$11,$4E,$7A,$AC,$ED,$E8,$AE,$83,$25,$02,$2F,$57,$A4,$E3
.db $C0,$96,$6E,$2C,$03,$2F,$5A,$84,$B2,$F1,$DA,$B9,$8D,$48,$0B,$3B
.db $60,$B7,$ED,$CF,$AA,$86,$45,$04,$29,$59,$7F,$AC,$E3,$F4,$CC,$A0
.db $46,$01,$2E,$56,$85,$A6,$E5,$E2,$B1,$6F,$11,$2C,$56,$76,$9A,$BF
.db $ED,$DD,$AB,$79,$33,$02,$15,$3A,$6B,$98,$E8,$DE,$AA,$74,$29,$09
.db $2A,$4E,$7A,$95,$E1,$DD,$A3,$78,$4A,$18,$0A,$24,$54,$85,$DD,$DF
.db $9B,$86,$70,$3E,$1C,$35,$5B,$7C,$C4,$D1,$A3,$82,$60,$36,$0F,$09
.db $23,$59,$B1,$F6,$B1,$BC,$E3,$EC,$9C,$77,$92,$9D,$CA,$ED,$C3,$90
.db $81,$7D,$58,$24,$0D,$49,$8F,$AA,$99,$85,$AC,$CD,$ED,$CD,$C9,$E0
.db $E7,$E5,$DE,$9B,$6A,$77,$8C,$80,$5A,$35,$13,$3B,$2F,$0B,$14,$37
.db $66,$8D,$B7,$D7,$DB,$EE,$E4,$E9,$B2,$43,$4D,$75,$A2,$85,$64,$3A
.db $16,$0E,$0B,$0E,$0C,$31,$66,$92,$C1,$DF,$F1,$E9,$EC,$E3,$CE,$7D
.db $35,$4D,$92,$A6,$80,$6C,$65,$67,$4B,$33,$16,$0F,$10,$31,$68,$8D
.db $A6,$C9,$EA,$EF,$ED,$E4,$C1,$62,$29,$45,$69,$8D,$5D,$68,$9E,$B5
.db $91,$6E,$45,$20,$03,$15,$3D,$45,$41,$6B,$92,$B7,$DE,$EF,$BD,$A1
.db $A9,$AA,$E1,$EF,$A0,$35,$2E,$5A,$9A,$92,$76,$63,$47,$35,$1A,$10
.db $10,$10,$1C,$4E,$75,$9C,$B6,$DE,$EA,$E9,$EA,$E3,$D9,$DE,$90,$3D
.db $48,$7C,$AE,$92,$3A,$2D,$78,$66,$60,$44,$36,$1E,$0C,$1C,$77,$7A
.db $5D,$44,$5F,$86,$AE,$C9,$E3,$E6,$E8,$CD,$8F,$61,$67,$31,$0A,$15
.db $40,$69,$B3,$C9,$D6,$E6,$B5,$99,$6C,$59,$56,$45,$13,$14,$4C,$78
.db $9B,$BE,$DB,$EF,$F3,$F3,$F3,$EB,$CF,$A7,$7D,$2B,$08,$39,$72,$8A
.db $69,$86,$98,$BD,$E4,$EB,$BB,$9B,$6E,$3C,$06,$54,$85,$60,$30,$37
.db $63,$87,$AD,$D0,$EA,$F8,$D5,$CC,$B6,$96,$8D,$63,$22,$03,$2B,$60
.db $97,$E9,$97,$88,$AE,$D1,$EF,$D1,$B1,$87,$69,$37,$04,$16,$44,$66
.db $97,$98,$AA,$BF,$D0,$E5,$F3,$EA,$B5,$8E,$8C,$60,$45,$3B,$24,$06
.db $05,$14,$45,$71,$BD,$E1,$B7,$73,$4E,$7E,$C3,$AB,$87,$64,$3E,$0D
.db $07,$35,$6B,$92,$CD,$F1,$D0,$8F,$90,$B6,$EB,$E3,$B4,$7A,$2B,$0A
.db $14,$2D,$59,$7F,$AE,$E4,$C9,$71,$6F,$8E,$D3,$E6,$BC,$93,$39,$0A
.db $58,$6F,$63,$A3,$AD,$D0,$E9,$8C,$62,$89,$AE,$E8,$CB,$A0,$5B,$0B
.db $24,$56,$72,$9F,$C1,$C7,$BB,$94,$7A,$8F,$9D,$C7,$E6,$AC,$86,$3F
.db $0D,$36,$79,$DD,$E5,$A4,$9A,$AD,$7C,$82,$A6,$C0,$DD,$E8,$D0,$A2
.db $68,$16,$0B,$38,$81,$E6,$BD,$84,$52,$3B,$60,$80,$9B,$B0,$BE,$E2
.db $D5,$A7,$61,$09,$19,$47,$AD,$CA,$9E,$7B,$3B,$16,$38,$5C,$7E,$9F
.db $C0,$E2,$E1,$AD,$52,$10,$27,$4A,$97,$CA,$A1,$7A,$2F,$16,$36,$59
.db $7E,$9E,$B8,$C6,$E1,$DB,$C1,$90,$85,$90,$A1,$C8,$BD,$9D,$7B,$3C
.db $12,$21,$40,$8F,$A2,$A2,$83,$62,$86,$AC,$99,$B0,$CC,$E3,$EE,$EA
.db $BE,$92,$4A,$0C,$20,$67,$BE,$D4,$C1,$95,$50,$2B,$42,$60,$84,$AA
.db $C9,$E8,$EC,$EB,$C4,$A2,$47,$15,$4A,$8F,$E6,$DE,$C9,$A2,$7C,$45
.db $1D,$26,$51,$7A,$A9,$C7,$E5,$E4,$DC,$A0,$2B,$1C,$43,$5D,$A6,$C7
.db $9C,$7A,$52,$20,$0C,$38,$53,$68,$97,$C6,$F4,$DA,$AD,$65,$24,$3A
.db $57,$6E,$8B,$CE,$D1,$9C,$7A,$3C,$0D,$10,$66,$B1,$B1,$90,$8D,$CA
.db $C5,$94,$62,$64,$90,$AB,$D7,$EB,$EE,$DE,$AF,$6D,$30,$17,$29,$44
.db $8F,$B6,$8D,$67,$53,$3C,$19,$15,$13,$27,$56,$7F,$A4,$C4,$E6,$D9
.db $84,$57,$6D,$79,$81,$7F,$96,$AD,$8A,$67,$46,$37,$24,$15,$14,$18
.db $3F,$43,$44,$65,$AB,$E0,$A1,$7A,$90,$A7,$B8,$C4,$CB,$D4,$E6,$DD
.db $94,$72,$A6,$AD,$8F,$68,$4B,$2F,$13,$23,$72,$D6,$DE,$B8,$7C,$46
.db $60,$8A,$AD,$CE,$EE,$EF,$DF,$85,$6F,$91,$B1,$C9,$A5,$61,$43,$23
.db $57,$86,$70,$77,$5B,$37,$0B,$13,$44,$73,$AE,$EC,$CF,$A3,$73,$40
.db $5A,$7E,$9C,$DF,$CD,$81,$4A,$41,$60,$6D,$8C,$BD,$9C,$73,$30,$08
.db $29,$50,$9A,$E8,$D4,$B1,$86,$36,$06,$36,$63,$A1,$EA,$CE,$AC,$6B
.db $57,$7E,$98,$CD,$E9,$C9,$A9,$57,$15,$49,$62,$C1,$E3,$B8,$8C,$5D
.db $18,$20,$57,$7F,$C2,$FC,$D6,$A7,$45,$10,$4D,$6E,$99,$D8,$F6,$BF
.db $91,$21,$2C,$5C,$7A,$AF,$DF,$AD,$89,$3C,$07,$24,$55,$7A,$C0,$F4
.db $C0,$8F,$45,$05,$23,$58,$8B,$E0,$F0,$CF,$AE,$5B,$08,$37,$64,$8F
.db $DE,$E4,$C4,$9D,$50,$0E,$28,$55,$75,$99,$D6,$EC,$B5,$93,$36,$20
.db $4E,$79,$9D,$B9,$E4,$CC,$A0,$61,$20,$42,$6C,$A5,$ED,$DE,$AB,$4F
.db $20,$3F,$63,$87,$A4,$CD,$F3,$CD,$97,$41,$0E,$21,$41,$68,$AF,$D7
.db $C2,$9D,$77,$3F,$0B,$29,$54,$7C,$D8,$E6,$C2,$AB,$79,$36,$19,$44
.db $67,$8E,$AD,$EC,$EC,$BC,$42,$1D,$48,$60,$8C,$98,$A4,$A2,$86,$50
.db $0B,$0B,$43,$73,$9A,$D7,$F4,$D3,$A6,$61,$40,$5F,$6D,$46,$55,$92
.db $DF,$E7,$AE,$5E,$6C,$86,$A3,$BA,$E4,$DB,$B5,$73,$54,$48,$13,$11
.db $2C,$56,$90,$DC,$CE,$A9,$7D,$7C,$6F,$56,$54,$51,$64,$5A,$50,$72
.db $94,$9E,$A8,$C2,$D9,$EA,$C5,$A1,$6E,$2E,$17,$15,$19,$3F,$68,$83
.db $97,$AB,$DD,$D7,$A2,$7C,$33,$2A,$82,$88,$57,$20,$20,$3F,$61,$78
.db $96,$B1,$D6,$F0,$D5,$B0,$90,$63,$24,$0F,$30,$56,$77,$9A,$B6,$D5
.db $EF,$ED,$DE,$A8,$6B,$40,$43,$5C,$5C,$63,$79,$3C,$15,$35,$53,$6F
.db $97,$AC,$96,$B8,$B9,$9E,$7A,$54,$23,$15,$3B,$66,$81,$9F,$B3,$DD
.db $DA,$EA,$EC,$D5,$B9,$99,$52,$12,$2D,$78,$8F,$5B,$33,$50,$74,$89
.db $A4,$B8,$DB,$F2,$E0,$B8,$9C,$7C,$60,$3A,$13,$1D,$48,$74,$98,$C2
.db $C8,$D4,$E5,$E7,$E2,$C6,$A2,$6F,$3D,$15,$14,$29,$38,$48,$3F,$38
.db $58,$6D,$89,$98,$B8,$C0,$91,$96,$B7,$9C,$78,$58,$2A,$0D,$2B,$57
.db $76,$93,$AA,$B9,$C5,$CD,$E2,$ED,$DF,$B6,$91,$53,$1A,$14,$4A,$85
.db $77,$32,$30,$5D,$83,$AA,$D0,$E6,$D8,$E5,$ED,$EA,$D8,$B9,$93,$6A
.db $35,$09,$15,$38,$59,$7D,$98,$AD,$BC,$CE,$ED,$E7,$C6,$9B,$65,$2B
.db $17,$33,$55,$51,$30,$1D,$38,$43,$41,$5F,$77,$86,$90,$9C,$A6,$AE
.db $C9,$C6,$9E,$7A,$4D,$1B,$10,$23,$39,$56,$74,$8C,$A3,$AF,$C4,$DD
.db $D1,$C8,$AC,$89,$66,$4B,$49,$51,$68,$7B,$7B,$5B,$4C,$72,$A6,$D5
.db $C7,$AC,$B3,$CA,$D3,$E6,$EB,$D5,$B3,$91,$6D,$4A,$1B,$10,$29,$47
.db $65,$82,$9B,$B2,$C7,$E7,$ED,$CB,$A3,$65,$20,$1F,$45,$68,$A9,$B7
.db $93,$57,$1F,$1F,$4F,$69,$5E,$72,$60,$42,$5E,$75,$8E,$AE,$E0,$DD
.db $B5,$89,$5C,$20,$2D,$66,$86,$93,$76,$77,$8F,$A0,$B5,$E0,$E9,$CB
.db $A2,$7B,$30,$14,$45,$6A,$A5,$BC,$A5,$80,$68,$48,$60,$88,$D1,$EF
.db $C4,$8D,$4C,$29,$4B,$67,$AB,$EC,$CA,$9A,$68,$20,$12,$4D,$78,$A1
.db $A2,$5E,$26,$2F,$4B,$67,$84,$A3,$D9,$CB,$9C,$6D,$20,$09,$2D,$63
.db $BD,$CA,$A0,$68,$2F,$4A,$6F,$97,$D0,$F0,$DB,$C0,$7E,$46,$59,$80
.db $9C,$CF,$EE,$DF,$B8,$7E,$3C,$35,$60,$A5,$E8,$D3,$AC,$5D,$18,$38
.db $59,$7A,$AF,$E2,$E2,$CC,$A8,$81,$56,$58,$8B,$AC,$B6,$B5,$A0,$70
.db $57,$6F,$8D,$A2,$CA,$F3,$DA,$AC,$72,$26,$19,$41,$58,$99,$B0,$91
.db $6D,$41,$17,$14,$40,$84,$B8,$BE,$B7,$7C,$40,$26,$33,$4E,$6D,$85
.db $AF,$E1,$C3,$97,$75,$36,$1C,$4C,$9C,$CE,$B9,$A1,$6C,$27,$36,$54
.db $6F,$91,$AC,$D9,$E3,$B7,$97,$50,$38,$55,$71,$8F,$BA,$F4,$E5,$BB
.db $87,$3B,$25,$56,$8F,$91,$87,$73,$5A,$2D,$21,$47,$5F,$83,$9C,$B8
.db $E3,$DE,$B4,$84,$3A,$16,$2F,$64,$B1,$B0,$96,$77,$48,$16,$18,$3C
.db $66,$86,$A9,$DA,$ED,$CE,$AC,$50,$19,$3A,$50,$70,$8A,$B1,$B7,$92
.db $7A,$3A,$1B,$3C,$6F,$A8,$8B,$6D,$50,$38,$20,$17,$30,$4F,$69,$86
.db $99,$B1,$D6,$EB,$B9,$8A,$7D,$86,$9E,$C6,$C9,$A2,$7F,$3E,$15,$19
.db $31,$54,$73,$B2,$DE,$C0,$9D,$74,$4A,$35,$20,$33,$58,$78,$8F,$A5
.db $B9,$9C,$88,$90,$94,$98,$9F,$AD,$A6,$8C,$77,$5E,$41,$24,$13,$16
.db $20,$2E,$4B,$66,$7E,$95,$A6,$B0,$B7,$BD,$D4,$CF,$A7,$99,$9D,$85
.db $62,$35,$14,$2D,$59,$81,$A3,$BD,$C6,$BC,$8C,$7E,$9B,$AA,$A5,$A2
.db $8D,$66,$32,$31,$59,$73,$90,$A1,$AB,$B1,$B8,$C5,$B8,$C2,$D2,$BF
.db $A8,$8A,$67,$47,$37,$32,$67,$81,$64,$40,$4E,$68,$7F,$A1,$BD,$E3
.db $EA,$D5,$B8,$69,$6C,$8C,$BD,$D3,$B6,$94,$4A,$15,$23,$45,$5C,$99
.db $BE,$A9,$89,$6D,$46,$25,$34,$82,$A2,$7C,$68,$33,$2C,$4E,$65,$80
.db $A5,$DA,$CF,$9E,$5F,$5B,$75,$89,$AA,$CE,$BF,$98,$7B,$2F,$15,$40
.db $78,$AB,$A3,$8E,$5D,$38,$3F,$5B,$7E,$B8,$DD,$C2,$A0,$66,$2D,$42
.db $64,$81,$B3,$D6,$B5,$91,$4A,$44,$60,$76,$8C,$B4,$D8,$B9,$97,$71
.db $32,$2F,$5B,$82,$C3,$C6,$A4,$77,$4D,$47,$68,$82,$BF,$E9,$D5,$B4
.db $87,$4B,$44,$68,$86,$A7,$D3,$CE,$AD,$75,$29,$38,$4E,$6A,$83,$B3
.db $CA,$AB,$8C,$67,$31,$28,$51,$74,$A6,$DA,$CB,$A9,$71,$37,$4D,$65
.db $7D,$96,$B3,$BA,$B9,$AF,$8C,$82,$8C,$9E,$BA,$AC,$99,$82,$66,$34
.db $16,$3A,$59,$91,$DB,$D9,$B6,$8E,$62,$63,$7B,$96,$AE,$D1,$F0,$DE
.db $B5,$8C,$59,$2E,$44,$61,$79,$92,$C1,$CA,$A4,$77,$6C,$75,$83,$8F
.db $A6,$B1,$A8,$A2,$8E,$70,$49,$3A,$6A,$8B,$85,$81,$6D,$4B,$40,$58
.db $6E,$8B,$9E,$B5,$CE,$EC,$E9,$D7,$BB,$95,$5A,$52,$70,$88,$B7,$BA
.db $9E,$82,$58,$59,$67,$55,$40,$3D,$52,$6A,$85,$A4,$BB,$B0,$AC,$B9
.db $BF,$B6,$9F,$7F,$6C,$4E,$38,$5A,$82,$BC,$D1,$BD,$9D,$7A,$79,$98
.db $A5,$7A,$66,$7A,$83,$91,$B2,$BC,$AE,$9D,$89,$77,$61,$4E,$2A,$12
.db $26,$3E,$61,$7F,$B8,$D9,$B8,$7F,$53,$5B,$6F,$89,$97,$9F,$A4,$A8
.db $AD,$BF,$A7,$8A,$58,$14,$32,$5C,$5B,$5D,$50,$29,$10,$29,$40,$5B
.db $73,$8F,$B2,$B3,$98,$86,$73,$6A,$5B,$36,$3F,$56,$70,$A7,$B2,$95
.db $7C,$5C,$2A,$23,$46,$49,$54,$69,$7D,$89,$A5,$B2,$A8,$74,$50,$5A
.db $61,$72,$8A,$90,$81,$6F,$47,$1B,$1C,$46,$86,$94,$82,$6F,$58,$41
.db $34,$40,$46,$50,$69,$81,$94,$9F,$C8,$E0,$C7,$AC,$8B,$75,$55,$4D
.db $68,$74,$8B,$B8,$BE,$B1,$8D,$73,$77,$6A,$48,$3D,$49,$5B,$6D,$82
.db $94,$97,$99,$9E,$A2,$B1,$B4,$A0,$89,$6D,$62,$61,$58,$48,$44,$4A
.db $55,$5C,$6E,$8E,$9E,$96,$9B,$B1,$B7,$96,$7C,$8B,$90,$92,$96,$A3
.db $A0,$8C,$8D,$94,$89,$77,$6C,$61,$48,$31,$3C,$49,$3F,$3B,$41,$53
.db $68,$7A,$8E,$A3,$B5,$B8,$B5,$9D,$84,$77,$7E,$88,$98,$A3,$9A,$75
.db $42,$3B,$60,$80,$79,$6B,$5C,$4B,$33,$30,$44,$57,$53,$46,$5B,$70
.db $7F,$92,$A6,$CA,$CB,$B2,$9A,$78,$5D,$53,$65,$68,$6A,$64,$67,$76
.db $78,$7D,$A2,$BF,$B1,$9B,$80,$58,$43,$4C,$64,$7F,$9F,$9C,$8F,$99
.db $A2,$A5,$B3,$C5,$B1,$97,$78,$5D,$46,$3F,$4F,$7B,$90,$7B,$5A,$5B
.db $72,$86,$9A,$B9,$D9,$CE,$B5,$96,$66,$53,$65,$7E,$96,$9F,$97,$9B
.db $9E,$A5,$A9,$BC,$C7,$AE,$90,$6B,$3D,$2B,$4B,$66,$83,$A2,$A8,$94
.db $75,$74,$8D,$A0,$AA,$A9,$9B,$83,$67,$5B,$62,$79,$8F,$BB,$D9,$C2
.db $91,$75,$87,$97,$B2,$D5,$E9,$D2,$B4,$8C,$5C,$56,$7D,$A8,$AD,$95
.db $7A,$68,$7D,$8B,$A0,$B7,$E0,$DD,$C0,$A6,$81,$52,$52,$74,$8D,$A4
.db $B3,$D5,$D2,$A9,$81,$88,$AC,$D0,$CD,$BE,$AB,$8D,$6A,$69,$89,$A2
.db $D3,$E7,$D2,$A6,$68,$64,$7B,$92,$AD,$D2,$E2,$D4,$B8,$9F,$78,$63
.db $79,$93,$B4,$C0,$BA,$B0,$98,$78,$83,$9A,$BF,$D3,$C6,$B3,$94,$66
.db $4B,$62,$7D,$A0,$BC,$C4,$C3,$B3,$89,$7C,$90,$9F,$C2,$CE,$C5,$B4
.db $9C,$81,$66,$69,$84,$98,$B9,$D7,$CD,$B2,$88,$62,$65,$7D,$9B,$CC
.db $D5,$C0,$A3,$82,$63,$6F,$89,$AE,$D8,$CE,$AC,$91,$8A,$84,$82,$8F
.db $A3,$BF,$C7,$BC,$A5,$8D,$6B,$4F,$5A,$6D,$7F,$96,$B8,$BE,$A7,$89
.db $60,$5E,$75,$A1,$B6,$A6,$90,$74,$5C,$53,$61,$76,$89,$AA,$C6,$BD
.db $B1,$92,$75,$63,$6A,$76,$7F,$94,$AA,$B4,$AA,$8D,$6B,$68,$7A,$93
.db $BA,$B5,$A3,$89,$6D,$47,$30,$45,$62,$7B,$B2,$B5,$99,$7B,$5B,$56
.db $5A,$69,$7D,$91,$A6,$BA,$B2,$A3,$93,$7A,$7E,$8D,$A5,$B6,$AA,$91
.db $73,$63,$57,$4D,$5E,$78,$8A,$A9,$A8,$92,$78,$65,$57,$54,$56,$5A
.db $6C,$80,$8B,$8E,$88,$8A,$95,$9D,$A2,$AE,$B5,$A8,$99,$8C,$7B,$68
.db $56,$4A,$5D,$71,$8B,$A9,$97,$82,$70,$65,$66,$63,$64,$64,$6A,$7C
.db $83,$77,$6E,$74,$92,$B4,$B4,$A9,$96,$78,$5B,$5F,$74,$89,$82,$77
.db $7E,$84,$88,$92,$9C,$91,$8A,$81,$7C,$6E,$5D,$4E,$4F,$5A,$67,$68
.db $66,$73,$7F,$8D,$A4,$BC,$B3,$A0,$90,$77,$6B,$76,$8D,$98,$88,$77
.db $75,$72,$7D,$8A,$96,$A1,$B5,$BC,$A3,$85,$51,$3F,$50,$66,$90,$9D
.db $8E,$81,$6D,$5C,$79,$9A,$A0,$A1,$98,$8B,$73,$55,$58,$69,$77,$85
.db $9B,$AC,$9A,$8F,$96,$9F,$B8,$B8,$AB,$99,$7E,$5C,$59,$6C,$79,$8D
.db $A1,$BF,$C4,$AE,$89,$62,$66,$76,$98,$B8,$B1,$99,$81,$5C,$4B,$63
.db $79,$8A,$99,$AD,$AB,$97,$91,$94,$8E,$85,$7E,$7B,$76,$5E,$41,$4D
.db $64,$78,$8F,$B5,$B2,$99,$74,$53,$50,$5C,$72,$91,$A2,$90,$78,$59
.db $4D,$5F,$70,$80,$95,$A8,$A7,$98,$7F,$69,$4E,$38,$40,$55,$6E,$72
.db $5F,$60,$6E,$76,$7C,$89,$9A,$93,$85,$73,$5E,$40,$2A,$37,$58,$72
.db $77,$6D,$5B,$54,$60,$6E,$7A,$83,$99,$9E,$88,$70,$58,$3B,$2E,$3D
.db $5C,$7E,$7F,$7E,$8C,$8F,$7D,$6D,$6E,$7F,$8D,$92,$8E,$7E,$60,$3D
.db $40,$50,$5F,$6F,$89,$96,$89,$80,$73,$61,$68,$84,$8D,$87,$7B,$69
.db $64,$5F,$5A,$62,$6D,$7C,$8D,$A4,$BC,$AB,$90,$75,$64,$71,$8A,$94
.db $8F,$83,$71,$66,$6A,$6A,$6E,$7F,$90,$9B,$A9,$BB,$B5,$AA,$9A,$8A
.db $73,$65,$74,$89,$A0,$9D,$87,$6D,$65,$70,$85,$99,$96,$89,$78,$74
.db $7F,$88,$84,$75,$66,$70,$80,$8D,$A0,$A5,$A3,$A3,$AB,$B1,$B1,$B1
.db $AC,$9F,$8E,$7E,$6B,$5F,$62,$6F,$82,$90,$8F,$8C,$95,$9F,$A8,$A9
.db $9A,$87,$88,$94,$A6,$AB,$99,$84,$6F,$5B,$57,$68,$70,$6C,$69,$75
.db $91,$A7,$9D,$8F,$7B,$61,$54,$65,$7C,$86,$8D,$96,$A1,$AF,$A9,$9B
.db $8E,$86,$8A,$91,$95,$91,$89,$7B,$71,$6E,$67,$5B,$54,$62,$72,$83
.db $99,$A7,$AD,$A4,$A0,$9F,$AB,$B8,$B0,$9E,$91,$86,$7E,$77,$6A,$5C
.db $5E,$6B,$87,$A3,$A4,$97,$82,$73,$73,$7D,$8B,$96,$9E,$A4,$B2,$B9
.db $AC,$9A,$7D,$76,$81,$90,$9C,$9E,$9E,$96,$8B,$7E,$72,$6A,$5E,$60
.db $77,$8E,$96,$98,$94,$88,$8D,$97,$A0,$A8,$AD,$B1,$B5,$BD,$B7,$A8
.db $96,$85,$7B,$7A,$80,$88,$8E,$87,$78,$70,$73,$7A,$82,$8A,$98,$A2
.db $A8,$AD,$B6,$B6,$AE,$9E,$93,$90,$8C,$87,$82,$82,$87,$89,$86,$82
.db $7A,$6C,$63,$70,$88,$A1,$B1,$AA,$9C,$92,$97,$9C,$A3,$AB,$AC,$A7
.db $A9,$AC,$B0,$AF,$A1,$92,$84,$7C,$7C,$86,$8D,$89,$7D,$6F,$6D,$7A
.db $85,$84,$83,$87,$8F,$8F,$8E,$97,$A2,$A8,$B1,$BF,$C5,$C6,$BF,$B3
.db $A4,$9B,$9A,$9A,$96,$90,$86,$74,$6B,$76,$86,$92,$93,$8D,$87,$89
.db $92,$A2,$B7,$C4,$BC,$A4,$84,$88,$94,$B4,$C8,$BD,$A9,$8F,$80,$81
.db $90,$9F,$A9,$A2,$99,$93,$93,$9D,$A5,$A1,$9B,$9B,$97,$91,$90,$92
.db $9A,$AB,$B7,$C3,$D4,$CE,$BB,$9C,$94,$9D,$B1,$BE,$B7,$A6,$94,$85
.db $76,$81,$9E,$A9,$9F,$8E,$76,$67,$6E,$83,$9C,$AA,$AA,$A1,$95,$96
.db $A0,$A9,$B4,$C3,$CE,$C6,$B1,$9C,$79,$6C,$76,$84,$98,$AF,$B9,$AE
.db $9A,$83,$70,$77,$94,$9E,$97,$83,$67,$67,$7A,$8B,$A7,$CD,$D6,$C2
.db $AA,$8A,$81,$93,$A3,$B5,$CC,$C4,$AD,$8C,$83,$92,$A7,$B6,$B1,$A7
.db $9C,$8F,$7A,$69,$6E,$84,$A1,$BB,$B9,$A4,$9B,$9E,$A8,$B5,$C7,$D6
.db $CD,$B7,$9C,$79,$70,$7E,$8B,$9A,$AE,$B5,$A0,$86,$72,$69,$74,$88
.db $90,$8D,$82,$71,$63,$67,$7B,$8D,$AA,$C6,$BC,$AB,$97,$78,$68,$75
.db $89,$99,$AD,$BC,$B3,$9F,$81,$71,$78,$83,$97,$AA,$AB,$9F,$86,$68
.db $5E,$60,$69,$7B,$8D,$98,$96,$8B,$78,$6A,$77,$8E,$A9,$AC,$9D,$83
.db $6E,$69,$71,$7C,$86,$92,$A7,$B0,$A1,$8F,$7B,$6B,$62,$64,$6B,$6F
.db $71,$71,$6C,$65,$64,$6C,$75,$84,$9A,$9F,$93,$82,$63,$5D,$67,$6F
.db $7C,$90,$9A,$93,$86,$6F,$51,$49,$5A,$70,$85,$85,$7D,$70,$62,$57
.db $52,$57,$66,$75,$80,$88,$89,$86,$81,$79,$7E,$8B,$90,$8C,$85,$74
.db $5D,$4F,$54,$60,$6E,$7E,$92,$98,$90,$82,$6A,$53,$54,$66,$75,$81
.db $8B,$8F,$83,$7A,$79,$78,$72,$6C,$68,$66,$62,$5C,$57,$56,$54,$5A
.db $6A,$77,$82,$8A,$87,$79,$6E,$6E,$74,$7B,$80,$84,$87,$85,$7F,$72
.db $5D,$44,$40,$53,$6D,$79,$73,$6C,$62,$58,$51,$54,$55,$57,$62,$6E
.db $7A,$80,$81,$81,$80,$83,$8B,$98,$92,$83,$75,$6A,$60,$58,$4E,$49
.db $51,$5F,$6E,$7D,$87,$80,$71,$5A,$50,$58,$66,$73,$73,$6E,$6F,$6E
.db $66,$63,$64,$67,$69,$6A,$63,$55,$4C,$44,$3F,$44,$4C,$56,$5E,$65
.db $68,$6B,$71,$77,$79,$78,$74,$71,$71,$73,$76,$72,$6C,$64,$5D,$56
.db $4B,$41,$3C,$3E,$48,$5A,$6F,$6F,$64,$59,$59,$67,$77,$7F,$81,$78
.db $6B,$6F,$76,$79,$7A,$7B,$7C,$7A,$7D,$7E,$7B,$73,$68,$5F,$52,$43
.db $3E,$41,$4B,$58,$6A,$7B,$90,$94,$80,$61,$4F,$56,$66,$81,$93,$8C
.db $7E,$68,$49,$43,$51,$5D,$71,$8C,$93,$88,$79,$5F,$45,$41,$50,$60
.db $73,$80,$85,$7E,$70,$64,$5F,$65,$6A,$68,$66,$67,$67,$6B,$74,$7C
.db $78,$6C,$62,$4D,$3A,$3E,$51,$6A,$7E,$87,$84,$78,$6F,$71,$77,$80
.db $8A,$99,$A3,$9B,$8F,$7F,$61,$50,$5A,$68,$75,$8A,$9D,$95,$86,$77
.db $6D,$69,$71,$76,$75,$75,$76,$74,$73,$74,$72,$77,$81,$89,$91,$99
.db $97,$8C,$85,$89,$90,$90,$88,$7D,$6A,$62,$69,$71,$83,$8F,$8A,$80
.db $70,$5E,$56,$5E,$69,$73,$81,$92,$98,$92,$89,$79,$6B,$64,$68,$74
.db $86,$97,$95,$88,$76,$6D,$70,$77,$85,$97,$99,$8F,$82,$79,$70,$6C
.db $6A,$64,$5E,$60,$6C,$79,$85,$8D,$91,$91,$96,$97,$91,$86,$7A,$6A
.db $5E,$5D,$69,$7A,$8C,$90,$87,$7B,$73,$72,$76,$80,$88,$89,$88,$87
.db $80,$76,$6D,$66,$6A,$76,$83,$90,$9B,$A5,$9F,$91,$82,$75,$6F,$72
.db $7C,$87,$8D,$8B,$81,$7B,$80,$84,$86,$85,$81,$7C,$77,$79,$7C,$7D
.db $7F,$84,$88,$91,$9D,$A4,$A4,$9E,$90,$85,$85,$8E,$97,$98,$93,$8D
.db $89,$88,$88,$8A,$8F,$94,$9A,$9B,$99,$95,$8D,$81,$76,$6F,$6F,$73
.db $7B,$85,$8C,$96,$9D,$9B,$96,$91,$90,$94,$98,$9A,$98,$93,$8D,$88
.db $88,$8C,$90,$93,$94,$98,$9A,$9A,$95,$89,$82,$7E,$7F,$86,$92,$94
.db $8D,$7F,$78,$7C,$83,$88,$8C,$92,$9D,$A2,$9D,$93,$89,$7D,$77,$7F
.db $8B,$93,$9F,$AA,$A4,$9C,$94,$89,$7B,$74,$76,$7E,$8A,$98,$9D,$98
.db $89,$79,$73,$7A,$85,$92,$93,$8E,$8D,$8C,$88,$7F,$76,$71,$73,$7B
.db $86,$90,$96,$92,$8B,$82,$7B,$84,$8F,$91,$8D,$84,$78,$70,$6D,$70
.db $78,$82,$8C,$96,$9E,$9D,$93,$86,$79,$6F,$6E,$76,$7F,$8A,$97,$97
.db $91,$85,$77,$75,$79,$7D,$84,$8C,$97,$99,$93,$89,$7C,$6B,$62,$65
.db $6C,$77,$83,$8B,$8B,$8C,$89,$82,$7C,$77,$71,$6E,$70,$76,$7C,$87
.db $88,$81,$7D,$7F,$82,$89,$8B,$85,$7F,$7A,$78,$79,$7B,$7C,$79,$74
.db $70,$6E,$71,$79,$7E,$7E,$7C,$78,$79,$81,$88,$8A,$88,$82,$7D,$78
.db $78,$7A,$7A,$7D,$80,$81,$86,$8A,$86,$81,$7D,$79,$78,$77,$76,$71
.db $6D,$6A,$68,$6B,$77,$83,$88,$85,$78,$6C,$6D,$74,$7F,$8D,$90,$89
.db $80,$78,$72,$6A,$69,$6B,$6D,$6F,$71,$76,$7F,$86,$85,$80,$77,$6C
.db $63,$61,$64,$6C,$77,$7E,$7F,$78,$6D,$65,$61,$64,$6E,$7B,$84,$82
.db $7C,$70,$61,$5C,$62,$6C,$75,$78,$76,$6F,$63,$60,$68,$70,$77,$7B
.db $79,$73,$69,$65,$69,$6E,$72,$73,$6D,$60,$56,$58,$60,$68,$71,$7D
.db $80,$7A,$6E,$61,$5B,$5F,$69,$77,$7D,$78,$70,$65,$60,$61,$68,$72
.db $79,$78,$73,$6B,$61,$60,$68,$75,$7A,$76,$70,$68,$5E,$59,$61,$6B
.db $78,$84,$85,$7B,$6D,$61,$5E,$64,$74,$7F,$82,$7F,$76,$69,$63,$66
.db $6E,$7A,$84,$84,$7B,$71,$6D,$70,$77,$7F,$83,$80,$78,$6F,$68,$65
.db $6B,$77,$83,$87,$83,$7B,$72,$6C,$6B,$72,$7B,$85,$8C,$8A,$80,$73
.db $6A,$6A,$73,$7F,$88,$8A,$85,$7A,$70,$6E,$74,$7D,$89,$90,$8E,$83
.db $75,$6C,$6D,$75,$7F,$89,$8F,$8A,$82,$78,$6F,$6D,$75,$81,$86,$84
.db $7E,$73,$6A,$68,$6E,$77,$81,$89,$8D,$89,$7E,$74,$71,$75,$7C,$85
.db $8D,$8E,$87,$7B,$6F,$66,$66,$70,$7D,$83,$83,$7D,$73,$69,$66,$6B
.db $73,$7B,$83,$88,$82,$77,$70,$6F,$71,$78,$7D,$7F,$7E,$7A,$74,$70
.db $6C,$6A,$6E,$75,$79,$78,$74,$6F,$6A,$68,$6C,$71,$76,$7C,$82,$80
.db $7A,$72,$6E,$70,$72,$74,$75,$74,$72,$6E,$67,$60,$60,$67,$6F,$77
.db $7B,$78,$70,$69,$69,$6B,$70,$77,$7C,$80,$7D,$75,$6D,$68,$66,$68
.db $6E,$71,$71,$6F,$6C,$67,$60,$5E,$61,$65,$6C,$73,$77,$77,$75,$72
.db $6E,$6B,$6D,$73,$78,$7B,$79,$73,$6C,$65,$62,$64,$68,$69,$6B,$69
.db $64,$61,$5D,$5C,$61,$69,$6F,$74,$78,$78,$76,$71,$6D,$6D,$6F,$74
.db $75,$73,$6F,$6B,$66,$63,$61,$63,$68,$6C,$6E,$6E,$6B,$66,$63,$63
.db $66,$6B,$6F,$73,$77,$7A,$7B,$78,$72,$6F,$6E,$6D,$6D,$6D,$6E,$6E
.db $6C,$66,$61,$5E,$61,$67,$6F,$76,$78,$76,$75,$72,$6E,$6B,$6C,$70
.db $75,$79,$7B,$7C,$7B,$7A,$78,$75,$71,$6E,$6C,$6B,$6A,$6B,$6C,$6B
.db $6D,$70,$72,$75,$7A,$7E,$80,$7E,$7A,$76,$70,$70,$74,$75,$76,$78
.db $79,$77,$76,$76,$75,$74,$72,$70,$6F,$6E,$6F,$73,$75,$74,$74,$76
.db $78,$7B,$7F,$81,$82,$81,$80,$7D,$78,$73,$6F,$6D,$6E,$71,$75,$7A
.db $7B,$76,$72,$6C,$68,$6A,$70,$75,$78,$76,$71,$6C,$6A,$6F,$74,$78
.db $7E,$81,$7E,$7A,$76,$6F,$68,$67,$6A,$6F,$74,$7A,$7B,$77,$73,$6D
.db $6A,$6E,$74,$78,$7A,$78,$75,$73,$72,$74,$75,$75,$75,$75,$76,$78
.db $79,$78,$75,$70,$6B,$68,$66,$69,$6E,$6F,$72,$74,$73,$71,$6F,$6E
.db $6D,$6E,$72,$78,$7B,$7A,$78,$74,$6D,$6A,$6E,$73,$78,$7C,$7F,$7F
.db $7A,$77,$73,$6F,$6F,$71,$72,$74,$76,$76,$73,$6F,$6B,$6B,$70,$75
.db $7B,$7E,$7B,$76,$70,$6B,$6A,$6C,$70,$74,$76,$76,$75,$73,$75,$77
.db $77,$78,$77,$74,$72,$70,$6D,$6B,$68,$68,$6B,$6E,$71,$72,$74,$75
.db $76,$76,$78,$7D,$81,$81,$7E,$79,$72,$6D,$6E,$72,$77,$7B,$7D,$7F
.db $7E,$7B,$78,$77,$75,$73,$71,$6F,$6C,$69,$6A,$69,$69,$6B,$70,$76
.db $7E,$84,$85,$81,$7B,$75,$6F,$6C,$6B,$6D,$6F,$71,$72,$75,$77,$79
.db $7D,$81,$81,$7F,$7B,$75,$6F,$68,$64,$64,$65,$6A,$71,$75,$76,$76
.db $75,$74,$73,$74,$76,$77,$78,$77,$73,$6F,$6F,$73,$78,$7D,$81,$83
.db $82,$7C,$76,$70,$6B,$6C,$6E,$70,$71,$71,$6F,$6D,$69,$67,$67,$6B
.db $73,$7B,$81,$83,$81,$7C,$7B,$7A,$7B,$7F,$84,$85,$81,$7C,$74,$6B
.db $66,$67,$6C,$71,$75,$79,$7B,$78,$72,$6E,$6B,$6B,$6F,$75,$79,$78
.db $76,$76,$76,$77,$79,$7C,$7F,$82,$82,$80,$7A,$73,$6C,$67,$66,$6A
.db $70,$77,$7D,$7F,$7D,$78,$77,$79,$7C,$80,$81,$7E,$7A,$75,$70,$6C
.db $6B,$6A,$6D,$71,$76,$7D,$7F,$7D,$79,$73,$6F,$6F,$74,$7B,$81,$83
.db $81,$7C,$79,$78,$79,$7B,$7D,$7E,$7C,$79,$74,$6E,$68,$65,$64,$67
.db $6D,$74,$7A,$7D,$7C,$7A,$78,$79,$7D,$81,$85,$88,$8A,$8B,$89,$85
.db $82,$7F,$7A,$78,$78,$78,$76,$75,$71,$6D,$68,$68,$6D,$72,$77,$7E
.db $82,$84,$83,$80,$7E,$7B,$76,$75,$79,$7E,$82,$85,$86,$84,$7F,$7C
.db $7B,$7A,$7A,$7A,$78,$75,$70,$6D,$6F,$73,$78,$7D,$82,$85,$88,$89
.db $89,$87,$84,$81,$7C,$79,$78,$77,$78,$7A,$7D,$81,$85,$87,$86,$84
.db $82,$80,$7F,$7F,$7E,$7E,$7C,$7A,$79,$79,$7D,$81,$85,$88,$86,$81
.db $7D,$7A,$78,$76,$75,$74,$73,$74,$77,$7D,$81,$86,$89,$88,$86,$85
.db $83,$83,$84,$84,$84,$83,$81,$7F,$7E,$7C,$7D,$7D,$7D,$7D,$7B,$79
.db $76,$72,$71,$73,$74,$76,$78,$79,$78,$7B,$7F,$84,$88,$89,$87,$83
.db $7E,$7B,$7E,$83,$86,$87,$84,$80,$79,$73,$72,$75,$78,$7D,$81,$80
.db $7F,$7D,$78,$74,$75,$77,$7C,$81,$84,$83,$82,$81,$83,$86,$8A,$8B
.db $88,$83,$7E,$7A,$7A,$7C,$7E,$7F,$7E,$7B,$78,$78,$7B,$81,$88,$8A
.db $86,$80,$7A,$74,$75,$7A,$81,$88,$8D,$8E,$8B,$87,$82,$7F,$80,$84
.db $88,$89,$87,$84,$7E,$78,$77,$79,$7F,$85,$88,$89,$87,$84,$83,$85
.db $88,$8B,$8B,$87,$83,$7E,$7B,$7E,$83,$88,$8D,$8F,$8C,$88,$82,$7E
.db $7E,$82,$86,$87,$86,$83,$7F,$7B,$7A,$7F,$85,$8C,$91,$92,$8F,$8A
.db $85,$83,$85,$88,$8A,$8B,$88,$84,$81,$81,$83,$86,$8A,$8D,$8C,$88
.db $83,$7F,$7D,$7F,$83,$87,$88,$87,$83,$7F,$7B,$7C,$80,$86,$8B,$8F
.db $8E,$89,$83,$7F,$7F,$83,$87,$8A,$8A,$86,$80,$7A,$77,$79,$7E,$86
.db $8D,$91,$8F,$89,$81,$7A,$77,$78,$7A,$7E,$81,$83,$81,$7F,$7F,$81
.db $84,$8A,$8F,$90,$8B,$84,$7C,$74,$72,$78,$80,$89,$90,$8F,$88,$80
.db $76,$73,$77,$7F,$87,$8B,$89,$83,$7B,$75,$74,$78,$7F,$87,$8A,$88
.db $83,$7A,$77,$79,$7E,$87,$91,$94,$91,$8A,$7F,$73,$6E,$6E,$73,$7B
.db $83,$89,$89,$85,$82,$80,$7F,$80,$81,$81,$81,$7E,$7B,$79,$79,$7B
.db $80,$85,$89,$8A,$88,$84,$7F,$7A,$76,$76,$79,$7C,$7E,$7E,$7D,$7B
.db $78,$78,$79,$7B,$7E,$82,$82,$80,$7E,$7D,$7E,$81,$87,$8C,$8E,$8A
.db $82,$78,$6F,$6B,$6F,$76,$7D,$84,$87,$85,$7F,$79,$75,$72,$71,$70
.db $70,$70,$72,$73,$76,$7A,$7E,$82,$87,$8A,$8B,$88,$82,$7B,$72,$6C
.db $6B,$6F,$74,$79,$80,$83,$81,$7E,$79,$72,$6D,$6B,$6B,$6D,$71,$75
.db $78,$77,$75,$74,$75,$79,$7C,$7E,$7D,$79,$73,$71,$71,$75,$7B,$80
.db $81,$80,$7D,$78,$74,$70,$6E,$6D,$6F,$72,$77,$7A,$7C,$7D,$7A,$77
.db $77,$78,$79,$79,$76,$73,$6F,$6D,$6F,$73,$79,$7E,$81,$82,$82,$7E
.db $7A,$76,$72,$6F,$70,$75,$7C,$82,$86,$85,$82,$7D,$79,$78,$7A,$7C
.db $7C,$79,$76,$73,$74,$77,$7A,$7C,$7C,$7B,$7A,$79,$79,$79,$78,$78
.db $77,$77,$7A,$7E,$82,$86,$87,$86,$84,$80,$7C,$79,$76,$75,$78,$7D
.db $82,$84,$84,$80,$78,$73,$73,$77,$7C,$82,$85,$82,$7E,$79,$75,$76
.db $7A,$7E,$83,$85,$85,$83,$81,$7E,$7C,$7C,$7D,$80,$82,$83,$82,$7E
.db $7A,$78,$79,$7D,$83,$87,$87,$84,$7F,$7A,$77,$77,$78,$7A,$7D,$7F
.db $81,$83,$84,$84,$83,$81,$7E,$7B,$7A,$7A,$7C,$7E,$81,$83,$85,$86
.db $85,$82,$7E,$7A,$79,$79,$7B,$7E,$80,$7F,$7D,$7A,$79,$7A,$7D,$81
.db $83,$83,$80,$7B,$77,$75,$77,$7B,$7F,$83,$84,$83,$81,$7E,$7A,$78
.db $78,$7B,$7F,$82,$83,$81,$7D,$79,$76,$76,$77,$7A,$7D,$7F,$7F,$7D
.db $7B,$79,$78,$78,$79,$7A,$7B,$7B,$7B,$7B,$7B,$7B,$7C,$7E,$81,$83
.db $84,$82,$7E,$79,$75,$74,$76,$7A,$7E,$80,$80,$7E,$7B,$78,$77,$77
.db $78,$79,$7A,$7A,$7A,$7A,$7B,$7B,$7D,$7E,$80,$82,$83,$81,$7E,$7A
.db $77,$76,$77,$7A,$7D,$7E,$7E,$7D,$7B,$7A,$7A,$7A,$7B,$7B,$7A,$7A
.db $7B,$7C,$7E,$7F,$80,$7F,$7E,$7D,$7D,$7C,$7B,$7A,$79,$7A,$7C,$7D
.db $7E,$7D,$7B,$79,$79,$7A,$7D,$7F,$80,$80,$7E,$7D,$7C,$7C,$7E,$80
.db $81,$81,$7F,$7D,$7A,$77,$76,$76,$77,$7A,$7E,$81,$82,$80,$7D,$79
.db $77,$78,$7B,$7F,$82,$83,$83,$82,$81,$80,$80,$7F,$7E,$7D,$7C,$7B
.db $7A,$79,$77,$77,$77,$79,$7C,$7F,$81,$81,$7E,$7B,$78,$78,$7B,$7E
.db $81,$82,$82,$81,$80,$7F,$7E,$7D,$7C,$7C,$7B,$7B,$7A,$7A,$79,$78
.db $78,$7A,$7C,$7F,$81,$81,$7F,$7D,$7A,$7A,$7B,$7D,$7F,$7F,$7F,$7D
.db $7D,$7E,$7E,$7D,$7C,$7A,$79,$79,$7A,$7B,$7C,$7C,$7C,$7C,$7D,$7F
.db $80,$80,$7F,$7E,$7D,$7D,$7C,$7C,$7C,$7B,$7B,$7B,$7C,$7D,$7D,$7C
.db $7B,$7A,$79,$7A,$7B,$7C,$7D,$7D,$7D,$7E,$7F,$80,$81,$81,$81,$80
.db $7E,$7E,$7D,$7D,$7C,$7B,$7B,$7B,$7C,$7D,$7E,$7E,$7D,$7C,$7B,$7B
.db $7C,$7C,$7D,$7D,$7D,$7E,$7F,$80,$82,$82,$82,$81,$80,$7F,$7E,$7E
.db $7D,$7C,$7C,$7C,$7D,$7E,$7F,$80,$81,$80,$7F,$7E,$7D,$7C,$7C,$7C
.db $7C,$7D,$7F,$81,$83,$84,$83,$81,$7F,$7E,$7D,$7D,$7D,$7E,$7E,$7E
.db $7F,$7F,$80,$80,$80,$7F,$7F,$7F,$7F,$7F,$7F,$7E,$7E,$7D,$7E,$7F
.db $80,$81,$82,$82,$81,$7F,$7D,$7D,$7D,$7D,$7E,$7F,$7F,$7F,$7F,$7E
.db $7E,$7D,$7E,$7F,$80,$81,$81,$80,$7F,$7E,$7D,$7E,$7F,$7F,$80,$7F
.db $7F,$7E,$7E,$7E,$7E,$7E,$7E,$7D,$7C,$7B,$7C,$7D,$7E,$7F,$7F,$80
.db $80,$80,$80,$7F,$7F,$7F,$7F,$7F,$80,$80,$7F,$7E,$7D,$7D,$7D,$7D
.db $7E,$7E,$7E,$7D,$7C,$7C,$7C,$7D,$7D,$7E,$7E,$7E,$7F,$80,$80,$80
.db $80,$7F,$7F,$7E,$7E,$7E,$7D,$7D,$7D,$7C,$7C,$7D,$7D,$7D,$7D,$7D
.db $7D,$7D,$7D,$7D,$7E,$7E,$7E,$7E,$7F,$7F,$80,$80,$7F,$7E,$7E,$7D
.db $7D,$7D,$7D,$7D,$7C,$7C,$7C,$7C,$7C,$7D,$7D,$7D,$7D,$7D,$7D,$7D
.db $7D,$7D,$7D,$7E,$7E,$7E,$7D,$7D,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C
.db $7B,$7B,$7B,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7D,$7D,$7D,$7D,$7D,$7D
.db $7D,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7B,$7C,$7C,$7C
.db $7C,$7C,$7C,$7C,$7C,$7C,$7D,$7D,$7D,$7C,$7C,$7C,$7C,$7C,$7C,$7C
.db $7B,$7B,$7B,$7B,$7B,$7B,$7C,$7C,$7C,$7C,$7C,$7C,$7D,$7D,$7D,$7D
.db $7D,$7D,$7D,$7D,$7D,$7D,$7D,$7C,$7C,$7C,$7C,$7B,$7B,$7B,$7B,$7B
.db $7B,$7C,$7C,$7B,$7B,$7C,$7C,$7D,$7D,$7D,$7D,$7D,$7D,$7D,$7D,$7D
.db $7E,$7D,$7D,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C,$7C
.db $7C,$7D,$7D,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7D,$7D
.db $7D,$7D,$7D,$7D,$7D,$7C,$7C,$7C,$7C,$7C,$7D,$7D,$7D,$7D,$7D,$7D
.db $7D,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7D,$7D,$7D,$7D,$7D,$7D,$7D
.db $7D,$7D,$7D,$7D,$7D,$7E,$7E,$7E,$7E,$7D,$7E,$7E,$7E,$7E,$7E,$7E
.db $7D,$7D,$7D,$7D,$7D,$7D,$7D,$7D,$7C,$7D,$7D,$7D,$7D,$7D,$7D,$7D
.db $7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7D,$7D,$7D,$7D,$7E
.db $7D,$7D,$7D,$7C,$7C,$7D,$7E,$7E,$7E,$7E,$7E,$7E,$7E,$7F,$80,$80
.db $80,$7F,$7F,$7F,$7F,$7F,$7F,$7E,$7E,$7E,$7E,$7E,$7D,$7D,$7D,$7D
.db $7D,$7E,$7E,$7E,$7E,$7E,$7E,$7F,$7F,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F
.db $7F,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $7F,$7F,$7F,$80,$80,$80,$80,$7F,$7F,$80,$80,$80,$80,$80,$80,$80
.db $80,$81,$81,$81,$81,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$81,$81,$81
.db $81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$81,$81,$81,$81,$81,$81,$81,$81
.db $81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$80,$80,$80,$80,$80
.db $80,$80,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81,$81
.db $81,$81,$81,$81,$81,$81,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80
.db $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$81,$81,$81,$81,$81

.END






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users