776

(11 odpowiedzi, napisanych Programowanie - 8 bit)

To na pewno jest pełny loader? To jest BOOT więc 6 pierwszych bajtów to jest nagłówek - ładowane są 2 sektory 128 bajtowe począwszy od adresu $75F. Spróbowałbyś ponownie zdisassemblować kod loadera?

Edit: Czytasz mi w myślach :) Dzięki. ALE! $75F to jest adres ładowania boota razem z nagłówkiem. Loader jest niepełny bo to:

0805   A9 20      LDA #$20
0807   8D 8E 07   STA $078E
080A   F0 82      BEQ $078E

przecież pójdzie w krzaki.

777

(202 odpowiedzi, napisanych Sprzęt - 8bit)

A czy to nie wygląda na ubitą linię LUM1 (logiczna 1 albo 0)? Może ta bramka odwracająca (4050 pin 11 i 12 ze schematu) padła? Albo się rozlutowało :>

778

(157 odpowiedzi, napisanych Zloty)

Dzięki za świetne party!
Impreza, organizacja, infrastruktura, atmosfera, towarzystwo świetne.
Idę robić inwitkę na LP2020 :P

779

(15 odpowiedzi, napisanych Fabryka - 8bit)

Co prawda nie jestem zainteresowany projektem, ale może komuś przydałaby się możliwość obsługi przerwań IRQ od tych układów?

Edit: Dawno temu kiedy projektowano rozszerzenia Stereo z POKEY-em nikt nie pomyślał o tym i obecnie praktycznie żadne stereo (prócz czeskiego) nie generuje przerwań drugim układem. A czasem by się przydało...

780

(18 odpowiedzi, napisanych Kolekcjonowanie)

Udało mi się wreszcie zrobić zdjęcia. Niestety bez statywu tylko z ręki więc niektóre są nieostre. Zdjęcia były robione z lampą i bez (w archiwum załączone są obydwie wersje dla porównania). Zdjęcia, które były całkiem nieczytelne usunąłem, ale w razie czego mam je zarchiwizowane więc mogę podesłać.
Konsolka została na początku rozkręcona, obfotografowaliśmy płytę, blachy, obudowę i akcesoria. Potem konsolka została skręcona i podłączona do TV. Odpalony został wbudowany w 7800 Asteroids, a potem Summer Games z 2600.
Na panelu czołowym są ryski wynikające z użytkowania - niegłębokie, ale niestety są. Były już niestety kiedy konsolę zanabyłem, no ale mój drugi egzemplarz jest w gorszym stanie więc się nim nawet nie chwalę :/
Archiwum 7z dostępne jest w http://mono.atari.pl/zdjecia7800.7z i waży 357,163,650 bajtów. Jeśli po oględzinach nadal byłbyś zainteresowany wymianą, to zapraszam na PW.

Edit: A - na spodniej stronie obudowy jedna śruba była zabezpieczona srebrną naklejką "Achtung!", którą zdjąłem stąd na zdjęciach widać jeszcze ślady kleju którego nie usuwałem. Tak, że konsolka straciła gwarancję producenta :)

781

(157 odpowiedzi, napisanych Zloty)

Nie masz Atari? Wstyd!

782

(364 odpowiedzi, napisanych Fabryka - 8bit)

Sikor napisał/a:

nie używam sparty, chyba nawet nie wiem, gdzie mam carta ze spartą (archaiczną ;P). Chyba, że pod BW DOSem pójdzie - to mogę ściągnąć sobie ;)

Nie pójdzie. To jest program dla SDX.

sun napisał/a:

smacznego: https://drive.google.com/open?id=1DgF98 … I_h-UCQ9CA
Pamiętajcie, że Sparta musi być nowa, nie archaiczna, bo będzie lipa.

Dziękuję. SDX 4.48+

783

(18 odpowiedzi, napisanych Kolekcjonowanie)

