[#1] Asembler 6502 - NES, Famicom, Pegasus (NESASM)
Takie małe moje hobby (na raty od dawna, wiadomo to zjadacz czasu) :) Czyli ASM na NES. Nigdy nie mialem okazji bawic sie asemblerem na komputerach, ale konsolowy NESASM spodobal mi sie. Programowanie C64 czy Atari nie jest niczym malo znanym, ale juz asembler naszego "pegasusa" pewnie tak. Spore ograniczenia i specyfika tworzenia takiej np. grafiki w NES wyroznia go na tle komputerow.

Kilka moich demek (w sumie gier, ale raczej nie do konca pelnoprawnych) -

Ostatnie demko (video)
https://www.youtube.com/watch?v=ibwKDClzIV0
https://www.youtube.com/watch?v=270vRqiTqO0

Micro Knight 1 i 2 - pierwsze "gry" o ile mozna je tak nazwac (odnosniki na nesdev, mozna pobrac plik bez logowania sie) :
link

Micro Knight 3 (tylko demo, nigdy nie ukoncze bo gdzies source zgubilem
link

Lake Faver (wynalazek ala gry na Atari2600
link

Inne demka:
link
link
link
link


Ostatnia aktualizacja: 06.03.2017 18:47:02 przez siudym
[#2] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #1

Ja zrobiłem sobie kartridż z moim własnym programikiem: link. Twoje są bardziej zaawansowane ;)
[#3] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #2

Na poczatku uzywalem NROM, ale jak mapper UNROM okazal sie mega prosty, to uzywam jedynie jego - oczywiscie tez oszczednosc ukladow flash, bo UNROM to tylko jedna kosc PRGdo zapisania i rozmiar az do 256KB w typowym standardzie tego mappera (mozna tez 512KB+, ale nie ma sensu w moim przypadku). Oczywiscie kod testowany na konsoli :) Zrobilem od podstaw programator Kazzo aby testowac kod na konsolce - oczywiscie wszystko USB:






Programator oczywiscie na bazie ATMega16A (DIP).

Ostatnia aktualizacja: 11.03.2017 12:38:34 przez siudym
[#4] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #2

Ostatnio mialem nieco weny i ruszylem z ulepszeniem dema:

https://www.youtube.com/watch?v=noAQm8gFXuk

Plik ROM:
https://www.dropbox.com/s/ci2t2nb40us21gh/demo13062017.nes?dl=0

Duzo do roboty, ale juz rece i nogi ma.

Ostatnia aktualizacja: 14.06.2017 12:05:34 przez siudym
[#5] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #4

Jest moc ;)
[#6] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #4

Poryty poziom trudności. szeroki uśmiech
[#7] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@Sokok, post #6

Na razie pauza w projektowaniu gry, ale kod podany wczesniej juz dosyc stary. szeroki uśmiech To wersja ostatnia:

https://www.dropbox.com/s/583t7sahunyw4jb/demo23062017.nes?dl=0

A ta to samo, ale nieco trudniejsza gdyby bylo za latwo

https://www.dropbox.com/s/9r8vxoj9xt2iz37/demohr.nes?dl=0

W sumie to pierwsze 4 mapki jakby gotowe, finalne. Aha dodane sa sekretne poziomy - na kazdym jest "teleport" do sekretnej mapki :)

Pauza w robieniu gry spowodowana tym, ze pisze na nowo "silniczek" - znaacznie lepszy, bo ten obecny nieco toporny - bedzie na przyszlosc dla nowych projektow :)

Ostatnia aktualizacja: 13.07.2017 00:39:48 przez siudym

Ostatnia aktualizacja: 13.07.2017 00:40:11 przez siudym

Ostatnia aktualizacja: 13.07.2017 00:42:04 przez siudym
[#8] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #5

Kilka ostatnich projektów:

Plush in a Twisted World
Unikając przeciwników musimy zebrać wszystkie monety na ekranie. Dodatkowo pojawiają się przedmioty dodające punkty. Zebranie serca gdy mamy już jakieś stracone zostają dodane do istniejących, natomiast gdy mamy pełen komplet zdrowia, zebrane serce daje dodatkowe punkty. W grze jest czas, po którym pojawia się krzyż goniący nas po ekranie. Jest 5 poziomów obecnie. Gra jest w sporym stopniu gotowa, jednak zmian może być sporo.





Gra platformowo-labiryntowa, jeszcze bez nazwy, 128 ekranow:



[#9] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #8

muzyka kiepska ale gierka fajna OK
lepsza niz niektore produkcje amigowe...
[#10] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@selur, post #9

Muzyka na kolanie robiona - zazwyczaj sklecona w 5-15min aby cokolwie bylo. Finalna oprawa muzyczna zawsze na koniec daje.

Jeszcze kilka innych - Jet Set Willy NES (silnik zrobiony od zera, ma wiele roznic bo nie potrafilem skopiowac oryginalu - bedzie nieco inna gra finalnie).



Obcy Izolacja
Taka ciekawostka. Bawilem sie pseudoAI przeciwnika. Kwadraciki wystrzeliwane przez obcego to jego pole widzenia (wystrzeliwane promienie) - one sa jedynie jako wizualizacja tego pola (mozna wylaczyc). Duzy kwadrat to miejsce w ktorym obcy widzial lub slyszal nas ostatnio. Ogolnie nasze zachowanie wplywa na rozne sposoby na zachowanie obcego (bieganie slyszy nas, zwykle chodzenie slyszy "nieco", skradanie sie nie slyszy wogole).





Ostatnia aktualizacja: 28.05.2020 15:29:07 przez siudym

Ostatnia aktualizacja: 28.05.2020 15:30:34 przez siudym

Ostatnia aktualizacja: 28.05.2020 15:32:17 przez siudym
[#11] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #10

Niezłe produkcje.
[#12] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #11

Fajna zabawa z tym wszystkim, ale zajmuje ogrom czasu wolnego (zwlaszcza, jak sie robi wszystko samemu czyli prg+gfx+msx).
Podobno ASM 68k jest nawet latwiejszy? Musze kiedys sprobowac. Na Amidze w latach 90tych probowalem w AMOS grzebac, ale szybko to sie zakonczylo. szeroki uśmiech Wiec w sumie 6502 to moj pierwszy, jedyny jezyk programowania jaki malo-wiele udalo sie ogarnac.

Jeszcze dwie gry:

Cybroitek Double Revenge
Gra glownie dla 2 graczy.


Oraz krotkie demko gry pt. "STUDNIA THE GAME" :


Kapitan Janush:


Dynablaster/Bomberman - napisane jedynie jako "wyzwanie", czyli chcialem zobaczyc
czy uda sie zrobic ta gre od zera po swojemu:


I inne wynalazki:




Ostatnia aktualizacja: 29.05.2020 17:26:49 przez siudym
[#13] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #12

Bardzo mi się podobają Twoje produkcje. Chciałbym sobie obadać i zrobić coś bardzo małego dla siebie, żeby zobaczyć jak to jest na NESie. Z lenistwa zapytam, czy mógłbyś podać jakieś linki do materiałów jak napisać coś od zupełnego zera w asm na NES. Dzięki z góry.
[#14] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@asman, post #13

Ja też się uczyłem i pisałem od zera, podstawy programowania: link.
[#15] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #14

Dzięki, jeszcze nie wiem kiedy znajdę na to czas, najwyżej będę mniej spał.
[#16] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #14

Świetna robota. Fajnie opisane. Używasz jakiegoś dev-carta, może Kazzo, lub KrzysioCart/EverDrive?

Widzę miałeś problem z pojawianiem się sprite'a 0 na ekranie? Ja zawsze przed wstawieniem obiektów na ekran używam tego programu do wywalania ich poza ekran:

Clear_OAM_Copy: ;pomija X,T,S, a Y daje F0

LDX #0
LDY #$F0 ;F0 czyli 240pix niewidoczna pozycji ekranu Y

Clear_OAM_Copy_loop:

TYA
STA $200,x
STA $204,x
STA $208,x
STA $20c,x
TXA
CLC
ADC #$10
TAX
BNE Clear_OAM_Copy_loop ;sprawdz flage Z

RTS

Czyli wywalamy sprajty poza ekran, bez potrzeby zmiany ich pozostalych atrybutów (X,S,T)

Kod jaki miales opisany:

ldx #$00
LoadSpr:
lda Sprites,X
sta $0700,X ;adres strony pamięci dla właściwości spriteów
inx
cpx #$0C ;liczba bajtów do skopiowania
bne LoadSpr

Niepotrzebnie zeruje wszystko, lacznie z pozycja XY (dlatego na gornym/lewym rogu ekranu beda widoczne spr - nawet jak beda miec "pusty" tiles to fizycznie beda tam wisiec "niewidzialne"). No chyba, ze mamy potrzebe zerowania OAM, ale wydaje mi sie, ze najlepiej jedynie wywalic je poza ekran, a reszte atrybutow ustawic dopiero gdy tego potrzebujemy.


Ostatnia aktualizacja: 07.06.2020 23:14:41 przez siudym
[#17] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@asman, post #13

Napisalem bardzo prosty program, ktory mozna przeanalizowac:

https://dl.dropboxusercontent.com/s/vr9w25t1ewfo6hk/nesasm3%20prosty%20program%20by%20siudym.zip

Klikamy na BAT aby skompilowac. Zrobilem przykladowy ekran startowy, jest odczyt pada, przeciwnik jako drugi obiekt z prosta petla. Dodatkowo jest to mapper 2 UNROM (128KB), czyli jest uzyta zasada przelaczania bankow itd. Jest kod zarowno w pseudonieskonczonej petli jak i w przerwaniu NMI.

Ostatnia aktualizacja: 08.06.2020 08:43:18 przez siudym
[#18] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #16

Jest to najprostszy program z obsługą podstawowych rzeczy. Póki co, moja przygoda z programowaniem NES'a zakończyła się właśnie na nim. Jedyny kart, jakiego używam to ten zrobiony przeze mnie (link), właśnie na potrzeby uruchomienia tego programu na prawdziwej konsoli.

Tak, sprite nr 0 pojawiał się w różnych miejscach na ekranie, ale tylko na prawdziwej konsoli, a na emulatorze już nie. Odświeżenie sprite'ów zapobiegło temu zjawisku, ale najlepiej jest je wrzucić poza ekran tak, jak w Twoim programie.
[#19] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #18

Czyli typowy dev-cart i wypalanie eprom/flash zewnetrznym programatorem? Podobnie jak u mnie kiedyś, a była masa kartridzy, wyjmowanie maskrom, przekabelkowanie na podstawki DIP i programator willem przez LPT. :) Dawne czasy jak jeszcze prowadziłem strone RomLab od 1999 roku (znalazlem gdzies u kogos "zbackupowana" : link

Teraz baaardzo sporadycznie używam zrobionego przez siebie Kazzo usb+ podstawowe mappery:



a najczęściej KrzysioCart z MicroSD jak juz mam chec cos szybko na konsoli odpalic.





Ostatnia aktualizacja: 08.06.2020 13:03:13 przez siudym
[#20] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #19

No dokładnie, teraz przynajmniej mam sensowny programator TL866II Plus do pamięci, a nie jakieś sklecone cudo na LPT ;)

Jeszcze apropo początków programowania, to polecam tą stronę: link
[#21] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #19

Czy w praktyce Kazzo działa dobrze? Czy można za jego pomocą odczytać kartridże NROM (np. mój NROM-256)? Czy najnowszą wersją programu sterującego jest "anago wx build at Nov 18 2010"? Akurat mam wszystkie części więc może bym sobie go zrobił. Podobno jest możliwość definiowania nowych maperów.

Jest też inna wersja Kazzo: link oraz najnowsza: link (zbudowana na ARM Cortex M0), które rozpoznają niektóre kartridże NROM i UNROM. Oprogramowanie sterujące (na razie bez GUI) obsługuje obydwie te wersje oraz wersję oryginalną Kazzo.
[#22] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@RomanWorkshop, post #21

Kazzo ciagle sie rozwija, tu w tym watku na forum nesdev sporo pisza -> link

A tu link do polskiego forum nes i tematu z kazzo, tam tez pisalem bo cos mi nie szlo zaprogramowanie Atmegi -> link

Ja mam dwa takie - jeden dawno temu sklecilem, sam zaprogramowalem tez ATmega (kupujac jakis prosty programatorek za ~10zl) ->




Drugi kupilem jakis dwa lata temu, jak wpiszesz na alefrogo "kazzo" to wyskoczy (jest drozej, bo dawniej za sporo nizsza cene byly wystawione)

Co ciekawe, sprzedawca pisal, ze nie daje gw. na dzialanie na 64bit systemach. Ale moj dziala :) I faktycznie jak tylko wsadzilem ten nowy, to karty UNROM nie chcialy sie programowac, a na moim dzialaa wszystko na 64bit (ale ogolnie dziala i widzi nowy tez). Wiec temat 64 trzeba by poczytac, bo ja sam nie wiem jak to zrobilem, ze mi akurat dziala bezproblemowo moja klecionka Wydaje mi sie, ze na 64bit moga byc problemy z tymi kartami na 74LS00 natomiast kartridz z MMC1 nagrywal sie poprawnie.

Co do UNROM i NROM to nie chodzi chyba o samo kazzo, ale brak jednego sygnalu - trzeba dodawac 74LS00 do gier z mapperami na bramkach logicznych. Natomiast dumpowanie nie wymaga modyfikacji (no moze czasem jak sa multicarty dziwne). Moj kart UNROM:



UNROM najlepiej kilkoma kabelkami dodatkowo przerobic na UOROM czyli tak, aby mial 256KB (a dodajac druga pare bramek mozna UXROM zrobic czyli taki do 512KB).

Jak widac jest podstawka 32pin, ale najlepiej wlutowac flash na stale i mozna zamknac w obudowie, dzieki temu nic poza wsadzeniem karta i wypaleniem romu nie trzeba mieszac.



Ostatnia aktualizacja: 09.06.2020 10:06:49 przez siudym
[#23] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #1

Update starszego projektu, ktory zostal mocno rozbudowany i otrzymal tytul:

"Kazik i Tajemnicza Świątynia"

Wszystko robione jest tylko przeze mnie, wiec sporo czasu zajmuje tworzenie tych gier. To wszystko koszmarny zjadacz czasu.



Plik ROM jest w opisie filmu:



Oraz spontaniczny projekt "Kuku-Ruku" - prosta, kolorowa platformowka:



Plik ROM także w opisie filmu:




Ostatnia aktualizacja: 10.01.2021 19:12:50 przez siudym
[#24] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #23

Robisz gry na poziomie profesjonalnym.
[#25] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #23

uważaj z tym kuku-ruku, bo producent wafelków Cię pozwie.
[#26] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@snajper, post #25

Wątpie. Nazwa wafla to "Koukou Roukou" w polsce wymawiane "Kukuruku". Druga sprawa moja nazwa to Kuku-Ruku nie mająca nic z tym waflem.

To darmowe gry, kasy za nie nie biore.

Ostatnia aktualizacja: 10.01.2021 21:25:21 przez siudym
[#27] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #26

a o stronie Mike'a Rowe słyszałeś?
[#28] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@snajper, post #27

A gdyby nazwac gre "Sprajt" to The Coca-Cola Company pozwie o uzycie nazwy "Sprite" ? :)
[#29] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@siudym, post #23

W czym te grafiki rysujesz?
[#30] Re: Asembler 6502 - NES, Famicom, Pegasus (NESASM)

@amikoksu, post #29

https://www.romhacking.net/utilities/108/
Oraz:
https://www.romhacking.net/utilities/802/
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