diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-10-24 22:57:13 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-10-24 22:57:13 +0300 |
commit | cb5930b4118b976f0134f9d2ca8e55332b976c6c (patch) | |
tree | b86514185962a3dfc06f697de1fe6e919a859eec | |
parent | d837edd7bf06e377efc2db2a5e28837fe384a126 (diff) |
Samples.
-rw-r--r-- | Samples/mmc3_split2_animation/main.asm | 12 | ||||
-rw-r--r-- | Samples/mmc3_split4/main.asm | 12 | ||||
-rw-r--r-- | Samples/nrom_group_scroll/main.asm | 12 | ||||
-rw-r--r-- | Samples/nrom_simple/main.asm | 12 | ||||
-rw-r--r-- | Samples/nrom_simple_offset/main.asm | 12 | ||||
-rw-r--r-- | Samples/nrom_split/main.asm | 12 | ||||
-rw-r--r-- | Samples/nrom_split_lossy/main.asm | 12 | ||||
-rw-r--r-- | Samples/sprites8x8/Makefile | 39 | ||||
-rw-r--r-- | Samples/sprites8x8/main.asm | 155 | ||||
-rw-r--r-- | TestImages/Images/sprites1.png | bin | 0 -> 1513 bytes |
10 files changed, 236 insertions, 42 deletions
diff --git a/Samples/mmc3_split2_animation/main.asm b/Samples/mmc3_split2_animation/main.asm index 681cfc3..1598d09 100644 --- a/Samples/mmc3_split2_animation/main.asm +++ b/Samples/mmc3_split2_animation/main.asm @@ -67,14 +67,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -85,14 +85,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/mmc3_split4/main.asm b/Samples/mmc3_split4/main.asm index 31db8e9..70dd12f 100644 --- a/Samples/mmc3_split4/main.asm +++ b/Samples/mmc3_split4/main.asm @@ -64,14 +64,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -82,14 +82,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/nrom_group_scroll/main.asm b/Samples/nrom_group_scroll/main.asm index 279e48d..392f008 100644 --- a/Samples/nrom_group_scroll/main.asm +++ b/Samples/nrom_group_scroll/main.asm @@ -68,14 +68,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -86,14 +86,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/nrom_simple/main.asm b/Samples/nrom_simple/main.asm index 86713ee..3f87247 100644 --- a/Samples/nrom_simple/main.asm +++ b/Samples/nrom_simple/main.asm @@ -63,14 +63,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -81,14 +81,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/nrom_simple_offset/main.asm b/Samples/nrom_simple_offset/main.asm index 99e4619..2fb062f 100644 --- a/Samples/nrom_simple_offset/main.asm +++ b/Samples/nrom_simple_offset/main.asm @@ -63,14 +63,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -81,14 +81,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$21 - sta $2006 + sta PPUADDR lda #$40 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/nrom_split/main.asm b/Samples/nrom_split/main.asm index 54fe0c5..729aef5 100644 --- a/Samples/nrom_split/main.asm +++ b/Samples/nrom_split/main.asm @@ -64,14 +64,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -82,14 +82,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/nrom_split_lossy/main.asm b/Samples/nrom_split_lossy/main.asm index 54fe0c5..729aef5 100644 --- a/Samples/nrom_split_lossy/main.asm +++ b/Samples/nrom_split_lossy/main.asm @@ -64,14 +64,14 @@ load_palette: lda #HIGH(palette) sta <COPY_SOURCE_ADDR+1 lda #$3F - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #16 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny dex bne .loop @@ -82,14 +82,14 @@ load_nametable: lda #HIGH(nametable_0) sta <COPY_SOURCE_ADDR+1 lda #$20 - sta $2006 + sta PPUADDR lda #$00 - sta $2006 + sta PPUADDR ldy #$00 ldx #$00 .loop: lda [COPY_SOURCE_ADDR], y - sta $2007 + sta PPUDATA iny bne .loop inc COPY_SOURCE_ADDR+1 diff --git a/Samples/sprites8x8/Makefile b/Samples/sprites8x8/Makefile new file mode 100644 index 0000000..aa1be55 --- /dev/null +++ b/Samples/sprites8x8/Makefile @@ -0,0 +1,39 @@ +NESASM=nesasm +EMU=fceux64 +TILER=nestiler +SOURCE=main.asm +EXECUTABLE=sprites8x8.nes + +IMAGE?=../../TestImages/Images/sprites1.png + +PATTERN_0_BIN=pattern_0.bin +PALETTE_0_BIN=palette_0.bin + +build: $(EXECUTABLE) + +all: $(EXECUTABLE) + +clean: + rm -f *.nes *.lst *.nl *.bin + +run: $(EXECUTABLE) + $(EMU) $(EXECUTABLE) + +$(EXECUTABLE): $(SOURCE) \ +$(PATTERN_0_BIN) $(PATTERN_1_BIN) \ +$(NAME_TABLE_0_BIN) $(NAME_TABLE_1_BIN) \ +$(ATTR_TABLE_0_BIN) $(ATTR_TABLE_1_BIN) \ +$(PALETTE_0_BIN) $(PALETTE_1_BIN) + rm -f $(EXECUTABLE) + $(NESASM) $(SOURCE) -o $(EXECUTABLE) --symbols=$(notdir $(EXECUTABLE)) -iWss + +$(PATTERN_0_BIN) \ +$(NAME_TABLE_0_BIN) \ +$(ATTR_TABLE_0_BIN) \ +$(PALETTE_0_BIN) $(PALETTE_1_BIN) \ +$(PALETTE_2_BIN) $(PALETTE_3_BIN): $(IMAGE) + $(TILER) --mode sprites8x8 --enable-palettes 0 \ + --in-0 $(IMAGE) \ + --out-pattern-table-0 $(PATTERN_0_BIN) \ + --out-palette-0 $(PALETTE_0_BIN) \ + --out-tiles-csv sprites.csv --bg-color \#000000
\ No newline at end of file diff --git a/Samples/sprites8x8/main.asm b/Samples/sprites8x8/main.asm new file mode 100644 index 0000000..944381c --- /dev/null +++ b/Samples/sprites8x8/main.asm @@ -0,0 +1,155 @@ + ; 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
+ .rsset $0200
+SPRITES .rs 256
+
+ .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:
+ ; load single palette for sprites
+ lda #$3F
+ sta PPUADDR
+ lda #$10
+ sta PPUADDR
+ lda palette
+ sta PPUDATA
+ lda palette+1
+ sta PPUDATA
+ lda palette+2
+ sta PPUDATA
+ lda palette+3
+ sta PPUDATA
+
+reset_sprites:
+ lda #$FF
+ ldx 0
+.loop:
+ sta SPRITES, x
+ inx
+ bne .loop
+
+set_sprites:
+ ldx 0
+.loop:
+ lda sprites_init_data, x
+ sta SPRITES, x
+ inx
+ cpx #(4 * 12)
+ bne .loop
+
+ ; enable PPU
+ jsr waitblank
+ lda #%00000000
+ sta PPUCTRL
+ lda #%00010100
+ sta PPUMASK
+
+main_loop:
+ jsr waitblank
+
+ ldx 0
+.move_sprites_loop:
+ inc SPRITES, x
+ inx
+ inx
+ inx
+ inx
+ cpx #(4 * 12 + 3)
+ bne .move_sprites_loop
+
+ lda #0
+ sta OAMADDR
+ lda #HIGH(SPRITES)
+ sta OAMDMA
+ 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"
+sprites_init_data:
+ .db 0, 0, 0, 10
+ .db 20, 1, 0, 30
+ .db 40, 2, 0, 50
+ .db 60, 3, 0, 70
+ .db 80, 4, 0, 90
+ .db 100, 5, 0, 110
+ .db 120, 6, 0, 130
+ .db 140, 7, 0, 150
+ .db 160, 8, 0, 170
+ .db 180, 9, 0, 190
+ .db 200, 10, 0, 210
+ .db 220, 11, 0, 230
+
+ .bank 2
+ .org $0000
+ .incbin "pattern_0.bin"
diff --git a/TestImages/Images/sprites1.png b/TestImages/Images/sprites1.png Binary files differnew file mode 100644 index 0000000..55b9eed --- /dev/null +++ b/TestImages/Images/sprites1.png |