1

Cześć, po wielu tygodniach chyba ukończyłem DOOM-a na ATARI XE/XL.
Gra wymaga VBXE i karty akceleracyjnej, optymalnie 40 MHz, ale działa również na 17 MHz. Wszystkie 3 epizody są w grze. Mierzalne FPS to gdzieś między 5-6 kl./s, ale z wyłączonymi teksturami i mniejszym oknem jest jak za dawnych czasów na 386 :)

Jeśli komuś uda się znaleźć jakieś bugy, będę zadowolony.

-T - włącz/wyłącz tekstury
- -/+ - powiększ i zmniejsz okno

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

download (ZIP, 2390kb)
https://www.turiecfoto.sk/atari/doom.zip

2 Ostatnio edytowany przez drac030 (2026-08-27 22:02:43)

Na zestawie Antonia II w trybie turbo plus IDE+ rzecz ładuje się z ATR-a ok. 21 sekund do menu, a po wybraniu levelu mamy następne ok. 70 sekund ładowania.

KMK
? HEX$(6670358)

3

czyli RETRO pełną gębą, gdyby ładowanie trwało kilka sekund to całkowicie straciłoby klimat ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

4 Ostatnio edytowany przez laborant (2026-08-27 22:59:34)

A ile to byłoby rekordów w normalu na kasecie? Kilka kaset murowane, jakiś specjalny loader by musiał być z przerwą na zmianę strony i taśmy.

CAŁA NOC WGRYWANIA NA ATARI i... :)


PS. Teraz widzę dopiero, że to 2 mega skompresowane jest, a 6,5 po odpakowaniu. Żadna noc, to byłoby prawie 32 kasety sześcdziesiątki jeśli ładować zdekranczowane...
Po wgraniu (zakładając że nie wystąpiłby błąd I/O naturalny albo ten z OS-u) już by się komputera nigdy nie wyłączało no i może magnet byłby też lekko zajechany.

5 Ostatnio edytowany przez drac030 (2026-08-27 23:38:30)

laborant napisał/a:

Teraz widzę dopiero, że to 2 mega skompresowane jest, a 6,5 po odpakowaniu. Żadna noc, to byłoby prawie 32 kasety sześcdziesiątki jeśli ładować zdekranczowane...

Szybkość ładowania z tego ATR-a na IDE+ oceniam na jakieś 29 KB/s. Zatem menu + pierwszy level to będzie nieco ponad 2,6 MB danych do załadowania. Z taśmy na 600 bodów wychodzi mi tu niecałe 14 godzin (13 godzin i 48 minut) - czyli wystarczy mieć szpulę z taśmą o długości 1 kilometra i 200 metrów i już.

KMK
? HEX$(6670358)

6

tak, to prawda, jest to tam wydrukowane i poszczególne fragmenty są nagrywane, jeden po drugim, może to chwilę potrwać... ale byłoby ciekawie na Turbo Blizzard :)

7 Ostatnio edytowany przez drac030 (2026-08-28 10:59:18)

A tak wracając do samego programu, to coś jest w nim nie tak, bo o ile na emulatorze jest tak czyściutko, jak na Twoim filmie, o tyle na prawdziwym sprzęcie występują bardzo często zakłócenia w nakładaniu tekstur, albo w wypełnianiu powierzchni, kiedy teksturowanie jest wyłączone - w tym ostatnim wypadku to jest bardzo widoczne.

Nie bardzo wiem, jaka może być przyczyna, może niewyzerowany RAM VBXE?

Problem występuje tak samo na Antonii, jak i na Rapidusie.

KMK
? HEX$(6670358)

8

drac030 napisał/a:

A tak wracając do samego programu, to coś jest w nim nie tak, bo o ile na emulatorze jest tak czyściutko, jak na Twoim filmie, o tyle na prawdziwym sprzęcie występują bardzo często zakłócenia w nakładaniu tekstur, albo w wypełnianiu powierzchni, kiedy teksturowanie jest wyłączone - w tym ostatnim wypadku to jest bardzo widoczne.

Nie bardzo wiem, jaka może być przyczyna, może niewyzerowany RAM VBXE?

Problem występuje tak samo na Antonii, jak i na Rapidusie.

To ważne, czy mógłbyś spróbować nagrać to na wideo?

9

A ta wersja? Ponownie wgrałem ZIP na mój FTP

10 Ostatnio edytowany przez tebe (2026-08-28 11:53:54)

może nie czeka na zakończenie działania blittera? nie wiem czy Altirra ma cycle-exact dla blittera VBXE

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

11 Ostatnio edytowany przez drac030 (2026-08-28 11:59:42)

w1k napisał/a:

A ta wersja?

Na tej drugiej wersji jest to samo. Postaram się to nagrać późniejszym popołudniem.

tebe napisał/a:

nie wiem czy Altirra ma cycle-exact dla blittera VBXE

Nie ma.

KMK
? HEX$(6670358)

12

Trochę się w tym gubię, mam w domu Antonię II i jeszcze jedno Atari, ale muszę kupić jeszcze jeden vbxe na testy..

13 Ostatnio edytowany przez drac030 (2026-08-28 16:35:48)

Jak widać, najwięcej zakłóceń jest w trybie bez tekstur, ale przy włączonych teksturach też je widać:

https://youtu.be/ZOc4h4p8UDA

To jest dzisiejsza wersja doom.atr, sprzęt Rapidus 20 MHz (z "prawdziwym" procesorem), VBXE 1.1, rdzeń FX 1.26.

KMK
? HEX$(6670358)

14

galiba.. ponieważ nie mam akceleratora, nie wiem jak to sprawdzić, ale naprawię to.

15

Może trzeba to zgłosić phaeronowi, bo to wygląda na błąd w emulatorze (a w każdym razie jakiś brak kompatybilności).

Chyba, że to tylko u mnie, ale wątpię.

KMK
? HEX$(6670358)

16 Ostatnio edytowany przez w1k (2026-08-29 11:44:28)

Nie wiem, pewnie bałbym się napisać do Phareona o czymś, co napisała AI... :D
BTW, Peri Noid potwierdził artefakty również w swoim przypadku

17 Ostatnio edytowany przez drac030 (2026-08-29 12:20:03)

Tam jest jeszcze ten problem, że tego programu nie da się załadować z SIO. Przynajmniej takiego normalnego. Trzeba użyć albo HDD (IDE+, SIDE), albo np. SIO wbudowanego w IDE+ (US SIO w menu IDE Plusa).

A to dlatego, że procedura IRQ, znajdująca się pod adresem $0491 i podwieszona pod wektor IRQ pod adresem $0216, jest przystosowana do działania w trybie natywnym. Podczas ładowania DOOM przełącza się w tryb emulacji i zapomina ją przy tym odwiesić.

W rezultacie przychodzące przerwanie szeregowe w trybie emulacji odkłada na stos dwa bajty (X i A), a potem, w celu skoku pod stary adres obsługi w ROM-ie, zdejmuje 3 (nb. nie przywracając zawartości ani X, ani A) i rujnuje zawartość stosu.



https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13788

Post's attachments

irq0491_pogladowo.png 9.45 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
KMK
? HEX$(6670358)

18 Ostatnio edytowany przez w1k (2026-08-29 16:19:31)

Dzięki, mam nadzieję, że udało mi się to naprawić... Właściwie, kiedy wyłączyłem łatkę D: w Altirze, to nie działało. Teraz powinno być dobrze. Nowa wersja na FTP.

https://github.com/viktorcech/doom-vbxe

19 Ostatnio edytowany przez drac030 (2026-08-29 16:21:58)

1. Ładuje się z SIO

2. Na prawdziwym sprzęcie (Antonia II) zakłócenia graficzne zniknęły!

KMK
? HEX$(6670358)

20

To od AI:
Założenie, że "BCB jest tutaj zablokowany" jest cechą Altira, a nie VBXE. Altira wywołuje LoadBlitter() bezpośrednio w procedurze obsługi BLITTER_START (vbxe.cpp:1361, z komentarzem dokładnie o tym, że dema nadpisują pierwszy rekord bez czekania). Prawdziwy rdzeń efektów pobiera te 21 bajtów BCB z pamięci VRAM w cyklach, które daje mu wyświetlacz - a te dwie instrukcje (~10 cykli, znacznie mniej w systemie Rapidus) wyprzedzą to pobieranie.

Rezultat:
- cm_flush - kopia kolumny źródłowej będzie miała szerokość 1 zamiast cm_n, więc wszystkie bliźniaki z wyjątkiem pierwszego pozostaną stare → dokładnie te paski o długości 2-5 kolumn.
- bg_blit - wypełnienie tła będzie miało szerokość 1 kolumny zamiast bg_w → szersze "odbijające się fragmenty" w lukach, które BSP pozostawił otwarte.

To wyścig, więc zdarza się sporadycznie i nie może się zdarzyć w emulatorze. To pasuje do "tylko na prawdziwym sprzęcie".

Poprawka

Usunąłem oba wpisy po BL_START (pod .if !TEX_RUNS z powodu martwej gałęzi z draw_vspan). Niezmiennik "return BCB to 1 px" nie ma już czytnika: przy TEX_RUNS=1 cm_flush jest jedynym użytkownikiem TWALL BCB, a bg_blit jest jedynym użytkownikiem slotu 0 VLINE BCB, i oba ustawiają BCB_WIDTH przy każdym wywołaniu. Blok skurczył się o 8 bajtów, wszystkie zabezpieczenia ert przeszły pomyślnie.

21

w1k napisał/a:

(vbxe.cpp:1361, z komentarzem dokładnie o tym, że dema nadpisują pierwszy rekord bez czekania). Prawdziwy rdzeń efektów pobiera te 21 bajtów BCB z pamięci VRAM w cyklach, które daje mu wyświetlacz - a te dwie instrukcje (~10 cykli, znacznie mniej w systemie Rapidus) wyprzedzą to pobieranie.

No, tak, race condition jak malowanie.

Jeszcze tu chyba coś jest nie tak, jakby brakowało cyfr przed ":"


https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13789

Post's attachments

doom_plansza_po_1_etapie_b.jpg 154.95 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
KMK
? HEX$(6670358)

22 Ostatnio edytowany przez w1k (2026-08-29 17:08:33)

Czy nie jest tak również w oryginale? dosbox:

Na mojej liście zostało jeszcze 5-6 błędów, będę je stopniowo naprawiać

Post's attachments

doom_000.png 86.07 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

23 Ostatnio edytowany przez drac030 (2026-08-29 17:18:19)

No, OK, aczkolwiek wczoraj w polu "Time" wyświetlił mi dwie cyfry przed dwukropkiem i dwie po (coś w rodzaju 17:34). Jak jest w oryginale, nie wiem, nigdy wcześniej w Dooma nie grałem :]

Widziałem też, że, mimo że program pracuje w trybie natywnym, marnuje sporo czasu i miejsca przeprowadzając wszystkie obliczenia na 8-bitowym akumulatorze, nie używa move'ów blokowych (mvn/mvp - ale może nie ma dla nich zastosowania?), robi clc/adc #$01 zamiast inc, albo sec/sbc #$01 zamiast dec itp.

Może i tym warto byłoby się zająć w przyszłości, a nuż poprawi się troszkę wydajność.

KMK
? HEX$(6670358)

24

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

2:08

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

25

Czasem wyświetla.

https://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=13794

Post's attachments

doom_lvl1_finis_.jpg 111.56 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
KMK
? HEX$(6670358)