Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;ASM6 NROM template from http://nesdev.parodius.com/bbs/viewtopic.php?t=6160
- ;----------------------------------------------------------------
- ; constants
- ;----------------------------------------------------------------
- ;iNES constants
- PRG_COUNT = 1 ;1 = 16KB
- CHR_COUNT = 1 ;1 = 8KB, 0 = CHR_RAM
- MIRRORING = %0001 ;%0000 = horizontal, %0001 = vertical, %1000 = four-screen
- ;--- Initial Values --------------------------------------------
- IFDEF PAL
- FPS = 55
- ELSE
- FPS = 60
- ENDIF
- SPEED = 2
- HORZ_SCROLL = $00 ; These scroll values show the screen "logically"
- VERT_SCROLL = $F8 ; (tiles are clipped by default)
- INIT_PRINT_RATE = 8
- INIT_MESSAGE_POINTER = MessageHello
- MAX_TILE_STACK = #$20 ; copy at most this many tiles
- PPU_MASK = %00111010
- ;---------------------------------------------------------------
- ;; Global Constants
- ;; For enabling the sound channels
- APU_SQ1 = %00000001
- APU_SQ2 = %00000010
- APU_TRI = %00000100
- APU_NOI = %00001000
- APU_DPC = %00010000
- ; May want to add more APU constants
- ;; Button constants
- BUTTON_A = %00000001
- BUTTON_B = %00000010
- BUTTON_SELECT = %00000100
- BUTTON_START = %00001000
- BUTTON_UP = %00010000
- BUTTON_DOWN = %00100000
- BUTTON_LEFT = %01000000
- BUTTON_RIGHT = %10000000
- ; Super cool text-engine functions
- TXT_CHANGE_RATE_TO = $80 ; frames between each character
- TXT_PAUSE_FOR = $81 ; # of frames
- TXT_ADVANCE_CURSOR = $82
- ;TXT_PLAY_MUSIC_TRACK= $82 ; track number
- ;TXT_CARRIAGE_RETURN = $84
- ;TXT_CR = TXT_CARRIAGE_RETURN
- ;TXT_END_OF_MESSAGE = $85
- TXT_END_OF_TEXT = $00 ; or just end with 0
- ;----------------------------------------------------------------
- ; variables
- ;----------------------------------------------------------------
- .enum $0000 ; Zero-Page; Put most used variables here
- ;NOTE: declare variables using the DSB and DSW directives, like this:
- PPUReady .dsb 1
- FrameCount .dsb 1
- SecondCount .dsb 1
- MinuteCount .dsb 1 ; just to be thorough
- Joy1Buttons .dsb 1
- Joy1Old .dsb 1
- Joy1Down .dsb 1
- tb_MessagePointer .dsw 1 ; A note about pointers:
- tb_MessagePosition .dsb 1 ; subroutine pointers *must*
- tb_FramesTillPrint .dsb 1 ; be stored in the zero-page
- tb_PrintRate .dsb 1
- tb_PauseFor .dsb 1
- tb_TilePointer .dsb 1
- tb_ScreenPosition .dsb 1
- tb_TextBoxWidth .dsb 1
- tb_TextBoxHeight .dsb 1
- .ende
- .enum $0100
- ; be careful here; the stack resides in the upper portions of this page
- ; Do not put many things here!
- .ende
- .enum $0200
- ; This page is typically meant for OAM sprite memory transfer
- ; The ENTIRE page is transfered verbatim, so use this as a mirror
- .ende
- tb_TileQueue = $0300
- ;----------------------------------------------------------------
- ; iNES header
- ;----------------------------------------------------------------
- .db "NES", $1a ;identification of the iNES header
- .db PRG_COUNT ;number of 16KB PRG-ROM pages
- .db $01 ;number of 8KB CHR-ROM pages
- .db $00|MIRRORING ;mapper 0 and mirroring
- .dsb 9, $00 ;clear the remaining bytes
- ;----------------------------------------------------------------
- ; program bank(s)
- ;----------------------------------------------------------------
- .base $10000-(PRG_COUNT*$4000) ; PRG-ROM bank 2; constant in UNROM
- Reset:
- ;NOTE: initialization code goes here
- ;The following init code stolen from
- ;http://wiki.nesdev.com/w/index.php/Init_code
- sei ; ignore IRQs
- cld ; disable the non-existant decimal mode
- ldx #$40
- stx $4017 ; disable APU frame IRQ
- ldx #$ff
- txs ; Set up stack
- inx ; now X = 0
- stx $2000 ; disable NMI
- stx $2001 ; disable rendering
- stx $4010 ; disable DMC IRQs
- ; Clear the vblank flag, so we know that we are waiting for the
- ; start of a vertical blank and not powering on with the
- ; vblank flag spuriously set
- bit $2002
- ; First of two waits for vertical blank to make sure that the
- ; PPU has stabilized
- jsr WaitForVBlank
- ; We now have about 30,000 cycles to burn before the PPU stabilizes.
- ; One thing we can do with this time is put RAM in a known state.
- ; Here we fill it with $00, which matches what (say) a C compiler
- ; expects for BSS. Conveniently, X is still 0.
- txa
- @clrmem:
- sta $000,x
- sta $100,x
- sta $300,x
- sta $400,x
- sta $500,x
- sta $600,x
- sta $700,x ; Remove this if you're storing reset-persistent data
- ; We skipped $200,x on purpose. Usually, RAM page 2 is used for the
- ; display list to be copied to OAM. OAM needs to be initialized to
- ; $EF-$FF, not 0, or you'll get a bunch of garbage sprites at (0, 0).
- inx
- bne @clrmem
- ; Other things you can do between vblank waits are set up audio
- ; or set up other mapper registers.
- jsr WaitForVBlank
- Start:
- jsr LoadPalettes
- jsr LoadSprites
- jsr LoadInitialScreen
- InitVars:
- lda #FPS
- sta FrameCount
- lda #INIT_PRINT_RATE
- sta tb_PrintRate
- ;sta tb_FramesTillPrint
- lda #<INIT_MESSAGE_POINTER
- sta <tb_MessagePointer
- lda #>INIT_MESSAGE_POINTER
- sta tb_MessagePointer+1 ; note to self: ASM6 is bugged ;_;
- ; OR maybe it's just a feature!
- lda #$00
- sta tb_MessagePosition
- ; Turn on the PPU to draw the first frame
- lda #%10010000
- sta $2000
- lda #PPU_MASK ;turn this off if changing mid-frame
- sta $2001
- ; -- MAIN LOOP OMG! -------------------------------------------
- GameLoop:
- jsr WaitForPPUReady
- jsr UpdatePPU
- jsr ReadJoy1
- jsr MakeTextBox
- jsr UpdateFrameCounter
- jmp GameLoop
- ; -- END MAIN LOOP! -------------------------------------------
- UpdatePPU:
- lda #$00 ; turn PPU off for memory transfers
- sta $2001
- ; Sprite DMA
- lda #$00
- sta $2003
- lda #$02
- sta $4014
- ; Store debug values in the background.
- DebugVar1 = tb_FramesTillPrint
- DebugVar2 = tb_PrintRate
- ;------------------------------------------
- lda $2002 ; unlatch the address lock
- lda #$20 ; cool hand-coded address, bro!
- sta $2006
- lda #$44
- sta $2006
- lda DebugVar1
- and #$0f
- ora #$30
- sta $2007
- lda DebugVar2
- and #$0f
- ora #$30
- sta $2007
- jsr LoadTilesIntoPPU
- ; Set the scroll (probably to zero)
- ldx #HORZ_SCROLL
- stx $2005
- ldx #VERT_SCROLL
- stx $2005
- ; Turn PPU on again
- lda #PPU_MASK
- sta $2001
- ;; PPU Update done
- rts
- UpdateFrameCounter:
- ; Handle the frame counter
- dec FrameCount
- bne @FrameCountDone
- ;reset timer
- lda #FPS
- sta FrameCount
- inc SecondCount
- lda SecondCount
- cmp #$60
- bne @FrameCountDone
- lda #$00
- sta SecondCount
- inc MinuteCount
- @FrameCountDone:
- rts
- ;; Initialization Subroutines
- LoadPalettes:
- lda $2002 ; read PPU status to reset the high/low latch
- lda #$3f
- sta $2006
- lda #$00
- sta $2006
- @LoadPalettesLoop:
- lda InitialPalette, x
- sta $2007
- inx
- cpx #$20
- bne @LoadPalettesLoop
- rts
- LoadSprites:
- rts
- LoadInitialScreen:
- lda $2002 ; unlock addresses, as always
- lda #$20
- sta $2006
- lda #$00
- sta $2006
- tax
- ldy #14
- lda #$00 ; the tile desired
- @LoadScreenLoop:
- sta $2007
- inx
- bpl @LoadScreenLoop
- ldx #$40
- dey
- bne @LoadScreenLoop
- lda #$00
- @LoadColorLoop:
- sta $2007
- dex
- bne @LoadColorLoop
- rts
- MakeTextBox:
- @CheckForPause
- ldx tb_PauseFor
- beq @NoPause
- dec tb_PauseFor
- rts
- @NoPause:
- ldx tb_FramesTillPrint
- beq @Print
- dec tb_FramesTillPrint
- rts
- @Print:
- ldy tb_MessagePosition
- lda (tb_MessagePointer),y
- bne @CheckForOpcode
- rts
- @CheckForOpcode:
- bmi @HandleOpcode
- @UpdateTileStack:
- ldx tb_TilePointer
- sta tb_TileQueue,x
- inc tb_TilePointer
- @CheckForSpace:
- inc tb_MessagePosition ; it's safe to increment here
- cmp #$20 ; 0x20 is the space character in ASCII
- beq @Print
- jsr sfx_Click
- lda tb_PrintRate
- sta tb_FramesTillPrint
- rts
- @HandleOpcode
- jsr tb_HandleOpcode
- rts
- LoadTilesIntoPPU:
- lda tb_TilePointer
- bne @PopTiles
- rts
- @PopTiles:
- lda #$21
- ldy tb_ScreenPosition
- sta $2006
- sty $2006
- ldx #$00
- @TileLoop:
- lda tb_TileQueue,x
- sta $2007
- iny
- inx
- cpx tb_TilePointer
- bne @TileLoop
- lda #$00
- sta tb_TilePointer
- sty tb_ScreenPosition
- rts
- sfx_Click:
- lda #APU_NOI
- sta $4015
- lda #%10010000 | $8
- sta $400C ;$4000
- lda #$4 ;#$7B
- sta $400E ;$4002
- lda #($05 << 3) ;| $1; That would be 4... lengths...
- sta $400F ;$4003 ; This register's weird.
- rts
- ;--- Text box functions. Woo! ---------------------------------
- tb_HandleOpcode:
- ; Prepares the RTS trick by taking the opcode,
- ; doubling its value (while chopping off its MSB)
- ; then loading and storing the address index by
- ; that opcode in the jumptable
- asl A
- tax
- lda tb_Jumptable+1, x
- pha
- lda tb_Jumptable, x
- pha
- rts ; does not actually return. goes to opcode function (which returns)
- tb_SetPause:
- inc tb_MessagePosition
- ldy tb_MessagePosition
- lda (tb_MessagePointer),y
- sta tb_PauseFor
- inc tb_MessagePosition
- rts
- tb_SetRate:
- ldy tb_MessagePosition
- iny
- lda (tb_MessagePointer),y
- sta tb_PrintRate
- sta tb_FramesTillPrint
- iny
- sty tb_MessagePosition
- rts
- tb_AdvanceCursor:
- ldy tb_MessagePosition
- iny
- lda (tb_MessagePointer),y
- clc
- adc tb_ScreenPosition
- sta tb_ScreenPosition
- iny
- sty tb_MessagePosition
- rts
- ;--- General purpose subroutines -------------------------------
- ReadJoy1:
- ; Note the constant: the gamepad only reads the first 3 bits
- ; so this process can shave a few extra cycles
- ; I'm doing it here for the lulz, mostly; Efficiency is soooo 1994
- lda Joy1Buttons
- sta Joy1Old
- ldy #%00001001
- ; tell the controller to save state
- sty $4016
- dey
- ; now tell it to give us all its precious button info. MWUHAHAHAH!
- sty $4016
- ldx #$08
- @ButtonLoop
- lda $4016
- lsr A ; Load the button into carry
- ; rotate the carry's--and button's--state into memory
- ror Joy1Buttons
- dex
- bne @ButtonLoop
- lda Joy1Old
- eor #$ff ; invert bits
- and Joy1Buttons
- sta Joy1Down ; yay! ButtonDown events!
- rts
- WaitForVBlank:
- ; For use during reset
- ; or when NMI is disabled
- bit $2002
- bpl WaitForVBlank
- rts
- WaitForPPUReady:
- ; For use with "NMI Thread"
- lda PPUReady
- @CheckNMI:
- cmp PPUReady
- beq @CheckNMI
- rts
- ;; Interupt handlers
- NMI:
- inc PPUReady
- rti
- IRQ:
- rti
- ;----------------------------------------------------------------
- ; Constant Data
- ;----------------------------------------------------------------
- .org $E000 ; initial graphics data
- InitialPalette:
- ; Background palettes
- .db $0F,$30,$10,$00
- .db $0F,$30,$16,$36
- .db $0F,$10,$00,$28
- .db $0F,$02,$06,$0A
- ; Sprite palettes
- .db $0F,$30,$16,$36
- .db $0F,$10,$00,$28
- .db $0F,$20,$06,$37
- .db $0F,$02,$38,$3C
- .org $E200 ; Textbox jumptable!
- tb_Jumptable:
- .dw tb_SetRate-1 ; -1 for RTS trick; normal for RTI
- .dw tb_SetPause-1
- .dw tb_AdvanceCursor-1
- .org $E300 ; MESSAGES!
- MessageHello:
- .db TXT_ADVANCE_CURSOR, 9
- .db "Hello, ", TXT_PAUSE_FOR,20
- .db TXT_CHANGE_RATE_TO, 2
- .db "world!"
- .db 0
- MessageSpektor:
- .db TXT_PAUSE_FOR, 45
- .db TXT_CHANGE_RATE_TO, 4
- .db " I",TXT_PAUSE_FOR, 16, TXT_CHANGE_RATE_TO, 1
- .db " (OH!)",TXT_PAUSE_FOR, 11, TXT_CHANGE_RATE_TO, 4
- .db " must", TXT_PAUSE_FOR, 26
- .db " go on stand",TXT_PAUSE_FOR, 34
- .db "ing ",TXT_PAUSE_FOR, 42, TXT_CHANGE_RATE_TO, 3
- .db " You can't", TXT_PAUSE_FOR, 36
- .db " break that",TXT_PAUSE_FOR, 36
- .db " which "
- .db " isn't ",TXT_PAUSE_FOR, 48
- .db "yours"
- .db 0
- ;----------------------------------------------------------------
- ; interrupt vectors
- ;----------------------------------------------------------------
- .org $fffa
- .dw NMI
- .dw Reset
- .dw IRQ
- ;----------------------------------------------------------------
- ; CHR-ROM bank
- ;----------------------------------------------------------------
- SpriteNROMCHR:
- .dsb 4096, 0
- BGNROMCHR:
- .dsb 8*66, 0
- .db $30,$78,$78,$78,$30,$30,$00,$30
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $CC,$CC,$88,$00,$00,$00,$00,$00
- .dsb 8*3, 0
- .db $18,$14,$10,$10,$70,$F0,$60,$00
- .dsb 8*5, 0
- .db $30,$30,$20,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $06,$0C,$18,$18,$18,$0C,$06,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C0,$60,$30,$30,$30,$60,$C0,$00
- .dsb 8*5, 0
- .db $00,$00,$00,$00,$00,$C0,$C0,$40
- .dsb 8*3, 0
- .db $00,$00,$00,$00,$00,$C0,$C0,$00
- .dsb 8*3, 0
- .db $38,$4C,$C6,$C6,$C6,$64,$38,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $30,$70,$30,$30,$30,$30,$FC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7C,$C6,$0E,$3C,$78,$E0,$FE,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7E,$0C,$18,$3C,$06,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $1C,$3C,$6C,$CC,$FE,$0C,$0C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FC,$C0,$FC,$06,$06,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $3C,$60,$C0,$FC,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FE,$C6,$0C,$18,$30,$30,$30,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7C,$C6,$C6,$7C,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7C,$C6,$C6,$7E,$06,$0C,$78,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$C0,$C0,$00,$00,$C0,$C0,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$C0,$C0,$00,$00,$C0,$C0,$40
- .dsb 8*7, 0
- .db $78,$CC,$0C,$0C,$38,$30,$00,$30
- .dsb 8*3, 0
- .db $38,$6C,$C6,$C6,$FE,$C6,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FC,$C6,$C6,$FC,$C6,$C6,$FC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $3C,$66,$C0,$C0,$C0,$66,$3C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $F8,$CC,$C6,$C6,$C6,$CC,$F8,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FE,$C0,$C0,$FC,$C0,$C0,$FE,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FE,$C0,$C0,$FC,$C0,$C0,$C0,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $3E,$60,$C0,$CE,$C6,$66,$3E,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$C6,$C6,$FE,$C6,$C6,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FC,$30,$30,$30,$30,$30,$FC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $1E,$06,$06,$06,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$CC,$D8,$F0,$F8,$DC,$CE,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C0,$C0,$C0,$C0,$C0,$C0,$FC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$EE,$FE,$FE,$D6,$C6,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$E6,$F6,$FE,$DE,$CE,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7C,$C6,$C6,$C6,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FC,$C6,$C6,$C6,$FC,$C0,$C0,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7C,$C6,$C6,$C6,$DE,$CC,$7A,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FC,$C6,$C6,$CE,$F8,$DC,$CE,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $78,$CC,$C0,$7C,$06,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $7E,$18,$18,$18,$18,$18,$18,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$C6,$C6,$C6,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$C6,$C6,$EE,$7C,$38,$10,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$C6,$D6,$FE,$FE,$EE,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $C6,$EE,$7C,$38,$7C,$EE,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $CC,$CC,$CC,$78,$30,$30,$30,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $FE,$0E,$1C,$38,$70,$E0,$FE,$00
- .dsb 8*11, 0
- .db $30,$18,$0C,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$78,$0C,$7C,$CC,$76,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $E0,$60,$7C,$66,$66,$66,$DC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$7C,$C6,$C0,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $1C,$0C,$7C,$CC,$CC,$CC,$76,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$7C,$C6,$FE,$C0,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $3C,$66,$60,$F8,$60,$60,$F0,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$76,$CC,$CC,$7C,$0C,$F8
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $E0,$60,$6C,$76,$66,$66,$E6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $18,$00,$38,$18,$18,$18,$3C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $06,$00,$06,$06,$06,$66,$66,$3C
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $E0,$60,$66,$6C,$78,$6C,$E6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $38,$18,$18,$18,$18,$18,$3C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$EC,$FE,$D6,$D6,$D6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$DC,$66,$66,$66,$66,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$7C,$C6,$C6,$C6,$7C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$DC,$66,$66,$7C,$60,$F0
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$76,$CC,$CC,$7C,$0C,$1E
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$DC,$76,$60,$60,$F0,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$7E,$C0,$7C,$06,$FC,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $30,$30,$FC,$30,$30,$36,$1C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$CC,$CC,$CC,$CC,$76,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$C6,$C6,$C6,$6C,$38,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$C6,$D6,$D6,$FE,$6C,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$C6,$6C,$38,$6C,$C6,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$C6,$C6,$C6,$7E,$06,$FC
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$7E,$4C,$18,$32,$7E,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $0E,$18,$18,$70,$18,$18,$0E,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $18,$18,$18,$18,$18,$18,$18,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $70,$18,$18,$0E,$18,$18,$70,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $76,$DC,$00,$00,$00,$00,$00,$00
- .dsb 8*3, 0
- .db $00,$38,$44,$40,$49,$43,$33,$03
- .db $FF,$C7,$B8,$B8,$B1,$B3,$C3,$F3
- .db $03,$01,$00,$13,$39,$3F,$37,$33
- .db $F3,$E1,$C0,$80,$80,$80,$80,$80
- .db $00,$00,$00,$C0,$E0,$E0,$50,$F0
- .db $FF,$FF,$1F,$CF,$EF,$E7,$57,$F7
- .db $F0,$20,$C0,$00,$E8,$F8,$FC,$E8
- .db $F7,$27,$C7,$07,$03,$03,$01,$01
- .db $00,$00,$00,$07,$1F,$00,$10,$18
- .db $FF,$F8,$E0,$E0,$E0,$E0,$E0,$E0
- .db $1F,$0F,$0F,$1F,$18,$38,$70,$60
- .db $E0,$F0,$F7,$FE,$D8,$B8,$70,$60
- .db $00,$00,$00,$E0,$F8,$00,$80,$88
- .db $FF,$0F,$07,$07,$07,$07,$07,$07
- .db $F8,$FC,$3E,$F6,$42,$63,$63,$63
- .db $07,$0F,$3F,$CF,$47,$63,$63,$63
- .db $00,$00,$00,$00,$00,$00,$00,$01
- .db $00,$00,$00,$00,$00,$00,$01,$02
- .db $00,$00,$00,$00,$00,$00,$00,$80
- .db $00,$00,$00,$00,$00,$00,$80,$C0
- .db $01,$00,$00,$00,$00,$00,$00,$00
- .db $02,$01,$00,$00,$00,$00,$00,$00
- .db $80,$00,$00,$00,$00,$00,$00,$00
- .db $C0,$80,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$FF
- .db $00,$00,$00,$00,$00,$00,$FF,$00
- .db $FF,$00,$00,$00,$00,$00,$00,$00
- .db $FF,$FF,$00,$00,$00,$00,$00,$00
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $02,$02,$02,$02,$02,$02,$02,$02
- .db $80,$80,$80,$80,$80,$80,$80,$80
- .db $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0
- .dsb 8*224, 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement