ZX Spectrum > PROGRAMOWANIE

Asembler ZX Spectrum - Pytania na początek (Cartridge).

<< < (6/7) > >>

matofesi:

--- Cytat: siudym w 2023.02.20, 18:18:02 ---Nie uwziąłem się - zawsze sprawdzam na wszystkich możliwych emu.

--- Koniec cytatu ---

A to już coś, czego zupełnie nie rozumiem... Jeśli sprawdzisz kod na emulatorze, który oferuje 100% zgodność z docelowym hardware to po co testować na innych emulatorach? Jakich wyników oczekujesz, bo zakładając, że wszystkie nowoczesne emulatory dają zbliżoną zgodność zakrawasz trochę o definicję szaleństwa - robisz w kółko to samo oczekując... innych wyników? ;)

I pytam serio, bo jakoś nigdy mi nie przyszło do głowy robienie czegoś takiego.

siudym:
To fajnie, cieszę się, że jest 100%, dobrze wiedzieć. Ale dlaczego nie sprawdzać na innych? Jest to zabronione, nie wypada? Tym bardziej dlaczego miałbym
--- Cytuj ---"zakrawać trochę o definicję szaleństwa"
--- Koniec cytatu ---
z tak zwyczajnego powodu? Zawsze sprawdzam na różnych emu tak z przyzwyczajenia, może z ciekawości dlaczego "nie działa", a może jestem zwyczajnie głupi.
Przepraszam, ale ja odwrotnie dziwię się, że to może być tak dziwnym zachowaniem.

matofesi:
Ymmm... Mnie się po prostu zawsze wydawało, że docelowym środowiskiem do uruchamiania programów jest fizyczny sprzęt. Emulacja jest narzędziem, żeby to uruchamianie było wygodniejsze i nigdy nie traktowałem emulacji jako celu. Jeśli więc program działa na fizycznym sprzęcie "testowanie" go na różnych emulatorach jest tak naprawdę testowaniem emulatorów. Ale spoko - nie będę ci zabraniał pracy po swojemu mimo, że nie rozumiem metodologii takiego działania. Mamy - jeszcze - demokrację i wolność słowa itp.

Tyle, że - abstrahując od szerszej perspektywy - używasz RetroVirtualMachine, który jest wysoce niszowy i nie sądzę, żeby ktoś na forum (zwłaszcza z osób programujących) był w stanie ci ewentualnie pomóc w dojściu dlaczego ten konkretny emulator nie robi czegoś, czego od niego oczekujesz. Stąd również moje pierwotne zdziwienie.

Ale powtórzę - masz prawo pracować jak ci wygodnie i ja już nie będę zadawał głupich pytań i ograniczę się do odpowiedzi na konkretne pytania o ile będę znał te odpowiedzi.


siudym:
Ale gdzie ja napisałem kiedykolwiek, że jestem użytkownikiem RetroVirtualMachine ? :)
Ja zwyczajnie szukając emu ZX właśnie te dwa mi wpadły w oko i takie także mi polecono. Używam Spectaculator jedynie, a RVM jako opcja z czystej ciekawości czy się odpala na nim także. Jak znajdę inne emu to także z ciekawości na nich odpalę i nie będzie w tym żadnego obłędu, szaleństwa itd ;)

Zrobiłem małe update demka z Willy, kod generowania Sprites ("Obiektów") niestety czyści pozystałość Sprite'a w jego całości czyli 16x16, więc nachodząc na siebie te z wyższym "priorytetem" kasują te z niższym. Domyślam się, że trzeba by użyć coś, co przed wstawieniem Sprite'a w nowe miejsce na ekranie sprawdzi obecność zapalonych pikseli, zapamięta je i podczas kasowania pominie ich wymazanie. ?

matofesi:
Raczej nie sprawdzanie tylko maskowanie. Robisz sprite'a i maskę do niego a potem przy nakładaniu pobierasz zawartość, maską kasujesz to, co ma być puste a potem ORujesz sprite'a i dopiero to wrzucasz w ekran.

Jeśli bajt sprite'a wygląda tak:

--- Kod: ---00001100
00011100
00111000
00110000
00110000

--- Koniec kodu ---

Przygotowujesz maskę np tak:

--- Kod: ---11110011
11100011
11000111
11001111
11001111

--- Koniec kodu ---

W pamięci pakujesz dane naprzemian - bajt maski, bajt sprite'a. A potem zamiast prostego pobierania i wrzucania w ekran robisz coś takiego:


--- Kod: ---; de - ekran
; hl - sprite

ld a,(de)
and (hl)
inc hl
or (hl)
inc hl
ld (de),a


--- Koniec kodu ---

Maska może być o piksel "grubsza" - w efekcie dostaniesz efekt jaki można zobaczyć w grach - sprite na z ramką dookoła.

To tak z grubsza.

Chyba, że nie masz tła i chcesz tylko "nałożyć" sprite'a - wtedy wystarczy

--- Kod: ---ld a,(de)
or (hl)
ld (de),a

--- Koniec kodu ---

Oczywiście do tego musisz dodać czyszczenie w odpowiednim punkcie tak, żeby ci raster nie ściął grafiki, ale tego raczej nie muszę ci tłumaczyć :)

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej