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 19:01
       
      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 20:01 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 20:01
       
      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 20:01
       
      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 21:01
       
      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 22:01
       
      ustaw pamiec PMG na $9000 i daj znac czy pomoglo.
      • 7: CommentAuthor_pepis
      • CommentTime25 Jan 2011 22:01
       
      OK, dzieki jutro sprawdze. Już włączyłem antenę do TV ;))
      • 8: CommentAuthor_pepis
      • CommentTime25 Jan 2011 22:01
       
      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 22:01
       
      to ustaw na $3000.

      zrobiles mape pamieci swojej gry? napisz.
      • 10: CommentAuthor_pepis
      • CommentTime25 Jan 2011 22:01
       
      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 22:01
       
      sprawdziles na $3000 ?
      • 12: CommentAuthor_pepis
      • CommentTime25 Jan 2011 22:01
       
      sprawdziłem na 9000 i bez różnicy
      • 13:
         
        CommentAuthorlarek
      • CommentTime25 Jan 2011 22:01
       
      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 22:01
       
      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 23:01
       
      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 23:01
       
      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 01:01 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 08:01
       
      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 17:01 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 19:01
       
      To nie jest przypadkiem bufor magnetofonu? :D
      • 21: CommentAuthor0xF
      • CommentTime28 Jan 2011 19:01
       
      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.