Viszont ha fel tudunk menni 12KHz-re, mi legyen a maximum sebesség turbós gépen? 48KHz ? (ha Zozón múlik lesz 16 MHz-es EP is )
Magasabb mintavételezési frekvenciánál rosszabb a frekvencia konverzió pontossága, de nem tudom, ez a gyakorlatban mennyire jelent problémát a 48 kHz egyébként jobb minőségéhez képest. Ilyenkor a zaj frekvenciája 8.36 bites lenne, a többi hullámformánál pedig 12.36 bites.
A hangerő byte konvertáló táblázata még hatékonyabb lehetne így:
- négyszögjelnél hangerő * 4 + 1
- egyéb hullámformáknál hangminta táblázat kezdőcíme / 128
Ezzel a megoldással ebből a rutinból:
. 892C E6 80 AND 80
. 892E 5F LD E, A
. 892F 79 LD A, C
. 8930 E6 60 AND 60
. 8932 28 12 JR Z, 8946
. 8934 FE 20 CP 20
. 8936 28 16 JR Z, 894E
. 8938 FE 40 CP 40
. 893A 28 1A JR Z, 8956
. 893C 79 LD A, C
. 893D E6 1F AND 1F
. 893F 06 41 LD B, 41
. 8941 B7 OR A
. 8942 28 12 JR Z, 8956
. 8944 80 ADD A, B
. 8945 C9 RET
. 8946 79 LD A, C
. 8947 E6 1F AND 1F
. 8949 06 03 LD B, 03
. 894B C3 41 89 JP 8941
. 894E 79 LD A, C
. 894F E6 1F AND 1F
. 8951 06 22 LD B, 22
. 8953 C3 41 89 JP 8941
. 8956 79 LD A, C
. 8957 E6 1F AND 1F
. 8959 87 ADD A, A
. 895A 00 NOP
. 895B 00 NOP
. 895C 37 SCF
. 895D C9 RET
ez maradna (tulajdonképpen lehetne inline is, mert csak néhány utasítás):
ld d, b
and 80h
ld e, a
ld b, high volumeConvTable
ld a, (bc)
rra
ret
Szerk.: ez azonban nem működik a 8 bites DAC használatakor. Ilyenkor lehetne a táblázatban 8-szoros hangerő + 1, és utána még egy ADD A,A csak négszögjelnél, aminek a helyére 6 bites D/A esetén NOP kerül.
Szerk. 2: a PWM (B regiszter) elvesztése javítva.
Szerk. 3: egy csatorna vezérlése módosítva:
LD E, (HL)
LD D, A
ld l, d
ld h, high freqMultTable
ld d, high (freqMultTable + 256)
ld a, (de)
scf
adc a, (hl)
ld e, a
inc h
ld a, 0
adc a, (hl)
ld l, e
rra
ld h, a
rr l
POP BC
LD A, C
LD (8897h), A
ld d, b
and 80h
ld e, a
ld b, high volumeConvTable
ld a, (bc)
rra
jr c, l1
LD (8929h), A
DI
LD (0045h), HL
LD HL, 8927h
jr l2
l1: rrca ; * 8-bit D/A: ADD A, A (87h)
LD (8926h), A
ld a, d
LD (8923h), A
DI
LD (0045h), HL
LD HL, 8922h
l2: LD A, E
LD (004Ch), A
LD DE, 004Eh
LDI
LDI
LDI
LDI
EI
LDI
az eredeti kód:
. 87DB 5E LD E, (HL)
. 87DC 57 LD D, A
. 87DD C7 RST 00
. 87DE C1 POP BC
. 87DF 79 LD A, C
. 87E0 32 97 88 LD (8897), A
. 87E3 CD 2C 89 CALL 892C
. 87E6 F3 DI
. 87E7 22 45 00 LD (0045), HL
. 87EA 38 0C JR C, 87F8
. 87EC 32 29 89 LD (8929), A
. 87EF 7B LD A, E
. 87F0 32 4C 00 LD (004C), A
. 87F3 21 27 89 LD HL, 8927
. 87F6 18 0E JR 8806
. 87F8 32 26 89 LD (8926), A
. 87FB 7B LD A, E
. 87FC 32 4C 00 LD (004C), A
. 87FF 78 LD A, B
. 8800 32 23 89 LD (8923), A
. 8803 21 22 89 LD HL, 8922
. 8806 11 4E 00 LD DE, 004E
. 8809 ED A0 LDI
. 880B ED A0 LDI
. 880D ED A0 LDI
. 880F ED A0 LDI
. 8811 FB EI
. 8812 ED A0 LDI
Itt a négyszögjel hangereje mindig nyolcszoros (+1), csak a léptetés iránya változik a DAC felbontásától függően. Kis mértékben rövidült a letiltott megszakítás időtartama is.