Wrzesień 20, 2019, 14:20:09 *
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 [2] 3 4 ... 11
  Drukuj  
Autor Wątek: Programowanie Nes'a (procesora 6502)  (Przeczytany 57361 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
siudym
Gość
« Odpowiedz #20 : Sierpień 04, 2007, 19:51:52 »

Nie nie... To pierwszy moj program w sumie, zle operowalem vblankami Wink Teraz robie z naciskiem na "hardware friendly code" ;P

EDIT:
Juz wiem jak ladnie i zgrabnie tworzyc kod, aby dzialal bezproblemowo na konsoli, a to bardzo wazna sprawa Wink

Ludek nieco "nieksztaltny" na ekranie, bo BG jest w drobna kratke, do tego TV rozciaga grafike, wiec wyglada jak wyglada Wink
Wszystko to podstawy, jednak bardzo wazne, poniewaz "czysty" i dobrze zrozumiany rdzen kodu to podstawa (masa kombinowania) Smile

Real (pasek z winy aparatu)
Na fotce nie widac dobrze, ale gorna linia pixeli jest ucieta. To chyba te slynne "dummy" scanline 0 - czyli pusta linia obrazu renderowana jako pierwsza po VBlank (to tylko 1pix wysokosci, wiec nie widac tego zbytnio)


Emu:


Vid:
http://www.youtube.com/watch?v=LC5e3IUmQsI
« Ostatnia zmiana: Sierpień 06, 2007, 15:30:46 wysłane przez siudym » Zapisane
dr00id88
Gość
« Odpowiedz #21 : Sierpień 06, 2007, 19:50:32 »

Nie sšdziłem, że można aż tak zniekształcić sprite'a. Wiem, że wpływ ma krzywizna ekranu, ale że powstał taki Quasimodo:P

Muszę sprawdzić swoje demka...
Zapisane
aboabo
Spaghetti Samurai
Major
*****
Offline Offline

Wiadomości: 1110


geje we wsi


« Odpowiedz #22 : Sierpień 06, 2007, 21:17:11 »

Cytuj
Ludek nieco "nieksztaltny" na ekranie, bo BG jest w drobna kratke, do tego TV rozciaga grafike, wiec wyglada jak wyglada wink.gif
w ten sposob mozna tworzyc bardzo psychodeliczne efekty! zwlaszcza jezeli uzyjesz dodatkowo przezroczystosci na elementach tła (patrz life force, 1 level jak wlatujesz do tętnicy).

z tš siatkš swietny patent, nasuwajš sie pomysly zaimplementowania iluzji optycznej.

podoba mi sie sposob w jaki zaanimowales spritea. raptem 3 albo dwie klatki, a postac porusza sie jak naspeedowana mrowka. zacne.
Zapisane


W pewnym archiwum znajduje sie autentyczne nagranie glosu Mieszka I, przypadkiem utrwalone przez garncarza pracujacego na kole garncarskim: "Poniewaz Mieszko I krzyczal glosem bardzo podniesionym to reka garncarza zlobiaca w tym czasie spiralny rowek (wzór luzycko-warminski) w miekkiej glinie drgala w rytm glosu Mieszka I jak membrana mikrofonu. A mysmy wzieli ten wykopany z ziemi talerz, polozyli na gramofonie i odtworzyli".
siudym
Gość
« Odpowiedz #23 : Sierpień 07, 2007, 00:16:10 »

Siatka ma jedna jeszcze zalete - gdy ustawie aby sprite wolno sie poruszal (tzn. nie aby sie wlekl, tak dwa razy wolniej niz teraz), to wyglada zupelnie jak by byl animowany, nogi sie fajnie ruszaja itd Wink

Tutaj plik NES - kierunki poruszanie sie sprite'a, select odpala prosty dzwiek, start zmienia ekran (tutaj do dopracowania, bo cos znowu nierowno sie wyswietla...)
Demo zrobilem glownie dla testow na konsoli - wynik wzorowy :] Dziala idealnie Wink
NROM 16k bez chr (vram)
http://siudymus.w.interia.pl/hard.nes

Sprawdzalem tez poprawnosc ladowania danych CHR z PRG ROMU do VRAM, kazdy z bankow CHR (4kb SPR i 4kb BKG) ma ustawiony jeden tiles na koncu bankow (FF). Wszystko dziala super.

EDIT: Zauwazylem, ze najlepszy emu do NESASM to VirtuaNES! Inne emulowaly demka czasami zupelnie inaczej niz odpalane na konsoli... VirtuaNES zdecydowanie najlepszy pod tym wzgledem. Jeszcze nnesterJ bardzo dobry pod tym wzgledem.

