Marca 29, 2024, 03:09:30
Witamy,
Gość
.
Zaloguj się
lub
zarejestruj
.
1 Godzina
1 Dzień
1 Tydzień
1 Miesiąc
Zawsze
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
EMU-NES #PL FORUM © 2004-2015
>
Nes/Pegasus/Famicom
>
Hacki i Romhacking/Programowanie
>
Programowanie Nes'a (procesora 6502)
Strony:
1
...
6
7
[
8
]
9
10
11
« poprzedni
następny »
Drukuj
Autor
Wątek: Programowanie Nes'a (procesora 6502) (Przeczytany 78610 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
Koks
Major
Offline
Wiadomości: 580
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #140 :
Października 26, 2010, 16:32:46 »
Cytat: CodAsm Października 22, 2010, 14:41:33
V = sqrt(V
x
2
+V
y
2
)
Po co to obliczać? Do procedury skoku wystarczą poszczególne składowe, pierwiastkowanie nie jest tutaj potrzebne.
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
mog123
Chorąży
Offline
Wiadomości: 221
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #141 :
Października 26, 2010, 20:47:48 »
Cytat: CodAsm Października 26, 2010, 10:42:34
Cytat: mog123 Października 26, 2010, 00:00:19
widać że słabo z algorytmami
Są gotowe algorytmy na pierwiastkowanie i potęgowanie, o ile potrafisz czytać schematy blokowe algorytmów. Mnożenie i dzielenie jest banalne jak umiesz dodawać i mnożyć liczby.
1. Jeżeli idzie o mnożenie i dzielenie to zdaje się, że lepsze są przesunięcia bitowe i dodawania OR.
2. Co się tyczy pierwiastkowania sprawa nie jest już taka prosta, bo procesor 6502 jest wolny, a w NMI trzeba zostawić nieco cykli na logikę gry, narysowanie kilku kolumn/wierszy (dwóch do trzech) Tilesów i transfer dma, a pierwiastkowanie to przecież i tak niewielka część procedury fizyki...Niestety moja aktualna wiedza jest lata świetlne od tematu
Timing Code
.
Tak jak napisał dr88, każdy osioł to wie, że szybsze. Ale co jak wykroczy poza zakres?
Zapisane
http://mog123x.blogspot.com/
Moje pięć groszy.
dr00id88
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #142 :
Października 26, 2010, 21:31:59 »
Zobaczysz w praniu jak to wyglada
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #143 :
Listopada 01, 2010, 14:09:49 »
Może nie wygląda to najlepiej, ale wreszcie coś zaczyna działać...
http://wrzucacz.pl/file/4841288616944
Zapisane
Grucus
Chorąży
Offline
Wiadomości: 125
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #144 :
Listopada 04, 2010, 02:32:33 »
No zaczyna działać... Popracuj nad obsługą pada, to co teraz zrobiłeś nazywa się, o ile mnie pamięć nie myli, koder priorytetowy... W każdym razie po wykryciu naciśnięcia przycisku, w tym rozwiązaniu, niemożliwe jest sprawdzenie pozostałych przycisków.
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #145 :
Listopada 04, 2010, 15:30:59 »
No właśnie...Wygląda, że ten sposób prowadzi w ślepą uliczkę. W jednym NMI nie da się obsłużyć na raz dwóch różnych przycisków pada.
Inny pomysł polegałby, żeby odczytywać w jednym NMI klawisze kursorów, a w drugim przycisk skoku.
*Przyciski kursorów nadają początkową V
x
i inkrementują odpowiednie składowe ruchu x
*Przycisk skoku nadaje początkową V
y
i inkrementuje odpowiednie składowe ruchu y (gdy postać spada rzecz ma się odwrotnie)
Kolejny problem to skok z rozbiegu. Wymagałby on:
*Ciągłego czytania drugiego przycisku pada (do momentu samego skoku).
*Zmiany przyśpieszenia (żeby było widać jak postać przechodzi ze stanu
chodzenie
do stanu
bieganie
)
*Dodania jakiegoś współczynnika tarcia o ile jest sens aż tak szczegółowo to robić.
*Powiedzmy, że przycisk rozbiegu byłby odczytywany jedynie co trzecie NMI.
Nie wiem czy byłby to dobry sposób, ale to pierwsze co mi się nasuwa i chyba jest możliwie łatwe do zaimplementowania?
«
Ostatnia zmiana: Listopada 06, 2010, 21:50:00 wysłane przez CodAsm
»
Zapisane
Grucus
Chorąży
Offline
Wiadomości: 125
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #146 :
Listopada 07, 2010, 20:35:03 »
No właśnie w jednym NMI da się obsłużyć więcej, jeśli zmienisz sposób obsługi klawiatury (nie będziesz używał kodowania priorytetowego), ale i tak to jest ślepa uliczka.
Nie znam architektury NES-a, ale zdaje mi się że rozumiem jak to powinno działać, przynajmniej tak było by logicznie: CPU i PPU działają niezależnie, PPU generuje NMI gdy skończy "rysować" obraz, wtedy następuje powrót plamki z dolnego prawego rogu obrazu do górnego lewego, z czym związane jest wygaszenie plamki. Czas ten jest bardzo krótki. Chodzi o to aby nie mieszać "w locie" w rejestrach PPU podczas "rysowania" obrazu, a tylko w czasie tego krótkiego przerwania, gdy nic nie jest wyświetlane (jest kilka powodów takiego postępowania, w wielkim skrócie pozwala to uniknąć bugów graficznych) przeprogramować PPU. Zdaje się że zostało to przemyślane tak aby CPU w pętli głównej i podprogramach robił wszystko, a w NMI na podstawie tych danych tylko zapisywać odpowiednie wartości do rejestrów PPU, tak aby mógł wyświetlić kolejną klatkę obrazu. Jeśli jest inaczej proszę o dokładnie wyjaśnienie. Oczywiście czas, w którym PPU generuje obraz można dowolnie wykorzystać w CPU.
Przy powyższym założeniu możesz Skonfigurować wszystko na starcie i na podstawie odczytu klawiatury obliczyć wszystkie niezbędne zmienne do zapisania ruchu, biegu, skoku i dowolnej ich kombinacji, a w NMI tylko odczytywać klawiaturę i na podstawie tego co wyliczysz w programie głównym odpowiednio programować rejestry PPU. Na pytanie jak odczytać wiele klawiszy: twój błąd powstał z błędnego założenia że w jednej chwili tylko jeden będzie naciśnięty, gdy sprawdzasz po kolei klawisze i trafisz na naciśnięty, nie sprawdzasz kolejnych, od razu wywołujesz funkcję mu przypisaną. Powinieneś zawsze sprawdzić w pętli wszystkie 8 klawiszy, a w razie znalezienia przyciśniętego wywołać przypisaną mu funkcję i przejść do sprawdzenia kolejnego klawisza! Aż będzie wszystkie 8, nie mniej i nie więcej, oczywiście dla każdego z osobna wywoływać jego funkcję. Mam nadzieję że coś z tego zrozumiesz.
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #147 :
Listopada 12, 2010, 19:29:18 »
Po lekturze kilku kodów źródłowych zauważam, że moim najgłupszym błędem jest pozostawienie pętli głównej pustej- w moich programach nazywa się ona forever (lepiej byłoby ją nazwać main).
Przykładowo pętla main w źródle
Bill World
(
http://nesdev.parodius.com/billworld01.zip
) :
*czyści spr-ram
*czyta joypad (zapętlenie obsługi joya, o którym wspominał Grucus)
*obsługuje pauzę
*czeka na nadejście nmi, które wykona resztę roboty
*wykonuje powyższy schemat od początku
Obsluga joya w tym kodzie wygląda mniej więcej tak (trzy pierwsze punkty obsługuje pętla main, ostatni jest zaszyty w nmi):
*zapamiętanie ostatnio odczytanego przycisku pada \
*odczyt aktualnie wciśniętego przycisku / procedura czytająca jopad
*obsługa pauzy
*obsługa wszystkich przewidzianych w grze kombinacji przycisków (np. rożne kombinacje przycisku skoku i krzyżaka)
Niestety zdałem sobie sprawę, że jestem cały czas strasznym Newbie w temacie asemblera pod NES i muszę jeszcze wiele się nauczyć, ale myślę, że uda mi się z czasem lepiej rozpracować temat
Na koniec dwie strony:
*
http://www.the-interweb.com/serendipity/index.php?/categories/8-NES/P2.html
- artykuły z opracowanymi fragmentami
zdeasemblowanrgo kodu gry
Faxanadu
i nie tylko)
*
http://games.greggman.com/game/programming_m_c__kids/
- artykuł jednego z autorów gry M. C. Kids
«
Ostatnia zmiana: Listopada 12, 2010, 19:44:21 wysłane przez CodAsm
»
Zapisane
mog123
Chorąży
Offline
Wiadomości: 221
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #148 :
Listopada 15, 2010, 21:04:58 »
programowałeś kiedyś w C?
Zapisane
http://mog123x.blogspot.com/
Moje pięć groszy.
dr00id88
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #149 :
Listopada 15, 2010, 21:44:46 »
Cytat: CodAsm Listopada 12, 2010, 19:29:18
Na koniec dwie strony:
*
http://www.the-interweb.com/serendipity/index.php?/categories/8-NES/P2.html
- artykuły z opracowanymi fragmentami
zdeasemblowanrgo kodu gry
Faxanadu
i nie tylko)
o, to dosc ciekawe!
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #150 :
Listopada 17, 2010, 13:09:30 »
Cytat: mog123 Listopada 15, 2010, 21:04:58
programowałeś kiedyś w C?
1.
mog123
Nie wiem czy to można nazwać programowaniem, nie utrzymywałem nigdy nic większego niż 100 linijek (kiedy skrobałem w WinAPI mogło być nieco więcej). Proste rzeczy. Jeżeli idzie o asm lubię go sobie zapisywać w pseudokodzie C (w taki sposób najczęściej wykorzystuję C).
Cytat: dr88 Listopada 15, 2010, 21:44:46
Cytat: CodAsm Listopada 12, 2010, 19:29:18
Na koniec dwie strony:
*
http://www.the-interweb.com/serendipity/index.php?/categories/8-NES/P2.html
- artykuły z opracowanymi fragmentami
zdeasemblowanrgo kodu gry
Faxanadu
i nie tylko)
o, to dosc ciekawe!
2. Co się tyczy Faxanadu ostatnio zagrywam się w to bez pamięci, jak dla mnie dzieło sztuki na MMC1.
«
Ostatnia zmiana: Listopada 17, 2010, 13:18:25 wysłane przez CodAsm
»
Zapisane
alzen
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #151 :
Grudnia 26, 2010, 13:50:33 »
Nie wiem czy temat jest odpowiedni, chciałbym spytać jaką księżkę polecalibyście do nauki Assemblera 6502?
Miałem kiedyś książkę autorstwa Jana Ruszyca, "Informatyka Mikrokomputerowa - Assembler 6502 - ATARI" (jest chyba dalej do pobrania na jednym z polskich for o ATARI). Książka była z 1987 roku i jako, że na razie niemalże wcale się na tym nie znam nie wiem czy programowanie pod 6502 dla ATARI nie różni się nieco od programowania tegoż mikroprocesora dla Pegasusów/NESów.
Poza tym jak pisałem, książkę tę miałem ale chyba już na dobre się zgubiła (a na kompie czytać nie lubię), więc prosiłbym o jakieś sugestie dobrych publikacji dla noobów; nie muszą być polskojęzyczne, z angielskimi też sobie poradzę; byleby w miarę czytelnie wprowadzały w tego assemblera (ta książka Ruszyca była jak dla mnie bardzo przystępna).
Zapisane
dr00id88
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #152 :
Grudnia 26, 2010, 19:03:21 »
Programowac potrafisz?
Bawiles sie kiedykolwiek Asemblerem?
Nie masz rodziny badz mieszkasz w piwnicy?
Zapisane
alzen
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #153 :
Grudnia 26, 2010, 21:44:21 »
dr88, jak zwykle bez konkretnej odpowiedzi.
Bawiłem się tyle o ile; ale chciałbym się w tym trochę rozeznać bo to jednak interesująca kwestia. Co do programowania, poza kilkoma skryptami w Bashu raczej niewiele więc raczej nie programuję. Zdaniem wielu to bardzo utrudnia podejście do Assemblera ale mam to w nosie
.
Polecajcie dobre publikacje i nie marudźcie; Ruszyc super zrobił tą książkę bo wychodził od przeliczania dzięsiętnych na szesnastkowe co też musiałem przerobić i sugeruje przerabianie rozdziałów jeden po drugim więc jak najbardziej dla mnie; ale może jest jeszcze coś ciekawego. Albo poszukam Ruszyca albo czegoś innego, jak nie to zostaną publikacje z sieci ale wolałbym to co miałem a sieciowymi jeśli coś załapię to się posiłkować raczej.
Zapisane
siudym
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #154 :
Grudnia 27, 2010, 11:53:43 »
Cytat: alzen Grudnia 26, 2010, 13:50:33
ana Ruszyca, "Informatyka Mikrokomputerowa - Assembler 6502 - ATARI" (jest chyba dalej do pobrania na jednym z polskich for o ATARI)
A daj se na luz ze sciaganiem... Na alleraztanioidrogo.pl masz je czesto ponizej 10zl. Ja chyba kupilem za 9+wysylka.
Ja sam mam wlasnie ta ksiazke. Procek ten sam, wiec co za roznica czy NES czy ATARI czy komoda. Wiadomo ten NES'owy ma chyba mniej rozkazow, ale te najwazniejsze i samo sedno sprawy jest te same. Kup i czytaj.
Dla przykladu:
http://www.siudym.gower.pl/nes_demo_2.nes
Sposob animowania tego nietoperka wyszukalem wlasnie w tej ksiazce. Oczywiscie nie bylo to opisane w sensie "jak cos animowac" ale szukalem rozwiazania petli. Znalazlem przykladowy kodzik i w symie bez wiekszych zmian NESASM slicznie go przyswoił.
Dobra rada - kup ta ksiazke + te tutoriale ASM dedykowane dla NES z nesdev i je sobie podrukuj. Wsio.
A jak jednak chcesz sciagac:
http://atarionline.pl/biblioteka/materialy_ksiazkowe/Asembler%206502%20%28v2%29.pdf
«
Ostatnia zmiana: Grudnia 27, 2010, 11:57:39 wysłane przez siudym
»
Zapisane
alzen
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #155 :
Grudnia 27, 2010, 21:24:13 »
Thx siudym.
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #156 :
Stycznia 05, 2011, 14:53:36 »
1. Ponieważ link polskiej wersji Tutoriala NESAsm jest już dawno niekatualny, podaję nowy (poprawiłem kilka drobnych błędów)
http://wrzucacz.pl/file/8231294235601
Tak na marginesie kompletny kurs NESAsm i dużo więcej o programowaniu gier pod NES można znaleźć na forum NintendoAge pod poniższymi adresami:
http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=7155
http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=33287
2. (Do
alzen
'a)
Programowanie NES różni się od ogólnego programowania 6502 przede wszystkim poniższymi:
-mapą pamięci (po prostu inna organizacja pamięci dla danych graficznych i muzycznych)
-urządzenia I/O (czyli inaczej obsługujemy wyświetlanie grafiki i granie przez chip dźwiękowy)
używamy po prostu innych adresow portów I/O
-brak obsługi trybu dziesiętnego (systemy BIN/HEX muszą być samodzielnie przez programistę
zamieniane na BCD)
-NES nie ma żadnego systemu operacyjnego, a więc i procedur ułatwiających nam życie
(np. do obsługi liczb ułamkowych), trzeba je sobie samemu napisać
-w NES-owej wersji procesora 6502 nie ma kilku instrukcji, które są w Atarynce czy C64
*Wspólną cechą NES i innych konsol działających na procesorach 6502 jest to że kod wykonujący
obliczenia jest niemalże identyczny i można go wklejać w kod źródłowy prawie w postaci
niezmienionej(Np. dodawanie,mnożenie i obliczanie jakiejś funkcji).
Jednak w przeciwieństwie do innych maszyn w NES sami musimy zatroszczyć o tryb dziesiętny
jak napisałem w 3 myślniku.
3.
alzen
jeżeli nie będziesz czegoś rozumiał/wiedział, to służę pomocą o ile sam będę wiedział.
«
Ostatnia zmiana: Stycznia 06, 2011, 18:51:27 wysłane przez CodAsm
»
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #157 :
Czerwca 09, 2011, 22:14:18 »
1. Ostatnio na forum nesdev znalazłem link do fajnego symulatora 6502. Jest dość prosty w użytku.
Zanim umieści się jakąś prockę w kodzie nes można sobie ją przetestować.
http://home.pacbell.net/michal_k/
2. Link do wtyczki przeznaczonej do IDA pro umożliwiającej debugowanie rom'ów NES (i do wątku na
którym go znalazlem).
http://www.openrce.org/repositories/users/dennis/NESpackage.zip
http://nesdev.parodius.com/bbs/viewtopic.php?p=40454&sid=f1ab6cadbccc30268721e1c140be5c73
3. Męczę się z konfiguracją ca65 (cc65) przez ostatnie dni. Bardzo polecany kompilator na
bbs-ie. W poniższym wątku piszą trochę o konfiguracji, gdyby ktoś miał ochotę pobawić ca65 to
poza samą dokumentacją kompilatora i programu np. GNU Make na początek polecam przeczytać
ten wątek. W ogóle serwis, na którym znajduje się poniższe forum jest całkiem ciekawy.
http://www.nesworld.com/cgi-bin/yabb/YaBB.pl?num=1263859326
Zapisane
dr00id88
Gość
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #158 :
Czerwca 10, 2011, 00:25:24 »
no to sie przerzuc juz na asm6
Zapisane
CodAsm
Szeregowy
Offline
Wiadomości: 49
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #159 :
Czerwca 12, 2011, 09:31:57 »
1.Na początek linki do dyskusji dotyczących, który jest lepszy ca65 czy asm6:
http://nesdev.parodius.com/bbs/viewtopic.php?t=7014&highlight=asm6+cc65
http://nesdev.parodius.com/bbs/viewtopic.php?t=3605&start=0
2. Linki o tym jak lepiej ogarnąć ca65:
http://www.nesdev.com/bbs/viewtopic.php?p=4582&sid=e330a1ab803685a8b32253faed1c5721
https://bitbucket.org/ddribin/nerdy-nights/src
3. Każdy z tych asemblerów ma swoje wady i zalety:
asm6:
*łatwość przeniesienia kodu z NESASM, gdyż składnia jest podobna
*prosta asemblacja, bo odbywa się w jednym kroku (kompilator i linker to jedno)
*obsługa wygodnych etykiet lokalnych '+' i '-'
*obsługa większej ilości banków niż nesasm, więc lepiej jest z mapperami
*łatwość tworzenia małych plików
ca65:
*składnia nieco różni się od NESASM (chodzi tu głownie o określanie adresów w romie i konfigurację)
*proces kompilacji jest rozbity na kilka etapów (asemblacja i łączenie) co daje elastyczność
*konieczność przygotowania pliku konfiguracyjnego .cfg i reguł w pliku makefile
*mappery nie stanowią tu żadnego problemu ze względu na możliwości konfiguracji
*nieco inna obsługa etykiet lokalnych '+' i '-'
*dużo kombinowania i możliwość wystąpienia błędów na wielu etapach co może być irytujące
4. Większość lepszych programistów na nesdev preferuje ca65. Jakimś cudem udało mi się szczęśliwie skonfigurować
wszystko. Poza tym każdy programista, student informatyki powinien według mnie przynajmniej
orientować się jak działa mechanizm skryptów makefile, więc póki co pozostaję przy ca65. :-P
«
Ostatnia zmiana: Czerwca 12, 2011, 16:56:58 wysłane przez CodAsm
»
Zapisane
Strony:
1
...
6
7
[
8
]
9
10
11
Drukuj
« poprzedni
następny »
Skocz do:
Wybierz cel:
-----------------------------
Nes/Pegasus/Famicom
-----------------------------
=> NES Champions League
=> News'y ze sceny NES/Famicom i nie tylko...
=> Gry
=> Emulatory/Emulacja
=> Szukam Gry
=> Hacki i Romhacking/Programowanie
=> Famicom Disk System
=> Poradniki, solucje, mapy, itp.
-----------------------------
EMU-NES #PL
-----------------------------
=> Ankiety
=> Warn & Ban
===> Regulamin forum oraz ogłoszenia admina
===> #nes ...iRC'owy kanał fanów NESa/Famicoma
-----------------------------
EMU-NES #PL Redakcja
-----------------------------
=> Pegagruz
-----------------------------
Jeszcze więcej NES-a...
-----------------------------
=> Sprzęt/Hardware
=> Kupię/Sprzedam/Zamienię - Ogłoszenia
=> Ogólne forum o Nesie/Pegasusie/Famicomie
=> Zlot EMU-NES
-----------------------------
Kategoria Nietematyczna
-----------------------------
=> Inne gry, komputery i konsole
=> Hyde Park
===> Reklama
===> Lata 80/70/60...
=> Śmietnik
Ładowanie...