Welcome to mirror list, hosted at ThFree Co, Russian Federation.

NesTiler.git/NesTiler.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/ascii/main.asm')
-rw-r--r--Examples/ascii/main.asm157
1 files changed, 157 insertions, 0 deletions
diff --git a/Examples/ascii/main.asm b/Examples/ascii/main.asm
new file mode 100644
index 0000000..8c48a32
--- /dev/null
+++ b/Examples/ascii/main.asm
@@ -0,0 +1,157 @@
+ ; INES header stuff
+ .inesprg 1 ; 1 bank of PRG
+ .ineschr 1 ; 1 bank of CHR data
+ .inesmir 0 ; mirroring
+ .inesmap 0 ; we use mapper 0
+
+ .rsset $0000 ; variables
+COPY_SOURCE_ADDR .rs 2
+COPY_DEST_ADDR .rs 2
+
+ .bank 1
+ .org $FFFA ; reset vectors
+ .dw NMI
+ .dw Start
+ .dw IRQ
+
+ .bank 0
+ .org $C000 ; code starts here
+Start:
+ ; disable interrupts
+ sei
+ ; reset stack
+ ldx #$ff
+ txs
+
+ ; disable PPU
+ lda #%00000000
+ sta PPUCTRL
+ lda #%00000000
+ sta PPUMASK
+
+ jsr waitblank
+
+ ; reset sound
+ lda #0
+ sta $4000
+ sta $4001
+ sta $4002
+ sta $4003
+ sta $4004
+ sta $4005
+ sta $4006
+ sta $4007
+ sta $4009
+ sta $400A
+ sta $400C
+ sta $400D
+ sta $400E
+ sta $400F
+ sta $4010
+ sta $4011
+ sta $4012
+ sta $4013
+ lda #$0F
+ sta $4015
+ lda #$40
+ sta $4017
+ lda #0
+
+load_palette:
+ lda #LOW(palette)
+ sta <COPY_SOURCE_ADDR
+ lda #HIGH(palette)
+ sta <COPY_SOURCE_ADDR+1
+ lda #$3F
+ sta PPUADDR
+ lda #$00
+ sta PPUADDR
+ ldy #$00
+ ldx #4
+.loop:
+ lda [COPY_SOURCE_ADDR], y
+ sta PPUDATA
+ iny
+ dex
+ bne .loop
+
+ ; loading blank nametable
+clear_nametable:
+ lda PPUSTATUS
+ lda #$20
+ sta PPUADDR
+ lda #$00
+ sta PPUADDR
+ ldy #0
+ ldx #0
+ lda #$20
+.loop:
+ cpy #$C0
+ bne .noat
+ cpx #$03
+ bne .noat
+ lda #$00
+.noat:
+ sta PPUDATA
+ iny
+ bne .loop
+ inx
+ cpx #$04
+ bne .loop
+.end:
+
+ ; write HELLO WORLD
+load_text:
+ lda PPUSTATUS
+ lda #$20
+ sta PPUADDR
+ lda #$41
+ sta PPUADDR
+ lda #LOW(.hello_world)
+ sta COPY_SOURCE_ADDR
+ lda #HIGH(.hello_world)
+ sta COPY_SOURCE_ADDR+1
+ ldy #0
+.loop:
+ lda [COPY_SOURCE_ADDR], y
+ beq .end
+ sta PPUDATA
+ iny
+ jmp .loop
+.hello_world:
+ .db "HELLO WORLD!", 0
+.end:
+
+ ; enable PPU
+ jsr waitblank
+ lda #%00001010
+ sta PPUMASK
+ lda #%00000000
+ sta PPUCTRL
+main_loop:
+ jsr waitblank
+ jmp main_loop
+
+ ; VBlank wait subroutine
+waitblank:
+ bit PPUSTATUS
+ lda #0
+ sta PPUSCROLL
+ sta PPUSCROLL
+.loop:
+ lda PPUSTATUS ; load A with value at location PPUSTATUS
+ bpl .loop ; if bit 7 is not set (not VBlank) keep checking
+ rts
+
+NMI:
+ rti
+
+IRQ:
+ rti
+
+palette:
+ .incbin "palette_0.bin"
+
+ .bank 2
+ .org $0200
+ .incbin "pattern_0.bin"