74 lines
2.4 KiB
NASM
74 lines
2.4 KiB
NASM
CheckForChangeGraphicsNormalLoadBoat:
|
|
{
|
|
LDA $8A : CMP.b #$30 : BNE .boat_area
|
|
PHB : PHK : PLB
|
|
JSR ApplyGraphics1
|
|
JSR ApplyGraphics2
|
|
PLB
|
|
RTL
|
|
.boat_area
|
|
RTL
|
|
}
|
|
|
|
ApplyGraphics1:
|
|
{
|
|
REP #$20 ; A = 16, XY = 8
|
|
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
|
|
LDA #$2C00 : STA $2116 ; Destination of the DMA $5800 in vram <- this need to be divided by 2
|
|
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
|
|
; "001 => 2 registers write once (2 bytes: p, p+1)"
|
|
LDA.w #BoatBitmap : STA $4302 ; Source address where you want gfx from ROM
|
|
LDX.b #BoatBitmap>>16 : STX $4304
|
|
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
|
|
LDX #$01 : STX $420B ; Do the DMA
|
|
|
|
SEP #$30
|
|
|
|
RTS
|
|
|
|
BoatBitmap:
|
|
incbin gfx/boat.bin
|
|
}
|
|
|
|
ApplyGraphics2:
|
|
{
|
|
REP #$20 ; A = 16, XY = 8
|
|
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
|
|
LDA #$5000 : STA $2116 ; Destination of the DMA $7800 in vram <- this need to be divided by 2
|
|
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
|
|
; "001 => 2 registers write once (2 bytes: p, p+1)"
|
|
LDA.w #AdditionalBitmap : STA $4302 ; Source address where you want gfx from ROM
|
|
LDX.b #AdditionalBitmap>>16 : STX $4304
|
|
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
|
|
LDX #$01 : STX $420B ; Do the DMA
|
|
|
|
SEP #$30
|
|
|
|
RTS
|
|
|
|
AdditionalBitmap:
|
|
incbin gfx/boat2.bin
|
|
}
|
|
|
|
ApplyKorokSpriteSheets:
|
|
{
|
|
REP #$20 ; A = 16, XY = 8
|
|
LDX #$80 : STX $2100 ; turn the screen off (required)
|
|
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
|
|
LDA #$5000 : STA $2116 ; Destination of the DMA $5800 in vram <- this need to be divided by 2
|
|
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
|
|
; "001 => 2 registers write once (2 bytes: p, p+1)"
|
|
LDA.w #KorokSpriteSheets : STA $4302 ; Source address where you want gfx from ROM
|
|
LDX.b #KorokSpriteSheets>>16 : STX $4304
|
|
LDA #$1800 : STA $4305 ; size of the transfer 4 sheets of $800 each
|
|
LDX #$01 : STX $420B ; Do the DMA
|
|
LDX #$0F : STX $2100 ; Turn the screen back on
|
|
SEP #$30
|
|
|
|
RTL
|
|
|
|
KorokSpriteSheets:
|
|
incbin gfx/korok.bin
|
|
}
|
|
|