@ZuluGula: Udało mi się odkopać moją 7800.
Niestety jako że nie jestem kolekcjonerem, to nie interesowało mnie nigdy żeby mieć do tego kartony i nie trzymałem w folii, a po prostu używałem. Mogę się za nie zamienić jeśli wyrazisz chęć. W sobotę podesłałbym zdjęcia (mam tylko telefon, ale może uda się zrobić jakieś sensownej jakości fotki nawet tym).

784

(10 odpowiedzi, napisanych Programowanie - 8 bit)

Tak wygląda moment przed wejściem do rozpakowanego programu użytkownika:

601C: A9 FF     LDA #$FF
601E: 8D 01 D3  STA $D301   ;PORTB
6021: A9 40     LDA #$40
6023: 8D 0E D4  STA $D40E   ;NMIEN
6026: 58        CLI
6027: 4C CA 86  JMP $86CA

To $86CA to jest mój program już po dekompresji. Tak więc w chwili wejścia do Twojego programu masz włączony OS ROM i wyłączony BASIC.

Ograniczenia exomizera są niestety :/ Obszar na którym operuje exomizer to teoretycznie $0000..$CFFF. $D800..$FFFF nie jest brany pod uwagę.
Ja wszystkie moje dotychczasowe programiki, które kompresowałem sfx'em umieszczałem między $2000..$BFFF i w razie potrzeby sam przepisywałem rozpakowany kod pod ROM albo poniżej $2000.

785

(10 odpowiedzi, napisanych Programowanie - 8 bit)

Tam już jest $FE, bo użyliśmy profilu Atari XL/XE (-t 168):

2000: A0 24     LDY #$24
2002: 78        SEI
2003: A9 00     LDA #$00
2005: 8D 0E D4  STA $D40E   ;NMIEN

2008: A9 00     LDA #$00
200A: 8D 2F 02  STA $022F   ;SDMCTL
200D: 8D 00 D4  STA $D400   ;DMACTL

2010: A9 FE     LDA #$FE
2012: 8D 01 D3  STA $D301   ;PORTB

więc nic nie trzeba robić.

Świetne są te kawałki z NES-a. I z klawiszami też dają radę. Cenkju.

787

(13 odpowiedzi, napisanych Miejsca w sieci)

Będziesz Panie Pinokio zaskoczony :)

Miodzio, miodzio, miodzio, miodzio. Już słuchamy.

789

(6 odpowiedzi, napisanych Programowanie - 8 bit)

Pamiętacie taki efekt z Vicky'ego z przenikającymi się cyklicznie napisami?
Nic odkrywczego, ale oto efekt zabawy :)

790

(10,041 odpowiedzi, napisanych Bałagan)

Entomologia Motylkowska.

791

(157 odpowiedzi, napisanych Zloty)

Tak.

792

(157 odpowiedzi, napisanych Zloty)

Świetna inwitka! Koala zakodził?

Błąd w procedurach OS-a jest opisany przez Krótkiego tu: http://www.atari.org.pl/forum/viewtopic.php?id=9188

794

(364 odpowiedzi, napisanych Fabryka - 8bit)

.PSG to jest dump rejestrów AY: https://documentation.help/AY-3-8910.12 … _e9zqf.htm - raczej dostaniesz to albo z jakichś playerów pecetowych, albo z emulatora ZX Spectrum (ja używam do tego FUSE). Planuję player rozszerzyć jeszcze o inne formaty dumpów typu YM, VTX czy EPSG.
Formaty źródłowe to np. STC, PT3, PT2 i to są pliki zapisywane przez konkretne trackery na ZX Spectrum.

795

(364 odpowiedzi, napisanych Fabryka - 8bit)

No ale do czego innego chcesz używać SONari jak nie do grania? :>

.RAD to jest format programu Reality ADLib Tracker dla muzyki granej przez ADLib-a (OPL) a nie dla PSG (AY/YM). I do niego jak wiesz jest gotowy player - pozostało mi dodanie obsługi pamięci XRAM. Muzykę można sobie komponować np. tym: https://www.3eality.com/productions/rea … ib-tracker (mój player obsługuje formaty 1.0 i 2.1 plików - czyli starego i nowego trackera).

