Psst.. new poll here.
[email protected] web/email now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!
Paste
Pasted as CSS by Denine ( 14 years ago )
;;--- CODE START ---;;
.inesprg 16
.inesmap 24
.inesmir 1
.ineschr 0
; Common includes
.include "./common/NES.inc"
USE_VRC6 = 1 ; Enable this to include VRC6 code
; Zero page variables
.ZP
zpJoy1Status: .ds 1 ; Status of first joystick
zpPreviousJoy1Status: .ds 1 ; Previous status of first joystick
zpNmiCount: .ds 1 ; This reserves 1 byte for nmi counter
zpPpuCtrlFlags: .ds 1 ; backup state of PPU_CTRL flags
zpPpuMaskFlags: .ds 1 ; backup state of PPU_MASK flags
zpCopySrcAdr: .ds 2 ; Temporary address of data
.CODE
.bank 0
.org $0020
addrLO: .db 0 ; make "variable"s for our indirect addressing
addrHI: .db 0
seed: .db 0 ;Do losowania spacjala
ID_SPECIAL .db 0 ;ID grafiki specjala spadającego...Ustawia się go w OPCJE
current_bank: .db 0
current_bankC: .db 0
current_bank_Back: .db 0 ;Żeby wiedziało do jakiego banku wrócić po wczytaniu grafiki...
.org $0180
X_Specjal: .db 0
Y_Specjal: .db 0
Lock_Special: .db 0 ;Sprawia że losowanie liczby nie odbywa się jak specjal już zostanie wylosowany
SP_ACTIVE: .db 0 ;Czy i jaki special aktywny
.org $0720
Nacisn_guzik: .db 0
Trzyma_guzik: .db 0
Losowa_kropla: .db 0
Hero_Y: .db 0
Hero_X: .db 0
.org $8000
LevPointers:
.dw Lev1, Lev2, Title
OpisyPointers:
.dw Dizzy_Opis, Daisy_Opis, Denzil_Opis
Start:
lda current_bank
sta current_bank_Back
ldx #$00 ;Numer Grafiki
lda #$02 ;Numer banku z grafiką
jsr Load_GFX
Czysc_RAM:
ldx #$00
jsr Music_Init
Title_Start:
lda #$02
sta $150 ;Daj ID mapy do załadowania i skocz do ładowania tła
jsr Laduj_Mapa
lda $7F4
bne LoadAttribute
plik2paleta:
lda tilepal, X ; use a simple load of 32 bytes.
inx
sta $6ff,X
cpx #32
bne plik2paleta
jsr Laduj_Paleta
inc $7F4
LoadAttribute:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$23
STA $2006 ; write the high byte of $23C0 address
LDA #$C0
STA $2006 ; write the low byte of $23C0 address
LDX #$00 ; start out at 0
LoadAttributeLoop:
LDA Atryb1,x ; load data from address (attribute + the value in x)
STA $2007 ; write to PPU
INX ; X = X + 1
CPX #$8 ; Compare X to hex $08, decimal 8 - copying 8 bytes
BNE LoadAttributeLoop
LDA #010000 ;enable NMI, sprites from Pattern 0, background from Pattern 1
STA $2000
LDA #011110 ; enable sprites, enable background
STA $2001
LDA #$00
STA $2005
STA $2005
; Setup the PPU
lda #001000
sta $2000
lda #011010
sta $2001
lda #PPU_CTRL_NMI
sta zpPpuCtrlFlags ;To musi być żeby muzyka nie zaczynała się od nowa w tej klatce
sta PPU_CTRL
cos
jsr Czysc_Sprity
;-------------------------------
Title_START
ldx #$00
TXA
;-------------------------------
Ustaw_Strzalka:
lda #$80
sta $101
;-------------------------------
Dodatkowe:
ldx #$00 ;Ustaw 00 dla X przed wczytywaniem spritów
lda #$00 ;Ustaw 00 dla licznika spritów
sta $7F2
; and yes, it MUST go in that order.
;--------------------------------
Strzalka:
lda #$02
sta $7F0 ;Atryb
ldy $101 ;Y
ldx #$5d ;X
lda #$0A ;ID
jsr Rys1
;*************************
sprity_textu:
infinite: ; a label to start our infinite loop
;----------------------------------------------
jsr KEYPAD
;-------------------------------------------------------------------------------------------
lda Nacisn_guzik
cmp #$20 ;Sprawdza czy SELECT naciśnięty
beq Select1
jmp STARTREAD
Select1:
lda Trzyma_guzik
beq Select2
jmp Dodatkowe
Select2:
lda $101
cmp #$A0
beq UstawXStrzalki
clc
adc #$10 ;Zwiększ Y Strzałki o 10
sta $101
jmp KontSELECT
UstawXStrzalki:
lda #$80
sta $101
KontSELECT
inc Trzyma_guzik
;---------------------------------------------------------------------------------------------
STARTREAD:
lda Nacisn_guzik
cmp #$80 ;Sprawdza czy guzik A naciśnięty
beq START1
jmp Dodatkowe
START1:
lda $101
cmp #$A0
beq Ekran_Autorzy_skocz
cmp #$90
beq Ekran_OPCJE_skocz
cmp #$80
beq GRA_skocz1
jmp Dodatkowe
Ekran_Autorzy_skocz:
inc Trzyma_guzik
jmp Ekran_Autorzy
Ekran_OPCJE_skocz:
inc Trzyma_guzik
jmp Ekran_OPCJE
GRA_skocz1:
lda Trzyma_guzik
beq GRA2
jmp Dodatkowe
GRA2:
inc Trzyma_guzik
jmp GRA
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\AUTORZY\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Ekran_Autorzy:
jsr Czysc_Sprity
jsr Rys.Sprity
jsr CZYSC_PPU
LoadBackground2:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$20
STA $2006 ; write the high byte of $2000 address
LDA #$00
STA $2006 ; write the low byte of $2000 address
lda #low(ourMap2)
sta addrLO
Lda #high(ourMap2) ; start out at 0
sta addrHI
ldx #4
ldy #0
LoadBackgroundLoop2:
LDA [addrLO], y ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
BNE LoadBackgroundLoop2 ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
inc addrHI
dex
bne LoadBackgroundLoop2
jsr Laduj_Paleta
LDA #010000 ;enable NMI, sprites from Pattern 0, background from Pattern 1
STA $2000
LDA #011110 ; enable sprites, enable background
STA $2001
LDA #$00
STA $2005
STA $2005
; Setup the PPU
lda #001000
sta $2000
lda #011010
sta $2001
lda #PPU_CTRL_NMI
sta zpPpuCtrlFlags ;To musi być żeby muzyka nie zaczynała się od nowa w tej klatce
sta PPU_CTRL
MAIN:
jsr KEYPAD
lda Nacisn_guzik
cmp #$80
beq Zapetl_Autorzy
jmp MAIN
Zapetl_Autorzy:
lda Trzyma_guzik
beq Zapetl_Autorzy2
jmp MAIN
Zapetl_Autorzy2:
jsr CZYSC_PPU
inc Trzyma_guzik
jmp Title_Start
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\OPCJE\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Ekran_OPCJE:
lda #001000
sta $2000 ;Wyczyść PPU
lda #000001
sta $2001
Odnow_OPIS:
jsr Laduj_Opisy
jsr Doczytaj_Mape
jsr Laduj_Paleta
LDA #010000 ;enable NMI, sprites from Pattern 0, background from Pattern 1
STA $2000
LDA #011110 ; enable sprites, enable background
STA $2001
LDA #$00
STA $2005
STA $2005
; Setup the PPU
lda #001000
sta $2000
lda #011010
sta $2001
lda #PPU_CTRL_NMI
sta zpPpuCtrlFlags ;To musi być żeby muzyka nie zaczynała się od nowa w tej klatce
sta PPU_CTRL
MAIN_OPCJE:
ldx #$00 ;Ustaw 00 dla X przed wczytywaniem spritów
lda #$00 ;Ustaw 00 dla licznika spritów
sta $7F2
SUB_OPCJE
Strzalka_OPCJE:
lda #$02
sta $7F0 ;Atryb
ldy $101 ;Y
ldx #$5d ;X
lda #$0A ;ID
jsr Rys1
;---------------------------------------
lda #$50
sta Hero_Y ;Ustaw Wysokość rysowanej postaci
lda #$6D
sta Hero_X ;Ustaw X Postaci
jsr Rys.Postac_STOP
Sprawdz_Akcesor_Postac:
lda $10A ;Sprawdź czy postać to Dizzy
cmp #$20
bne Vblank_Opcje
jsr Daisy_Wlosy_Stoi
;---------------------------------------
Vblank_Opcje:
lda Nacisn_guzik
bne waitblank2
lda #$00
sta Trzyma_guzik ;Zresetuj możliwość naciśnięcia guzika
;----------------------------------------------
waitblank2:
lda #$00 ; these lines tell $2003
sta $2003 ; to tell
lda #$00 ; $2004 to start
sta $2003 ; at $0000.
lda #$00
sta $02
jsr KEYPAD
;----------------------------------------------------------
POWRÓT_OPCJE:
lda $101
cmp #$90
beq Zmiana_Postac
lda $101
cmp #$A0
beq ZMIANA_SKIN
cmp #$B0
bne Przewijanie_OPCJE_SKOK
lda Nacisn_guzik
cmp #$80
bne Przewijanie_OPCJE_SKOK
jsr CZYSC_PPU
inc Trzyma_guzik
jmp Title_Start
Przewijanie_OPCJE_SKOK:
jmp Przewijanie_OPCJE
;----------------------------------------------------------
Zmiana_Postac:
lda Nacisn_guzik
cmp #$80
bne Przewijanie_OPCJE
lda Trzyma_guzik
bne Przewijanie_OPCJE
lda $10A
clc
adc #$20 ;Zwiększ ID postaci
sta $10A
inc $151 ;Zwiększ ID opisu postaci
lda $10A
cmp #$20
beq Daisy_Paleta
cmp #$40
beq Denzil_Paleta
jmp Wyjdz_zmiana_postaci
Daisy_Paleta:
lda #$0D
sta $719 ;Zmień Palete Akcesoria
lda #$17
sta $71A
lda #$07
sta $71B
jmp Wyjdz_zmiana_postaci
Denzil_Paleta:
lda #$64
sta ID_SPECIAL ;Ustaw nr. grafiki dla specjala Denzila
lda #$01
sta $716 ;Zmiań palete łap
jsr Denz_Paleta_Spec
lda #$01
sta $7F4 ;Ustaw by ekran początkowy nie wczytywał palety
lda #$03
sta $116 ;O ile ma zwiększyć wysokość postaci
Wyjdz_zmiana_postaci:
jsr Czysc_Sprity
inc Trzyma_guzik
jmp Ekran_OPCJE
;----------------------------------------------------------
ZMIANA_SKIN:
lda Nacisn_guzik
cmp #$80
bne Przewijanie_OPCJE
lda Trzyma_guzik
bne Przewijanie_OPCJE
lda #$05
sta $104
lda #$09
sta $316 ;Zmień palete łap i nóg
inc Trzyma_guzik
jmp Ekran_OPCJE
;----------------------------------------------------------
Przewijanie_OPCJE:
lda Nacisn_guzik
cmp #$20 ;Sprawdza czy SELECT naciśnięty
beq Select_Opcje1
jmp MAIN_OPCJE
Select_Opcje1:
lda Trzyma_guzik
beq Select_Opcje2
jmp MAIN_OPCJE
Select_Opcje2:
lda $101
cmp #$B0
beq UstawYStrzalki_Opcje
clc
adc #$10 ;Zwiększ Y Strzałki o 10
sta $101
jmp KontSELECT_Opcje
UstawYStrzalki_Opcje:
lda #$90
sta $101
KontSELECT_Opcje
inc Trzyma_guzik
;----------------------------------------------------------
jmp MAIN_OPCJE
;----------------------------------------
;---------------------------------------------------------------
Mapa_Startuje:
jsr Czysc_Sprity
jsr Rys.Sprity
jsr CZYSC_PPU
lda #$01 ;dźwięk "cisza"
jsr Music_Init
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$20
STA $2006 ; write the high byte of $2000 address
LDA #$00
STA $2006 ; write the low byte of $2000 address
ldx #$03
Laduj_Puste:
ldy #$00
Mapa_Start:
LDA #$0A ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
cpy #$80
BNE Mapa_Start ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
dex
bne Laduj_Puste
;..........................................................
Laduj_Plik:
lda $150 ;get the index
asl A;multiply by 2 because each address is 2 bytes
tax
lda LevPointers+0, x ;copy the low byte
sta addrLO
lda LevPointers+1, x ;copy the high byte
sta addrHI
ldy #$00
Ladujplik2:
LDA [addrLO], y ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
cpy #$A0
bne Ladujplik2
;............................................
ldx #$03
Laduj_Puste2:
ldy #$00
Mapa_Start2:
LDA #$0A ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
cpy #$8C
BNE Mapa_Start2 ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
dex
bne Laduj_Puste2
;..........................................
Atryb_Start_Mapa:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$23
STA $2006 ; write the high byte of $23C0 address
LDA #$C0
STA $2006 ; write the low byte of $23C0 address
LDX #$00 ; start out at 0
Atryb_Start_Mapa_Petla:
LDA #$00
STA $2007 ; write to PPU
INX ; X = X + 1
CPX #$30 ; Compare X to hex $08, decimal 8 - copying 8 bytes
BNE Atryb_Start_Mapa_Petla
;.........................................
LDA #010000 ;enable NMI, sprites from Pattern 0, background from Pattern 1
STA $2000
LDA #011110 ; enable sprites, enable background
STA $2001
LDA #$00
STA $2005
STA $2005
; Setup the PPU
lda #001000
sta $2000
lda #001000
sta $2001
Mapa_Start_Guzik
jsr KEYPAD
lda Nacisn_guzik
cmp #$80
beq Mapa_Start_Guzik2
jmp Mapa_Start_Guzik
Mapa_Start_Guzik2:
lda Trzyma_guzik
beq Mapa_Start_Guzik3
jmp Mapa_Start_Guzik
Mapa_Start_Guzik3:
inc Trzyma_guzik
rts
rts
;---------------------------------------------------------------
Laduj_Mapa:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$20
STA $2006 ; write the high byte of $2000 address
LDA #$00
STA $2006 ; write the low byte of $2000 address
lda $150 ;get the index
asl A;multiply by 2 because each address is 2 bytes
tax
lda LevPointers+0, x ;copy the low byte
sta addrLO
lda LevPointers+1, x ;copy the high byte
sta addrHI
ldx #4
ldy #0
LoadBackgroundLoop:
LDA [addrLO], y ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
BNE LoadBackgroundLoop ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
inc addrHI
dex
bne LoadBackgroundLoop
rts
;---------------------------------------------------------------
Laduj_Opisy:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$20
STA $2006 ; write the high byte of $2000 address
LDA #$00
STA $2006 ; write the low byte of $2000 address
lda $151 ;get the index
asl A;multiply by 2 because each address is 2 bytes
tax
lda OpisyPointers+0, x ;copy the low byte
sta addrLO
lda OpisyPointers+1, x ;copy the high byte
sta addrHI
ldx #4
ldy #0
LoadBackgroundOpisy:
LDA [addrLO], y ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
BNE LoadBackgroundOpisy ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
inc addrHI
dex
bne LoadBackgroundOpisy
rts
;---------------------------------------------------------------
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
.bank 1
.org $A000
Title: .incbin "Title.map" ;Mapa tła dla Titla
Title2: .incbin "Title.map" ;Mapa tła dla Titla
tilepal: .incbin "our.pal" ; a label for our pallete data
Yolkfolkpal: .incbin "Yolkfolk.pal" ; a label for our pallete data
ourMap2: .incbin "Autorzy.map" ;Mapa tła dla okienka "autorzy":D
ourMap3: .incbin "Opcje.map" ;Mapa tła dla okienka "Opcje":D
ourMap4: .incbin "Yolkfolk.map" ;Mapa Yolkfolku
Atryb1: .incbin "Title.at" ;Spis atrybutów dla Titla
Dizzy_Opis: .incbin "Opisy/DIZZY.txt"
Daisy_Opis: .incbin "Opisy/DAISY.txt"
Denzil_Opis: .incbin "Opisy/DENZIL.txt"
Lev1: .incbin "Lev/Lev1.map"
Lev2: .incbin "Lev/Lev2.map"
.include "Postacie/Efekty_Specjali.txt"
.include "Postacie/Denzil.txt"
.include "Postacie/Specjale_palety.txt"
.include "SYS/Grafika.txt"
.bank 2
.org $8000
.include "a_e3/Main.txt"
.bank 4
.org $8000
Tlo1: .incbin "tlo.chr"
Sprity1: .incbin "sprity.chr"
.bank 6
.org $8000
coss: .incbin "music.bin"
.bank 8
.org $8000
.bank 10
.org $8000
.bank 12
.org $8000
.bank 14
.org $8000
.bank 16
.org $8000
.bank 18
.org $8000
.bank 20
.org $8000
.bank 22
.org $8000
.bank 24
.org $8000
.bank 26
.org $8000
.bank 28
.org $8000
.include "SYS/Game_Select.txt"
.bank 30
.org $C000
; The music data
songData1:
.incbin "./music/vrc6.bin"
songData2:
.incbin "./music/cisza.bin"
songData3:
.incbin "./music/prime.bin"
.bank 31
.org $E000
Music_Init: ;X to numer muzyki!
; ignore IRQs
sei
; Then store the address of the intented music data, if any.
lda musicDataTableLow, x
sta ft_music_addr
lda musicDataTableHigh, x
sta ft_music_addr + 1
; Finally select the song inside the music data
lda #$0 ; track 0
ldx #$0 ; NTSC
jsr ft_music_init
; init default value for ppu_crtl flags + activate NMI
lda #PPU_CTRL_NMI
sta zpPpuCtrlFlags
sta PPU_CTRL
rts
; Then set the display parameters
;->BANK 01: Test code and utils -------------------------------------------
; Separated in another file to make it easier to read
.include "./common/utils.asm"
; The code for the player
.include "./soundDrv/driver.asm"
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; Vectors for NMI and IRQ
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;->BEGIN----------------------------------------------------------------------
; NMI interrupt handler. Called 60 times per second (NTSC)
;
vector_nmi:
PHA
TXA
PHA
TYA
PHA
jsr Rys.Sprity
jsr ft_music_play
PLA
TAY
PLA
TAX
PLA
RTI
;-<END------------------------------------------------------------------------
Laduj_Paleta:
lda #$3F
sta $2006
lda #$00 ; point $2006 to the pallete
sta $2006
ldx #$00
palload:
lda #$02
sta $2008
lda $700, X ; use a simple load of 32 bytes.
inx
sta $2007
cpx #32
bne palload
rts
;--------------------------------------------------------------
Load_GFX:
sta $8000 ;load Bank number before running this...
sta current_bank
TXA
asl A ;multiply by 2 because each address is 2 bytes
tax
lda grafTable+0, x ;copy the low byte
sta addrLO
lda grafTable+1, x ;copy the high byte
sta addrHI
ldx #32
ldy #0
Load_Grafics:
LDA [addrLO], y ; load data from address (background + the value in x)
STA $2007 ; write to PPU
INy ; X = X + 1
BNE Load_Grafics ; Branch to LoadBackgroundLoop if compare was Not Equal to zero
inc addrHI
dex
bne Load_Grafics
lda current_bank_Back
sta $8000
sta current_bank
rts
grafTable:
.dw Tlo1, Sprity1
Reset:
sei ;disable all 6502 interrupts
lda #0
sta $2000
lda #$40
sta $4017 ;disable APU frame IRQ
LDA #$00
STA $0000, x
STA $0100, x
STA $0200, x
STA $0400, x
STA $0500, x
STA $0600, x
STA $0700, x
STA $0300, x
INX
BNE Reset
ldx #$ff
txs
ldx #$00
lda #0
sta $8000
sta current_bank
lda #-2
sta $C000
sta current_bankC
; set CHR registers
ldx #0
stx $D000
inx
stx $D001
inx
stx $D002
inx
stx $D003
inx
stx $E000
inx
stx $E001
inx
stx $E002
inx
stx $E003
; virtical mirroring
lda #00
sta $B003
; disable IRQs
lda #0
sta $F001
; disable VRC6 audio(Don't affect Music driver...)
lda #0
sta $9002
sta $A002
sta $B002
jmp Start
musicDataTableLow: .byte LOW(songData1), LOW(songData2), LOW(songData3)
musicDataTableHigh: .byte HIGH(songData1), HIGH(songData2), HIGH(songData3)
.include "SYS/Rysowania.txt"
.org $FFFA
.dw vector_nmi ; no VBlank
.dw Reset ; address to execute on reset
.dw 0 ; no whatever
;;--- END OF CODE FILE ---;;
Revise this Paste