atarionline.pl Śmieci w PMG na prawdziwym atari - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    Witajcie,
    Dzięki waszej pomocy moja pierwsza gra w Assemblerze już działa. Tzn. dobrze pod emu, ale na prawdziwym atari pojawiają się problemy w zakresie grafiki PMG. Chodzi o śmieci w obszarze sprajtów. W moim kodzie umieściłem na początku procedurę czyszczącą obszar PMG. Dodam że śmieci pojawiają się w sposób losowy, czasami nawet uda się tak wczytać że ich nie ma wcale... Co zrobić aby tego uniknąć?
    Acha, program wczytuje z dyskietki zrobionej w AtrUtil (KBoot) lub od razu jako XEX z AspeQta...

    Dzięki z góry za pomoc!
    Piotrek
    • 2:
       
      CommentAuthorlarek
    • CommentTime25 Jan 2011 zmieniony
     
    Ale przecież napisałeś, że sobie poradziłeś, więc czego jeszcze oczekujesz? Procedurka czyszcząca obszar PMG to dobre rozwiązanie. Innym jest wczytanie w obszar PMG bloku danych. Mogą to być "puste" dane, albo jakieś konkretne - np. wzory duszków. Ważne, żeby te dane były wielkości całego obszaru duszków, których używasz.
    • 3: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    No tak, ale to już zrobiłem. Program na początku wypełnia #$00 całą przestrzeń PMG. Pod wszystkimi emu działa OK, ale na prawdziwym atari pojawiają się te śmieci... Co jeszcze można by sprawdzić? Cała reszta działa dobrze, jedynie problem pojawia się z tymi duszkami...
    • 4: CommentAuthorbob_er
    • CommentTime25 Jan 2011
     
    Nie ma bata.
    Jeśli czyścisz, a są potem śmieci - gdzieś sobie nadpisujesz obszar duchów. Albo to robisz 'półświadomie' - np. kopiując kształt duchów z jakimś zbędnym bonusem, albo nieświadomie - gdzieś nadpisujesz na ten obszar pamięci.
    Ewentualnie - nie czyścisz całości.
    Rady starego piernika:
    1. Na kartce rozpisz sobie adresy poszczególnych obszarów: kod, bufory, tablice, .... - początek i koniec.
    2. Eliminuj zbędny kod i oglądaj, czy śmieci są, czy ich nie ma.
    • 5: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    OK, ale dlaczego nie występują one pod Emu? Może to być wina tego loadera KBoot? Dziwna sprawa, tylko pod prawdziwym Atari.. Może to wina mojego kabla SCIOPC?
    Ale podstawowe pytanie jest dlaczego tylko pod EMU tak i jest i dlaczego pod prawdziwym Atari czasami jest dobrze a czasami jest źle...

    W zalaczeniu zrzut z mojej "gry" ;) Nie ma się czym chwalić, ale jest to mój pierwszy twór... Działa sterowanie i scroling poziomy juz.. No tylko z tymi sprajtami problem ;)

    Pozdrawiam!
    • 6: CommentAuthorxxl
    • CommentTime25 Jan 2011
     
    ustaw pamiec PMG na $9000 i daj znac czy pomoglo.
    • 7: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    OK, dzieki jutro sprawdze. Już włączyłem antenę do TV ;))
    • 8: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    mam pmg od $8000. Od $9000 zaczyna się główny program. Potem na końcu dołączam pliki z g2f.
    • 9: CommentAuthorxxl
    • CommentTime25 Jan 2011
     
    to ustaw na $3000.

    zrobiles mape pamieci swojej gry? napisz.
    • 10: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    zrobiłem całą rozpiskę na kartkach. Nie widzę żadnych konflików. Zastanawia mnie najbardziej dlaczego problem jest tylko na prawdziwnym atari...
    • 11: CommentAuthorxxl
    • CommentTime25 Jan 2011
     
    sprawdziles na $3000 ?
    • 12: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    sprawdziłem na 9000 i bez różnicy
    • 13:
       
      CommentAuthorlarek
    • CommentTime25 Jan 2011
     
    O, ja zrozumiałem, że są problemy, ale procedura czyszcząca dała radę. A pytanie jest natury ogólnej - dlaczego na Atari jest, a na emulatorze nie ma? Sorki, mój błąd.

    Jeżeli zmieniasz miejsce PMG i nadal coś się dziwnego pojawia, to albo masz coś nie tak z RAM w komputerze (chyba najmniej prawdopodobne, bo pewnie program by się sypał), albo Twój program "rzuca śmieciami" w ten obszar.
    • 14: CommentAuthor_pepis
    • CommentTime25 Jan 2011
     
    i na $3000 tez sprawdzilem, jest najgorzej... Gierka wygłada na TV superancko i nie wiem co począć z tymi duchami na duchach ;)
    • 15:
       
      CommentAuthorPet
    • CommentTime25 Jan 2011
     
    Zacznij od sprawdzenia czy Twoja procedura czyszcząca w ogóle działa. Zamiast zerami to wypełnij jakąś inną wartością obszar duchów, np. $FF, i wtedy może okaże się że jednak nie czyścisz tego co trzeba.
    • 16: CommentAuthormono
    • CommentTime25 Jan 2011
     
    No i jaki obszar. Jeśli ustawiasz PMG na $8000 sprajty jednoliniowe wymagają wyczyszczenia obszaru od $8300..$87FF, jeśli dwuliniowe $8180..$83FF.
    Jeśli nie włączasz missiles, to początki są odpowiednio w $8400 i $8200.
    Emulator ma wyzerowaną pamięć (jak ładujesz od razu .xexa to całą - w pamięci znajduje się tylko program w obszarach, w które go załadowałeś) - Atari w zasadzie również ma czysto, ale bootowanie z AspeQT xexa zbootuje Ci loader (który gdzieś się załaduje), lub DOS (nie wiem co robi kboot).
    Jeśli śmieci mrugają ciągle to być może niepoprawnie zainicjalizowałeś sprajty (niewłączone DMACTLS, albo ustawiłeś rejestr hardwareowy a nie cień i po przerwaniu VBLK przywróciło wartość z cienia).
    • 17:
       
      CommentAuthorjhusak
    • CommentTime26 Jan 2011 zmieniony
     
    Stawiam na @Pet.

    na 90% twoja procedurka czyszcząca nie działa, jeśli śmieci nie latają.

    Asm to asm, robi psikusy.

    Zrób jeszcze tak: wyczyść pamięć, uruchom sprajty i natychmiast zrób pętlę nieskończoną. Ciekawe co będzie.

    Chociaż pomysł czyszczenia przez $55 lub $aa jest najlepszy, od razu widać co się wyczyściło, a co nie.
    • 18: CommentAuthor0xF
    • CommentTime26 Jan 2011
     
    Jeśli kod źródłowy jest zamknięty, to pomocna byłaby chociaż fotka tych śmieci.

    _pepis:

    program wczytuje z dyskietki zrobionej w AtrUtil (KBoot) lub od razu jako XEX z AspeQta

    A jak wczytujesz na emulatorze? Najlepiej odpalaj tego samego ATRa z wyłączonym SIO patchem.

    Może używasz niskich obszarów pamięci, co koliduje z systemem operacyjnym, DOSem lub loaderem.
    • 19: CommentAuthorVidol
    • CommentTime28 Jan 2011 zmieniony
     
    troche z innej beczki,
    wie ktos moze co to za smieci i skad sie biora od $0400 po wlaczeniu bezposrednio xexa bez zadnego dosa,
    >0400 00 01 00 07 77 e4 f2 od i potem to samo jest na $0700?

    a zapomnialem dodac ze chodzi mi o emulgator
    • 20: CommentAuthormono
    • CommentTime28 Jan 2011
     
    To nie jest przypadkiem bufor magnetofonu? :D
    • 21: CommentAuthor0xF
    • CommentTime28 Jan 2011
     
    Emulator Atari800 przy bezpośrednim bootowaniu xexa używa właśnie taki boot sektor:
    00 - bajt ignorowany
    01 - jeden boot sektor
    00 07 - wczytaj od 0700
    e4 77 - adres uruchomienia - cold start
    Dalej idzie kod inicjalizacji:
    f2 - escape z kodu 6502 do operacji wczytującej dane w emulatorze

    System operacyjny wczytuje boot sektor pod $400, a potem przepisuje go pod adres docelowy.