diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-10-25 17:18:00 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-10-25 17:19:11 +0300 |
commit | a01a365f1b289bce483131d0f1445c56069d8d9f (patch) | |
tree | c6f8cb2105312c6dd8fffa1bd048f34bc65d0722 | |
parent | 2f99d859a6e19a17ad155b7d4522ce1cc388c2b2 (diff) |
Samples.
-rw-r--r-- | Samples/sprites8x16/Makefile | 39 | ||||
-rw-r--r-- | Samples/sprites8x16/main.asm | 151 | ||||
-rw-r--r-- | Samples/sprites8x8/Makefile | 4 | ||||
-rw-r--r-- | Samples/sprites8x8/main.asm | 22 | ||||
-rw-r--r-- | Samples/sprites8x8/sprites.csv | 13 | ||||
-rw-r--r-- | TestImages/Images/sprites1.png | bin | 1513 -> 1874 bytes | |||
-rw-r--r-- | TestImages/Images/sprites2.png | bin | 0 -> 1862 bytes | |||
-rw-r--r-- | TestImages/TestImages.csproj | 6 |
8 files changed, 222 insertions, 13 deletions
diff --git a/Samples/sprites8x16/Makefile b/Samples/sprites8x16/Makefile new file mode 100644 index 0000000..517bd9f --- /dev/null +++ b/Samples/sprites8x16/Makefile @@ -0,0 +1,39 @@ +NESASM=nesasm +EMU=fceux64 +TILER=nestiler +SOURCE=main.asm +EXECUTABLE=sprites8x16.nes + +IMAGE?=../../TestImages/Images/sprites2.png + +PATTERN_0_BIN=pattern_0.bin +PALETTE_0_BIN=palette_0.bin + +build: $(EXECUTABLE) + +all: $(EXECUTABLE) + +clean: + rm -f *.nes *.lst *.nl *.bin *.csv + +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 sprites8x16 --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 diff --git a/Samples/sprites8x16/main.asm b/Samples/sprites8x16/main.asm new file mode 100644 index 0000000..2c2a584 --- /dev/null +++ b/Samples/sprites8x16/main.asm @@ -0,0 +1,151 @@ + ; 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 #%00100000 + 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 20, 0, 0, 0 + .db 20, 2, 0, 8 + .db 80, 4, 0, 30 + .db 80, 6, 0, 38 + .db 120, 8, 0, 60 + .db 120, 10, 0, 68 + .db 180, 12, 0, 90 + .db 180, 14, 0, 98 + + .bank 2 + .org $0000 + .incbin "pattern_0.bin" diff --git a/Samples/sprites8x8/Makefile b/Samples/sprites8x8/Makefile index aa1be55..b9f2546 100644 --- a/Samples/sprites8x8/Makefile +++ b/Samples/sprites8x8/Makefile @@ -14,7 +14,7 @@ build: $(EXECUTABLE) all: $(EXECUTABLE) clean: - rm -f *.nes *.lst *.nl *.bin + rm -f *.nes *.lst *.nl *.bin *.csv run: $(EXECUTABLE) $(EMU) $(EXECUTABLE) @@ -36,4 +36,4 @@ $(PALETTE_2_BIN) $(PALETTE_3_BIN): $(IMAGE) --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 + --out-tiles-csv sprites.csv --bg-color \#000000 diff --git a/Samples/sprites8x8/main.asm b/Samples/sprites8x8/main.asm index 944381c..db41984 100644 --- a/Samples/sprites8x8/main.asm +++ b/Samples/sprites8x8/main.asm @@ -137,18 +137,18 @@ IRQ: 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 20, 0, 0, 10
+ .db 35, 1, 0, 30
+ .db 50, 2, 0, 50
+ .db 65, 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
+ .db 95, 5, 0, 110
+ .db 110, 6, 0, 130
+ .db 125, 7, 0, 150
+ .db 140, 8, 0, 170
+ .db 155, 9, 0, 190
+ .db 170, 10, 0, 210
+ .db 185, 11, 0, 230
.bank 2
.org $0000
diff --git a/Samples/sprites8x8/sprites.csv b/Samples/sprites8x8/sprites.csv new file mode 100644 index 0000000..4522c5b --- /dev/null +++ b/Samples/sprites8x8/sprites.csv @@ -0,0 +1,13 @@ +image_id,image_file,line,column,tile_x,tile_y,tile_width,tile_height,tile_id,palette_id +0,../../TestImages/Images/sprites1.png,0,0,0,0,8,8,0,0 +0,../../TestImages/Images/sprites1.png,0,1,8,0,8,8,2,0 +0,../../TestImages/Images/sprites1.png,0,2,16,0,8,8,4,0 +0,../../TestImages/Images/sprites1.png,0,3,24,0,8,8,6,0 +0,../../TestImages/Images/sprites1.png,0,4,32,0,8,8,8,0 +0,../../TestImages/Images/sprites1.png,0,5,40,0,8,8,10,0 +0,../../TestImages/Images/sprites1.png,0,6,48,0,8,8,12,0 +0,../../TestImages/Images/sprites1.png,0,7,56,0,8,8,14,0 +0,../../TestImages/Images/sprites1.png,0,8,64,0,8,8,16,0 +0,../../TestImages/Images/sprites1.png,0,9,72,0,8,8,18,0 +0,../../TestImages/Images/sprites1.png,0,10,80,0,8,8,20,0 +0,../../TestImages/Images/sprites1.png,0,11,88,0,8,8,22,0 diff --git a/TestImages/Images/sprites1.png b/TestImages/Images/sprites1.png Binary files differindex 55b9eed..9a3e363 100644 --- a/TestImages/Images/sprites1.png +++ b/TestImages/Images/sprites1.png diff --git a/TestImages/Images/sprites2.png b/TestImages/Images/sprites2.png Binary files differnew file mode 100644 index 0000000..2ae7350 --- /dev/null +++ b/TestImages/Images/sprites2.png diff --git a/TestImages/TestImages.csproj b/TestImages/TestImages.csproj index 97b122f..35300fb 100644 --- a/TestImages/TestImages.csproj +++ b/TestImages/TestImages.csproj @@ -106,6 +106,12 @@ <None Update="Images\sindikat.gif">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
+ <None Update="Images\sprites1.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Update="Images\sprites2.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
<None Update="Images\sputnik.gif">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
|