Marca 28, 2024, 11:29:40
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
...
9
10
[
11
]
« poprzedni
następny »
Drukuj
Autor
Wątek: Programowanie Nes'a (procesora 6502) (Przeczytany 78596 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
Mejs
Chorąży
Offline
Wiadomości: 196
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #200 :
Stycznia 27, 2015, 19:04:50 »
Siema, uczę się assemblera z tutka Nerdy Nights i utknąłem delikatnie na czwartym tygodniu.
Kod:
.inesprg 1 ; 1x 16KB PRG code
.ineschr 1 ; 1x 8KB CHR data
.inesmap 0 ; mapper 0 = NROM, no bank swapping
.inesmir 1 ; background mirroring
;;;;;;;;;;;;;;;
.bank 0
.org $C000
RESET:
SEI ; disable IRQs
CLD ; disable decimal mode
LDX #$40
STX $4017 ; disable APU frame IRQ
LDX #$FF
TXS ; Set up stack
INX ; now X = 0
STX $2000 ; disable NMI
STX $2001 ; disable rendering
STX $4010 ; disable DMC IRQs
vblankwait1: ; First wait for vblank to make sure PPU is ready
BIT $2002
BPL vblankwait1
clrmem:
LDA #$00
STA $0000, x
STA $0100, x
STA $0300, x
STA $0400, x
STA $0500, x
STA $0600, x
STA $0700, x
LDA #$FE
STA $0200, x ;move all sprites off screen
INX
BNE clrmem
vblankwait2: ; Second wait for vblank, PPU is ready after this
BIT $2002
BPL vblankwait2
; ************** NEW CODE ****************
LoadPalettes:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$3F
STA $2006 ; write the high byte of $3F00 address
LDA #$00
STA $2006 ; write the low byte of $3F00 address
LDX #$00
LoadPalettesLoop:
LDA palette, x ;load palette byte
STA $2007 ;write to PPU
INX ;set index to next byte
CPX #$20
BNE LoadPalettesLoop ;if x = $20, 32 bytes copied, all done
SPRAJT1:
LDA #$80
STA $0200 ; put sprite 0 in center ($80) of screen vert
LDA #$80
STA $0203 ; put sprite 0 in center ($80) of screen horiz
LDA #$01
STA $0201 ; tile number = 1
LDA #$01
STA $0202 ; color = 0, no flipping
LDA #%10000000 ; enable NMI, sprites from Pattern Table 0
STA $2000
LDA #%10010000 ; enable sprites
STA $2001
LDA #$00
SPRAJT2:
LDA #$AA
STA $0204 ; put sprite 0 in center ($80) of screen vert
LDA #$10
STA $0207 ; put sprite 0 in center ($80) of screen horiz
LDA #$00
STA $0205 ; tile number = 0
LDA #$14
STA $0206 ; color = 0, no flipping
JMP SPRAJT1
NMI:
LDA #$00
STA $2003 ; set the low byte (00) of the RAM address
LDA #$02
STA $4014 ; set the high byte (02) of the RAM address, start the transfer
RTI ; return from interrupt
;;;;;;;;;;;;;;
.bank 1
.org $E000
palette:
.db $0F,$31,$32,$33,$0F,$35,$36,$37,$0F,$39,$3A,$3B,$0F,$3D,$3E,$0F
.db $0F,$1C,$15,$14,$0F,$02,$38,$3C,$0F,$1C,$15,$14,$0F,$02,$38,$3C
.org $FFFA ;first of the three vectors starts here
.dw NMI ;when an NMI happens (once per frame if enabled) the
;processor will jump to the label NMI:
.dw RESET ;when the processor first turns on or is reset, it will jump
;to the label RESET:
.dw 0 ;external interrupt IRQ is not used in this tutorial
;;;;;;;;;;;;;;
.bank 2
.org $0000
.incbin "mario.chr" ;includes 8KB graphics file from SMB1
No i jaki mam problem? Ładnie wyświetla mi sprajty tam gdzie chce ale po załadowaniu %10010000 w adres $2001 kolor tła nie zmienia się.
W dodatku nie potrafię zmienić koloru sprajtów, wpisuje różne wartości w $0206 i $0202 i tylko przy $01 odwraca mi kolory, innego efektu nie uzyskałem.
Link do tutka:
http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=6082
Zapisane
Koks
Major
Offline
Wiadomości: 580
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #201 :
Stycznia 27, 2015, 19:42:34 »
Cytat: Mejs Stycznia 27, 2015, 19:04:50
po załadowaniu %10010000 w adres $2001 kolor tła nie zmienia się.
Może dlatego, że tło nie jest wyświetlane?
Cytat: Mejs Stycznia 27, 2015, 19:04:50
wpisuje różne wartości w $0206 i $0202 i tylko przy $01 odwraca mi kolory
W drugiej cyfrze (szesnastkowo) jest sens ustawiać tylko 0-3, poza tym pierwsze dwie palety są identyczne z drugimi dwiema:
Cytat: Mejs Stycznia 27, 2015, 19:04:50
.db $0F,$1C,$15,$14,$0F,$02,$38,$3C,$0F,$1C,$15,$14,$0F,$02,$38,$3C
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
Mejs
Chorąży
Offline
Wiadomości: 196
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #202 :
Stycznia 27, 2015, 21:06:05 »
Dziękuję Koksu! Dzięki Twoim poradom na czacie udało mi się zrobić prostą animację. Sprite patroluje obszar 10 pikseli.
Cytuj
POZYCJE: ;pozycje początkowe
LDA #$80
STA $0505
STA $0506
STA $0502
JMP SPRAJT1
MAGIA: ;program idący w góre
LDX $0506
DEX
CPX #$80 ;sprawdzamy czy ludzik wrócił na miejsce
BEQ RESET
STX $0506
SPRAJT1:
LDA $0506
STA $0200 ; put sprite 0 in center ($80) of screen vert
LDA $0502
STA $0203 ; put sprite 0 in center ($80) of screen horiz
LDA #$01
STA $0201 ; tile number = 1
LDA #$00
STA $0202 ; color = 0, no flipping
LDA #%10010000 ; enable NMI, sprites from Pattern Table 0
STA $2000
LDA #%01010000 ; enable sprites
STA $2001
LDA #$00
JMP SPRAJT1
NMI:
LDA #$00
STA $2003
LDA #$02
STA $4014
LDA $0505
CMP #$90 ; sprawdzamy czy doszedł do dolnej granicy
BEQ MAGIA
INC $0505 ; jeśli nie, przesuwamy go w dół
LDA $0505
«
Ostatnia zmiana: Stycznia 27, 2015, 22:31:50 wysłane przez Mejs
»
Zapisane
1990in1
Kapitan
Offline
Wiadomości: 309
Gut
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #203 :
Października 28, 2015, 23:44:08 »
Co roku na famiconach są prezentowane (czasem HWowe), Koks ma w podpisie tyż.
Zapisane
"Znaczy kolego rozumiem, że ty sobie tutaj żarty robisz, prawda?" S.King
Dizzy9
Nadworny programista.
Kapitan
Offline
Wiadomości: 351
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #204 :
Listopada 13, 2015, 22:48:06 »
Gdyby ktoś był zainteresowany, to podaję link to kodu źródłowego który napisałem dla siudyma do nauki. Myślę że można się z kodu nieco nauczyć....mamy wykrywanie kolizji między obiektami, wykrywanie kolizji z tłem, sposób an obsługę obiektów, wczytywanie danych z tablic pointerów, obsługa pada itp itd.
Grafikę wykonał Siudym (obecnie "sdm" na tym forum).
https://dl.dropboxusercontent.com/u/1309313/NES%20Proj/Engine/a_e2.rar
«
Ostatnia zmiana: Grudnia 10, 2015, 14:03:25 wysłane przez Dizzy9
»
Zapisane
ramagus
Szeregowy
Offline
Wiadomości: 8
Odp: Programowanie Nes'a (procesora 6502)
«
Odpowiedz #205 :
Grudnia 19, 2016, 14:55:24 »
wznowienie książki o assemblerze 6502 dla atari, jak pisał siudym przyda się w programowaniu na Nes'a i pegasusa, nakład ograniczony śpieszcie się!
http://allegro.pl/show_item.php?item=6648915659&snapshot=MjAxNi0xMi0xOVQwNToyNTozMVo7YnV5ZXI7ZjIwMDA3MmQ1NzkzNjM3MTAwN2E4NjEyOGU0YThjZTY2ZmVjM2Y3ZWFiNmY2NmY0ZTU2YzFhMDNiYWVhNjAzMg==
EDIT:
Jest też ebook po angielsku w Google Play Store, chyba za 19.99 USD. Uczy programowania gier w assemblerze i C i jest zintegrowany ze środowiskiem programistycznym na stronie
https://8bitworkshop.com
.
Tytuł ebooka - "Making Games for the NES" - autor Steven Hugg
«
Ostatnia zmiana: Lipca 16, 2023, 05:16:44 wysłane przez ramagus
»
Zapisane
Strony:
1
...
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...