Autor Wątek: Emulator AY-3-8912 na AVR  (Przeczytany 54227 razy)

KWF

  • *****
  • Wiadomości: 7102
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #60 dnia: 2025.01.10, 14:22:09 »
@ArturM: dzięki za te informacje, tylko wszystkie zmiany byłyby oddzielną dystrybucją od oryginalnej. Zresztą zamiennik od Bena lub Charliego też jest odpryskiem tego co zrobił autor tego emulatora.
KWF
-----
R Tape loading error 0:1

ArturM

  • ***
  • Wiadomości: 228
  • Miejsce pobytu:
    GZM
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #61 dnia: 2025.01.10, 15:53:42 »
"Wiesz co robi ten miś? On odpowiada żywotnym potrzebom całego społeczeństwa. To jest miś na skalę naszych możliwości. Ty wiesz co my robimy tym misiem? My otwieramy oczy niedowiarkom. Patrzcie, mówimy, to nasze, przez nas wykonane i to nie jest nasze ostatnie słowo!" :D

W sumie to chciałbym tylko sprawdzić czy moje wnioski były słuszne i czy taka modyfikacja da zamierzony efekt.

I drobna autopoprawka. "Bezpieczny" kod miał wyglądać tak:
    mov     YL,OutB         ; TMP = TMP + (TMP/2 + TMP/4);
    lsr     OutB            ; napraw głośność B (bezpieczne, zwiększ o ok. 65%)
    add     YL,OutB
    lsr     OutB
    add     OutB,YL
ZX 48 | HQ 48 SMD | Sizif-512 | FDD3000 | SFDD3500 | M-397 Multiinterface | DivMMC AY - KiCad user | PCB Designer

ArturM

  • ***
  • Wiadomości: 228
  • Miejsce pobytu:
    GZM
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #62 dnia: 2025.01.11, 20:31:02 »
ps. Jest jeszcze jedna możliwość poprawy tego kodu, choć wymaga daleko idących zmian. Całkowite odcięcie timingów od generowania PWM. Czyli: timingami zajmuje się niewykorzystany licznik TIMER0 pracujący w trybie CTC, czym zachowujemy elastyczność i zależność tonacji od częstotliwości kwarcu. Zaś liczniki TIMER1 i TIMER2 puszczamy na 8 bitów, i wtedy grają równo...
No, proszę. Ktoś chyba doszedł do takich samych wniosków. Otóż istnieje kod zwany avr-psg, który w 99,9% właśnie w ten sposób poprawia to oprogramowanie układowe (Różnica jest kosmetyczna co do wykorzystania sposobu jak skracać licznik TIMER0). Zatem mamy:
- licznik TIMER0 jako konfigurowalna poprzez dane w EEPROM podstawa czasu,
- liczniki TIMER1 i TIMER2 działają jako 8 bitowe w trybie FastPWM - więc mamy 3 identyczne przetworniki DAC 1-bit,
- z tego co analizowałem, to poprawiono też tabelę głośności i obwiedni by operowała na 8 bitach.

Jak to gra? IMO nieźle. Możecie się sami przekonać odsłuchując nagrania. Specjalnie nagrania są zapisane w wysokiej jakości jako FLAC 24-bit 48KHz. Wszystkie nagrane w tych samych warunkach, przez wejście liniowe prosto z mojego Multiinterface. Odtwarzaniem zajmował się HQ48 SMD z uruchomionym programem SoundTracker. AVR-PSG działał na ATmega48PA taktowanym 20MHz (bez OC :P ).

https://filebin.net/asv278if9delwx5u# (plik zip, 150MB)
ZX 48 | HQ 48 SMD | Sizif-512 | FDD3000 | SFDD3500 | M-397 Multiinterface | DivMMC AY - KiCad user | PCB Designer

KWF

  • *****
  • Wiadomości: 7102
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #63 dnia: 2025.01.12, 10:29:50 »
Gdzie można poczytaj o tym kodzie "avr-psg"? Mógłbyś podzielić się linkiem?
KWF
-----
R Tape loading error 0:1

ArturM

  • ***
  • Wiadomości: 228
  • Miejsce pobytu:
    GZM
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #64 dnia: 2025.01.12, 11:56:28 »
Gdzie można poczytaj o tym kodzie "avr-psg"? Mógłbyś podzielić się linkiem?
https://github.com/Yevgeniy-Olexandrenko/avr-ay-board/tree/main/firmware/avr-psg
ZX 48 | HQ 48 SMD | Sizif-512 | FDD3000 | SFDD3500 | M-397 Multiinterface | DivMMC AY - KiCad user | PCB Designer

KWF

  • *****
  • Wiadomości: 7102
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
Odp: Emulator AY-3-8912 na AVR
« Odpowiedź #65 dnia: 2025.01.14, 23:22:13 »
Dzięki. Nie zauważyłem, że ta wersja jest tez na githubie.
KWF
-----
R Tape loading error 0:1