Playery dla SONari (AY/YM) to PSGPLAY oraz STCPLAY. Ten ostatni gra pliki .STC czyli skompilowane muzyczki z SoundTrackera (spectrumowego) nie miał jeszcze releasu, ale może już niebawem będzie.
Format dla dwóch AY to jest ProTracker 3 (dla ZX Spectrum) i mam kilka utworów Yerza w tym formacie a nawet parę innych od Draco. Player, jak już kiedyś powiedziałem się pisze, ale na razie jeszcze nic nie ma.

Więcej trackerów dla AY/YM może polecić Pan Yerzmyey.

Edit: Natomiast plik .PSG można sobie wygenerować za pomocą emulatora FUSE.

796

(293 odpowiedzi, napisanych Fabryka - 8bit)

Raid over Moscow.

797

(18 odpowiedzi, napisanych Kolekcjonowanie)

Cześć. Aktualne. Odezwę się w przeciągu kilku dni.

798

(364 odpowiedzi, napisanych Fabryka - 8bit)

Mq napisał/a:

Dotarły mi w końcu również Yamahy z dalekiego wschodu.

Jedwabnym Szlakiem :)

Mq napisał/a:

Zrobiłem trochę testów. Urządzenie śmiga elegancko, ale jest coś nie tak w kwestii 1xYM vs YM+YM.
Otóż przede wszystkim mam pytanie, czy na dyskietce atr tej 5MB któraś z muzyczek wykorzystuje dwa układy, czy wszystkie są pod jeden układ?
Najwięcej testuję muzyczkę GIANNA.

Nie. Wszystkie są dla jednego układu.

Mq napisał/a:

U mnie jest tak, że jak wsadzę jeden układ YM, obojętnie w którą podstawkę (mam podstawki w SONari), to wszystko ładnie gra. To sugeruje mi, że player puszcza na oba układy równolegle to samo. Natomiast jak wsadzę do SONari dwa układy YM, to zaczyna się jakiś bajzel robić. Brzmienia jakieś dziwne się robią i coś nie tak z tą muzyczką. Efekt jest taki, jakby grały oba układy jednocześnie, a fale generowane przez nie jednocześnie nakładały się na siebie robiąc różne interferencje itp. efekty, co powoduje że niektóre dźwięki zanikają, niektóre mają dziwne brzmienie, ale wrażenie mam takie, że gra wszystko poprawnie, tylko że niepotrzebnie na obu układach.
Wnioskuję to wszystko na podstawie tego, że kiedyś zrobiłem stereo na dwóch pokeyach i połączyłem wyjścia ich obu, wówczas też nakładały mi się te dźwięki powodując podobne efekty.

Jeżeli problem jest mniej-więcej taki jak mi się wydaje, to moim zdaniem powinno być tak, że player powinien rozpoznawać czy dana muzyczka jest przygotowana pod jeden YM czy pod dwa i wówczas odtwarzać się tylko na jednym układzie a nie na dwóch. Z resztą wszystko powinno być rozdzielone, żeby nigdy nie szła komunikacja równolegle do obu układów naraz.

Poprawię.

Mq napisał/a:

Edit: po dłuższych testach wydaje się, że jak włączę odtwarzanie na YM+YM, to już po włączeniu odtwarzania jak wcisnę reset na SONari, to opisany przeze mnie bajzel się naprawia i dalej gra wszystko dobrze. Słyszę wtedy delikatny jakby reverb/chorus w sensie, że słyszę, że grają oba YM i oba grają prawidłowo to samo, nie występują żadne efekty nakładania nieprawidłowego się fal, o których pisałem wcześniej, że mi się tak wydawało. Natomiast za każdym razem jak od nowa włączę odtwarzanie, to znowu mam bajzel i znowu pomaga reset na SONari. Teraz mam wrażenie, że może coś nie tak jest z inicjacją dwóch YM, może gdzieś tam na początku trzeba by tą inicjację poprawić? Czy ktoś zanotował takie same lub podobne efekty jakie u mnie występują?

