Lipiec 21, 2019, 23:19:25 *
Witamy, Gość. Zaloguj się lub zarejestruj.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności:
Nowa strona główna  : http://www.emunes.pl
Zapraszamy do testowania !

Chat: http://chat.emunes.pl
Galeria cartów: http://carts.emunes.pl
 
   Strona główna   Pomoc Zaloguj się Rejestracja  

Reklama
Strony: 1 ... 7 8 [9] 10 11
  Drukuj  
Autor Wątek: Programowanie Nes'a (procesora 6502)  (Przeczytany 56725 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
Koks
Major
*****
Offline Offline

Wiadomości: 580



« Odpowiedz #160 : Lipiec 26, 2011, 21:03:40 »

http://www.4shared.com/file/xoXx9B-0/ramdemo.html
Test RAMu zamiast ROMu jako CHR. Grafika wysypuje się przy próbie zapisu podczas renderingu, nawet do pattern table nieużywanego w danym momencie. Przycisk A ustawia PT1 jako aktywną, Przycisk B wyłącza rendering i nadpisuje PT0,  a Select nadpisuje PT0 bez wyłączenia renderingu - trzymając można zaobserwować glitche.
Zapisane

Częste mycie skraca życie.
"If you have a fast, shiny new Pentium II, you might try using 44 kHz for the ultimate in sound quality." - readme od Unreala
https://drive.google.com/folderview?id=0B2TXQD5v-ZIVfjVQdTl2TTZiWmJ2LWZJajJzS0V4cDZBay04WjVGQkdQdnBDQzRlYkdQVGc&usp=sharing
CodAsm
Szeregowy
*
Offline Offline

Wiadomości: 49


« Odpowiedz #161 : Wrzesień 03, 2011, 19:26:56 »

Skromny projekcik w ASM6. Pobawiłem się trochę portami APU.

http://www.sendfaile.com/download/2006/ProjektAPUzip.html
Zapisane
mientos4
Szeregowy
*
Offline Offline

Wiadomości: 32



« Odpowiedz #162 : Listopad 18, 2011, 21:24:53 »

Nie wiem czy to widzieliście, ale fajny tutorial(chociaż nie znam japońskiego, ale kody da się rozczytać)

http://www37.atwiki.jp/kikakubu4/pages/62.html
Zapisane
Dizzy9
Nadworny programista.
Kapitan
****
Offline Offline

Wiadomości: 351



WWW
« Odpowiedz #163 : Listopad 18, 2011, 21:35:49 »

To wygląda jak programowanie NESa w C.
Tego już raz dokonał Shiru w grze Alter Ego
Jednak używanie tego sposobu odbija się (jak pisał gdzieś shiru) na wydajności.To w sumie zrozumiałe, często funkcje są szybsze gdy napisane w ASM.
Zapisane

dr00id88
Gość
« Odpowiedz #164 : Listopad 18, 2011, 23:09:25 »

To wygląda jak programowanie NESa w C.
Bo to jest język C.

Jednak używanie tego sposobu odbija się (jak pisał gdzieś shiru) na wydajności.To w sumie zrozumiałe, często funkcje są szybsze gdy napisane w ASM.

Zawsze funkcje napisane w ASM są szybsze niż w C.
Zapisane
siudym
Gość
« Odpowiedz #165 : Styczeń 08, 2012, 15:51:23 »

A tak na marginesie bo juz moje linki dead

Te wczesniejsze wynalazki ponownie upload.

http://www.siudym.webd.pl/nesasm/nes_demo_1.nes
http://www.siudym.webd.pl/nesasm/nes_demo_2.nes
Zapisane
siudym
Gość
« Odpowiedz #166 : Marzec 09, 2012, 13:18:22 »