Cytuj
podoba mi sie sposob w jaki zaanimowales spritea. raptem 3 albo dwie klatki, a postac porusza sie jak naspeedowana mrowka. zacne.
[snapback]14563[/snapback]
Wlasnie ten sprite nie ma wcale klatek animacji  ;] Na tym wlasnie trick polega Wink


ps.
Jak ktos chce kod zrodlowy Super Mario Bros (disassembled) to prosze bardzo Wink
http://www.geocities.com/deethefigurine/smbdis.zip
http://pinocchio.jk0.org/nes/smb1_src.zip
« Ostatnia zmiana: Sierpień 07, 2007, 12:30:51 wysłane przez siudym » Zapisane
aboabo
Spaghetti Samurai
Major
*****
Offline Offline

Wiadomości: 1110


geje we wsi


« Odpowiedz #24 : Sierpień 07, 2007, 21:53:07 »

Cytuj
Wlasnie ten sprite nie ma wcale klatek animacji cwaniak.gif Na tym wlasnie trick polega wink.gif
a no zauwazylem dopiero jak udostepniles demko. myslalem ze jest zaanimowany tak jak na wczesniejszym demku i o ta wlasnie animacje mi chodzilo.
Zapisane


W pewnym archiwum znajduje sie autentyczne nagranie glosu Mieszka I, przypadkiem utrwalone przez garncarza pracujacego na kole garncarskim: "Poniewaz Mieszko I krzyczal glosem bardzo podniesionym to reka garncarza zlobiaca w tym czasie spiralny rowek (wzór luzycko-warminski) w miekkiej glinie drgala w rytm glosu Mieszka I jak membrana mikrofonu. A mysmy wzieli ten wykopany z ziemi talerz, polozyli na gramofonie i odtworzyli".
dr00id88
Gość
« Odpowiedz #25 : Sierpień 22, 2007, 12:20:56 »

Jeœli zamierzacie animować ogień (płomień) to lepsze efekty uzyskuje się nie czekajšc na Vblank;] sprawdzone...
Zapisane
dr00id88
Gość
« Odpowiedz #26 : Sierpień 22, 2007, 19:48:20 »

Chetnie, chetnie, ale dopiero jak skończę:]
Zapisane
mog123
Chorąży
***
Offline Offline

Wiadomości: 221


WWW
« Odpowiedz #27 : Wrzesień 10, 2007, 20:30:18 »

pomoze ktos?Tongue

virtuanes wogole mi nic nie pokazuje(szary ekran), o to moj kod:



Kod:
;-----------NAGLOWEK------------;

        .inesprg    1
        .ineschr    1
        .inesmir    1
.inesmap    0

.org $8000
.bank 0

Start:
lda #%00001000
sta $2000
lda #%00011110
sta $2001

lda #$3F; wskazuje na poczatek palety
sta $2006
lda #$00
sta $2006
ldx #$00

paleta:

lda pacpal, x; laduje palete do A
sta $2007
inx
cpx #$20; porownuje x z 32
bne paleta; jesli x=/= 32 skacze do paleta

vwait:
lda $2002   ;czeka az skonczy sie VBlank
bpl vwait

        lda #$20      ;poczatek VRAM ($2020)
        sta $2006      
        lda #$20    
        sta $2006

lda #$01;wpisuje do name table
sta $2007
lda #$02
sta $2007
lda #$6C
sta $2007
lda #$6C
sta $2007
lda #$6F
sta $2007

loop:
jmp loop

pacpal:

.include "pac.pal"; dane palety



;--------------CHR--------------;

.bank 2
.org $0000
.incbin "pac.chr"; 8kB

;-----------WEKTORY-------------;

       .bank 1          ;
       .org  $FFFA ;
.dw  0;(NMI_Routine)
.dw  Start;(Reset_Routine)
.dw  0;(IRQ_Routine)

I to tyle

Sam podejrzewam ze to paleta.
« Ostatnia zmiana: Wrzesień 10, 2007, 20:46:52 wysłane przez mog123 » Zapisane

http://mog123x.blogspot.com/
Moje pięć groszy.
dr00id88
Gość
« Odpowiedz #28 : Wrzesień 10, 2007, 21:19:49 »

.No to po kolei. Używam nesasm, nie wiem co ty używasz, ale sšdzę że też to samo:)

1.
Kod:
.org $8000
.bank 0

Błšd!! Ma być w banku 0 .org $8000
czyli:
Kod:
.bank 0
.org $8000

2.
Kod:
.include "pac.pal";

.include pozwala dodac fragment KODU w asm np., sterownik, funkcje, procedury...