Inicjalizacja polega na wyciszeniu generatorów. Ale to chyba za mało - ustawię tam jeszcze częstotliwości na 0.

sun napisał/a:

Mq: co do 2xYM to np. yerzmyey robi niektóre kawałki na zx81 i karcie turbosound. Tylko czy sa gdzieś w psg to nie wiem.

Tak jest. Dla TurboSound są osobne moduły i player do nich jest w planach.

799

(10,041 odpowiedzi, napisanych Bałagan)

dely napisał/a:

A u nas dalej jak w lesie.

To chyba po linii i na bazie w zielonym świecie... ?

800

(413 odpowiedzi, napisanych Software, Gry - 8bit)

@Krótki: Robię tak:
Ustawiam breakpointa w 1416:

    1416: A9 C0             LDA #$C0
    1418: 8D 0E D4          STA NMIEN
    141B: 20 7D 15          JSR $157D
    141E: A9 04             LDA #$04
    1420: 85 D3             STA $D3
    1422: A9 22             LDA #$22
    1424: 8D 2F 02          STA SDMCTL
    1427: A9 96             LDA #$96
    1429: 85 D5             STA $D5
    142B: 20 7D 15          JSR $157D

Przed wykonaniem tego jesteśmy zawsze w linii 287 (już po wykonaniu VBLK) i mamy:

Altirra> .antic
DMACTL = 00  : none 2-line
CHACTL = 02  : invert
DLIST  = 401b
HSCROL = 00
VSCROL = 00
PMBASE = 00
CHBASE = e0
NMIEN  = 40  : vbi
NMIST  = 1f  :
PENH/V = 00 ff

w SDMCTL i DLPTRS mamy:

022F: 00 57 11

a w 401b czyli w miejscu gdzie była dlista dla winietki podczas ładowania (Loading: Rockman, (c) Mirage itd.) mamy:

401B: 00 E8 00 DB 00 CF 00 C3 00 B8 00 AC 00 A2 00 9A
402B: 00 90 00 88 00 7F 00 78 00 70 00 6A 00 64 00 5E
403B: 00 57 00 52 00 32 00 0A 00 80 A0 20 40 00 01 35

W 1157 czyli tam gdzie ma być nowa dlista dla ekranu Rockmana wg cieni (ale w DLPTR jeszcze jej nie ma) jest:

1157: 70 70 80 10 42 EC 34 02 82 02 02 44 E6 35 04 04
1167: 04 04 04 04 04 04 04 80 50 11 82 11 80 42 A5 1F 
1177: 60 52 51 21 10 52 51 21 41 57 11

Więc teraz krok po kroku wykonuję kod:

(30210:287,106) A=18 X=09 Y=18 S=F5 P=31 (     C)  1416: A9 C0             LDA #$C0
(30210:287,108) A=C0 X=09 Y=18 S=F5 P=B1 (N    C)  1418: 8D 0E D4          STA NMIEN    [$D40E]
(30210:287,112) A=C0 X=09 Y=18 S=F5 P=B1 (N    C)  141B: 20 7D 15          JSR $157D    [$157D] = $A5
(30210:288,  4) A=C0 X=09 Y=18 S=F3 P=B1 (N    C)  157D: A5 14     L157D   LDA RTCLOK+2 [$14] = $D7
(30210:288,  7) A=D7 X=09 Y=18 S=F3 P=B1 (N    C)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
(30210:288, 10) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
(30210:288, 13) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
(30210:288, 16) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
...

aż do rozpoczęcia nowego ekranu:

(30211:  8,  1) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
Altirra> .antic
DMACTL = 00  : none 2-line
CHACTL = 02  : invert
DLIST  = 401b
HSCROL = 00
VSCROL = 00
PMBASE = 00
CHBASE = e0
NMIEN  = c0  : dli vbi
NMIST  = 1f  :
PENH/V = 00 ff

i lecimy dalej... aż do:

