1

program w ramce ma maksymalnie X wolnego czasu - x nie jest stale, chce wywolac procedure (nie cyklicznie) ale dac jej maksymalnie wlasnie X czasu na wykonanie.

zadanie jest takie: kolejne wywolanie procedury ma kontynuowac wykonywanie przerwanej procki takze z maksymalnym czasem X.

pomysl na wykokanie to skok do inicjowania procki irq ktora przywroci/przerwie podprocedure z parametru i ustawi nowy max czas dzialania.

jakis inny pomysl?

http://atari.pl/hsc/ad.php?i=1.

2

Jeśli ma się wykonać w ramce to czemu nie VBLK zamiast IRQ?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3

VBLK nie, bo "X nie jest stałe". DLI by się nadało.

Inne podejście to jeśli procka jest jednorodna, wstawić do niej jakiś licznik, żeby sama umiała się przerwać.

https://www.youtube.com/watch?v=jofNR_WkoCE

4 Ostatnio edytowany przez xxl (2021-03-28 17:31:51)

vblk wykonuje sie w okreslonym momencie. jesli mam cala ramke wolna to mam czekac na vblk? poza tym, jesli procedura ktora ma miec ograniczony czas jest np. dekompresorem to chce moc dac jej "okreslona moc"...


---
wlasnie chce uniknac liczenia cykli, jest z tym problem ... w jetpacku jest taki mechanizm, ze okreslone procki maja swoj "czas" i procka kora je wywoluje zlicza ten czas i jesli przekroczy jakas wartosc to czeka na wyggaszanie pionowe po czym wykonuje glowne zadania i wraca do tego miejsca w ktorym przerwala poprzednio... ale to nie jest wydajne i jest bardzo niedokladne.

http://atari.pl/hsc/ad.php?i=1.

5

W Numenie większość efektów była odpalana z VBLK, włącznie z tymi, które zajmowały kilka ramek. Dekompresja kolejnych części oraz buforowanie muzyki odbywały się w "wątku głównym".

https://www.youtube.com/watch?v=jofNR_WkoCE