tu jest nam potrzebny .incbin (poniewaz to nie sa zadne instrukcje tylko bajty palety, więc:

Kod:
.incbin"pac.pal";


Myœlę, że to wszystko. Pod FCEU działa...
Zapisane
mog123
Chorąży
***
Offline Offline

Wiadomości: 221


WWW
« Odpowiedz #29 : Wrzesień 10, 2007, 21:31:23 »

dzieki wielkie, zupelnie zpaomnialem ze include to co innego od incbin Smile
edit: ekhm, nie takich kolorow uzylem w mojej palecie Tongue
« Ostatnia zmiana: Wrzesień 10, 2007, 21:35:20 wysłane przez mog123 » Zapisane

http://mog123x.blogspot.com/
Moje pięć groszy.
siudym
Gość
« Odpowiedz #30 : Wrzesień 10, 2007, 21:40:03 »

Masz zla palete...

Paleta musi miec 32bajty, a Twoja ma 768... Wink
Jakis dziwny plik, to nie jest paleta nesasm wcale, czym to robiles?
Zapisane
mog123
Chorąży
***
Offline Offline

Wiadomości: 221


WWW
« Odpowiedz #31 : Wrzesień 10, 2007, 21:41:31 »

yy-chr
Zapisane

http://mog123x.blogspot.com/
Moje pięć groszy.
siudym
Gość
« Odpowiedz #32 : Wrzesień 10, 2007, 22:42:05 »

Uzywaj tego programu:
http://www.keepmyfile.com/download/d1b49f1868724

Albo najlepiej definiowac w kodzie palete, wygodnie i pod reka. Ja tak robie.
Zapisane
mog123
Chorąży
***
Offline Offline

Wiadomości: 221


WWW
« Odpowiedz #33 : Wrzesień 10, 2007, 23:09:30 »

nie dizlaa mi ten program, kiedys go uzywalem, ale dupa ala  brakuje mu pliku COMDLG32.OCX
« Ostatnia zmiana: Wrzesień 10, 2007, 23:11:41 wysłane przez mog123 » Zapisane

http://mog123x.blogspot.com/
Moje pięć groszy.
dr00id88
Gość
« Odpowiedz #34 : Styczeń 08, 2008, 15:46:25 »

Całkiem niezły tutorial.
http://www.nespowerpak.com/nesasm/
Zapisane
dr00id88
Gość
« Odpowiedz #35 : Październik 03, 2008, 07:59:06 »

Sdm, jesli chodzi o animacje to bierz sie za mmc3 juz.
Zapisane
siudym
Gość
« Odpowiedz #36 : Październik 03, 2008, 13:57:39 »

A co juz bawiles sie z MMC3? Wogole pod NESASM dzialaja instrukcje/rejestry MMC3???
Jak masz jakas ciekawostke, demko pod MMC3 to dawaj Wink

ps. Mala zmiana z poprzedniego przykladu poruszania sprite'a:
http://www.sdm.gower.pl/test_mario.nes

Kierunki poruszaja postacia, SELECT - zmienia tiles w 'sprajcie' oraz jest dzwiek. Wink
Zapisane
dr00id88
Gość
« Odpowiedz #37 : Październik 03, 2008, 18:34:34 »


Co do MMC3 to mozliwe, ze nie zalezy od NESASM, akurat nie bawilem sie nim, jedynie nieco MMC1.

Nie możliwe, a na pewno. NESASM tylko zamienia ci mnemoniki na opcody.
Zapisane
siudym
Gość
« Odpowiedz #38 : Październik 04, 2008, 16:49:31 »

Dobra, juz opanowalem BGR, jest tak jak powinien:)

Jak cos etykietka na BGR, moze sie komus przyda:

LoadNT1:

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

LoadMap:

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

   RTS


NameTable1 - oczywiscie odnosnik do incbin'a lub zdefiniowanej w kodzie tablicy.
Zapisane
dr00id88
Gość
« Odpowiedz #39 : Październik 04, 2008, 19:42:26 »

Dobra, juz opanowalem BGR, jest tak jak powinien:)

Jak cos etykietka na BGR, moze sie komus przyda:

LoadNT1:

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

LoadMap:

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

   RTS


NameTable1 - oczywiscie odnosnik do incbin'a lub zdefiniowanej w kodzie tablicy.

Krótko mowiąc: gdy potrzebujesz wczytac coś co ma więcej niż 256 elementów wykorzystujesz indirect addressing. A swoją drogą, bo widzę że jeszcze nie probowales, staraj się wczytywac sprite'y/tile'e tuz po przerwaniu wywolanym VBlankiem, wtedy grafika nie bedzie sie pieprzyla, a i nawet plynny efekt mozna uzyskac.
Zapisane
Strony: 1 [2] 3 4 ... 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.081 sekund z 19 zapytaniami.