(30211: 22,109) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
(30211: 22,112) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
(30211: 23,  1) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
(30211: 23,  4) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
(30211: 23,  7) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
(30211: 23, 10) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  157F: C5 14     L157F   CMP RTCLOK+2 [$14] = $D7
(30211: 23, 13) A=D7 X=09 Y=18 S=F3 P=33 (    ZC)  1581: F0 FC             BEQ $157F
(30211: 23, 20) A=D7 X=09 Y=18 S=F0 P=37 (   IZC)  C018: 2C 0F D4  LC018   BIT NMIST    [$D40F] = $9F
(30211: 23, 24) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  C01B: 10 03             BPL $C020
(30211: 23, 27) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  C01D: 6C 00 02          JMP (VDSLST) [$180B] = $85
(30211: 23, 34) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  180B: 85 D0             STA $D0      [$D0]
(30211: 23, 38) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  180D: 86 D1             STX $D1      [$D1]
(30211: 23, 42) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  180F: 84 D2             STY $D2      [$D2]
(30211: 23, 46) A=D7 X=09 Y=18 S=F0 P=B5 (N  I C)  1811: A9 23             LDA #$23
(30211: 23, 48) A=23 X=09 Y=18 S=F0 P=35 (   I C)  1813: 8D 00 D4          STA DMACTL   [$D400]

No i jakim cudem wskakuje tu DLI? Dopiero ono ustawia DMACTL na $23.

Stan ANTIC-a:

DMACTL = 23  : wide 2-line dlist
CHACTL = 02  : invert
DLIST  = 401b
HSCROL = 00
VSCROL = 00
PMBASE = 00
CHBASE = e0
NMIEN  = c0  : dli vbi
NMIST  = 9f  : dli
PENH/V = 00 ff

Oczywiście zaufałem Altirrze, że poprawnie emuluje zachowanie ANTIC-a, ale bazując na tym zaufaniu zrobiłem patcha:

03c0: 41 c0 03
d402: c0 03

który ustawia pustą dlistę jeszcze przed uruchomieniem programu dekompresującego i wszystko działa, bo żadne przerwanie DLI nie jest wtedy uruchamiane.

I o co tutaj chodzi?

Edit: Dla porządku jeszcze dlista winiety:

401B: 70 70 70 70 70 70 70 70 42 2C 40 00 00 02 41 1B
402B: 40

Rozumiem, że ANTIC ma w buforze śmieci, ale dlaczego w takim razie DLI pojawia się w 23 linii skanningowej a nie w 8? Najpierw mamy pustą linię a potem linię 8 ze skrolami i DLI - VSCRL jest 0, więc nawet jeśli ANTIC ma drugi rozkaz zbuforowany to DLI powinno się pojawić w linii 16.

Edit 2: Hmmm $E8 to %11101000 czyli VSCROLL+ LMS + DLI.

Edit 3: Właściwie to zakładając, że Altirra kłamie co do stanu ANTIC-a, można założyć że w buforze jest linia trybu 5 albo 7 z ustawionym DLI - to by tłumaczyło przerwanie w linii 23. Dzięki @Krótki!

Edit 4: I rzeczywiście:

Altirra> .dlhistory
Ycoord DLIP PFAD H V DMACTL MODE
--------------------------------
    8: 401b f03c 0 0   00   c5
   24: 401b f03c 0 0   00   c5
   40: 401b f03c 0 0   00   c5
   56: 401b f03c 0 0   00   c5
   72: 401b f03c 0 0   00   c5
   88: 401b f03c 0 0   00   c5
  104: 401b f03c 0 0   00   c5
  120: 401b f03c 0 0   00   c5
  136: 401b f03c 0 0   00   c5
  152: 401b f03c 0 0   00   c5
  168: 401b f03c 0 0   00   c5
  184: 401b f03c 0 0   00   c5
  200: 401b f03c 0 0   00   c5
  216: 401b f03c 0 0   00   c5
  232: 401b f03c 0 0   00   c5

Niezłe - w ten sposób mając wyłączone DMA i zgaszony ekran można generować przerwania DLI co 16 linii skanningowych. A używając trybu graficznego i VSCROL co 1..16 linii.