Po pierwsze, witam, jest to mój pierwszy post tutaj :).

Po drugie, z góry przepraszam za noobowskie pytanie jakie będę przez pewien czas zadawał, jako że, no, w kodzeniu dla A8 jestem zwyczajnym noobem.

Otóż bawię się Actionem, zrobiłem nawet prosty efekt "maszyny do pisania" w trybie 0 (nic wielkiego, każdy mógłby takie coś napisać). Problemy się zaczęły gdy chciałem się pobawić grafiką. Normalnie nie mogę zmienić palety, ani przez set color:

INCLUDE "D1:DARKLIB.ACT"

PROC MAIN()
  graphics(7)
  setcolor(1,$E,$4)
  color = 1
  plot(3,4)
  delay(240)
RETURN

ani przez pisanie bezpośrednio do rejestrów:

INCLUDE "D1:DARKLIB.ACT"

PROC MAIN()
  byte Col1 = $2C5
  graphics(7)
  Col1 = $ED
  color = 1
  plot(3,4)
  delay(240)
RETURN

Dla ciekawskich: Darklib.act to taka moja mała biblioteka z użytecznymi funkcjami, na razie ma tylko funkcję delay opóźniającą program o określoną ilość klatek.

Wracając do problemu, jakiejkolwiek wartości koloru nie ustawię, czy to przez setcolor, czy to przez rejestry, kolor na ekranie pozostaje ten sam. Próbowałem też zmieniać po ustawieniu zmiennej COLOR, ale to też nic nie daje.

2

Cześć!

Jeżeli wybierasz rysowanie kolorem #1, to rejestr odpowiedzialny za ten kolor to $2c4 (setcolor 0,x,x).

3 Ostatnio edytowany przez darkhog (2013-04-16 09:52:14)

Dzięki! Myślałem że zmienna color w actionie jest tak samo numerowana jak setcolor (color 1=setcolor(1,...), itd.) ale chyba nie. Dzięki za pomoc!

//edit: Jeszcze jedno pytanie odnośnie grafiki (nie chce mi się zakładać nowego tematu). Widziałem w różnych demkach, że da się ustawić osobną paletę colorów dla każdej lini obrazu co pozwalało na gradienty czy mocno realistyczną grafę (jak na możliwości Atari). Jak takie coś wykonać w ACTION?

4

musialbys miec albo wlasne dli i co linie wywolywac przerwanie ustawiajace kolory, albo "cyklowac sie" co jest o tyle trudne, ze w miedzyczasie antic moze wprowadzic cie na mine (zabiera czas procesora na wlasne operacje na pamieci).

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

5

Nie bardzo rozumiem...

6

Darkhog, tak sobie czytam Twoje pytania zadawane w różnych wątkach i... coraz bardziej czekam na zapowiadaną grę o olśniewającej grafice porównywalnej do "Crownland (albo lepiej)"*.

Życzę powodzenia!



*) cytat z link

7

darkhog napisał/a:

Nie bardzo rozumiem...

Koledzy wyżej napisali Ci, że bez kodu w asemblerze się nie obejdzie. Łączenie Action! i asemblera jest bardzo proste, więc nie ma się czego obawiać.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

8

Chyba że dla ciebie assembler to czarna magia. Wielu assemblerów próbowałem się uczyć - x86 (zarówno 16 jak i 32 bitowy), assemblera NES-a (nie wiem jaki procek tam wtrząchneli), bo chciałem zrobić grę na NES-a, jedyny assembler jaki mi podpasił to "wymyślony" DCPU16. W wersji 1.1. Potem Notch zmienił specyfikację i wszystko s...ił.

9

Assembler sam z siebie jakikolwiek to dość prosty język bo wykonuje się w nim proste operacje na pamięci i rejestrach. Całość magii polega na tym, jak ów procesor jest podłączony do konkretnego sprzętu, np. żeby zmienić kolor tła trzeba wpisać odpowiednią wartość do właściwej komórki pamięci. 6502 ma tylko sześćdziesiąt kilka instrukcji, to jeden z prostszych (do zapamiętania) assemblerów.

Prawda jest taka, że aby uzyskać ciekawsze efekty na ekranie powinieneś poczytać trochę o sprzęcie np. jak działa Antic i co to jest display list.

The problem is not the problem; the problem is your attitude about the problem

10

To podstawy masz dobre, w NES siedzi procesor w ktrym uzyto ciut okrojone core 6502 :) czyli asembler jest taki sam.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

11

Tja, tylko jak się nie rozumie która instrukcja od czego i jak zrobić aby kod nie był zbugowany, to inna historia.

12

jak sie nie rozumie ktora instrukcja do czego - to sie czyta dokumentacje.
jak zrobic by kod nie byl zabugowany? ostroznie...
czlowiek uczy sie na bledach dlatego tylko praktyka nauczy cie tego. musisz probowac i debugowac.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

13

oj Tdc, napisz mu po prostu bez złośliwości że jesteś jedynym żyjącym specem od Action! :)

darkhog - to nie był żart. TDC jest dla Action! tym czym Darth Vader dla ciemnej strony mocy.
Musisz wiedzieć czym ryzykujesz zajmując się Action! Większość programistów próbujących coś w tym napisać szybko postradała zmysły. Ja skończyłem tylko z lekkim tickiem, bo po 3 dniach przyjaciele siłą oderwali mnie od klawiatury, kiedy doszedłem do etapu w którym prosty program kompilował się poprawnie lub nie, zależnie od tego czy wstawiłem w kod komentarz czy go usunąłem (sic!).
Ale do tej pory kiedy ktoś niespodziewanie krzyknie mi nad uchem "Action!", to z miejsca się moczę i dostaje drgawek.

Przemyśl czy jednak nie wolisz asemblera ;)

14

TDC: Jell wyjsnil sprawe z poziomu assemblera, tego co da sie osiagnac na Atari , nie ma co wytaczać armat z tego powodu. A co do palmy pierwszeństwa, to się zgodzę z Nostym, że niewątpliwie przysługuje Tobie. Howgh!