Generator liczb pseudolosowych

Nie ma róży bez kolców... Miejsce na dyskusję o najmłodszym bracie C64
Wiadomość
Autor
zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Generator liczb pseudolosowych

#1 Post autor: zbyti »

Na C64 można zrobić coś takiego:

Kod: Zaznacz cały

  lda #$ff  ; maximum frequency value
  sta $D40E ; voice 3 frequency low byte
  sta $D40F ; voice 3 frequency high byte
  lda #$80  ; noise waveform, gate bit off
  sta $D412 ; voice 3 control register
i wtedy czytanie rejestru $d41b zwróci losową liczbę.

Na A8 jest jeszcze prościej bo wystarczy czytać jeden z rejestrów POKEY $d20a by otrzymać losową liczbę z zakresu 0-255.

---

Czy ktoś mi podpowie jak to się robi na C+4?

Metoda użyta tutaj to obejście, RND Basic to obliczenia oparte na 3 timerach TED a RND(0) zwraca chyba jeden z timerów.

W niektórych materiałach sugerowano, że włączenie szumu ($FF11) na kanale drugim TED może posłużyć do randomizacji ale nigdzie nie znalazłem przykładu ani sam nie wpadłem jak to zrobić.

zbyti
Posty: 191
Rejestracja: 12 sty 2021, 14:26

Re: Generator liczb pseudolosowych

#2 Post autor: zbyti »

Register 17

has 4 bits of volume control ranging from 0 = OFF to ’8’ being
loud. Also 3 voice selects are available. Voice 1 select, Voice 2 square
wave select and Voice 2 white noise select. The MSB of this register is a
bit used for testing. The sound reload bit will clear the sound toggle
flops and initiate the reload value of each voice to initialize the active
sound count during the appropriate voice incrementing time. This bit will also
initiate the white noise random number generator to ’1’s.


http://litwr2.atspace.eu/p4docs.pdf

Być może źle zrozumiałem, że mogę wykorzystać ten biały szum.

ODPOWIEDZ