Wczesniej nie importowalem do demek swoich NSF, a jedynie publiczne NSF z gier. Mam problem z wyeksportowanymi NSF z famitracker, mysle, ze problem jest z blednymi wartosciami INCBIN, PLAY oraz INIT. Wczytane do kodu nie odpalaja muzyki, natomiast z nsf z neta wszystko dziala. Z famitraka nic.

Jakies pomysly?

Daje tego nsf - zrobiony w chwilke aby cokolwiek bylo.
http://www.siudym.webd.pl/nesasm/dupa.nsf

Czy ktos moze zaladowac to do jakiegos kodu asm i sprawdzic czy sie odpala? Nie wiem czy to famitracker ma jakies dziwne nsf czy te adrest problemem sa.

« Ostatnia zmiana: Marzec 09, 2012, 13:25:19 wysłane przez siudym » Zapisane
Koks
Major
*****
Offline Offline

Wiadomości: 580



« Odpowiedz #167 : Marzec 09, 2012, 19:21:13 »

Odpala się. (asm6)
Kod:
incbin inesheader.bin
org $8000
reset:
ldx #0
txa
-
sta 0,x
sta $200,x          ;czyszczenie obszarów używanych przez nsf
dex
bne -

lda #%10000000
sta $2000          ;włączenie NMI

lda #0
ldx #0
jsr $ab00          ;init

-
jmp -

nmi:
jsr $ab03          ;play
irq:
rti

org $a998          ;(kurde, nie init) load - trzeba odjąć rozmiar nagłówka ($aa18-$80)
incbin dupa.nsf

org $fffa
dw nmi
dw reset
dw irq

użyty inesheader.bin
Kod:
4E 45 53 1A 02 00 00 00 00 00 00 00 00 00 00 00
« Ostatnia zmiana: Marzec 09, 2012, 19:23:22 wysłane przez Koks » Zapisane

Częste mycie skraca życie.
"If you have a fast, shiny new Pentium II, you might try using 44 kHz for the ultimate in sound quality." - readme od Unreala
https://drive.google.com/folderview?id=0B2TXQD5v-ZIVfjVQdTl2TTZiWmJ2LWZJajJzS0V4cDZBay04WjVGQkdQdnBDQzRlYkdQVGc&usp=sharing
siudym
Gość
« Odpowiedz #168 : Marzec 09, 2012, 20:39:59 »

Ale w NESASM nie :/

No nic to detal, chcialem sie pobawic nieco msx. Na razie oleje sprawe.

Dawno nic nie robilem i wylecialo mase z glowy. Pobawilem sie nieco starym demkiem animacji. Mam zamiar zrobic mega plynnie poruszajacego sie stworka. Zobaczymy co wyjdzie...

http://www.siudym.webd.pl/nesasm/new.nes

EDIT:

Jakies pomysly na najprostrze metody skoku? Kombinuje rozne metody ale kiepsko mi idzie, nie wiem jak to ugryzc.

Druga sprawa - ladowanie dwoch screenow. Prosty kod ladowania jednej NT, ale jak zaladowac dwie? Scrolling wyglada tak, ale nie wiem jak zrobic dwa osobne ekrany. Dawniej probowalem to w tym demku http://www.siudym.webd.pl/nesasm/nes_demo_2.nes

Kod:
LoadNT1:

LDX #$20
STX $2006
LDX #$00
STX $2006
STY $2006
LDX #$04
LDA #low(NameTable1)
STA <$0000
LDA #high(NameTable1)
STA <$0001

LoadMap1:

LDA [$0000], y
STA $2007
INY
BNE LoadMap1
INC <$0001
DEX
BNE LoadMap1

RTS


NameTable1:

.incbin "test.map1"

NameTable2:

.incbin "test.map2"



Aha moze stare juz, ale tak dawno w temacie nie bylem.

http://nesdev.parodius.com/bbs/viewtopic.php?t=7237&start=0

