mirror of
https://github.com/safiire/n65.git
synced 2025-03-03 16:29:07 +00:00
Adding an example of making noise
This commit is contained in:
parent
602ff6754d
commit
d67d1a6693
99
noise.asm
Normal file
99
noise.asm
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; This is a direct port of Michael Martin's tutorial project for NES101
|
||||||
|
; With some modifications to the tile map, and extra comments, and ported to
|
||||||
|
; suit my assembler. - Saf
|
||||||
|
; See:
|
||||||
|
; http://hackipedia.org/Platform/Nintendo/NES/tutorial,%20NES%20programming%20101/NES101.html
|
||||||
|
;
|
||||||
|
;;;;
|
||||||
|
; Create an iNES header
|
||||||
|
.ines {"prog": 1, "char": 0, "mapper": 0, "mirror": 0}
|
||||||
|
|
||||||
|
;;;;
|
||||||
|
; Here is a good spot to associate zero page memory addresses
|
||||||
|
; with quick access variables in the program.
|
||||||
|
|
||||||
|
.org $0200
|
||||||
|
sprite:
|
||||||
|
|
||||||
|
|
||||||
|
;;;;
|
||||||
|
; Setup the interrupt vectors
|
||||||
|
.org $FFFA
|
||||||
|
.dw vblank
|
||||||
|
.dw main
|
||||||
|
.dw irq
|
||||||
|
|
||||||
|
|
||||||
|
.org $C000
|
||||||
|
;;;;
|
||||||
|
; Here is our code entry point, which we'll call main.
|
||||||
|
main:
|
||||||
|
; Disable interrupts and decimal flag
|
||||||
|
sei
|
||||||
|
cld
|
||||||
|
|
||||||
|
; Wait for 2 vblanks
|
||||||
|
wait_vb1:
|
||||||
|
lda $2002
|
||||||
|
bpl wait_vb1
|
||||||
|
wait_vb2:
|
||||||
|
lda $2002
|
||||||
|
bpl wait_vb2
|
||||||
|
|
||||||
|
; Now we want to initialize the hardware to a known state
|
||||||
|
lda #$00
|
||||||
|
ldx #$00
|
||||||
|
clear_segments:
|
||||||
|
sta $00, X
|
||||||
|
sta $0100, X
|
||||||
|
sta $0200, X
|
||||||
|
sta $0300, X
|
||||||
|
sta $0400, X
|
||||||
|
sta $0500, X
|
||||||
|
sta $0600, X
|
||||||
|
sta $0700, X
|
||||||
|
inx
|
||||||
|
bne clear_segments
|
||||||
|
|
||||||
|
; Reset the stack pointer
|
||||||
|
ldx #$FF
|
||||||
|
txs
|
||||||
|
|
||||||
|
; Disable all graphics.
|
||||||
|
lda #$00
|
||||||
|
sta $2000
|
||||||
|
sta $2001
|
||||||
|
|
||||||
|
; Init APU
|
||||||
|
ldx #$0F
|
||||||
|
stx $4015
|
||||||
|
|
||||||
|
; Turn on noise tone
|
||||||
|
ldx #$85
|
||||||
|
stx $400E
|
||||||
|
|
||||||
|
; Set volume to max
|
||||||
|
ldx #$3F
|
||||||
|
stx $400C
|
||||||
|
|
||||||
|
; Load Length counter
|
||||||
|
ldx #$01
|
||||||
|
stx $400F
|
||||||
|
|
||||||
|
; Resume interrupts and loop here forever
|
||||||
|
cli
|
||||||
|
forever:
|
||||||
|
jmp forever
|
||||||
|
|
||||||
|
|
||||||
|
;;;;
|
||||||
|
; Update everything on every vblank
|
||||||
|
vblank:
|
||||||
|
rti
|
||||||
|
|
||||||
|
|
||||||
|
;;;;
|
||||||
|
; Don't do anything on IRQ
|
||||||
|
irq:
|
||||||
|
rti
|
Loading…
x
Reference in New Issue
Block a user