Marca 29, 2024, 00:58:18 *
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]
  Drukuj  
Autor Wątek: Zegar szachowy/silnik graficzny zmieniający całe nametable po dwie linijki  (Przeczytany 2093 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
Koks
Major
*****
Offline Offline

Wiadomości: 580



« : Stycznia 07, 2013, 15:16:30 »

W tym kodzie użyłem tego samego sposobu wyświetlania grafiki jak w silniku 3D, który pokazywałem na zlocie. Podczas jednego NMI dwie linijki z bufora w pamięci są kopiowane do nametable. W Nestopii bez wyłączania renderingu podczas jednego NMI da się podmienić 2 linijki (NTSC) lub 9 (PAL), nie wiem, jak jest na prawdziwym sprzęcie.

Instrukcja obsługi: Najpierw ustawia się strzałkami czas dodatkowy (japońskie byo-yomi). Przed dwukropkiem jest liczba okresów (0 - tylko czas podstawowy), a po nim długość okresu w sekundach. Zatwierdzamy startem. Następnie w podobny sposób ustawia się czas podstawowy (minuty : sekundy), może być zerowy, wtedy jest tylko czas dodatkowy jak w chińskich szachach z bobasem.
Podczas odliczania: start - pauza, strzałki - przycisk lewego gracza, A,B - przycisk prawego gracza.

Czas jest mierzony prawidłowo przy 60 Hz. Dla 50 Hz można zmienić #59 na #49 w linijkach 1185 i 1193 (albo ustawiać odpowiednio mniej czasu).
Można łatwo rozdzielić sterowanie na dwa pady zmieniając coś w pobliżu linii 1086.

Kod zawiera nagłówek dla emulatora i nie ma żadnych include'ów (asm6):
Kod: (szachowy.asm)
lewygracz equ 0 ;zmienne
liczy equ 1
lewesekundy equ 2 ;dwie cyfry BCD
leweminuty equ 3
lewebyo equ 4
lewebyox equ 5
prawesekundy equ 6
praweminuty equ 7
prawebyo equ 8
prawebyox equ 9
linia equ 10
wskaznik equ 11 ;uzywany w NMI
wskaznik2 equ 13
p1 equ 15 ;obecny stan pada
p1o equ 23 ;poprzedni stan pada
p2 equ 31
p2o equ 39
lewyzegarek equ 47
prawyzegarek equ 48
miganie equ 49
comiga equ 50
sekundamniej equ 51
z equ 52
bufor equ $400

hex 4E 45 53 1A 01 00 00 00 00 00 00 00 00 00 00 00 ;iNES header

org $c000
vpoint dw $2000, $2040, $2080, $20c0, $2100, $2140, $2180, $21c0, $2200, $2240, $2280, $22c0, $2300, $2340, $2380 ;adresy w nametable co dwie linijki
poczatek db 1, 1, $59, 3, $30, 0, 2, 4, $30, 0 ;wartosci poczatkowe na zegarze
paleta hex 06 06 06 2a 06 06 06 2a 06 06 06 2a 06 06 06 2a
cyfry db 1,1,1, 1,0,1, 1,0,1, 1,0,1, 1,1,1 ,0
db 0,0,1, 0,0,1, 0,0,1, 0,0,1, 0,0,1 ,0 ;cyferki 3x5 px. Dodano po zerze dla latwiejszego indeksowania
db 1,1,1, 0,0,1, 1,1,1, 1,0,0, 1,1,1 ,0
db 1,1,1, 0,0,1, 1,1,1, 0,0,1, 1,1,1 ,0
db 1,0,1, 1,0,1, 1,1,1, 0,0,1, 0,0,1 ,0
db 1,1,1, 1,0,0, 1,1,1, 0,0,1, 1,1,1 ,0
db 1,1,1, 1,0,0, 1,1,1, 1,0,1, 1,1,1 ,0
db 1,1,1, 0,0,1, 0,0,1, 0,0,1, 0,0,1 ,0
db 1,1,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ,0
db 1,1,1, 1,0,1, 1,1,1, 0,0,1, 1,1,1 ,0
db 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 ,0 ;dziesiata cyfra - spacja
db 1,0,1, 1,0,1, 0,1,0, 1,0,1, 1,0,1, 0 ;jedenasta cyfra -X
cyfryx db 2, 6, 12, 16, 13, 17, 23, 27 ;Pozycje elementow wyswietlacza
cyfryy db 6, 6, 6, 6, 17, 17, 17, 17
dwukropkix db 10, 10, 21, 21
dwukropkiy db 7, 9, 18, 20

rysujcyfre: ;Argumenty: A cyfra, XY wspolrzedne
pha
tya
lsr
lsr
lsr
clc
adc #4
sta wskaznik2+1
tya
asl
asl
asl
asl
asl
sta wskaznik2
txa
clc
adc wskaznik2
sta wskaznik2
pla
asl
asl
asl
asl
tax
ldy #0
-
lda cyfry, x
inx
sta (wskaznik2), y
iny
lda cyfry, x
inx
sta (wskaznik2), y
iny
lda cyfry, x
inx
sta (wskaznik2), y
tya
clc
adc #30
tay
cpy #160
bne -
rts

rysujpixel: ;Argumenty: A wartosc, XY wspolrzedne. Nie psuje A.
pha
tya
lsr
lsr
lsr
clc
adc #4
sta wskaznik2+1
tya
asl
asl
asl
asl
asl
sta wskaznik2
txa
clc
adc wskaznik2
sta wskaznik2
pla
ldy #0
sta (wskaznik2), y
rts

wyswietlanie:

ldx cyfryx ;cyfry i dwukropek lewego gracza
ldy cyfryy
lda comiga
and #%10000000
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda leweminuty
lsr
lsr
lsr
lsr
++
jsr rysujcyfre
ldx cyfryx+1
ldy cyfryy+1
lda comiga
and #%01000000
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda leweminuty
and #15
++
jsr rysujcyfre
ldx cyfryx+2
ldy cyfryy+2
lda comiga
and #%00100000
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda lewesekundy
lsr
lsr
lsr
lsr
++
jsr rysujcyfre
ldx cyfryx+3
ldy cyfryy+3
lda comiga
and #%00010000
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda lewesekundy
and #15
++
jsr rysujcyfre
ldx dwukropkix
ldy dwukropkiy
lda miganie
and #2
lsr
and lewygracz
and liczy
eor #1
jsr rysujpixel
ldx dwukropkix+1
ldy dwukropkiy+1
jsr rysujpixel

ldx cyfryx+4 ;cyfry i dwukropek prawego gracza
ldy cyfryy+4
lda comiga
and #%00001000
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda praweminuty
lsr
lsr
lsr
lsr
++
jsr rysujcyfre
ldx cyfryx+5
ldy cyfryy+5
lda comiga
and #%00000100
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda praweminuty
and #15
++
jsr rysujcyfre
ldx cyfryx+6
ldy cyfryy+6
lda comiga
and #%00000010
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda prawesekundy
lsr
lsr
lsr
lsr
++
jsr rysujcyfre
ldx cyfryx+7
ldy cyfryy+7
lda comiga
and #%00000001
beq +
lda miganie
and #2
beq +
lda #10
jmp ++
+
lda prawesekundy
and #15
++
jsr rysujcyfre
ldx dwukropkix+2
ldy dwukropkiy+2
lda miganie
and #2
lsr
and liczy
eor #1
ora lewygracz
jsr rysujpixel
ldx dwukropkix+3
ldy dwukropkiy+3
jsr rysujpixel

rts

zmniejszbcd:
sec
sbc #1
sta z
and #15
eor #15
bne +
lda z
and #%11111001
rts
+
lda z
rts

reset:

lda #0
tax
-
sta 0, x
sta $100, x
sta $200, x
sta $300, x
sta $400, x
sta $500, x
sta $600, x
sta $700, x ;czyszczenie pamieci
inx
cpx #0
bne -

-
lda poczatek, x ;wartosci poczatkowe
sta 0, x
inx
cpx #10
bne -

lda #0
sta $2000
sta $2001 ;wylaczenie NMI i renderingu

lda $2002
lda #0
sta $2006
sta $2006 ;zapis do CHR-RAM na kartridzu
ldx #0
-
sta $2007
inx
cpx #16
bne - ;pierwszy tiles - kolor ,,0"

ldx #0
lda #$ff ;drugi tiles - kolor ,,3"
-
sta $2007
inx
cpx #16
bne -

lda #$3f ;ladowanie palety
sta $2006
lda #0
sta $2006
ldx #0
-
lda paleta, x
sta $2007
inx
cpx #16
bne -

lda #%10000000
sta $2000
lda #%00001010
sta $2001 ;brak renderingu spriteow

lda #1
ldx #3
ldy #23
jsr rysujpixel
ldx #4
ldy #23
jsr rysujpixel ;stale elementy krajobrazu

ustawianie:
lda #$3a ;nie chce mi sie zmieniac procedury wyswietlania, najpierw ustawianie byoyomi
sta leweminuty
sta praweminuty
lda #$30
sta lewesekundy
sta prawesekundy
lda #128
sta comiga
ustawbyoyomi:
lda comiga
cmp #%10000000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda leweminuty
clc
adc #16
sta leweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda leweminuty
sec
sbc #16
sta leweminuty
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%00000001
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%00100000
sta comiga
lda #1
sta p1o+7
++
+

lda comiga
cmp #%00100000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda lewesekundy
clc
adc #16
sta lewesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda lewesekundy
sec
sbc #16
sta lewesekundy
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%10000000
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%00010000
sta comiga
lda #1
sta p1o+7
++
+

lda comiga
cmp #%00010000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc lewesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec lewesekundy
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%00100000
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%00001000
sta comiga
lda #1
sta p1o+7
++
+

lda comiga
cmp #%00001000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda praweminuty
clc
adc #16
sta praweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda praweminuty
sec
sbc #16
sta praweminuty
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%00010000
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%00000010
sta comiga
lda #1
sta p1o+7
++
+

lda comiga
cmp #%00000010
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda prawesekundy
clc
adc #16
sta prawesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda prawesekundy
sec
sbc #16
sta prawesekundy
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%00001000
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%00000001
sta comiga
lda #1
sta p1o+7
++
+

lda comiga
cmp #%00000001
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc prawesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec prawesekundy
lda #1
sta p1o+5
++
lda p1+6 ;lewo
beq ++
lda p1o+6
bne ++
lda #%00000010
sta comiga
lda #1
sta p1o+6
++
lda p1+7 ;prawo
beq ++
lda p1o+7
bne ++
lda #%10000000
sta comiga
lda #1
sta p1o+7
++
+

lda p1+3 ;start
beq +
lda p1o+3
bne +
lda leweminuty
lsr
lsr
lsr
lsr
sta lewebyox
lda lewesekundy
sta lewebyo
lda praweminuty
lsr
lsr
lsr
lsr
sta prawebyox
lda prawesekundy
sta prawebyo
lda #$10
sta leweminuty
sta praweminuty
lda #0
sta lewesekundy
sta prawesekundy
lda #1
sta p1o+3
jmp ustawczas
+
jsr wyswietlanie
jmp ustawbyoyomi

ustawczas:
lda comiga
cmp #%10000000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda leweminuty
clc
adc #16
sta leweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda leweminuty
sec
sbc #16
sta leweminuty
lda #1
sta p1o+5
++
+

lda comiga
cmp #%01000000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc leweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec leweminuty
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00100000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda lewesekundy
clc
adc #16
sta lewesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda lewesekundy
sec
sbc #16
sta lewesekundy
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00010000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc lewesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec lewesekundy
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00001000
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda praweminuty
clc
adc #16
sta praweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda praweminuty
sec
sbc #16
sta praweminuty
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00000100
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc praweminuty
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec praweminuty
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00000010
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
lda prawesekundy
clc
adc #16
sta prawesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
lda prawesekundy
sec
sbc #16
sta prawesekundy
lda #1
sta p1o+5
++
+

lda comiga
cmp #%00000001
bne +
lda p1+4 ;gora
beq ++
lda p1o+4
bne ++
inc prawesekundy
lda #1
sta p1o+4
++
lda p1+5 ;dol
beq ++
lda p1o+5
bne ++
dec prawesekundy
lda #1
sta p1o+5
++
+

lda p1+6 ;lewo
beq +
lda p1o+6
bne +
lda comiga
asl
bne ++
lda #1
++
sta comiga
lda #1
sta p1o+6
+

lda p1+7 ;prawo
beq +
lda p1o+7
bne +
lda comiga
lsr
bne ++
lda #128
++
sta comiga
lda #1
sta p1o+7
+

lda p1+3 ;start
beq +
lda p1o+3
bne +
lda #1
sta p1o+3
lda #0
sta comiga
jmp odliczanie
+
jsr wyswietlanie
jmp ustawczas

odliczanie:
lda leweminuty ;koniec czasu podstawowego
and #15
cmp #10
beq +
lda leweminuty
bne +
lda lewesekundy
bne +
lda lewebyox
bne ++
jmp lewykoniec
++
asl
asl
asl
asl
ora #10
sta leweminuty
lda lewebyo
sta lewesekundy
+

lda praweminuty ;koniec czasu podstawowego
and #15
cmp #10
beq +
lda praweminuty
bne +
lda prawesekundy
bne +
lda prawebyox
bne ++
jmp prawykoniec
++
asl
asl
asl
asl
ora #10
sta praweminuty
lda prawebyo
sta prawesekundy
+

lda sekundamniej ;Odejmowanie jednej sekundy
beq +
lda liczy
beq +
lda lewygracz
beq ++
lda lewesekundy
jsr zmniejszbcd
sta lewesekundy
lda #128
bit lewesekundy
beq +++
lda leweminuty ;sprawdzanie byoyomi
and #15
cmp #10
beq +++
lda #$59
sta lewesekundy
lda leweminuty
jsr zmniejszbcd
sta leweminuty
+++
lda #0
sta sekundamniej
jmp +
++
lda prawesekundy
jsr zmniejszbcd
sta prawesekundy
lda #128
bit prawesekundy
beq +++
lda praweminuty
and #15
cmp #10
beq +++
lda #$59
sta prawesekundy
lda praweminuty
jsr zmniejszbcd
sta praweminuty
+++
lda #0
sta sekundamniej
+

lda leweminuty ;koniec czasu podstawowego
and #15
cmp #10
beq +
lda leweminuty
bne +
lda lewesekundy
bne +
lda lewebyox
bne ++
jmp lewykoniec
++
asl
asl
asl
asl
ora #10
sta leweminuty
lda lewebyo
sta lewesekundy
+

lda praweminuty ;koniec czasu podstawowego
and #15
cmp #10
beq +
lda praweminuty
bne +
lda prawesekundy
bne +
lda prawebyox
bne ++
jmp prawykoniec
++
asl
asl
asl
asl
ora #10
sta praweminuty
lda prawebyo
sta prawesekundy
+

lda leweminuty ;koniec czasu dodatkowego
and #15
cmp #10
bne +
lda lewesekundy
bne +
dec lewebyox
bne ++
jmp lewykoniec
++
lda leweminuty
sec
sbc #16
sta leweminuty
lda lewebyo
sta lewesekundy
+

lda praweminuty ;koniec czasu dodatkowego
and #15
cmp #10
bne +
lda prawesekundy
bne +
dec prawebyox
bne ++
jmp prawykoniec
++
lda praweminuty
sec
sbc #16
sta praweminuty
lda prawebyo
sta prawesekundy
+

lda p1+3 ;pauzowanie startem
beq +
lda p1o+3
bne +
lda liczy
eor #1
sta liczy
lda #1
sta p1o+3
+

lda p1+4 ;OR wszystkich strzalek, lewy wciska. Pominieto jednoczesne wciskanie przez obu graczy i uszkodzenie pada
ora p1+5
ora p1+6
ora p1+7
beq +
lda #0
sta lewygracz
lda praweminuty
and #15
cmp #10
bne +
lda prawebyo
sta prawesekundy
+

lda p1 ;OR A i B, prawy wciska. Pominieto jednoczesne wciskanie przez obu graczy i uszkodzenie pada
ora p1+1
beq +
lda #1
sta lewygracz
lda leweminuty
and #15
cmp #10
bne +
lda lewebyo
sta lewesekundy
+

jsr wyswietlanie
jmp odliczanie

lewykoniec:
lda #11
ldx #22
ldy #6
jsr rysujcyfre
jmp koniec

prawykoniec:
lda #11
ldx #6
ldy #17
jsr rysujcyfre

koniec:
jsr wyswietlanie
jmp koniec

nmi:
php ;zachowanie flag i rejestrow
pha
tya
pha
txa
pha

lda #0
sta $2000

ldx #0
-
lda p1, x
sta p1o, x
lda p2, x
sta p2o, x
inx
cpx #8
bne -
lda #1 ;pady
sta $4016
lda #0
sta $4016
tax
-
lda $4016
and #1
sta p1, x
lda $4017
and #1
sta p2, x
inx
cpx #8
bne -

inc miganie
lda liczy
beq ++
lda lewygracz
beq +
dec lewyzegarek
jmp ++
+
dec prawyzegarek
++
lda lewyzegarek
cmp #255
bne +
lda #1
sta sekundamniej
lda #59
sta lewyzegarek
+
lda prawyzegarek
cmp #255
bne +
lda #1
sta sekundamniej
lda #59
sta prawyzegarek
+

lda $2002
ldx linia
inx
lda vpoint, x
sta $2006
dex
lda vpoint, x
sta $2006
txa
lsr
lsr
lsr
clc
adc #4
sta wskaznik+1 ;obliczane przez kompilator
txa
asl
asl
asl
asl
asl
sta wskaznik
ldy #0
-
lda (wskaznik), y
sta $2007
iny
cpy #64
bne -

inc linia
inc linia
lda linia
cmp #30
bne +
lda #0
sta linia
+

lda #0
sta $2005 ;scrolling na 0
sta $2005

lda #%10000000
sta $2000

pla ;przywrocenie flag i rejestrow
tax
pla
tay
pla
plp
irq:
rti

org $fffa
dw nmi
dw reset
dw irq

edit:
Brak mappera, 16kB PRG i jakiś CHR-RAM.
Dla leniwych już skompilowane: http://www.speedyshare.com/y2cvx/szachowy.nes
edit2:
Przy używaniu ukazał się błąd, kiedy naciśnie się przycisk podczas tury przeciwnika, resetuje się mu czas dodatkowy. Na razie nie chce mi się tego poprawiać (nie przeszkadza to specjalnie w grze).
« Ostatnia zmiana: Stycznia 07, 2013, 22:06:15 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
Dizzy9
Nadworny programista.
Kapitan
****
Offline Offline

Wiadomości: 351



WWW
« Odpowiedz #1 : Stycznia 07, 2013, 22:49:23 »

1.Czemu robisz aktualizację NT(Nametable) co każdą klatkę? Nie lepiej jest robić tylko kiedy jest ona potrzebna?
2.Czemu masz w NMI obliczenia inne niż tylko te konieczne? Tongue
3.CZEMU masz w NMI wyciąganie danych KEYPAD'a? :O

Cytuj
bez wyłączania renderingu podczas jednego NMI da się podmienić 2 linijki (NTSC) lub 9 (PAL)
Haha, nie.
To że nie napisałeś "W moim demie tak jest" daje mi spore pole do op***olenia Tongue
Jeśli nie ma się w kodzie zbędnych pierdół jak Ty to można i rysować 7 linijek w NTSC, używając pętli(I zostanie miejsce w czasie na wysłanie spritów do OAM!). Lepiej jeszcze wyjdziesz jeśli zrezygnujesz z pętli i użyjesz serii "lda adres, sta $2007"(np. jak Might and Magic)...
A gdybyś się pokusił nawet na "PLA sta $2007" to już całkiem dużo można zapisać(Jak np.Battletoads) Tongue
« Ostatnia zmiana: Stycznia 07, 2013, 22:51:02 wysłane przez Dizzy9 » Zapisane

Koks
Major
*****
Offline Offline

Wiadomości: 580



« Odpowiedz #2 : Stycznia 08, 2013, 12:31:48 »

He, nie postarałem się. Przed chwilą zauważyłem, że w jednej pętli jest dwa razy to samo.
1. Może i lepiej, przepisałem to ze swojego starego kodu, który miał wyświetlać "płynny" obraz.
2. Rzeczywiście, można by zastosować taką samą tablicę wskaźników dla bufora jak dla NT.
3. Sam nie wiem. Tak jest wygodniej, nie trzeba wszędzie wsadzać JSR  crazy
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
Marek
Gość
« Odpowiedz #3 : Stycznia 08, 2013, 19:09:47 »

Panowie, fajnie, że coś działacie.

Myśleliście może, aby uskutecznić jakiekolwiek demo na jubileuszowy FamiCON ?
Zapisane
Dizzy9
Nadworny programista.
Kapitan
****
Offline Offline

Wiadomości: 351



WWW
« Odpowiedz #4 : Stycznia 08, 2013, 19:47:53 »

Pomysłu na demo nie mam jakoś.
A gra zlotowa się jakoś robi powoli.
Ja mogę chętnie się pisać na jakąś współpracę przy grze czy coś.
Zapisane

Strony: [1]
  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.043 sekund z 19 zapytaniami.