kategoria: Blitz
[#1] Czy ktos moze to uruchomic na prawdziwej amidze?
Czesc,
jest to skompilowany fragment programu.

Po uruchomieniu otworzy sie okienko a w nim POWINIEN pojawic sie bialy kwadrat wypelniajacy jakies 80% przestrzeni okna (mniej wiecej).

Problem w tym, ze u mnie na prawdziwej amidze ten kwadrat jest bialy ale ma "smieci" i to za kazdym razem inne.



Na WinUae dziala poprawnie - a przeciez to jest kopia mojego HD
Wiec obawiam sie ze moge miec skopana amige...

Link do programu:
link

WAZNE!!!
prosze uruchomic kilka razy bo czasami za 1szym wzystko jest ok.
No i .. na prawdziwej Amidze.

Dzieki
[#2] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #1

u mnie (A500, WB 3.1) najpierw pojawia się okienko z napisem "Please insert volume apps in any drive", a po kliknięciu Cancel pojawia się okienko "Can't open IFF". Nic więcej się nie pojawia. siedzi, pije i chrupki
[#3] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@snajper, post #2

OK
dzieki!!

zapomnialem o IFF-ie.
Zachwile zrobie druga kompilacje
Poza programem bedzie tez plik test.iff, ktory trzeba skopiowac do ram:
..i dopiero uruchomic program.
[#4] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@snajper, post #2

link

OK, gotowe
Oba pliki daj do ramu i rurchom "tescior".

dla wyjasnienia:
plik IFF to nic innego jak caly bialy obraz.
program go laduje i wycina z niego kafle 16x16 , 10 w rzedzie a potem te kafle wkleja do okna

No i tu sie na mojej amidze pojawiaja smieci...

Ostatnia aktualizacja: 29.03.2018 10:44:05 przez peceha
[#5] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #4

no więc u mnie też pojawiają się śmieci:

[#6] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@snajper, post #5

Dzieki.
Teraz jestem pewien ze to nie moja Amiga szeroki uśmiech
No ale skoro nie amiga to co?

Na WinUAE dziala jak nalezy.

Zalozylem tez watek wczoraj na EAB i tam jedna osoba stara sie pomoc ale na te chwile tropu brak. Ktos inny sprawdzil na winUAE i dzialalo (ja dzis sprawdzilem u siebie i tez dzialalo).

Pozwole sobie tam zapodac Twoje zdjecie jako dowod ze na innej prawdziwej amidze tez sie sypie - chyba ze sie nie zgadzasz.

Ostatnia aktualizacja: 29.03.2018 11:02:47 przez peceha
[#7] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #6

Tu jest kod jakby ktos chcial cos zobaczyc:
WbToScreen 0
ShowScreen 0
WBStartup

BitMap 0,800,600,2
LoadBitMap 0,"ram:tescior.iff"

For x.w=0 To 9
  GetaShape cnt,x*16,0,16,16
Next x

wFlags.l=$2|$4|$8|$400
Window 0,0,16,190,190,wFlags,"test",0,0

cnt.w=0
For y.w=0 To 7
  For x.w=0 To 9
    WBlit cnt,8+x*16,8+y*16
    cnt+1
    If cnt>9 Then cnt=0
  Next x
Next y

Repeat
  ev.l=WaitEvent
  If ev=$200
    End
  EndIf
Forever


Ostatnia aktualizacja: 29.03.2018 11:07:09 przez peceha
[#8] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #6

Pozwole sobie tam zapodac Twoje zdjecie jako dowod ze na innej prawdziwej amidze tez sie sypie - chyba ze sie nie zgadzasz.


spoko, oddaję je do Twojej dyspozycji ;)
[#9] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #6


Na WinUAE dziala jak nalezy.

Na WinUAE działa wiele rzeczy które na Amidze nie działają.
Sprawdzone osobiście wiele razy.
WinUAE jak sama nazwa wskazuje to nie Amiga!

Także jeżeli coś robisz dla Amigi, nie testuj na WinUAE.
[#10] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #7

Jaką wartość w tej pętli ma zmienna cnt?
-->>
For x.w=0 To 9
GetaShape cnt,x*16,0,16,16
Next x
-->>
[#11] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@*y, post #10

ups , sory, tam byla jedna zbedna linia przed petla
cnt.w=0

oraz w tej petli bylo: cnt+1

ja to usunalem w ostatniej chwili a zapomnialem zamienic "cnt" na "x" w lini GETASHAPE
Oczywiscie ten blad wystepuje tylko w listingu tutaj - nie w realu.

Poprawione na wszelki wypadek (dzieki za zauwazenie):
W drugiej petli "cnt" tez jest zbedne ale pierwotna wersja dzialala na normalnym obrazku z grafika i tam bylo kilka rzedow po kilka kafli - wiec wtedy "cnt" bylo mi potrzebne.
WbToScreen 0
ShowScreen 0
WBStartup

BitMap 0,800,600,2
LoadBitMap 0,"ram:tescior.iff"

For x.w=0 To 9
  GetaShape x,x*16,0,16,16
Next x

wFlags.l=$2|$4|$8|$400
Window 0,0,16,190,190,wFlags,"test",0,0

cnt.w=0
For y.w=0 To 7
  For x.w=0 To 9
    WBlit cnt,8+x*16,8+y*16
    cnt+1
    If cnt>9 Then cnt=0
  Next x
Next y

Repeat
  ev.l=WaitEvent
  If ev=$200
    End
  EndIf
Forever



@stachu100
siegnalem po WinUAE w ostatecznosci bo juz nie mialem pojecia o co biega - czemu cos oczywistego mi nie dziala jak nalezy :)
Ja nawet tego WinUAE nie trawie - nie moge przy tym czyms :) wysiedzec wiecej niz 10 minut... no i wszystko co robie na Amidze to robie na tej prawdziwej , hehe



Ostatnia aktualizacja: 29.03.2018 12:10:24 przez peceha

Ostatnia aktualizacja: 29.03.2018 12:11:13 przez peceha
[#12] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #11

Nie znam się totalnie na bb, ale na Twoim miejscu na chwilę bym zakomentował pętle wszelakie, załadował tylko jeden shape i próbował go wyświetlić raz, w jednym miejscu. Jak pójdzie to jeden rządek tego samego shape'a, jak będzie git to wszystkie rzędy tego samego, a potem kombinował z resztą shape'ów. Rozbij duży problem na małe problemy. ;)
[#13] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@teh_KaiN, post #12

Zrobilem jak zasugerowales.
Laduje TYLKO jeden SHAPE i go wyswietlam - no i loteria, raz poprawnie, raz nie
WbToScreen 0
ShowScreen 0
WBStartup

BitMap 0,320,256,2
LoadBitMap 0,"ram:tescior.iff"

wFlags.l=$2|$4|$8|$400
Window 0,0,16,190,50,wFlags,"test",0,0

GetaShape 0,0,0,16,16
WBlit 0,0,0

Repeat
  ev.l=WaitEvent
  If ev=$200 Then End
Forever
[wyróżniony] [#14] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #13

Wyłącz cache procesora i odpal program.
[#15] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@*y, post #14

OKOKOKOKOKOK
i to bylo to OKOK
dzieki!!!
[#16] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #13

Wblit PRZED użyciem blitera. Winuae jest odporne na takie pomylki
[#17] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@juen, post #16

Mozesz rozwinac?

Wybacz ale nie jestem oblatany w tym temacie wiec bede wdzieczny za wiecej detali.
Dzieki.
[#18] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #17

Wblit wykonujesz przed rozkazami dla blitera. W tym przykładzie widzę, że jest na odwrót. Dawaj wblit przed rozkazem kopiowania bitmapy a nie po. Krzaki masz wtedy kiedy blitter nie był wolny więc pomieszaly się dane w rejestrze. Tak wnioskuję :)

Na winuae to jest chronione w jakiś sposób - pewnie zachowuje kopie rejestru dla każdego blitniecia
[#19] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@juen, post #18

OK... rozumiem co piszesz tylko jak wtedy mam zaladowac kafle z pliku?

Wg. manuala najpierw musze zainicjowac bitmape (BITMAP)
Teraz musze tam wgrac moja grafike z kaflami/czymkolwiek (LOADBITMAP) by moc z czego je wycinac (GETASHAPE)
Gdy juz mam wyciet kafel to go umieszczam w oknie (WBLIT)

Wiec chyba nie moge zmienic kolejnosci bo nie bede mial czego wyswietlic.
Chyba, ze dalej czegos nie kumam szeroki uśmiech
[#20] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@juen, post #18

@juen, ale Wblit w blitzu służy do blitowania w oknie (window blit), a nie do czekania. O tym samym pomyślałem, ale sprawdziłem znaczenie tej funkcji i... to raczej nie to ;)

Ostatnia aktualizacja: 29.03.2018 19:02:28 przez teh_KaiN
[#21] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@*y, post #14

Wroce jeszcze do tematu bo wylaczanie cache to takie "zamiatanie pod dywan" szeroki uśmiech

Jest na aminecie pakiet o nazwie MMULib i po zainstalowaniu problem zniknal (mam nadzieje ze na zawsze).
[#22] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #21

Wyłączenie cache miało na celu sprawdzenie czy czasem instrukcja WBlit nie przeprowadza operacji za pomocą procesora a nie Blittera. Twój eksperyment wykazał, że tak najprawdopodobniej jest. Instalacja pakietu MMULib też widocznie w niektórych obszarach pamięci (CHIP-RAM) ustawia dla MMU bit NOCACHE'able.

Istnieje także możliwość, że samo WBlit działa całkowicie prawidłowo (i z użyciem Blittera) a zamieszanie wprowadza LoadBitMap, która kopiuje dane w obrębie CACHE'u i nie zwraca jego zawartości do fizycznej pamięci CHIP.

Ostatnia aktualizacja: 30.03.2018 10:54:06 przez *y
[#23] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@*y, post #22

Dzieki za informacje.
Moje "programowanie" jak dotej pory nie opiera sie na znajomosci dzialania Amigi tylko : pisz az cos wyjdzie :) -wiec tak troche na bakier jestem z tymi Blitterami.

Dostalem takze pewne wyjasnienie z EAB ale to juz zupelna czarna magia:

I think original reason was 68030 cache related bug/feature: long aligned writes always get cached if write allocate cache mode is enabled, even if write goes to hardware level (CI pin active) cache-inhibited memory. Only MMU level cache inhibit works properly in this situation.

CPU wrote something to chip ram, and because it was long and aligned write, it also got stored in data cache. Then blitter modified same memory. Finally CPU was used to read from address that was previously written to: data came from cache, not from memory that blitter modified.

EDIT: This happens very rarely because cache is so tiny.
[#24] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #23

Możesz podesłać ale wrzucić do EAB Zone najmniejszy plik wynikowy z tym problemem. To wtedy będzie można obadać gdzie jest problem.
[#25] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #23

Gościu trafił w sedno. Jest to problem z datacache (nikt nie testował na 020?). Na WinUAE też są artefakty, pewnie nie poustawiałeś dobrze konfiguracji. Spróbuj użyć jakiś funkcji exeka typu CacheClear.
[#26] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@cholok, post #25

Uzylem wczesniej CacheClearU() w roznych miejscach ale nie pomoglo.

Co do testowania na 020 to za pozno o tym pomyslalem - po zainstalowaniu MMULIB - a jego instaler chyba "spaczowal" kilka plikow systemowych.
[#27] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@peceha, post #26

To użyj CacheControl i wyłącz datacache. MMUlib pomoże, ale jak ktoś ma 030EC to nie. Bug jest opisany tutaj.
[#28] Re: Czy ktos moze to uruchomic na prawdziwej amidze?

@cholok, post #27

Rejestr $dff180 (color00) jest tylko do zapisu. Nie wolno polegać na wartości odczytanej z $dff180 w żaden sposób. Kod tak napisany jest błędny. Nie rozumiem o co tu chodzi.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem