display logo gfx, misc gfx related helpers

This commit is contained in:
ikari
2009-10-14 10:52:37 +02:00
parent b7d32d6285
commit ed22950f47
18 changed files with 3595 additions and 4 deletions

132
snes/reset.a65 Normal file
View File

@@ -0,0 +1,132 @@
; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
; See http://bisqwit.iki.fi/source/snescom.html for details.
#include "memmap.i65"
#define TILE_ADDR_REG_VAL(addr, scsize) \
(((addr & $FC00) >> 8) + scsize)
#define BMAP_ADDR_REG_VAL(addr, addr2) \
(((addr & $F000) >> 12) | (((addr2 & $F000) >> 12) << 4))
; NMI - called once per screen refresh (or something like that)
NMI_ROUTINE:
sep #$20 : .as
lda $4210
rtl
; IRQ - called when triggered (which is..?)
IRQ_ROUTINE:
sep #$20 : .as
lda $4211 ;Acknowledge irq
rtl
; To be called regularly - updated screen contents
; Sends the palette structure to PPU
PaletteDMA:
.xl : .as
lda #$00 : sta $4300 ;dma type
lda #$22 : sta $4301 ;address $2122
lda #^(PALETTE_ADDRESS) : sta $4304
ldx #!(PALETTE_ADDRESS) : stx $4302
ldx #512 : stx $4305 ; size: 16*2*16 bytes.
lda #$00 : sta $2121 ;Write CGRAM address (0)
lda #$01 : sta $420B ;Activate dma 0
rts
; Sends the video buffer contents to PPU
VRAMdma:
sty $2116 ;Write VRAM address
sty $4302 : sta $4304 ;Write DMA address
stx $4305 ;Write size
lda #$80 : sta $2115 ;PPU programming
lda #$01 : sta $4300 ;dma type
lda #$18 : sta $4301 ;address $2118
lda #$01 : sta $420B ;Activate DMA 0
rts
; Jumped to from snesheader.a65 - when the game is reseted.
RESET_GAME:
rep #$30 : .al : .xl
lda #$0400 : tcd
ldx #$03FE : txs
sep #$20 : .as
pha
plb
lda #$01
sta $420D ; set "fast" mode
; Next initialize screen
jsr InitializeScreen
jsr InitializeIRQ
sep #$20 : .as
;lda #$17
lda #$03
sta $212C ; put screens on
sta $212D ; put screens on
lda #$00: sta $2121
lda #$E0: sta $2122
lda #$7C: sta $2122
jmp @GAME_MAIN
InitializeIRQ:
sep #$20 : .as
lda #$B1 : sta $4200
ldx #0 : stx $4207
ldx #211 : stx $4209
sei
lda $4211
- lda $4210 ;: bpl -
rts
InitializeScreen:
rep #$10 : .xl
sep #$20 : .as
lda #$00 : sta $2101
ldx #$0000 : stx $2102
lda #$09 : sta $2105 ; select screen mode 1.
lda #$00 : sta $2106
lda #TILE_ADDR_REG_VAL(BG1_TILE_ADDR, 0) : sta $2107
lda #TILE_ADDR_REG_VAL(BG2_TILE_ADDR, 0) : sta $2108
lda #TILE_ADDR_REG_VAL(BG3_TILE_ADDR, 0) : sta $2109
lda #TILE_ADDR_REG_VAL(BG4_TILE_ADDR, 0) : sta $210A
lda #BMAP_ADDR_REG_VAL(BG1_BMAP_ADDR, BG2_BMAP_ADDR) : sta $210B
lda #BMAP_ADDR_REG_VAL(BG3_BMAP_ADDR, BG4_BMAP_ADDR) : sta $210C
; Set scrolling to 0,0 to all bgs
lda #$00 : sta $210D : sta $210D
lda #$00 : sta $210E : sta $210E
lda #$00 : sta $210F : sta $210F
lda #$00 : sta $2110 : sta $2110
lda #$00 : sta $2111 : sta $2111
lda #$00 : sta $2112 : sta $2112
lda #$00 : sta $2113 : sta $2113
lda #$00 : sta $2114 : sta $2114
rts