Polecam, zarypisty TOOL.
Tylko load palety ma 16bajtowy, palety 32bajtowe czyli BGR+SPR nie wczyta, wiec trzeba np. podzielic plik 32 na dwie czesci i load pierwszej czesci BGR. Wczytuje nametable nawet z atrybutami, swietna sprawa do edycji.

Ciekawy tutorial, sporo info:
http://www.nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155
« Ostatnia zmiana: Marzec 12, 2012, 20:08:13 wysłane przez siudym » Zapisane
Dizzy9
Nadworny programista.
Kapitan
****
Offline Offline

Wiadomości: 351



WWW
« Odpowiedz #169 : Marzec 12, 2012, 22:48:40 »

Cytuj
Jakies pomysly na najprostrze metody skoku? Kombinuje rozne metody ale kiepsko mi idzie, nie wiem jak to ugryzc.
Znaczy?
Użyj "Jmp"Tongue
Hmm..zawsze możesz zrobić tablicę pointerów.
A ten kod chyba masz pod inny kompilator niż NESASM3.Lepiej by było jakbyś zapodał cały kod, bo np. nie wiem co jest w Y przed tym:
Kod:
STY $2006
.Po za tym ja w tym kodzie widzę tylko zapis do jednego NT, żeby załadować do innego trzeba kod powtórzyć z zmienionym adresem na $2006.
Zapisane

siudym
Gość
« Odpowiedz #170 : Marzec 12, 2012, 22:55:42 »

Dobra kij w oko, zerkam na stare demka moje i lepiej to juz sobie od nowa poczytam wszytsko niz reanimowanie chaotycznych demek Smile
Zapisane
CodAsm
Szeregowy
*
Offline Offline

Wiadomości: 49


« Odpowiedz #171 : Kwiecień 28, 2012, 00:05:51 »

Siudym pisałeś o animacji postaci, więc wnioskuję, że chodzi Ci o skok ludzika. Trochę sam kiedyś kombinowałem i nie do końca mi to wyszło. Skok postaci jak wiadomo składa się z kilku klatek i w każdej klatce zmieniają się współrzędne x i y postaci:
*x jest inkrementowane/dekrementowane (w zależności, w którą stronę skacze postać)
*y jest zmniejszane/zwiększane wykładniczo (odpowiednio jeżeli postać wznosi się/spada) wg. wzoru:
   a--;     // Zmniejszanie przyśpieszenia przy wznoszeniu postaci
   V=V-a; // Zmniejszenie prędkości o wartość aktualnego przyśpieszenia
   y=y-V; // Zmniejszenie y (wznoszenie się postaci) o wartość aktualnej prędkości
Przy zwiększaniu y oczywiście znaki we wzorach zamieniamy na +, zatem:
   a++;     // Zwiększanie przyśpieszenia przy wznoszeniu postaci
   V=V+a; // Zwiększanie prędkości o wartość aktualnego przyśpieszenia
   y=y+V; // Zmniejszenie y (spadanie postaci) o wartość aktualnej prędkości


Przy tym trzeba utrzymywać znacznik, który określa czy postać jeszcze się wznosi czy już spada.
*Przy wznoszeniu się w górę, w każdej "klatce" skoku zmniejszamy y (bo przesuwamy Sprite'a w górę) o wartość aktualnej prędkości. Prędkość ta jest zmniejszana o wartość aktualnego przyśpieszenia, które z każdą klatką zbliża się do zera. Postać wznosi się coraz wolniej zgodnie z intuicją Smile
*Przy spadaniu, w każdej klatce zwiększamy y o wartość aktualnej prędkości, z kolei prędkość jest zwiększana o wartość aktualnego przyśpieszenia, które rośnie. Postać spada coraz szybciej. Po osiągnięciu pewnej stałej maksymalnej wartości przyśpieszenia, przyśpieszenie te jest zerowane.

Jest to wspomniana przez dr88 krzywa balistyczna.

Współrzędne (x,y) rosną podczas spadania i maleją podczas wznoszenia się co jest niezgodne z intuicją, poza tym początkowe położenie postaci to na pewno nie będzie (0,0), więc warto zatroszczyć się o jakąś warstwę, która najpierw wyliczy logiczne współrzędne (x,y), a następnie przetłumaczy je na fizyczne współrzędne ekranu (nic ponad prostą arytmetykę dodawanie/odejmowanie).

Pozostaje jeszcze problem, którego nie rozwiązałem w swoim programie, jednoczesna obsługa przycisku skoku i kursora co wyglądało, jak wyglądało (nie wiem czy widziałeś ten ROM, był kiedyś na forum, jeżeli nie to mogę go poszukać). Nie wiem czy będzie to jasne, ale mam nadzieję, że tak:
*W każdym NMI wywoływana jest warstwa obsługująca joystick, na podstawie, której przechowujesz dane o tym jakie wystąpiły zdarzenia przysków (tak, aby informacja o ruchu była przechowywana dopiero po sprawdzeniu wszystkich przycisków). Mam tu na mysli takie zdarzenia jak przycisk_wciśnięty, przycisk_puszczony itd.
*Po wykonaniu kodu warstwy joypada NMI przechodzi do procedury, tłumaczącej zdarzenia joypada na zdarzenia postaci (czyli np. skok w prawo), właśnie tu wyliczane są współrzędne logiczne postaci za pomocą powyższych wzorów. Jest to robione dla kolejnej klatki położenia postaci.
*Na koniec wykonywana jest warstwa kodu tłumacząca współrzędne logiczne postaci na fizyczne

Jeszcze 2 uwagi:
*Zastosowanie kodu U2 sprawi, że w przedstawionych na początku wzorach na x,y będziesz tylko dodawał (wartości ujemne lub dodatnie, ale jedynie dodawał)
*Cała ta metoda jest uniwersalna i wg. niej można zrobić właściwie cały kod obsługujący pad (i zdarzenia postaci).
_____________________________________________________________________________________
Co do kodu ładującego NameTable fajny jest "scrolling5.asm" z kursu NESASM (BunnyBoy'a). Jest nieco zawiły i przesiedziałem wiele wieczorów zanim go zrozumiałem, ale ma dużo sensu. Kod NMI wykonuje kilka rzeczy:
*Scrolluje ekran (w każdym NMI o 1 piksel, więc co 8 NMI o szerokość jednego Tilesa)
*Ładuje kolumnę NameTable (Jeżeli licznik "scroll" zawinie się do wartości 0 to NT jest przełączana za pomocą "eor")
*Ładuje następną kolumnę AttributeTable (Jeżeli załadowana została odpowiednia ilość kolumn NameTable odpowiadających szerokości półbajta AttributeTable, a więc szerokość 2 Square'ów, (4 Tilesów))
*Wykonuje Transfer DMA Sprite'ów
*Odpowiednio ustawia rejestry PPU_ADDR (starszą i młodszą część) i PPU_SCROLL (starszą i młodszą część)
*Odpowiednio ustawia rejestry konfiguracyjne

Kod ten znajduje się w zipie pod adresem:
http://www.nespowerpak.com/nesasm/nesasmsrc.zip
_____________________________________________________________________________________
Może podane przeze mnie metody nie są proste, ale postanowiłem, że napiszę o tym czego sam uczyłem się metodą prób i błędów. Nie siedzę w żadnych ASM'ach z pół roku, więc przepraszam za wszelkie pomyłki.
_____________________________________________________________________________________
[Edit]: Źródło gry Zooming Secretary napisanej w C na NES:
          http://www.tigsource.com/2012/04/22/zooming-secretary/

                                                Pozdrawiam
« Ostatnia zmiana: Kwiecień 29, 2012, 08:11:06 wysłane przez CodAsm » Zapisane
siudym
Gość
« Odpowiedz #172 : Maj 25, 2012, 00:52:20 »

___________________________________________________________________________________
Co do kodu ładującego NameTable fajny jest "scrolling5.asm" z kursu NESASM (BunnyBoy'a). Jest nieco zawiły i przesiedziałem wiele wieczorów zanim go zrozumiałem, ale ma dużo sensu. Kod NMI wykonuje kilka rzeczy:
*Scrolluje ekran (w każdym NMI o 1 piksel, więc co 8 NMI o szerokość jednego Tilesa)
*Ładuje kolumnę NameTable (Jeżeli licznik "scroll" zawinie się do wartości 0 to NT jest przełączana za pomocą "eor")
*Ładuje następną kolumnę AttributeTable (Jeżeli załadowana została odpowiednia ilość kolumn NameTable odpowiadających szerokości półbajta AttributeTable, a więc szerokość 2 Square'ów, (4 Tilesów))
*Wykonuje Transfer DMA Sprite'ów
*Odpowiednio ustawia rejestry PPU_ADDR (starszą i młodszą część) i PPU_SCROLL (starszą i młodszą część)
*Odpowiednio ustawia rejestry konfiguracyjne
                                       Pozdrawiam

Tzn ja juz doszedlem jak to zrobic, sposobem banalnym. Ostatnio co znowi siedzialem w ASM wlasnie najwiecej kombinowalem nad mega prostymi rozwiazaniami itd. Na chwile obecna olewam znowu sprawy nesasm.

http://nesdev.parodius.com/bbs/viewtopic.php?t=4456

http://siudym.webd.pl/nesasm/2nt.nes

Kod:

.inesmir 1

JSR LoadNT1

----subrutines----


LoadNT1:

LDX #$20
STX $2006
LDX #$00
STX $2006
STY $2006
LDX #$08                       ;change
LDA #low(NameTable1)
STA <$0000
LDA #high(NameTable1)
STA <$0001

LoadMap1:

LDA [$0000], y
STA $2007
INY
BNE LoadMap1
INC <$0001
DEX
BNE LoadMap1

RTS

---------------------

NameTable1:

.incbin "test.map1"     ;nametable0
.incbin "test.map2"     ;nametable1

« Ostatnia zmiana: Maj 25, 2012, 00:55:19 wysłane przez siudym » Zapisane
siudym
Gość
« Odpowiedz #173 : Październik 24, 2013, 15:00:42 »

Mala prosba o wytlumaczenie mi jednego - chodzi o strukture kodu nesasm, zasady dzialania i zasady przerwan. Bede co jakis czas pewnie teraz debilne pytania zadawal, ale mocno mnie to ciekawi i tez chce pewne sprawy w 100% poukladac w glowie.

Tutaj obrazek prostego kodu nesasm, czyli kod resetu, zaladowanie palety, wywalenie sprite na ekran itd (nie jest caly, tylko poczatek).



Co co mi chodzi:
Strzalkami niebieskimi zaznaczone oczywiscie start dzialania kodu po resecie konsoli, konczy sie to nieskoczona petla. Interesuje mnie dokladna zasada dzialania i w jakim przerwaniu to dziala. Przerwanie NMI jest mi znane - kod przerwania NMI jest wykonywany w czasie powrotu "renderingu" konczacego ramke na poczatek i tak 50/60x na sec. Ale jak sie dzieje to po resecie (juz nie chodzi o NMI) ? Czy po wcisnieciu start/reset konsola robi to od razu ladujac ten kod resetu i konczy nieskonczona petla, oraz dlaczego czesto kod resetu/startu jest przerywany czekaniem vblank?  Czy chodzi o to, ze moze nie wyrobic sie w czasie 1/50sec i dlatego wstawiane sa "pauzy" vblank? I jak to sie ma do samego NMI, ktore takze wykonywane jest 1/50sec miedzy renderingiem kodu? Bo oba przerwania RESETU i NMI musza sie zmiescic w czasie.

Ciezko mi to opisac nawet, ale mam nadzieje, ze ktos łebski mega krok po kroku łopatoligicznie opisze Smile

Tutaj wogole vblanki sa 2x miedzy czysczeniem ramu, chodzi o to, ze samo czyszczenie moze nie zmiescic sie w "czasie" vblank?

EDIT: Takie uzupelnienie jeszcze po przemysleniu - skoro dopiero pod koniec kodu startu/resetu wlaczane jest przerywanie NMI (bit7 w $2000), to jesli czas przerwania VBLANK nie jest wczesniej wlaczony, to po co wogole wstawianie wczesniej czekanie na vblank?? Skoro NMI wlaczane jest pod koniec zaraz przed infinity loop?
« Ostatnia zmiana: Październik 24, 2013, 16:10:16 wysłane przez siudym » Zapisane
Koks
Major
*****
Offline Offline

Wiadomości: 580



« Odpowiedz #174 : Październik 24, 2013, 17:42:24 »

Cytuj
jesli czas przerwania VBLANK nie jest wczesniej wlaczony, to po co wogole wstawianie wczesniej czekanie na vblank??
Sam vblank jest nawet, gdy przerwanie jest wyłączone.
Po resecie trzeba poczekać, aż PPU będzie gotowy na zapis do $2006. Nie ma to nic wspólnego z czyszczeniem ramu w pętli clrmem.
http://wiki.nesdev.com/w/index.php/PPU_power_up_state
Kod:
The easiest way to make sure that 29658 cycles have passed, and the way used by commercial NES games, involves a pair of loops like this in your init code:
  bit $2002   ;; clear the VBL flag if it was set at reset time
vwait1:
  bit $2002
  bpl vwait1  ;; at this point, about 27384 cycles have passed
vwait2:
  bit $2002
  bpl vwait2  ;; at this point, about 57165 cycles have passed
Dopiero teraz się o tym dowiedziałem, może dlatego trzeba resetować moje demo zanim ruszy  chess

A ja mam inne pytanie:
Kod:
ldx #$ff
txs
Czy to jest potrzebne, jeśli nie przechowuje się na pierwszej stronie niczego oprócz stosu?
Zapisane

Częste mycie skraca życie.
"If you have a fast, shiny new Pentium II, you might try using 44 kHz for the ultimate in sound quality." - readme od Unreala
https://drive.google.com/folderview?id=0B2TXQD5v-ZIVfjVQdTl2TTZiWmJ2LWZJajJzS0V4cDZBay04WjVGQkdQdnBDQzRlYkdQVGc&usp=sharing
siudym
Gość
« Odpowiedz #175 : Październik 24, 2013, 18:09:28 »

No ja tez bylem pewny tego, ze vblank jest caly czas, ale dlaczego opisywane jest 7 bit w $2000 jako "turning ON vblank period" ?? Tak jakby sie go dopiero wlaczalo.

Czyli te 2x vblank wait to przeciagniecie nieco czasu startu?
Zapisane
Koks
Major
*****
Offline Offline

Wiadomości: 580



« Odpowiedz #176 : Październik 24, 2013, 19:27:46 »

Cytuj
dlaczego opisywane jest 7 bit w $2000 jako "turning ON vblank period" ??
Wygląda na wyrwane z kontekstu (albo błąd), ten bit włącza przerwanie. Jeśli ten bit jest ustawiony, to przy każdym vblanku jest wykonywane NMI. Jeśli ten bit nie jest ustawiony, to przy vblanku nic się nie dzieje, można go tylko sprawdzić przez port $2002.
Cytuj
Czyli te 2x vblank wait to przeciagniecie nieco czasu startu?
Tak, żeby dało się załadować paletę do VRAMu.
Zapisane

Częste mycie skraca życie.
"If you have a fast, shiny new Pentium II, you might try using 44 kHz for the ultimate in sound quality." - readme od Unreala
https://drive.google.com/folderview?id=0B2TXQD5v-ZIVfjVQdTl2TTZiWmJ2LWZJajJzS0V4cDZBay04WjVGQkdQdnBDQzRlYkdQVGc&usp=sharing
siudym
Gość
« Odpowiedz #177 : Październik 26, 2013, 22:02:35 »

Ok. dzieki.
Wogole znalazlem ciekawy link:
http://skilldrick.github.io/easy6502/

Potrzebuje pomocy i jakiegos wyjasnienia jednej sprawy. Kombinuje (jak kon pod gore) jak w mozliwie prosty sposob, za pomoca NMI zrobic zapeltajace sie sprajty. Chodzi dokladnie o ich poruszanie - a dokladniej np. o poruszenie sie w jednym kierunku, powrot do startu i ponownie to samo doiokola wojtek.

tutaj cely kod:
http://www.siudym.webd.pl/nesasm/loop.zip

Ty wycinek - jak widac kombinacja, trzecia zmiana dalem INC tak z ciekawosci, ale to tylko proba. Jak opisalem - chodzi mi o poprawe i wytlumaczenie jak zrobic to o co mi chodzi. Ogolnie jak zrobic takie wlasnie zmiany poruszania sie i zapetlenia.

Kod:
NMI:

LDA #$00
STA $2003
LDA #$02
STA $4014

JSR Track

RTI

Track:

lda $0203
clc
adc #$01
cmp #$80
beq skip1
sta $0203

rts

skip1:

lda $0200
sec
sbc #$01
cmp #$80
beq skip2
sta $0200

rts

skip2:
inc $0203

rts

« Ostatnia zmiana: Październik 26, 2013, 22:04:11 wysłane przez siudym » Zapisane
Dizzy9
Nadworny programista.
Kapitan
****
Offline Offline

Wiadomości: 351



WWW
« Odpowiedz #178 : Październik 27, 2013, 00:04:59 »

Nie zapisujesz koordynatu Y jeśli warunek sprwadzający Y się spełni. Zrób tak:
Kod:
skip2:
sta $0200
inc $0203

rts
Oczywiście sprit będzie leciał w górę aż znów osiągnie pozycję 0x80. Jeśli chcesz by leciał tylko 80 pikseli w górę to musisz zastosować licznik.
Zapisane

siudym
Gość
« Odpowiedz #179 : Październik 27, 2013, 09:25:22 »

Dzieki, faktycznie :]

Probowalem licznik, ale nic nie wychodzilo mi. Jak zrobic tutaj licznik aby np. sprite startowal od meijsca lewej strony do konca ekranu, zawrocil i robil to po odpaleniu nonstop? Ogolnie - jak spowodowac aby $203 mozna bylo RAZ okreslona ilosc zwiekszyc, zastopowac i ponownie ale juz zmniejszych wartosc $203 i taka petla nonstop.

Ja probowalem jak widac zrobic tak, ze ustawienie pozycji juz w SPR RAM sprajta, zostalo zwiekszane do pewnej danej wartosci aby poruszal sie, potem konczone calkowicie i wykonywane odwrotnie. Jednak jak 2x cos kombinowalem z zmniejszeniem/zwiekszeniem $0203 to pierdzielilo sie gdyz raz zastopowana po wykonaniu wartosc np. INC z $203, ponownie sie zmieniala. Tzn jak po INC robilo sie DEC to sie oba wykonywaly i stalo to w miejscu albo drgalo itd.
« Ostatnia zmiana: Październik 27, 2013, 09:39:01 wysłane przez siudym » Zapisane
Strony: 1 ... 7 8 [9] 10 11
  Drukuj  
 
Skocz do:  

Działa na MySQL Działa na PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC Prawidłowy XHTML 1.0! Prawidłowy CSS!
Strona wygenerowana w 0.049 sekund z 18 zapytaniami.