diff --git a/samples/animation/chr_generic.chr b/samples/animation/chr_generic.chr
new file mode 100644
index 00000000..6546399f
--- /dev/null
+++ b/samples/animation/chr_generic.chr
@@ -0,0 +1,514 @@
+.segment "CHARS"
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55
+.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $AA,$55,$AA,$55,$AA,$55,$AA,$55
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC
+.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33
+.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $CC,$33,$CC,$33,$CC,$33,$CC,$33
+.byte $33,$CC,$33,$CC,$33,$CC,$33,$CC
+.byte $3E,$7F,$7F,$7F,$7F,$7F,$7F,$3E
+.byte $3C,$42,$5A,$52,$5A,$42,$3C,$00
+.byte $FE,$FF,$7F,$7B,$7B,$00,$00,$00
+.byte $F4,$4A,$52,$52,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$3F,$7E,$7E,$7E,$3C
+.byte $0E,$06,$0A,$38,$6C,$6C,$38,$00
+.byte $3C,$7E,$7E,$7E,$3C,$3C,$3C,$18
+.byte $38,$6C,$6C,$38,$10,$38,$10,$00
+.byte $18,$3C,$7E,$FF,$FF,$FF,$3C,$3C
+.byte $10,$38,$7C,$FE,$EE,$10,$38,$00
+.byte $7E,$FF,$FF,$FF,$FF,$7E,$3C,$18
+.byte $6C,$FE,$FE,$FE,$7C,$38,$10,$00
+.byte $18,$3C,$7E,$FF,$FF,$7E,$3C,$18
+.byte $10,$38,$7C,$FE,$7C,$38,$10,$00
+.byte $3C,$7E,$7E,$FF,$FF,$FF,$3C,$3C
+.byte $38,$7C,$38,$FE,$D6,$10,$38,$00
+.byte $18,$3C,$FF,$FF,$7E,$7E,$7E,$7E
+.byte $10,$38,$FE,$7C,$38,$7C,$6C,$00
+.byte $0F,$1F,$7F,$FF,$FC,$FC,$FC,$78
+.byte $0A,$14,$72,$F8,$F8,$F8,$70,$00
+.byte $00,$00,$FF,$FF,$F6,$F6,$F6,$F6
+.byte $00,$00,$EE,$84,$E4,$24,$E4,$00
+.byte $00,$00,$FC,$FC,$FC,$FC,$FF,$FF
+.byte $00,$00,$E8,$88,$E8,$28,$EE,$00
+.byte $18,$3C,$7E,$FF,$FF,$DB,$18,$18
+.byte $10,$38,$7C,$D6,$92,$10,$10,$00
+.byte $18,$18,$DB,$FF,$FF,$7E,$3C,$18
+.byte $10,$10,$92,$D6,$7C,$38,$10,$00
+.byte $1C,$3C,$78,$FF,$FF,$78,$3C,$1C
+.byte $18,$30,$60,$FE,$60,$30,$18,$00
+.byte $38,$3C,$1E,$FF,$FF,$1E,$3C,$38
+.byte $30,$18,$0C,$FE,$0C,$18,$30,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $3C,$3C,$3C,$38,$38,$38,$38,$38
+.byte $38,$38,$30,$30,$30,$00,$30,$00
+.byte $3C,$3C,$3C,$3C,$00,$00,$00,$00
+.byte $28,$28,$28,$00,$00,$00,$00,$00
+.byte $00,$3C,$7E,$7E,$7E,$7E,$3C,$00
+.byte $00,$28,$7C,$28,$7C,$28,$00,$00
+.byte $0C,$3F,$3F,$3E,$3E,$7E,$7E,$18
+.byte $08,$3E,$28,$3C,$14,$7C,$10,$00
+.byte $00,$76,$7E,$7C,$3E,$7E,$6E,$00
+.byte $00,$64,$48,$10,$24,$4C,$00,$00
+.byte $00,$38,$7C,$7C,$7E,$7E,$7E,$3E
+.byte $00,$30,$48,$30,$5C,$48,$34,$00
+.byte $30,$30,$70,$60,$00,$00,$00,$00
+.byte $20,$20,$40,$00,$00,$00,$00,$00
+.byte $0E,$1E,$3C,$38,$38,$3C,$1E,$0E
+.byte $0C,$18,$30,$30,$30,$18,$0C,$00
+.byte $70,$78,$3C,$1C,$1C,$3C,$78,$70
+.byte $60,$30,$18,$18,$18,$30,$60,$00
+.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00
+.byte $00,$00,$3C,$18,$3C,$00,$00,$00
+.byte $00,$18,$18,$7E,$7E,$18,$18,$00
+.byte $00,$10,$10,$7C,$10,$10,$00,$00
+.byte $00,$00,$00,$00,$38,$38,$78,$70
+.byte $00,$00,$00,$00,$30,$30,$60,$00
+.byte $00,$00,$00,$3E,$3E,$00,$00,$00
+.byte $00,$00,$00,$3C,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$38,$38,$38
+.byte $00,$00,$00,$00,$00,$30,$30,$00
+.byte $06,$0E,$0E,$1C,$1C,$38,$38,$30
+.byte $04,$0C,$08,$18,$10,$30,$20,$00
+.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C
+.byte $38,$6C,$6C,$6C,$6C,$6C,$38,$00
+.byte $1C,$3C,$3C,$1C,$1C,$1C,$1C,$1C
+.byte $18,$38,$18,$18,$18,$18,$18,$00
+.byte $3C,$7E,$7E,$3E,$7C,$7E,$7E,$7E
+.byte $38,$6C,$0C,$38,$60,$6C,$7C,$00
+.byte $3C,$7E,$7E,$3E,$3E,$7E,$7E,$3C
+.byte $38,$6C,$0C,$38,$0C,$6C,$38,$00
+.byte $7E,$7E,$7E,$7E,$7E,$0E,$0E,$0E
+.byte $6C,$6C,$6C,$7C,$0C,$0C,$0C,$00
+.byte $7E,$7E,$7E,$7C,$7E,$7E,$7E,$3C
+.byte $7C,$6C,$60,$78,$0C,$6C,$38,$00
+.byte $3C,$7E,$7E,$7C,$7E,$7E,$7E,$3C
+.byte $38,$6C,$60,$78,$6C,$6C,$38,$00
+.byte $7E,$7E,$7E,$7E,$0E,$0E,$0E,$0E
+.byte $7C,$6C,$6C,$0C,$0C,$0C,$0C,$00
+.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3C
+.byte $38,$6C,$6C,$38,$6C,$6C,$38,$00
+.byte $3C,$7E,$7E,$7E,$3E,$7E,$7E,$3C
+.byte $38,$6C,$6C,$3C,$0C,$6C,$38,$00
+.byte $00,$38,$38,$38,$38,$38,$38,$00
+.byte $00,$30,$30,$00,$30,$30,$00,$00
+.byte $00,$38,$38,$38,$38,$38,$78,$70
+.byte $00,$30,$30,$00,$30,$30,$60,$00
+.byte $0E,$1E,$3C,$78,$78,$3C,$1E,$0E
+.byte $0C,$18,$30,$60,$30,$18,$0C,$00
+.byte $00,$00,$3E,$3E,$3E,$3E,$00,$00
+.byte $00,$00,$3C,$00,$3C,$00,$00,$00
+.byte $70,$78,$3C,$1E,$1E,$3C,$78,$70
+.byte $60,$30,$18,$0C,$18,$30,$60,$00
+.byte $3C,$7E,$7E,$1E,$3C,$38,$38,$38
+.byte $38,$6C,$0C,$18,$30,$00,$30,$00
+.byte $3C,$7E,$7E,$7E,$7E,$7E,$7E,$3E
+.byte $38,$44,$5C,$54,$5C,$40,$3C,$00
+.byte $3E,$7F,$77,$7F,$7F,$77,$77,$77
+.byte $3C,$66,$66,$7E,$66,$66,$66,$00
+.byte $7E,$7F,$77,$7F,$7F,$77,$7F,$7E
+.byte $7C,$66,$66,$7C,$66,$66,$7C,$00
+.byte $3E,$7F,$77,$70,$70,$77,$7F,$3E
+.byte $3C,$66,$60,$60,$60,$66,$3C,$00
+.byte $7C,$7E,$7F,$77,$77,$7F,$7E,$7C
+.byte $78,$6C,$66,$66,$66,$6C,$78,$00
+.byte $7F,$7F,$70,$7F,$7F,$70,$7F,$7F
+.byte $7E,$60,$60,$7E,$60,$60,$7E,$00
+.byte $7F,$7F,$70,$7C,$7C,$70,$70,$70
+.byte $7E,$60,$60,$78,$60,$60,$60,$00
+.byte $3E,$7F,$77,$7F,$7F,$77,$7F,$3E
+.byte $3C,$66,$60,$6E,$66,$66,$3C,$00
+.byte $77,$77,$77,$7F,$7F,$77,$77,$77
+.byte $66,$66,$66,$7E,$66,$66,$66,$00
+.byte $7F,$7F,$1C,$1C,$1C,$1C,$7F,$7F
+.byte $7E,$18,$18,$18,$18,$18,$7E,$00
+.byte $07,$07,$07,$07,$77,$77,$7F,$3E
+.byte $06,$06,$06,$06,$66,$66,$3C,$00
+.byte $77,$7F,$7E,$7C,$7C,$7E,$7F,$77
+.byte $66,$6C,$78,$70,$78,$6C,$66,$00
+.byte $70,$70,$70,$70,$70,$70,$7F,$7F
+.byte $60,$60,$60,$60,$60,$60,$7E,$00
+.byte $FE,$FF,$FF,$FF,$FF,$E7,$E7,$E7
+.byte $EC,$FE,$D6,$D6,$C6,$C6,$C6,$00
+.byte $77,$7F,$7F,$7F,$7F,$7F,$77,$77
+.byte $66,$76,$7E,$7E,$6E,$66,$66,$00
+.byte $3E,$7F,$77,$77,$77,$77,$7F,$3E
+.byte $3C,$66,$66,$66,$66,$66,$3C,$00
+.byte $7E,$7F,$77,$7F,$7E,$70,$70,$70
+.byte $7C,$66,$66,$7C,$60,$60,$60,$00
+.byte $3E,$7F,$77,$77,$77,$7F,$7F,$3F
+.byte $3C,$66,$66,$66,$66,$6C,$3E,$00
+.byte $7E,$7F,$77,$7F,$7E,$7E,$7F,$77
+.byte $7C,$66,$66,$7C,$78,$6C,$66,$00
+.byte $3E,$7F,$77,$7E,$3F,$77,$7F,$3E
+.byte $3C,$66,$60,$3C,$06,$66,$3C,$00
+.byte $7F,$7F,$1C,$1C,$1C,$1C,$1C,$1C
+.byte $7E,$18,$18,$18,$18,$18,$18,$00
+.byte $77,$77,$77,$77,$77,$77,$7F,$3E
+.byte $66,$66,$66,$66,$66,$66,$3C,$00
+.byte $77,$77,$77,$77,$7F,$3E,$3E,$1C
+.byte $66,$66,$66,$66,$3C,$3C,$18,$00
+.byte $E7,$E7,$FF,$FF,$FF,$FF,$FF,$7E
+.byte $C6,$C6,$D6,$D6,$D6,$FE,$6C,$00
+.byte $77,$77,$7F,$3E,$3E,$7F,$77,$77
+.byte $66,$66,$3C,$18,$3C,$66,$66,$00
+.byte $77,$77,$77,$7F,$3E,$1C,$1C,$1C
+.byte $66,$66,$66,$3C,$18,$18,$18,$00
+.byte $7F,$7F,$0F,$1E,$3C,$78,$7F,$7F
+.byte $7E,$06,$0C,$18,$30,$60,$7E,$00
+.byte $1F,$1F,$1C,$1C,$1C,$1C,$1F,$1F
+.byte $1E,$18,$18,$18,$18,$18,$1E,$00
+.byte $30,$38,$38,$1C,$1C,$0E,$0E,$06
+.byte $20,$30,$10,$18,$08,$0C,$04,$00
+.byte $F8,$F8,$38,$38,$38,$38,$F8,$F8
+.byte $F0,$30,$30,$30,$30,$30,$F0,$00
+.byte $18,$3C,$7E,$7E,$00,$00,$00,$00
+.byte $10,$38,$6C,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$7F,$7F
+.byte $00,$00,$00,$00,$00,$00,$7E,$00
+.byte $30,$30,$38,$18,$00,$00,$00,$00
+.byte $20,$20,$10,$00,$00,$00,$00,$00
+.byte $00,$00,$3C,$3E,$3E,$7E,$7E,$3E
+.byte $00,$00,$38,$0C,$3C,$4C,$34,$00
+.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7C
+.byte $60,$60,$78,$6C,$6C,$6C,$78,$00
+.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C
+.byte $00,$00,$38,$6C,$60,$6C,$38,$00
+.byte $0E,$0E,$3E,$7E,$7E,$7E,$7E,$3E
+.byte $0C,$0C,$3C,$6C,$6C,$6C,$3C,$00
+.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3E
+.byte $00,$00,$38,$64,$7C,$60,$3C,$00
+.byte $00,$3C,$7E,$7E,$7C,$7C,$70,$70
+.byte $00,$38,$6C,$60,$78,$60,$60,$00
+.byte $00,$00,$3E,$7E,$7E,$3E,$7E,$7C
+.byte $00,$00,$3C,$6C,$3C,$0C,$78,$00
+.byte $70,$70,$7C,$7E,$7E,$7E,$7E,$7E
+.byte $60,$60,$78,$6C,$6C,$6C,$6C,$00
+.byte $00,$1C,$1C,$1C,$1C,$1C,$1C,$1C
+.byte $00,$18,$00,$18,$18,$18,$18,$00
+.byte $00,$0E,$0E,$0E,$0E,$7E,$7E,$3C
+.byte $00,$0C,$00,$0C,$0C,$6C,$38,$00
+.byte $70,$70,$7E,$7E,$7C,$7C,$7E,$7E
+.byte $60,$60,$6C,$78,$70,$78,$6C,$00
+.byte $3C,$3C,$1C,$1C,$1C,$1C,$1C,$1C
+.byte $38,$18,$18,$18,$18,$18,$18,$00
+.byte $00,$00,$7E,$7F,$7F,$7F,$77,$77
+.byte $00,$00,$6C,$7E,$56,$66,$66,$00
+.byte $00,$00,$7C,$7E,$7E,$7E,$7E,$7E
+.byte $00,$00,$78,$6C,$6C,$6C,$6C,$00
+.byte $00,$00,$3C,$7E,$7E,$7E,$7E,$3C
+.byte $00,$00,$38,$6C,$6C,$6C,$38,$00
+.byte $00,$00,$7C,$7E,$7E,$7C,$70,$70
+.byte $00,$00,$78,$6C,$78,$60,$60,$00
+.byte $00,$00,$3E,$7E,$7E,$3E,$0E,$0E
+.byte $00,$00,$3C,$6C,$3C,$0C,$0C,$00
+.byte $00,$00,$7C,$7E,$7E,$70,$70,$70
+.byte $00,$00,$78,$6C,$60,$60,$60,$00
+.byte $00,$00,$3E,$7E,$7C,$3E,$7E,$7C
+.byte $00,$00,$3C,$60,$38,$0C,$78,$00
+.byte $00,$1C,$3E,$3E,$1C,$1C,$1E,$0E
+.byte $00,$18,$3C,$18,$18,$18,$0C,$00
+.byte $00,$00,$7E,$7E,$7E,$7E,$7E,$3E
+.byte $00,$00,$6C,$6C,$6C,$6C,$34,$00
+.byte $00,$00,$7E,$7E,$7E,$7E,$3E,$1C
+.byte $00,$00,$6C,$6C,$6C,$3C,$18,$00
+.byte $00,$00,$E7,$E7,$FF,$FF,$7E,$7E
+.byte $00,$00,$C6,$C6,$D6,$7C,$6C,$00
+.byte $00,$00,$7E,$7E,$3C,$3C,$7E,$7E
+.byte $00,$00,$6C,$38,$10,$38,$6C,$00
+.byte $00,$00,$7E,$7E,$7E,$3E,$7C,$78
+.byte $00,$00,$6C,$6C,$3C,$18,$70,$00
+.byte $00,$00,$7E,$7E,$3C,$78,$7E,$7E
+.byte $00,$00,$7C,$18,$30,$60,$7C,$00
+.byte $0E,$1E,$1C,$3C,$3C,$1C,$1E,$0E
+.byte $0C,$18,$18,$30,$18,$18,$0C,$00
+.byte $18,$18,$18,$18,$18,$18,$18,$18
+.byte $10,$10,$10,$10,$10,$10,$10,$00
+.byte $70,$78,$38,$3C,$3C,$38,$78,$70
+.byte $60,$30,$30,$18,$30,$30,$60,$00
+.byte $00,$00,$7F,$FF,$FE,$00,$00,$00
+.byte $00,$00,$76,$DC,$00,$00,$00,$00
+.byte $7F,$7F,$7F,$7F,$7F,$7F,$7F,$7F
+.byte $7E,$7E,$7E,$7E,$7E,$7E,$7E,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$F0,$F0,$F0,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$0F,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$F0,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$F0,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$F0,$F0,$F0,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$0F,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $7F,$80,$80,$80,$80,$80,$80,$80
+.byte $FF,$00,$00,$00,$00,$00,$00,$00
+.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0
+.byte $FF,$FF,$00,$00,$00,$00,$00,$00
+.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0
+.byte $FF,$FF,$FF,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
+.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00
+.byte $07,$07,$07,$07,$07,$F8,$F8,$F8
+.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00
+.byte $03,$03,$03,$03,$03,$03,$FC,$FC
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
+.byte $01,$01,$01,$01,$01,$01,$01,$FE
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $7F,$80,$80,$80,$80,$80,$80,$80
+.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $3F,$3F,$C0,$C0,$C0,$C0,$C0,$C0
+.byte $00,$00,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $1F,$1F,$1F,$E0,$E0,$E0,$E0,$E0
+.byte $00,$00,$00,$FF,$FF,$FF,$FF,$FF
+.byte $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF
+.byte $07,$07,$07,$07,$07,$F8,$F8,$F8
+.byte $00,$00,$00,$00,$00,$FF,$FF,$FF
+.byte $03,$03,$03,$03,$03,$03,$FC,$FC
+.byte $00,$00,$00,$00,$00,$00,$FF,$FF
+.byte $01,$01,$01,$01,$01,$01,$01,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$01,$01,$01,$01,$01,$01,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$03,$0C,$30,$C0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $03,$0C,$30,$C0,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C0,$30,$0C,$03,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$C0,$30,$0C,$03
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $10,$10,$20,$20,$40,$40,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$01,$02,$02,$04,$04,$08,$08
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$40,$40,$20,$20,$10,$10
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $08,$08,$04,$04,$02,$02,$01,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$02,$04,$08,$10,$20,$40,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$40,$20,$10,$08,$04,$02,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $81,$42,$24,$18,$18,$24,$42,$81
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $3C,$42,$81,$81,$81,$81,$42,$3C
+.byte $0C,$00,$10,$00,$00,$00,$04,$00
+.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E
+.byte $00,$3C,$BC,$5A,$00,$20,$24,$7E
+.byte $18,$00,$80,$42,$18,$04,$00,$12
+.byte $00,$FF,$00,$FF,$00,$FF,$00,$FF
+.byte $55,$AA,$55,$AA,$55,$AA,$55,$AA
+.byte $24,$00,$5A,$00,$24,$00,$18,$00
+.byte $24,$00,$5A,$00,$24,$00,$18,$3C
+.byte $4D,$41,$00,$2E,$24,$24,$6A,$6E
+.byte $0C,$00,$10,$3E,$2E,$2E,$2A,$2E
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $E7,$C3,$C3,$E7,$E7,$DB,$DB,$93
+.byte $24,$24,$C3,$08,$18,$C3,$24,$24
+.byte $18,$66,$42,$91,$89,$42,$66,$18
+.byte $18,$24,$00,$24,$00,$18,$00,$00
+.byte $24,$00,$5A,$00,$24,$00,$18,$3C
+.byte $5A,$36,$00,$00,$6C,$3B,$76,$00
+.byte $24,$7E,$54,$45,$48,$7E,$3E,$00
+.byte $00,$08,$14,$2A,$55,$2A,$14,$08
+.byte $80,$49,$36,$3E,$5D,$3E,$36,$49
+.byte $0F,$1F,$3F,$3D,$38,$38,$3C,$16
+.byte $0F,$1F,$3F,$3F,$3F,$3F,$3F,$17
+.byte $F0,$F8,$BC,$14,$A0,$A0,$08,$1C
+.byte $F0,$F8,$FC,$FC,$58,$58,$F8,$FC
+.byte $F2,$F1,$E1,$0F,$1F,$3B,$11,$00
+.byte $0D,$0E,$0E,$00,$00,$04,$0E,$0F
+.byte $00,$E0,$F0,$F0,$F8,$DC,$88,$00
+.byte $C0,$00,$00,$00,$00,$20,$70,$78
+.byte $F2,$F1,$E1,$1F,$3F,$13,$03,$00
+.byte $0D,$0E,$0E,$00,$00,$2C,$3C,$20
+.byte $00,$E0,$F0,$F8,$E0,$C0,$00,$00
+.byte $C0,$00,$00,$04,$1C,$3C,$1C,$00
+.byte $FF,$2F,$7F,$FF,$FF,$F2,$F7,$FF
+.byte $00,$FE,$FC,$D0,$00,$EF,$CF,$0D
+.byte $FF,$F9,$F9,$FF,$FF,$9F,$9F,$FF
+.byte $0F,$6F,$6F,$0F,$F0,$F6,$F6,$F0
+.byte $FF,$FF,$DF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$7E,$7C,$7E,$74,$7C,$50,$00
+.byte $05,$67,$4F,$1F,$9D,$3D,$A9,$FF
+.byte $FF,$FE,$FF,$FE,$FE,$FF,$FE,$A4
+.byte $00,$0F,$3F,$3F,$7F,$00,$7F,$7F
+.byte $0F,$30,$4D,$6D,$AD,$FF,$80,$AD
+.byte $7F,$7F,$7F,$00,$7F,$7F,$7F,$00
+.byte $AD,$AD,$AD,$FF,$80,$AD,$AD,$FF
+.byte $00,$F0,$FC,$FC,$FE,$00,$FE,$FE
+.byte $F0,$0C,$B2,$B6,$B7,$FF,$01,$B7
+.byte $EA,$E2,$FE,$00,$FE,$FE,$FE,$00
+.byte $B5,$BD,$A1,$FF,$01,$B7,$B7,$FF
+.byte $00,$22,$4C,$1F,$36,$3F,$5F,$17
+.byte $01,$63,$3F,$20,$2D,$29,$60,$EC
+.byte $FF,$7F,$36,$3F,$1F,$5C,$22,$00
+.byte $68,$20,$0D,$29,$20,$77,$43,$01
+.byte $80,$C4,$F2,$FC,$DC,$FC,$FA,$D8
+.byte $00,$86,$DC,$04,$B0,$24,$06,$37
+.byte $FF,$FE,$DC,$FC,$FC,$FA,$C4,$80
+.byte $26,$04,$B0,$20,$04,$CC,$86,$00
+.byte $00,$00,$00,$1C,$26,$2F,$3F,$3F
+.byte $00,$00,$1C,$3E,$7F,$7F,$7F,$7F
+.byte $1F,$0F,$07,$03,$01,$00,$00,$00
+.byte $3F,$1F,$0F,$07,$02,$01,$00,$00
+.byte $00,$00,$00,$38,$4C,$DC,$F4,$F4
+.byte $00,$00,$38,$74,$FA,$FA,$FA,$FA
+.byte $E8,$D0,$A0,$40,$80,$00,$00,$00
+.byte $F4,$E8,$D0,$A0,$40,$80,$00,$00
+.byte $00,$03,$0F,$30,$73,$73,$73,$70
+.byte $03,$0F,$3F,$FF,$FC,$FD,$FD,$FF
+.byte $73,$73,$3F,$CF,$33,$0C,$03,$00
+.byte $FC,$FD,$F1,$3F,$0F,$03,$00,$00
+.byte $80,$20,$C8,$72,$3A,$3A,$3A,$7A
+.byte $00,$C0,$F0,$BC,$DC,$DC,$DC,$9C
+.byte $FA,$FA,$F2,$CE,$38,$E0,$80,$00
+.byte $3C,$FC,$FC,$F0,$C0,$00,$00,$00
+.byte $B0,$B0,$BF,$B0,$BF,$BF,$B0,$B0
+.byte $E0,$E0,$E0,$FF,$EF,$E0,$E0,$E0
+.byte $0B,$0B,$FB,$0B,$FB,$FB,$0B,$0B
+.byte $0E,$0E,$0E,$FE,$F6,$0E,$0E,$0E
+.byte $00,$00,$00,$0C,$3E,$3E,$7B,$FB
+.byte $00,$00,$00,$38,$7C,$7C,$FE,$FE
+.byte $7B,$F3,$F3,$66,$7E,$3C,$00,$00
+.byte $FE,$FE,$7C,$7C,$38,$00,$00,$00
+.byte $30,$33,$0F,$0F,$1C,$1C,$1E,$1F
+.byte $30,$33,$0C,$08,$13,$13,$19,$14
+.byte $3F,$38,$1F,$1F,$03,$06,$0E,$07
+.byte $28,$2F,$14,$1F,$02,$04,$08,$07
+.byte $00,$E0,$F0,$F8,$94,$94,$64,$FC
+.byte $00,$E0,$10,$08,$FC,$FC,$9C,$04
+.byte $FC,$0E,$FE,$E4,$60,$60,$70,$38
+.byte $04,$FA,$1A,$E4,$40,$40,$60,$38
+.byte $30,$33,$0F,$0F,$1C,$1C,$1E,$1F
+.byte $30,$33,$0C,$08,$13,$13,$19,$14
+.byte $3F,$38,$1F,$1F,$03,$06,$0E,$07
+.byte $28,$2F,$14,$1F,$02,$04,$08,$07
+.byte $00,$E0,$F0,$F8,$94,$94,$64,$FC
+.byte $00,$E0,$10,$08,$FC,$FC,$9C,$04
+.byte $FC,$0E,$FE,$E4,$60,$30,$38,$0E
+.byte $04,$FA,$1A,$E4,$40,$20,$30,$0E
+.byte $00,$17,$0F,$1F,$12,$30,$08,$18
+.byte $00,$00,$00,$00,$0D,$0F,$07,$07
+.byte $0F,$1F,$1F,$13,$03,$0E,$0E,$0F
+.byte $0F,$1F,$1F,$1C,$0C,$00,$0E,$0F
+.byte $00,$C8,$F8,$F0,$40,$40,$00,$00
+.byte $00,$00,$00,$00,$A0,$B0,$E0,$C0
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$E0,$00
+.byte $C0,$C0,$E0,$20,$00,$C0,$E0,$00
+.byte $00,$00,$17,$0F,$1F,$12,$30,$08
+.byte $00,$00,$00,$00,$00,$0D,$0F,$07
+.byte $18,$1F,$0F,$0F,$3F,$7B,$43,$03
+.byte $07,$1F,$3F,$37,$20,$60,$43,$03
+.byte $00,$00,$C8,$F8,$F0,$40,$40,$00
+.byte $00,$00,$00,$00,$00,$A0,$B0,$E0
+.byte $00,$E0,$E0,$C0,$C0,$80,$80,$C0
+.byte $C0,$F8,$F8,$C0,$00,$00,$80,$C0
+.byte $00,$17,$0F,$1F,$12,$30,$08,$18
+.byte $00,$00,$00,$00,$0D,$0F,$07,$1F
+.byte $3F,$3F,$0F,$7F,$7F,$7E,$40,$00
+.byte $3F,$7F,$6F,$60,$60,$60,$40,$00
+.byte $00,$C8,$F8,$F0,$40,$40,$00,$00
+.byte $00,$00,$00,$00,$A0,$B0,$E0,$CC
+.byte $D0,$F8,$F0,$C4,$FC,$FC,$7C,$00
+.byte $DC,$F8,$F0,$04,$0C,$0C,$0C,$00
+.byte $00,$17,$0F,$1F,$1F,$3F,$0F,$7F
+.byte $00,$00,$00,$00,$00,$00,$30,$60
+.byte $7F,$3F,$1F,$0F,$0F,$0F,$0F,$0F
+.byte $7F,$3F,$1F,$00,$00,$06,$0F,$0F
+.byte $00,$E0,$F0,$FC,$FC,$FC,$FC,$FC
+.byte $00,$18,$08,$04,$04,$00,$0C,$04
+.byte $F8,$F8,$F8,$F8,$F0,$00,$00,$00
+.byte $F8,$F8,$C0,$00,$70,$00,$00,$00
+.byte $00,$17,$0F,$1F,$1A,$19,$0A,$7C
+.byte $00,$00,$00,$00,$05,$66,$65,$63
+.byte $7F,$3F,$4F,$7F,$7F,$7E,$00,$00
+.byte $7F,$3F,$4F,$60,$60,$60,$00,$00
+.byte $00,$E8,$F0,$F8,$58,$9C,$50,$38
+.byte $00,$00,$00,$00,$A0,$60,$A0,$C3
+.byte $FC,$FE,$F0,$E0,$F0,$F0,$E0,$70
+.byte $FF,$FE,$F0,$00,$00,$00,$E0,$70
+.byte $FF,$80,$80,$9F,$90,$97,$97,$97
+.byte $00,$7F,$7F,$7F,$7F,$7F,$7F,$7F
+.byte $97,$97,$97,$97,$9F,$BF,$FF,$00
+.byte $7F,$7F,$7F,$78,$7F,$60,$40,$00
+.byte $FE,$02,$06,$FE,$0E,$FE,$FE,$FE
+.byte $00,$FE,$FC,$F8,$F8,$E8,$E8,$E8
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$00
+.byte $E8,$E8,$E8,$08,$F8,$00,$00,$00
+.byte $00,$3F,$7F,$60,$6E,$72,$76,$76
+.byte $00,$00,$1F,$3F,$31,$2D,$29,$29
+.byte $7E,$60,$60,$7F,$7C,$7E,$3F,$00
+.byte $21,$3F,$3F,$38,$1B,$01,$00,$00
+.byte $00,$FC,$FE,$0E,$7E,$4E,$6E,$6E
+.byte $00,$00,$F8,$FC,$8C,$B4,$94,$94
+.byte $7E,$0E,$0E,$FE,$3E,$7E,$FC,$00
+.byte $84,$FC,$FC,$1C,$D8,$80,$00,$00
+.byte $00,$7F,$7F,$60,$7F,$7F,$77,$76
+.byte $00,$00,$3F,$3F,$00,$20,$29,$29
+.byte $72,$6E,$60,$77,$7E,$3C,$1F,$00
+.byte $2D,$31,$3F,$3C,$19,$03,$00,$00
+.byte $00,$FE,$FE,$0E,$FE,$FE,$EE,$6E
+.byte $00,$00,$FC,$FC,$00,$04,$94,$94
+.byte $4E,$7E,$0E,$EE,$7E,$3C,$F8,$00
+.byte $B4,$8C,$FC,$3C,$98,$C0,$00,$00
+;;
diff --git a/samples/crypto/Program.cs b/samples/crypto/Program.cs
new file mode 100644
index 00000000..c8c2bd63
--- /dev/null
+++ b/samples/crypto/Program.cs
@@ -0,0 +1,2368 @@
+#pragma warning disable CS0649, CS8321, CS0219
+using NES;
+using static NES.NESLib;
+
+// Link FamiTone2 sound engine (from famitone2.s / demosounds.s)
+static extern void sfx_play(byte sound, byte channel);
+static extern void famitone_update();
+
+const byte PLAYER_1 = 0;
+const byte PLAYER_2 = 1;
+
+// Use PAD enum values directly — neslib provides PAD.UP, PAD.DOWN, etc.
+const byte PAD_DPAD = (byte)PAD.LEFT | (byte)PAD.RIGHT | (byte)PAD.UP | (byte)PAD.DOWN;
+
+const byte OAM_FLIP_H = 0x40;
+const byte OAM_FLIP_V = 0x80;
+
+const byte min_x = 60;
+const byte max_x = 195;
+const byte min_y = 60;
+const byte max_y = 180;
+
+const ushort NAMETABLE_A = 0x2000;
+const ushort NAMETABLE_B = 0x2400;
+const ushort NAMETABLE_C = 0x2800;
+const ushort NAMETABLE_D = 0x2C00;
+
+
+byte[] palette = new byte[] {
+ 0x0D, 0x00, 0x3D, 0x3C, 0x0F, 0x09, 0x1B, 0x3C, 0x0F, 0x28, 0x0F, 0x30, 0x0F, 0x21, 0x1C, 0x0F,
+ 0x0D, 0x11, 0x16, 0x0D, 0x0F, 0x27, 0x16, 0x0D, 0x0F, 0x17, 0x15, 0x29, 0x0F, 0x27, 0x16, 0x0D
+};
+
+byte[] paused_palette = new byte[] {
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x00, 0x11, 0x16, 0x0D, 0x00, 0x27, 0x16, 0x0D, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F
+};
+
+byte[] bg_menu = new byte[] {
+ 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA,
+ 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA,
+ 0x81, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6,
+ 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2,
+ 0x77, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A,
+ 0x39, 0x38, 0x40, 0x37, 0x36, 0x40, 0x40, 0x35, 0x34, 0x33, 0x42, 0xDD, 0x00, 0x00, 0xFB, 0xFA,
+ 0xF9, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A,
+ 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1F, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x1E, 0x1D, 0x42, 0x1C, 0x24, 0x1B, 0x1A, 0x19, 0x18,
+ 0x17, 0x42, 0x16, 0x15, 0x42, 0x24, 0x14, 0x13, 0x12, 0x11, 0x10, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x42, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
+ 0x07, 0x09, 0x08, 0x07, 0x42, 0x0C, 0x06, 0x42, 0x05, 0x04, 0x42, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xB6, 0xB5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xB4, 0xB3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1,
+ 0xB0, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1,
+ 0xC0, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF,
+ 0xAE, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xBC,
+ 0xBB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60,
+ 0x5F, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E,
+ 0x5D, 0x48, 0x47, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0x00, 0x02, 0x0B, 0x46, 0x45, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56,
+ 0x00, 0x02, 0x0B, 0x44, 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02,
+ 0x0B, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x02, 0x0B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x02, 0x0B, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA,
+ 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xCB, 0xCA,
+ 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00,
+ 0xFB, 0xF2, 0xF1, 0x55, 0x02, 0x07, 0x11, 0x84, 0xA5, 0x02, 0x03, 0x21, 0x44, 0x55, 0x59, 0x5A,
+ 0x02, 0x03, 0x56, 0x55, 0x55, 0x45, 0x55, 0x02, 0x03, 0x15, 0x55, 0x55, 0x44, 0x55, 0x02, 0x03,
+ 0x11, 0x55, 0x55, 0x54, 0x11, 0x00, 0x00, 0x44, 0x51, 0x55, 0x02, 0x02, 0x11, 0x00, 0x00, 0x44,
+ 0x55, 0x55, 0x01, 0x04, 0x05, 0x00, 0x00, 0x05, 0x01, 0x04, 0x04, 0x02, 0x00
+};
+
+byte[] bg_top_left = new byte[] {
+ 0x01, 0x00, 0x01, 0x63, 0xFF, 0x01, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x01, 0x0B, 0x00, 0x01,
+ 0x02, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF6, 0xF5,
+ 0xF4, 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01,
+ 0x02, 0xFB, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xEE, 0xED,
+ 0xEC, 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01,
+ 0x02, 0xFB, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01,
+ 0x02, 0xFB, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01,
+ 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xDC, 0xDB, 0xDA, 0xD9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xD8, 0xD7, 0xFA, 0xF9, 0xFA, 0xF9, 0xD6, 0xD5, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xD4, 0xD3, 0xD2, 0xD1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xD0, 0xCF, 0xF2, 0xF1, 0xF2, 0xF1, 0xCE, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xDC,
+ 0xDB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xD4, 0xD3,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xDF, 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xCD, 0xCC, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xCB, 0xCA, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8, 0xC7, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xEA, 0xE9, 0x00, 0x01, 0x02, 0xC6, 0xC5, 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xE6, 0xE5, 0x00, 0x01, 0x02, 0xC6, 0xC3, 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xBF, 0xBE, 0xBD, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA, 0xB9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xD6, 0xD5, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xCE, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xB6, 0xB5,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xB4, 0xB3,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDA, 0xD9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE0, 0xB2, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD2, 0xD1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05,
+ 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xB1,
+ 0xB0, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xAF, 0xAE, 0x00, 0x01,
+ 0x08, 0x55, 0x01, 0x06, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x11, 0x00, 0x55, 0x44, 0x55,
+ 0x01, 0x03, 0x51, 0x00, 0x55, 0x44, 0x55, 0x11, 0x44, 0x55, 0x05, 0x00, 0x55, 0x01, 0x06, 0x00,
+ 0x55, 0x01, 0x03, 0x45, 0x55, 0x55, 0x00, 0x05, 0x00, 0x00, 0x05, 0x04, 0x05, 0x01, 0x02, 0x01,
+ 0x00
+};
+
+byte[] collision_top_left = new byte[] {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+byte[] bg_top_right = new byte[] {
+ 0x02, 0x00, 0x02, 0x5F, 0xFF, 0x02, 0x0B, 0xFE, 0xFD, 0xFD, 0xFC, 0xFF, 0x02, 0x0B, 0x00, 0x02,
+ 0x03, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0xDA, 0xD9, 0xF6, 0xF5, 0xF4,
+ 0xF3, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02,
+ 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0xD2, 0xD1, 0xEE, 0xED, 0xEC,
+ 0xEB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02,
+ 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02,
+ 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02,
+ 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x02,
+ 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x02, 0x05, 0xDE, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xDC, 0xDB, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xD4, 0xD3, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x9E, 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xE2, 0xE0, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xDD, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xDD, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0xDD, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0xDD, 0xFB, 0xFA,
+ 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xDD, 0xFB, 0xF2,
+ 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x02, 0x02, 0xE1, 0x02, 0x02, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0xFB, 0xDA,
+ 0xD9, 0x6D, 0x6C, 0x6E, 0x00, 0x02, 0x02, 0xFF, 0x02, 0x02, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF, 0xDE, 0xD2,
+ 0xD1, 0x6B, 0x6A, 0x69, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x68, 0x67, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x66, 0x65, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0xFA,
+ 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x02, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0xF2,
+ 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02, 0x02, 0x64, 0x63, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x02, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xDD, 0x00, 0x02, 0x02, 0x62, 0x61, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB,
+ 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x02, 0x05, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x02,
+ 0x0A, 0x55, 0x02, 0x06, 0x00, 0x44, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x54, 0x55, 0x02,
+ 0x03, 0x11, 0x55, 0x00, 0x05, 0x55, 0x11, 0x44, 0x55, 0x11, 0x55, 0x00, 0x55, 0x02, 0x06, 0x00,
+ 0x55, 0x55, 0x15, 0x55, 0x02, 0x03, 0x00, 0x05, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x02, 0x00
+};
+
+byte[] collision_top_right = new byte[] {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01
+};
+
+byte[] bg_bottom_left = new byte[] {
+ 0x01, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x60, 0x5F, 0x00, 0x01,
+ 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD,
+ 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x5E, 0x5D, 0x00, 0x01, 0x02, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xFA, 0xF9, 0x5C, 0x5B, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD,
+ 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xF2, 0xF1, 0x5A, 0x82, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDF,
+ 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x7C, 0x7B, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x59, 0x58, 0xEA, 0xE9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x72, 0x71, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x57, 0x56, 0xE6, 0xE5, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xC9, 0xC8,
+ 0xC7, 0xFA, 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1,
+ 0xE0, 0xFA, 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC5,
+ 0xC4, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00,
+ 0xFB, 0xF2, 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xDF, 0xFF, 0x01, 0x02, 0x00, 0x01, 0x02, 0xC6, 0xC3,
+ 0xC2, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00,
+ 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xBF, 0xBE,
+ 0xBD, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF,
+ 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xDC,
+ 0xDB, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xF8, 0xF7, 0xAD,
+ 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xFA, 0xF9, 0xFA, 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xD4,
+ 0xD3, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF0, 0xEF, 0xA5,
+ 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDA, 0xD9, 0x9E,
+ 0x9D, 0x9C, 0xF9, 0x9B, 0x9A, 0x99, 0x98, 0xFA, 0xF9, 0xE2, 0xE1, 0x00, 0x01, 0x02, 0xFB, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xD2, 0xD1, 0x97,
+ 0x96, 0x95, 0x94, 0x93, 0x92, 0xF2, 0x91, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x90, 0x8F,
+ 0x8E, 0x8D, 0x8C, 0xF9, 0x8B, 0x8A, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x89, 0x88, 0x87,
+ 0x86, 0x85, 0x84, 0x83, 0x82, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xFA, 0xF9, 0xC1, 0xC0, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C,
+ 0x7B, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB,
+ 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0xF2, 0xF1, 0xDF,
+ 0xFF, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0x00, 0x01, 0x02, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0x55, 0x54, 0x53, 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0x00, 0x01, 0x02, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0x51, 0x50, 0x4F, 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0x00, 0x01, 0x03, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01,
+ 0x60, 0x55, 0x50, 0x50, 0x55, 0x44, 0x55, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x55, 0x45, 0x55,
+ 0x15, 0x45, 0x55, 0x05, 0x00, 0x55, 0x44, 0x55, 0x51, 0x54, 0x55, 0x55, 0x00, 0x55, 0x54, 0x55,
+ 0x01, 0x03, 0x11, 0x00, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x51, 0x00, 0x05, 0x01, 0x06, 0x00,
+ 0x01, 0x08, 0x01, 0x00
+};
+
+byte[] collision_bottom_left = new byte[] {
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+byte[] bg_bottom_right = new byte[] {
+ 0x01, 0x4A, 0x49, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0x00, 0x01, 0x05, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0x48, 0x47,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF,
+ 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA,
+ 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8,
+ 0xB7, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0x46,
+ 0x45, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0x44,
+ 0x43, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xCD, 0xCC, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xCB, 0xCA, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0x01, 0x02, 0xE0, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xE2, 0xE0, 0xFA, 0xF9, 0x7A, 0x79, 0x78, 0x00, 0x01, 0x02, 0xFF, 0x01, 0x02, 0xDE, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x00, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x70, 0x6F, 0x6E, 0x00, 0x01, 0x02, 0xBA, 0xB9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x00, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0x6D, 0x6C, 0x6E, 0x00, 0x01, 0x02, 0xB8, 0xB7, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDF, 0xFF, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0x6B, 0x6A, 0x69, 0x00, 0x01, 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xDD, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x02, 0xE1, 0xE0, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xDD, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xDF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xBA,
+ 0xB9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xB8, 0xB7,
+ 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01, 0x03, 0xFB, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xE2, 0xE1, 0x01, 0x05, 0xE0, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9,
+ 0xDD, 0x00, 0x01, 0x02, 0xFF, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1,
+ 0xDF, 0xFF, 0x01, 0x05, 0xDE, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01,
+ 0x02, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA,
+ 0xF9, 0xFA, 0xF9, 0xEA, 0xE9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xC1, 0xC0, 0xDD, 0x00, 0x01,
+ 0x02, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2,
+ 0xF1, 0xF2, 0xF1, 0xE6, 0xE5, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xBC, 0xBB, 0xDD, 0x00, 0x01,
+ 0x02, 0xFA, 0xF9, 0xE8, 0xE7, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0x55, 0x54, 0x53,
+ 0x52, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xFA, 0xF9, 0xDD, 0x00, 0x01,
+ 0x02, 0xF2, 0xF1, 0xE4, 0xE3, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0x51, 0x50, 0x4F,
+ 0x4E, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xF2, 0xF1, 0xDD, 0x00, 0x01,
+ 0x02, 0xE1, 0x01, 0x0B, 0x4D, 0x4C, 0x4C, 0x4B, 0xE1, 0x01, 0x0B, 0x00, 0x01, 0x63, 0x55, 0x55,
+ 0x11, 0x55, 0x50, 0x50, 0x55, 0x00, 0x55, 0x01, 0x06, 0x00, 0x05, 0x55, 0x15, 0x45, 0x55, 0x15,
+ 0x55, 0x00, 0x55, 0x55, 0x51, 0x54, 0x55, 0x11, 0x55, 0x00, 0x44, 0x55, 0x01, 0x03, 0x51, 0x55,
+ 0x00, 0x54, 0x55, 0x55, 0x50, 0x50, 0x55, 0x55, 0x00, 0x05, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01,
+ 0x00
+};
+
+byte[] collision_bottom_right = new byte[] {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+};
+
+byte[] spawn = new byte[] {
+ 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, 0x03, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x04,
+ 0x02, 0x05, 0x03, 0x05, 0x04, 0x05, 0x05, 0x05, 0x06, 0x05, 0x07, 0x05, 0x02, 0x06, 0x03, 0x06,
+ 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x19, 0x02, 0x1A, 0x02, 0x1B, 0x02, 0x1C, 0x02, 0x1D, 0x02,
+ 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x03, 0x1C, 0x03, 0x1D, 0x03, 0x1A, 0x04, 0x1B, 0x04, 0x1C, 0x04,
+ 0x1D, 0x04, 0x19, 0x05, 0x1A, 0x05, 0x1B, 0x05, 0x1C, 0x05, 0x1D, 0x05, 0x19, 0x06, 0x1A, 0x06,
+ 0x1C, 0x06, 0x1D, 0x06, 0x02, 0x16, 0x03, 0x16, 0x05, 0x16, 0x06, 0x16, 0x07, 0x16, 0x02, 0x17,
+ 0x03, 0x17, 0x05, 0x17, 0x06, 0x17, 0x07, 0x17, 0x02, 0x18, 0x03, 0x18, 0x04, 0x18, 0x05, 0x18,
+ 0x06, 0x18, 0x07, 0x18, 0x02, 0x19, 0x03, 0x19, 0x04, 0x19, 0x05, 0x19, 0x02, 0x1A, 0x03, 0x1A,
+ 0x04, 0x1A, 0x05, 0x1A, 0x06, 0x1A, 0x07, 0x1A, 0x02, 0x1B, 0x03, 0x1B, 0x04, 0x1B, 0x05, 0x1B,
+ 0x06, 0x1B, 0x07, 0x1B, 0x19, 0x16, 0x1A, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x19, 0x17, 0x1A, 0x17,
+ 0x1C, 0x17, 0x1D, 0x17, 0x19, 0x18, 0x1A, 0x18, 0x1B, 0x18, 0x1C, 0x18, 0x1D, 0x18, 0x1A, 0x19,
+ 0x1B, 0x19, 0x1C, 0x19, 0x1D, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1A, 0x1C, 0x1A, 0x1D, 0x1A,
+ 0x19, 0x1B, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1B, 0x1D, 0x1B, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
+};
+
+byte[] item_target_x = new byte[] { 108, 148, 108, 148 };
+byte[] item_target_y = new byte[] { 99, 140, 139, 99 };
+
+byte[] spider_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x01, 0x00, 0xF8, 0x86, 0x01, 0x80 };
+byte[] spider_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x81, 0x00, 0xF8, 0x86, 0x81, 0x80 };
+byte[] spider_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x01, 0x00, 0xF8, 0xA6, 0x01, 0x80 };
+byte[] spider_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x41, 0x00, 0xF8, 0xA4, 0x41, 0x80 };
+byte[] spider_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x01, 0x00, 0xF8, 0x8A, 0x01, 0x80 };
+byte[] spider_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x81, 0x00, 0xF8, 0x8A, 0x81, 0x80 };
+byte[] spider_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x01, 0x00, 0xF8, 0xAA, 0x01, 0x80 };
+byte[] spider_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x41, 0x00, 0xF8, 0xA8, 0x41, 0x80 };
+byte[] spider_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x41, 0x00, 0xF8, 0x88, 0x41, 0x80 };
+byte[] spider_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC1, 0x00, 0xF8, 0x88, 0xC1, 0x80 };
+byte[] spider_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x81, 0x00, 0xF8, 0xAA, 0x81, 0x80 };
+byte[] spider_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC1, 0x00, 0xF8, 0xA8, 0xC1, 0x80 };
+byte[] spider_attack_up = new byte[] { 0xF8, 0xF8, 0x84, 0x02, 0x00, 0xF8, 0x86, 0x02, 0x80 };
+byte[] spider_attack_down = new byte[] { 0xF8, 0xF8, 0x84, 0x82, 0x00, 0xF8, 0x86, 0x82, 0x80 };
+byte[] spider_attack_right = new byte[] { 0xF8, 0xF8, 0xA4, 0x02, 0x00, 0xF8, 0xA6, 0x02, 0x80 };
+byte[] spider_attack_left = new byte[] { 0xF8, 0xF8, 0xA6, 0x42, 0x00, 0xF8, 0xA4, 0x42, 0x80 };
+byte[] spider_leg_0_up = new byte[] { 0xF8, 0xF8, 0x88, 0x02, 0x00, 0xF8, 0x8A, 0x02, 0x80 };
+byte[] spider_leg_0_down = new byte[] { 0xF8, 0xF8, 0x88, 0x82, 0x00, 0xF8, 0x8A, 0x82, 0x80 };
+byte[] spider_leg_0_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x02, 0x00, 0xF8, 0xAA, 0x02, 0x80 };
+byte[] spider_leg_0_left = new byte[] { 0xF8, 0xF8, 0xAA, 0x42, 0x00, 0xF8, 0xA8, 0x42, 0x80 };
+byte[] spider_leg_1_up = new byte[] { 0xF8, 0xF8, 0x8A, 0x42, 0x00, 0xF8, 0x88, 0x42, 0x80 };
+byte[] spider_leg_1_down = new byte[] { 0xF8, 0xF8, 0x8A, 0xC2, 0x00, 0xF8, 0x88, 0xC2, 0x80 };
+byte[] spider_leg_1_right = new byte[] { 0xF8, 0xF8, 0xA8, 0x82, 0x00, 0xF8, 0xAA, 0x82, 0x80 };
+byte[] spider_leg_1_left = new byte[] { 0xF8, 0xF8, 0xAA, 0xC2, 0x00, 0xF8, 0xA8, 0xC2, 0x80 };
+byte[] bat_damaged_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x01, 0x00, 0xF8, 0x96, 0x01, 0x80 };
+byte[] bat_damaged_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x81, 0x00, 0xF8, 0x96, 0x81, 0x80 };
+byte[] bat_damaged_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x01, 0x00, 0xF8, 0xB6, 0x01, 0x80 };
+byte[] bat_damaged_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x41, 0x00, 0xF8, 0xB4, 0x41, 0x80 };
+byte[] bat_damaged_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x01, 0x00, 0xF8, 0x9A, 0x01, 0x80 };
+byte[] bat_damaged_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x81, 0x00, 0xF8, 0x9A, 0x81, 0x80 };
+byte[] bat_damaged_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x01, 0x00, 0xF8, 0xBA, 0x01, 0x80 };
+byte[] bat_damaged_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x41, 0x00, 0xF8, 0xB8, 0x41, 0x80 };
+byte[] bat_damaged_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x41, 0x00, 0xF8, 0x98, 0x41, 0x80 };
+byte[] bat_damaged_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC1, 0x00, 0xF8, 0x98, 0xC1, 0x80 };
+byte[] bat_damaged_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x81, 0x00, 0xF8, 0xBA, 0x81, 0x80 };
+byte[] bat_damaged_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC1, 0x00, 0xF8, 0xB8, 0xC1, 0x80 };
+byte[] bat_attack_up = new byte[] { 0xF8, 0xF8, 0x94, 0x02, 0x00, 0xF8, 0x96, 0x02, 0x80 };
+byte[] bat_attack_down = new byte[] { 0xF8, 0xF8, 0x94, 0x82, 0x00, 0xF8, 0x96, 0x82, 0x80 };
+byte[] bat_attack_right = new byte[] { 0xF8, 0xF8, 0xB4, 0x02, 0x00, 0xF8, 0xB6, 0x02, 0x80 };
+byte[] bat_attack_left = new byte[] { 0xF8, 0xF8, 0xB6, 0x42, 0x00, 0xF8, 0xB4, 0x42, 0x80 };
+byte[] bat_leg_0_up = new byte[] { 0xF8, 0xF8, 0x98, 0x02, 0x00, 0xF8, 0x9A, 0x02, 0x80 };
+byte[] bat_leg_0_down = new byte[] { 0xF8, 0xF8, 0x98, 0x82, 0x00, 0xF8, 0x9A, 0x82, 0x80 };
+byte[] bat_leg_0_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x02, 0x00, 0xF8, 0xBA, 0x02, 0x80 };
+byte[] bat_leg_0_left = new byte[] { 0xF8, 0xF8, 0xBA, 0x42, 0x00, 0xF8, 0xB8, 0x42, 0x80 };
+byte[] bat_leg_1_up = new byte[] { 0xF8, 0xF8, 0x9A, 0x42, 0x00, 0xF8, 0x98, 0x42, 0x80 };
+byte[] bat_leg_1_down = new byte[] { 0xF8, 0xF8, 0x9A, 0xC2, 0x00, 0xF8, 0x98, 0xC2, 0x80 };
+byte[] bat_leg_1_right = new byte[] { 0xF8, 0xF8, 0xB8, 0x82, 0x00, 0xF8, 0xBA, 0x82, 0x80 };
+byte[] bat_leg_1_left = new byte[] { 0xF8, 0xF8, 0xBA, 0xC2, 0x00, 0xF8, 0xB8, 0xC2, 0x80 };
+byte[] player_carry_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x00, 0x00, 0xF8, 0x3E, 0x00, 0x80 };
+byte[] player_carry_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x80, 0x00, 0xF8, 0x3E, 0x80, 0x80 };
+byte[] player_carry_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x40, 0x00, 0xF8, 0x5A, 0x40, 0x80 };
+byte[] player_carry_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x00, 0x00, 0xF8, 0x5C, 0x00, 0x80 };
+byte[] player_carry_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x00, 0x00, 0xF8, 0x3A, 0x00, 0x80 };
+byte[] player_carry_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x40, 0x00, 0xF8, 0x38, 0x40, 0x80 };
+byte[] player_carry_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x80, 0x00, 0xF8, 0x3A, 0x80, 0x80 };
+byte[] player_carry_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC0, 0x00, 0xF8, 0x38, 0xC0, 0x80 };
+byte[] player_carry_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x58, 0x00, 0x80 };
+byte[] player_carry_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x58, 0x80, 0x80 };
+byte[] player_carry_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 };
+byte[] player_carry_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 };
+byte[] player_carry_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x3C, 0x01, 0x00, 0xF8, 0x3E, 0x01, 0x80 };
+byte[] player_carry_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x3C, 0x81, 0x00, 0xF8, 0x3E, 0x81, 0x80 };
+byte[] player_carry_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x5C, 0x41, 0x00, 0xF8, 0x5A, 0x41, 0x80 };
+byte[] player_carry_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x5A, 0x01, 0x00, 0xF8, 0x5C, 0x01, 0x80 };
+byte[] player_carry_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x38, 0x01, 0x00, 0xF8, 0x3A, 0x01, 0x80 };
+byte[] player_carry_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x3A, 0x41, 0x00, 0xF8, 0x38, 0x41, 0x80 };
+byte[] player_carry_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x38, 0x81, 0x00, 0xF8, 0x3A, 0x81, 0x80 };
+byte[] player_carry_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x3A, 0xC1, 0x00, 0xF8, 0x38, 0xC1, 0x80 };
+byte[] player_carry_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x01, 0x00, 0xF8, 0x58, 0x01, 0x80 };
+byte[] player_carry_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x56, 0x81, 0x00, 0xF8, 0x58, 0x81, 0x80 };
+byte[] player_carry_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0x41, 0x00, 0xF8, 0x56, 0x41, 0x80 };
+byte[] player_carry_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x58, 0xC1, 0x00, 0xF8, 0x56, 0xC1, 0x80 };
+byte[] player_0_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x00, 0x00, 0xF8, 0x26, 0x00, 0x80 };
+byte[] player_0_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x80, 0x00, 0xF8, 0x26, 0x80, 0x80 };
+byte[] player_0_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x40, 0x00, 0xF8, 0x44, 0x40, 0x80 };
+byte[] player_0_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x00, 0x00, 0xF8, 0x46, 0x00, 0x80 };
+byte[] player_0_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x00, 0x00, 0xF8, 0x22, 0x00, 0x80 };
+byte[] player_0_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x40, 0x00, 0xF8, 0x20, 0x40, 0x80 };
+byte[] player_0_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x80, 0x00, 0xF8, 0x22, 0x80, 0x80 };
+byte[] player_0_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC0, 0x00, 0xF8, 0x20, 0xC0, 0x80 };
+byte[] player_0_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x00, 0x00, 0xF8, 0x42, 0x00, 0x80 };
+byte[] player_0_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x80, 0x00, 0xF8, 0x42, 0x80, 0x80 };
+byte[] player_0_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x40, 0x00, 0xF8, 0x40, 0x40, 0x80 };
+byte[] player_0_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC0, 0x00, 0xF8, 0x40, 0xC0, 0x80 };
+byte[] player_0_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4A, 0x00, 0xF8, 0xF0, 0x28, 0x00, 0x00, 0xF0, 0x2A, 0x00, 0x80 };
+byte[] player_0_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x4E, 0x00, 0xF8, 0xF0, 0x2C, 0x00, 0x00, 0xF0, 0x2E, 0x00, 0x80 };
+byte[] player_0_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x80, 0x00, 0x00, 0x2A, 0x80, 0xF8, 0xF0, 0x48, 0x80, 0x00, 0xF0, 0x4A, 0x80, 0x80 };
+byte[] player_0_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x80, 0x00, 0x00, 0x2E, 0x80, 0xF8, 0xF0, 0x4C, 0x80, 0x00, 0xF0, 0x4E, 0x80, 0x80 };
+byte[] player_0_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x00, 0x00, 0xF8, 0x32, 0x00, 0x08, 0xF8, 0x34, 0x00, 0x80 };
+byte[] player_0_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x00, 0x00, 0xF8, 0x52, 0x00, 0x08, 0xF8, 0x54, 0x00, 0x80 };
+byte[] player_0_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x40, 0xF8, 0xF8, 0x32, 0x40, 0x00, 0xF8, 0x30, 0x40, 0x80 };
+byte[] player_0_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x40, 0xF8, 0xF8, 0x52, 0x40, 0x00, 0xF8, 0x50, 0x40, 0x80 };
+byte[] player_1_meta_spr_stand_up = new byte[] { 0xF8, 0xF8, 0x24, 0x01, 0x00, 0xF8, 0x26, 0x01, 0x80 };
+byte[] player_1_meta_spr_stand_down = new byte[] { 0xF8, 0xF8, 0x24, 0x81, 0x00, 0xF8, 0x26, 0x81, 0x80 };
+byte[] player_1_meta_spr_stand_left = new byte[] { 0xF8, 0xF8, 0x46, 0x41, 0x00, 0xF8, 0x44, 0x41, 0x80 };
+byte[] player_1_meta_spr_stand_right = new byte[] { 0xF8, 0xF8, 0x44, 0x01, 0x00, 0xF8, 0x46, 0x01, 0x80 };
+byte[] player_1_meta_spr_left_foot_up = new byte[] { 0xF8, 0xF8, 0x20, 0x01, 0x00, 0xF8, 0x22, 0x01, 0x80 };
+byte[] player_1_meta_spr_right_foot_up = new byte[] { 0xF8, 0xF8, 0x22, 0x41, 0x00, 0xF8, 0x20, 0x41, 0x80 };
+byte[] player_1_meta_spr_left_foot_down = new byte[] { 0xF8, 0xF8, 0x20, 0x81, 0x00, 0xF8, 0x22, 0x81, 0x80 };
+byte[] player_1_meta_spr_right_foot_down = new byte[] { 0xF8, 0xF8, 0x22, 0xC1, 0x00, 0xF8, 0x20, 0xC1, 0x80 };
+byte[] player_1_meta_spr_left_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x01, 0x00, 0xF8, 0x42, 0x01, 0x80 };
+byte[] player_1_meta_spr_right_foot_right = new byte[] { 0xF8, 0xF8, 0x40, 0x81, 0x00, 0xF8, 0x42, 0x81, 0x80 };
+byte[] player_1_meta_spr_left_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0x41, 0x00, 0xF8, 0x40, 0x41, 0x80 };
+byte[] player_1_meta_spr_right_foot_left = new byte[] { 0xF8, 0xF8, 0x42, 0xC1, 0x00, 0xF8, 0x40, 0xC1, 0x80 };
+byte[] player_1_meta_spr_attack_0_up = new byte[] { 0xF8, 0x00, 0x48, 0x01, 0x00, 0x00, 0x4A, 0x01, 0xF8, 0xF0, 0x28, 0x01, 0x00, 0xF0, 0x2A, 0x01, 0x80 };
+byte[] player_1_meta_spr_attack_1_up = new byte[] { 0xF8, 0x00, 0x4C, 0x01, 0x00, 0x00, 0x4E, 0x01, 0xF8, 0xF0, 0x2C, 0x01, 0x00, 0xF0, 0x2E, 0x01, 0x80 };
+byte[] player_1_meta_spr_attack_0_down = new byte[] { 0xF8, 0x00, 0x28, 0x81, 0x00, 0x00, 0x2A, 0x81, 0xF8, 0xF0, 0x48, 0x81, 0x00, 0xF0, 0x4A, 0x81, 0x80 };
+byte[] player_1_meta_spr_attack_1_down = new byte[] { 0xF8, 0x00, 0x2C, 0x81, 0x00, 0x00, 0x2E, 0x81, 0xF8, 0xF0, 0x4C, 0x81, 0x00, 0xF0, 0x4E, 0x81, 0x80 };
+byte[] player_1_meta_spr_attack_0_right = new byte[] { 0xF8, 0xF8, 0x30, 0x01, 0x00, 0xF8, 0x32, 0x01, 0x08, 0xF8, 0x34, 0x01, 0x80 };
+byte[] player_1_meta_spr_attack_1_right = new byte[] { 0xF8, 0xF8, 0x50, 0x01, 0x00, 0xF8, 0x52, 0x01, 0x08, 0xF8, 0x54, 0x01, 0x80 };
+byte[] player_1_meta_spr_attack_0_left = new byte[] { 0xF0, 0xF8, 0x34, 0x41, 0xF8, 0xF8, 0x32, 0x41, 0x00, 0xF8, 0x30, 0x41, 0x80 };
+byte[] player_1_meta_spr_attack_1_left = new byte[] { 0xF0, 0xF8, 0x54, 0x41, 0xF8, 0xF8, 0x52, 0x41, 0x00, 0xF8, 0x50, 0x41, 0x80 };
+
+// Main game code
+
+// [inlined: init]
+oam_size(1);
+bank_spr(0);
+bank_bg(1);
+
+// Initialize sound effects
+sfx_init("demo_sounds");
+unsafe { nmi_set_callback(&famitone_update); }
+
+vram_adr(NAMETABLE_A);
+vram_unrle(bg_top_left);
+vram_adr(NAMETABLE_B);
+vram_unrle(bg_top_right);
+vram_adr(NAMETABLE_C);
+vram_unrle(bg_bottom_left);
+vram_adr(NAMETABLE_D);
+vram_unrle(bg_bottom_right);
+ppu_on_all();
+G.difficulty = 0;
+G.next_level = 0;
+oam_clear();
+
+while (true)
+{
+ pal_all(paused_palette);
+ scroll(0, 0);
+ ppu_wait_nmi();
+
+ ppu_off();
+ vram_adr(NAMETABLE_A);
+ vram_unrle(bg_menu);
+ ppu_on_all();
+
+ pal_all(palette);
+ ppu_wait_nmi();
+ ppu_wait_nmi();
+
+ while (true)
+ {
+ ppu_wait_nmi();
+ G.spr = 0;
+ oam_clear();
+ G.frame++;
+ if ((G.frame & 8) != 0)
+ {
+ G.spr = oam_spr(120, 135, 0x66, 0x03, G.spr);
+ G.spr = oam_spr(128, 135, 0x68, 0x03, G.spr);
+ }
+ else
+ {
+ G.spr = oam_spr(120, 135, 0x6A, 0x03, G.spr);
+ G.spr = oam_spr(128, 135, 0x6C, 0x03, G.spr);
+ }
+
+ G.spr = oam_spr(0x60, 0xA4, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(0x70, 0xA4, 0xF0, 0x01, G.spr);
+ G.spr = oam_spr(0x78, 0xA4, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(0x80, 0xA4, 0xF2, 0x01, G.spr);
+ G.spr = oam_spr(0x88, 0xA4, 0xF8, 0x01, G.spr);
+ G.spr = oam_spr(0x90, 0xA4, 0xE4, 0x01, G.spr);
+ G.spr = oam_spr(0x98, 0xA4, 0xFA, 0x01, G.spr);
+
+ G.spr = oam_spr(0x60, 0xB4, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(0x70, 0xB4, 0xFC, 0x01, G.spr);
+ G.spr = oam_spr(0x78, 0xB4, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(0x80, 0xB4, 0xFA, 0x01, G.spr);
+ G.spr = oam_spr(0x88, 0xB4, 0xFE, 0x01, G.spr);
+
+ G.spr = oam_spr(0x60, 0xC4, 0xF0, 0x01, G.spr);
+ G.spr = oam_spr(0x70, 0xC4, 0xE0, 0x01, G.spr);
+ G.spr = oam_spr(0x78, 0xC4, 0x04, 0x01, G.spr);
+ G.spr = oam_spr(0x80, 0xC4, 0xF2, 0x01, G.spr);
+ G.spr = oam_spr(0x88, 0xC4, 0xE0, 0x01, G.spr);
+ G.spr = oam_spr(0x90, 0xC4, 0xF0, 0x01, G.spr);
+ G.spr = oam_spr(0x98, 0xC4, 0xE4, 0x01, G.spr);
+ G.spr = oam_spr(0xA0, 0xC4, 0x18, 0x01, G.spr);
+
+ G.spr = oam_spr(0x60, 0xD4, 0xE6, 0x01, G.spr);
+ G.spr = oam_spr(0x70, 0xD4, 0x04, 0x01, G.spr);
+ G.spr = oam_spr(0x78, 0xD4, 0xF2, 0x01, G.spr);
+ G.spr = oam_spr(0x80, 0xD4, 0xF8, 0x01, G.spr);
+ G.spr = oam_spr(0x88, 0xD4, 0xE6, 0x01, G.spr);
+ G.spr = oam_spr(0x90, 0xD4, 0xFA, 0x01, G.spr);
+
+ if (((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0)
+ break;
+ }
+
+ G.spr = 0;
+ oam_clear();
+
+ pal_all(paused_palette);
+ ppu_wait_nmi();
+
+ ppu_off();
+ vram_adr(NAMETABLE_A);
+ vram_unrle(bg_top_left);
+ ppu_on_all();
+
+ ppu_wait_nmi();
+
+ G.difficulty = 0;
+ G.next_level = 1;
+
+ while (true)
+ {
+ ppu_wait_nmi();
+ G.spr = 0;
+ oam_clear();
+
+ if (G.next_level != 0)
+ {
+ sfx_play(3, 2);
+ // [inlined: reset]
+ G.next_level = 0;
+ G.frame = 0;
+ G.player_dir[0] = (byte)PAD.UP;
+ G.player_dir[1] = (byte)PAD.UP;
+ G.player_hp[0] = 4;
+ G.player_hp[1] = 4;
+ G.scr_x = 128;
+ G.scr_y = 128;
+ G.player_x[0] = 120;
+ G.player_y[0] = 120;
+ G.player_x[1] = 136;
+ G.player_y[1] = 120;
+ G.player_attack_tick[0] = 0;
+ G.player_attack_tick[1] = 0;
+ G.enemies_enemy[0] = PLAYER_1;
+ G.enemies_enemy[1] = PLAYER_2;
+ G.enemies_enemy[2] = PLAYER_1;
+ G.enemies_enemy[3] = PLAYER_2;
+ G.enemies_enemy[4] = PLAYER_1;
+ G.enemies_enemy[5] = PLAYER_2;
+ G.enemies_enemy[6] = PLAYER_1;
+ G.enemies_enemy[7] = PLAYER_2;
+ G.i = 0;
+ while (G.i < 8)
+ {
+ G.enemies_health[G.i] = 1;
+ G.enemies_dir[G.i] = (byte)PAD.UP;
+ G.enemy_leg[G.i] = (byte)(G.i & 1);
+ G.enemies_type[G.i] = (byte)(G.i & 1);
+ G.i++;
+ }
+ G.enemy_spawn_points_x[0] = 184;
+ G.enemy_spawn_points_y[0] = 24;
+ G.enemy_spawn_points_x[1] = 232;
+ G.enemy_spawn_points_y[1] = 72;
+ G.enemy_spawn_points_x[2] = 232;
+ G.enemy_spawn_points_y[2] = 168;
+ G.enemy_spawn_points_x[3] = 184;
+ G.enemy_spawn_points_y[3] = 216;
+ G.enemy_spawn_points_x[4] = 72;
+ G.enemy_spawn_points_y[4] = 217;
+ G.enemy_spawn_points_x[5] = 24;
+ G.enemy_spawn_points_y[5] = 167;
+ G.enemy_spawn_points_x[6] = 24;
+ G.enemy_spawn_points_y[6] = 73;
+ G.enemy_spawn_points_x[7] = 72;
+ G.enemy_spawn_points_y[7] = 24;
+ G.i = 0;
+ while (G.i < 8)
+ {
+ G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i];
+ G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i];
+ G.enemy_push_timer[G.i] = 0;
+ G.i++;
+ }
+ G.item_type[0] = 1;
+ G.item_x[0] = 128;
+ G.item_y[0] = 88;
+ G.item_type[1] = 2;
+ G.item_x[1] = 128;
+ G.item_y[1] = 108;
+ G.item_type[2] = 3;
+ G.item_x[2] = 128;
+ G.item_y[2] = 128;
+ G.item_type[3] = 4;
+ G.item_x[3] = 128;
+ G.item_y[3] = 148;
+
+ G.i = 0;
+ while (G.i < 4)
+ {
+ G.temp0 = (byte)(rand8() & 0xFE);
+ G.item_x[G.i] = (byte)(spawn[G.temp0] << 3);
+ G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3);
+ byte retry = 0;
+ G.j = 0;
+ while (G.j < G.i)
+ {
+ if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j])
+ {
+ retry = 1;
+ break;
+ }
+ G.j++;
+ }
+ if (retry == 0) G.i++;
+ }
+
+ G.i = 0;
+ while (G.i < 4)
+ {
+ G.item_x[G.i] = (byte)(G.item_x[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01));
+ G.item_y[G.i] = (byte)(G.item_y[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01));
+ G.i++;
+ }
+
+ G.player_carry[0] = 0xFF;
+ G.player_carry[1] = 0xFF;
+ G.item_placed[0] = 0;
+ G.item_placed[1] = 0;
+ G.item_placed[2] = 0;
+ G.item_placed[3] = 0;
+ G.player_god_mode[0] = 0;
+ G.player_god_mode[1] = 0;
+
+ G.difficulty++;
+ if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; }
+ else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; }
+ else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; }
+ else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; }
+ else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; }
+ else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; }
+ else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; }
+ else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); }
+ scroll(G.scr_x, G.scr_y);
+ G.spr = 0;
+ oam_clear();
+ pal_all(paused_palette);
+ G.spr = oam_spr(100, 114, 0xF4, 0x01, G.spr);
+ G.spr = oam_spr(108, 114, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(116, 114, 0xF6, 0x01, G.spr);
+ G.spr = oam_spr(124, 114, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(132, 114, 0xF4, 0x01, G.spr);
+ if (G.difficulty < 10)
+ {
+ G.spr = oam_spr(148, 114, (byte)(0x04 + (G.difficulty << 1)), 0x01, G.spr);
+ }
+ else
+ {
+ G.temp0 = (byte)(G.difficulty / 10);
+ G.temp1 = (byte)(G.difficulty % 10);
+ G.spr = oam_spr(148, 114, (byte)(0x05 + G.temp0), 0x01, G.spr);
+ G.spr = oam_spr(156, 114, (byte)(0x04 + G.temp1), 0x01, G.spr);
+ }
+ G.spr = 0;
+ G.frame = 0;
+ while (true)
+ {
+ ppu_wait_nmi();
+ G.frame++;
+ if (G.frame > 100 && (G.frame == 255 || ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0))
+ {
+ G.spr++;
+ break;
+ }
+ }
+ pal_all(palette);
+ G.spr = 0;
+ oam_clear();
+ }
+
+ if (G.player_hp[0] == 0 || G.player_hp[1] == 0)
+ {
+ sfx_play(4, 2);
+ G.difficulty = 0;
+ G.next_level = 0;
+ // [inlined: reset]
+ G.next_level = 0;
+ G.frame = 0;
+ G.player_dir[0] = (byte)PAD.UP;
+ G.player_dir[1] = (byte)PAD.UP;
+ G.player_hp[0] = 4;
+ G.player_hp[1] = 4;
+ G.scr_x = 128;
+ G.scr_y = 128;
+ G.player_x[0] = 120;
+ G.player_y[0] = 120;
+ G.player_x[1] = 136;
+ G.player_y[1] = 120;
+ G.player_attack_tick[0] = 0;
+ G.player_attack_tick[1] = 0;
+ G.enemies_enemy[0] = PLAYER_1;
+ G.enemies_enemy[1] = PLAYER_2;
+ G.enemies_enemy[2] = PLAYER_1;
+ G.enemies_enemy[3] = PLAYER_2;
+ G.enemies_enemy[4] = PLAYER_1;
+ G.enemies_enemy[5] = PLAYER_2;
+ G.enemies_enemy[6] = PLAYER_1;
+ G.enemies_enemy[7] = PLAYER_2;
+ G.i = 0;
+ while (G.i < 8)
+ {
+ G.enemies_health[G.i] = 1;
+ G.enemies_dir[G.i] = (byte)PAD.UP;
+ G.enemy_leg[G.i] = (byte)(G.i & 1);
+ G.enemies_type[G.i] = (byte)(G.i & 1);
+ G.i++;
+ }
+ G.enemy_spawn_points_x[0] = 184;
+ G.enemy_spawn_points_y[0] = 24;
+ G.enemy_spawn_points_x[1] = 232;
+ G.enemy_spawn_points_y[1] = 72;
+ G.enemy_spawn_points_x[2] = 232;
+ G.enemy_spawn_points_y[2] = 168;
+ G.enemy_spawn_points_x[3] = 184;
+ G.enemy_spawn_points_y[3] = 216;
+ G.enemy_spawn_points_x[4] = 72;
+ G.enemy_spawn_points_y[4] = 217;
+ G.enemy_spawn_points_x[5] = 24;
+ G.enemy_spawn_points_y[5] = 167;
+ G.enemy_spawn_points_x[6] = 24;
+ G.enemy_spawn_points_y[6] = 73;
+ G.enemy_spawn_points_x[7] = 72;
+ G.enemy_spawn_points_y[7] = 24;
+ G.i = 0;
+ while (G.i < 8)
+ {
+ G.enemies_x[G.i] = G.enemy_spawn_points_x[G.i];
+ G.enemies_y[G.i] = G.enemy_spawn_points_y[G.i];
+ G.enemy_push_timer[G.i] = 0;
+ G.i++;
+ }
+ G.item_type[0] = 1;
+ G.item_x[0] = 128;
+ G.item_y[0] = 88;
+ G.item_type[1] = 2;
+ G.item_x[1] = 128;
+ G.item_y[1] = 108;
+ G.item_type[2] = 3;
+ G.item_x[2] = 128;
+ G.item_y[2] = 128;
+ G.item_type[3] = 4;
+ G.item_x[3] = 128;
+ G.item_y[3] = 148;
+
+ G.i = 0;
+ while (G.i < 4)
+ {
+ G.temp0 = (byte)(rand8() & 0xFE);
+ G.item_x[G.i] = (byte)(spawn[G.temp0] << 3);
+ G.item_y[G.i] = (byte)(spawn[G.temp0 + 1] << 3);
+ byte retry = 0;
+ G.j = 0;
+ while (G.j < G.i)
+ {
+ if (G.item_x[G.i] == G.item_x[G.j] && G.item_y[G.i] == G.item_y[G.j])
+ {
+ retry = 1;
+ break;
+ }
+ G.j++;
+ }
+ if (retry == 0) G.i++;
+ }
+
+ G.i = 0;
+ while (G.i < 4)
+ {
+ G.item_x[G.i] = (byte)(G.item_x[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01));
+ G.item_y[G.i] = (byte)(G.item_y[G.i] + 2 + (rand8() & 0x01) + (rand8() & 0x01));
+ G.i++;
+ }
+
+ G.player_carry[0] = 0xFF;
+ G.player_carry[1] = 0xFF;
+ G.item_placed[0] = 0;
+ G.item_placed[1] = 0;
+ G.item_placed[2] = 0;
+ G.item_placed[3] = 0;
+ G.player_god_mode[0] = 0;
+ G.player_god_mode[1] = 0;
+
+ G.difficulty++;
+ if (G.difficulty == 1) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 1; }
+ else if (G.difficulty == 2) { G.enemy_speed = 2; G.enemy_damage_modifier = 31; G.spawn_hp = 2; }
+ else if (G.difficulty == 4) { G.enemy_speed = 3; G.enemy_damage_modifier = 31; G.spawn_hp = 2; }
+ else if (G.difficulty == 6) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 3; }
+ else if (G.difficulty == 7) { G.enemy_speed = 3; G.enemy_damage_modifier = 15; G.spawn_hp = 4; }
+ else if (G.difficulty == 8) { G.enemy_speed = 4; G.enemy_damage_modifier = 15; G.spawn_hp = 5; }
+ else if (G.difficulty == 9) { G.enemy_speed = 4; G.enemy_damage_modifier = 7; G.spawn_hp = 6; }
+ else if (G.difficulty >= 10) { G.enemy_speed = 5; G.enemy_damage_modifier = 7; G.spawn_hp = (byte)(6 + (G.difficulty - 10)); }
+ scroll(G.scr_x, G.scr_y);
+ G.spr = 0;
+ oam_clear();
+ pal_all(paused_palette);
+ G.spr = oam_spr(92, 114, 0xEE, 0x01, G.spr);
+ G.spr = oam_spr(100, 114, 0xE4, 0x01, G.spr);
+ G.spr = oam_spr(108, 114, 0xF0, 0x01, G.spr);
+ G.spr = oam_spr(116, 114, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(132, 114, 0x04, 0x01, G.spr);
+ G.spr = oam_spr(140, 114, 0xF6, 0x01, G.spr);
+ G.spr = oam_spr(148, 114, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(156, 114, 0xF2, 0x01, G.spr);
+ G.spr = 0;
+ G.frame = 0;
+ while (true)
+ {
+ ppu_wait_nmi();
+ G.frame++;
+ if (G.frame == 255) G.spr++;
+ if (G.spr == 4 || (G.spr >= 1 && ((pad_trigger(0) | pad_trigger(1)) & (PAD.A | PAD.B | PAD.START)) != 0))
+ break;
+ }
+ pal_all(palette);
+ G.spr = 0;
+ oam_clear();
+ break;
+ }
+
+ G.temp1 = (byte)(pad_trigger(0) | pad_trigger(1));
+ if ((G.temp1 & (byte)PAD.START) != 0)
+ {
+ G.spr = 0;
+ oam_clear();
+ pal_all(paused_palette);
+ G.spr = oam_spr(104, 114, 0xE2, 0x01, G.spr);
+ G.spr = oam_spr(112, 114, 0xE4, 0x01, G.spr);
+ G.spr = oam_spr(120, 114, 0xE6, 0x01, G.spr);
+ G.spr = oam_spr(128, 114, 0xE8, 0x01, G.spr);
+ G.spr = oam_spr(136, 114, 0xEA, 0x01, G.spr);
+ G.spr = oam_spr(144, 114, 0xEC, 0x01, G.spr);
+ while ((pad_trigger(0) & PAD.START) == 0)
+ ppu_wait_nmi();
+ pal_all(palette);
+ G.spr = 0;
+ oam_clear();
+ }
+
+ G.int_temp0 = 124;
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_x;
+ if (G.int_temp0 >= 0 && G.int_temp0 <= 255)
+ {
+ G.temp0 = (byte)G.int_temp0;
+ G.int_temp0 = 116;
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_y;
+ if (G.int_temp0 >= 0 && G.int_temp0 <= 255)
+ {
+ G.temp1 = (byte)G.int_temp0;
+ if ((G.frame & 8) != 0)
+ {
+ G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x66, 0x03, G.spr);
+ G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x68, 0x03, G.spr);
+ }
+ else
+ {
+ G.spr = oam_spr(G.temp0, (byte)(G.temp1 - 1), 0x6A, 0x03, G.spr);
+ G.spr = oam_spr((byte)(G.temp0 + 8), (byte)(G.temp1 - 1), 0x6C, 0x03, G.spr);
+ }
+ }
+ }
+
+ // [inlined: tick_players]
+ if (G.player_hp[0] >= 4)
+ {
+ G.spr = oam_spr(0x10, 0x10, 0x60, 0x00, G.spr);
+ G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr);
+ }
+ else if (G.player_hp[0] == 3)
+ {
+ G.spr = oam_spr(0x10, 0x10, 0x62, 0x00, G.spr);
+ G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr);
+ }
+ else if (G.player_hp[0] == 2)
+ {
+ G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr);
+ G.spr = oam_spr(0x10, 0x20, 0x60, 0x00, G.spr);
+ }
+ else if (G.player_hp[0] == 1)
+ {
+ G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr);
+ G.spr = oam_spr(0x10, 0x20, 0x62, 0x00, G.spr);
+ }
+ else
+ {
+ G.spr = oam_spr(0x10, 0x10, 0x64, 0x00, G.spr);
+ G.spr = oam_spr(0x10, 0x20, 0x64, 0x00, G.spr);
+ }
+ if (G.player_hp[1] >= 4)
+ {
+ G.spr = oam_spr(0xE8, 0x10, 0x60, 0x01, G.spr);
+ G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr);
+ }
+ else if (G.player_hp[1] == 3)
+ {
+ G.spr = oam_spr(0xE8, 0x10, 0x62, 0x01, G.spr);
+ G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr);
+ }
+ else if (G.player_hp[1] == 2)
+ {
+ G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr);
+ G.spr = oam_spr(0xE8, 0x20, 0x60, 0x01, G.spr);
+ }
+ else if (G.player_hp[1] == 1)
+ {
+ G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr);
+ G.spr = oam_spr(0xE8, 0x20, 0x62, 0x01, G.spr);
+ }
+ else
+ {
+ G.spr = oam_spr(0xE8, 0x10, 0x64, 0x01, G.spr);
+ G.spr = oam_spr(0xE8, 0x20, 0x64, 0x01, G.spr);
+ }
+
+ G.to_scroll_x = 0;
+ G.to_scroll_y = 0;
+
+ G.i = 0;
+ while (G.i < 2)
+ {
+ if (G.player_god_mode[G.i] != 0)
+ {
+ if ((G.frame & 2) == 0)
+ {
+ G.player_god_mode[G.i] = (byte)(G.player_god_mode[G.i] - 1);
+ pal_col((byte)(16 + (G.i << 2) + 3), palette[16 + (G.i << 2) + 3]);
+ pal_col((byte)(16 + (G.i << 2) + 1), palette[16 + (G.i << 2) + 1]);
+ }
+ else
+ {
+ pal_col((byte)(16 + (G.i << 2) + 3), 0x20);
+ pal_col((byte)(16 + (G.i << 2) + 1), 0x0D);
+ }
+ }
+ if (G.player_hp[G.i] == 0) { G.i++; continue; }
+
+ G.int_temp0 = G.player_x[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_x;
+ G.temp0 = (byte)G.int_temp0;
+
+ G.int_temp0 = G.player_y[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_y;
+ G.temp1 = (byte)G.int_temp0;
+
+ G.temp2 = (byte)pad_poll(G.i);
+
+ // [inlined: draw_player]
+ if (G.i == 0)
+ {
+ if (G.player_carry[0] != 0xFF)
+ {
+ if ((G.temp2 & PAD_DPAD) != 0)
+ {
+ if (G.player_carry_dir[0] == (byte)PAD.UP)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_up);
+ }
+ else if (G.player_carry_dir[0] == (byte)PAD.DOWN)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_down);
+ }
+ else if (G.player_carry_dir[0] == (byte)PAD.LEFT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_left);
+ }
+ else if (G.player_carry_dir[0] == (byte)PAD.RIGHT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_left_foot_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_right_foot_right);
+ }
+ }
+ else
+ {
+ if (G.player_carry_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_up);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_down);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_left);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_0_meta_spr_stand_right);
+ }
+ }
+ else if (G.player_attack_tick[G.i] != 0)
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_up);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_down);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_left);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_0_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_attack_1_right);
+ }
+ G.player_attack_tick[G.i] = (byte)(G.player_attack_tick[G.i] - 1);
+ }
+ else if ((G.temp2 & PAD_DPAD) != 0)
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_up);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_down);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_left);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_left_foot_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_right_foot_right);
+ }
+ }
+ else
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_up);
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_down);
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_left);
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_0_meta_spr_stand_right);
+ }
+ }
+ else if (G.i == 1)
+ {
+ if (G.player_carry[1] != 0xFF)
+ {
+ if ((G.temp2 & PAD_DPAD) != 0)
+ {
+ if (G.player_carry_dir[1] == (byte)PAD.UP)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_up);
+ }
+ else if (G.player_carry_dir[1] == (byte)PAD.DOWN)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_down);
+ }
+ else if (G.player_carry_dir[1] == (byte)PAD.LEFT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_left);
+ }
+ else if (G.player_carry_dir[1] == (byte)PAD.RIGHT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_left_foot_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_right_foot_right);
+ }
+ }
+ else
+ {
+ if (G.player_carry_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_up);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_down);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_left);
+ else if (G.player_carry_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_carry_1_meta_spr_stand_right);
+ }
+ }
+ else if (G.player_attack_tick[G.i] != 0)
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_up);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_down);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_left);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ {
+ if (G.player_attack_tick[G.i] > 8)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_0_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_attack_1_right);
+ }
+ G.player_attack_tick[G.i] = (byte)(G.player_attack_tick[G.i] - 1);
+ }
+ else if ((G.temp2 & PAD_DPAD) != 0)
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_up);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_up);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_down);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_down);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_left);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_left);
+ }
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ {
+ if ((G.frame & 16) != 0)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_left_foot_right);
+ else
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_right_foot_right);
+ }
+ }
+ else
+ {
+ if (G.player_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_up);
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_down);
+ else if (G.player_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_left);
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, player_1_meta_spr_stand_right);
+ }
+ }
+
+ if (G.temp0 < min_x && G.scr_x > 0)
+ {
+ G.to_scroll_x = (byte)((min_x - G.temp0) >> 1);
+ if (G.to_scroll_x > G.scr_x)
+ G.to_scroll_x = G.scr_x;
+ G.to_scroll_x_neg = 1;
+ }
+ else if (G.temp0 > max_x && G.scr_x < 255)
+ {
+ G.to_scroll_x = (byte)((G.temp0 - max_x) >> 1);
+ if (G.to_scroll_x > (byte)(254 - G.scr_x))
+ G.to_scroll_x = (byte)(254 - G.scr_x);
+ G.to_scroll_x_neg = 0;
+ }
+
+ if (G.temp1 < min_y && G.scr_y > 0)
+ {
+ G.to_scroll_y = (byte)((min_y - G.temp1) >> 1);
+ if (G.to_scroll_y > G.scr_y)
+ G.to_scroll_y = G.scr_y;
+ G.to_scroll_y_neg = 1;
+ }
+ else if (G.temp1 > max_y && G.scr_y < 255)
+ {
+ G.to_scroll_y = (byte)((G.temp1 - max_y) >> 1);
+ if (G.to_scroll_y > (byte)(238 - G.scr_y))
+ G.to_scroll_y = (byte)(238 - G.scr_y);
+ G.to_scroll_y_neg = 0;
+ }
+
+ if ((G.temp2 & (byte)PAD.B) != 0)
+ {
+ if (G.player_carry[G.i] == 0xFF)
+ {
+ G.temp4 = G.player_x[G.i];
+ G.temp5 = G.player_y[G.i];
+ if (G.player_dir[G.i] == (byte)PAD.LEFT) G.temp4 -= 4;
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT) G.temp4 += 4;
+ if (G.player_dir[G.i] == (byte)PAD.UP) G.temp5 -= 4;
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN) G.temp5 += 2;
+ G.j = 0;
+ while (G.j < 4)
+ {
+ if (G.item_placed[G.j] == 0)
+ {
+ if ((byte)(G.item_x[G.j] - 4) < G.temp4 && (byte)(G.item_x[G.j] + 4) > G.temp4)
+ {
+ if ((byte)(G.item_y[G.j] - 5) < G.temp5 && (byte)(G.item_y[G.j] + 5) > G.temp5)
+ {
+ if (G.player_carry[(byte)(1 - G.i)] != G.j || G.player_carry_dir[(byte)(1 - G.i)] != G.player_dir[G.i])
+ {
+ G.player_carry[G.i] = G.j;
+ G.player_carry_dir[G.i] = G.player_dir[G.i];
+ sfx_play(5, 3);
+ }
+ }
+ }
+ }
+ G.j++;
+ }
+ }
+ }
+ else
+ {
+ G.player_carry[G.i] = 0xFF;
+ }
+
+ if (G.player_attack_tick[G.i] < 3 && (G.temp2 & (byte)PAD.A) != 0)
+ G.player_attack_tick[G.i] = 16;
+
+ G.temp1 = (byte)(1 - G.i);
+
+ G.temp6 = 0;
+ if (G.player_carry[G.i] != 0xFF)
+ {
+ G.temp6++;
+ if (G.player_carry[G.temp1] == G.player_carry[G.i])
+ G.temp6++;
+ }
+
+ if (G.temp6 == 2)
+ {
+ if (G.i == 0 && (G.frame & 3) == 0)
+ {
+ G.temp2 = (byte)((byte)pad_poll(0) & (byte)pad_poll(1));
+ if ((G.temp2 & (byte)PAD.LEFT) != 0)
+ {
+ byte _ib_x3 = (byte)(G.player_x[0] - 1); byte _ib_y3 = G.player_y[0];
+ byte _ib_result3;
+ // [inlined: isBlocked]
+ if (_ib_x3 > 122 && _ib_x3 < 134 && _ib_y3 > 114 && _ib_y3 < 125)
+ {
+ _ib_result3 = 1;
+ }
+ else if (_ib_x3 < 128)
+ {
+ if (_ib_y3 < 120)
+ {
+ _ib_result3 = collision_top_left[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y3 -= 120;
+ _ib_result3 = collision_bottom_left[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x3 -= 128;
+ if (_ib_y3 < 120)
+ {
+ _ib_result3 = collision_top_right[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y3 -= 120;
+ _ib_result3 = collision_bottom_right[(_ib_x3 >> 3) + ((_ib_y3 >> 3) << 4)];
+ }
+ }
+ byte _ib_x4 = (byte)(G.player_x[1] - 1); byte _ib_y4 = G.player_y[1];
+ byte _ib_result4;
+ // [inlined: isBlocked]
+ if (_ib_x4 > 122 && _ib_x4 < 134 && _ib_y4 > 114 && _ib_y4 < 125)
+ {
+ _ib_result4 = 1;
+ }
+ else if (_ib_x4 < 128)
+ {
+ if (_ib_y4 < 120)
+ {
+ _ib_result4 = collision_top_left[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y4 -= 120;
+ _ib_result4 = collision_bottom_left[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x4 -= 128;
+ if (_ib_y4 < 120)
+ {
+ _ib_result4 = collision_top_right[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y4 -= 120;
+ _ib_result4 = collision_bottom_right[(_ib_x4 >> 3) + ((_ib_y4 >> 3) << 4)];
+ }
+ }
+ if (_ib_result3 == 0 && _ib_result4 == 0)
+ {
+ G.player_x[0] = (byte)(G.player_x[0] - 1);
+ G.player_x[1] = (byte)(G.player_x[1] - 1);
+ G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] - 1);
+ }
+ }
+ else if ((G.temp2 & (byte)PAD.RIGHT) != 0)
+ {
+ byte _ib_x5 = (byte)(G.player_x[0] + 1); byte _ib_y5 = G.player_y[0];
+ byte _ib_result5;
+ // [inlined: isBlocked]
+ if (_ib_x5 > 122 && _ib_x5 < 134 && _ib_y5 > 114 && _ib_y5 < 125)
+ {
+ _ib_result5 = 1;
+ }
+ else if (_ib_x5 < 128)
+ {
+ if (_ib_y5 < 120)
+ {
+ _ib_result5 = collision_top_left[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y5 -= 120;
+ _ib_result5 = collision_bottom_left[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x5 -= 128;
+ if (_ib_y5 < 120)
+ {
+ _ib_result5 = collision_top_right[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y5 -= 120;
+ _ib_result5 = collision_bottom_right[(_ib_x5 >> 3) + ((_ib_y5 >> 3) << 4)];
+ }
+ }
+ byte _ib_x6 = (byte)(G.player_x[1] + 1); byte _ib_y6 = G.player_y[1];
+ byte _ib_result6;
+ // [inlined: isBlocked]
+ if (_ib_x6 > 122 && _ib_x6 < 134 && _ib_y6 > 114 && _ib_y6 < 125)
+ {
+ _ib_result6 = 1;
+ }
+ else if (_ib_x6 < 128)
+ {
+ if (_ib_y6 < 120)
+ {
+ _ib_result6 = collision_top_left[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y6 -= 120;
+ _ib_result6 = collision_bottom_left[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x6 -= 128;
+ if (_ib_y6 < 120)
+ {
+ _ib_result6 = collision_top_right[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y6 -= 120;
+ _ib_result6 = collision_bottom_right[(_ib_x6 >> 3) + ((_ib_y6 >> 3) << 4)];
+ }
+ }
+ if (_ib_result5 == 0 && _ib_result6 == 0)
+ {
+ G.player_x[0] = (byte)(G.player_x[0] + 1);
+ G.player_x[1] = (byte)(G.player_x[1] + 1);
+ G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] + 1);
+ }
+ }
+ if ((G.temp2 & (byte)PAD.UP) != 0)
+ {
+ byte _ib_x7 = G.player_x[0]; byte _ib_y7 = (byte)(G.player_y[0] - 1);
+ byte _ib_result7;
+ // [inlined: isBlocked]
+ if (_ib_x7 > 122 && _ib_x7 < 134 && _ib_y7 > 114 && _ib_y7 < 125)
+ {
+ _ib_result7 = 1;
+ }
+ else if (_ib_x7 < 128)
+ {
+ if (_ib_y7 < 120)
+ {
+ _ib_result7 = collision_top_left[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y7 -= 120;
+ _ib_result7 = collision_bottom_left[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x7 -= 128;
+ if (_ib_y7 < 120)
+ {
+ _ib_result7 = collision_top_right[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y7 -= 120;
+ _ib_result7 = collision_bottom_right[(_ib_x7 >> 3) + ((_ib_y7 >> 3) << 4)];
+ }
+ }
+ byte _ib_x8 = G.player_x[1]; byte _ib_y8 = (byte)(G.player_y[1] - 1);
+ byte _ib_result8;
+ // [inlined: isBlocked]
+ if (_ib_x8 > 122 && _ib_x8 < 134 && _ib_y8 > 114 && _ib_y8 < 125)
+ {
+ _ib_result8 = 1;
+ }
+ else if (_ib_x8 < 128)
+ {
+ if (_ib_y8 < 120)
+ {
+ _ib_result8 = collision_top_left[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y8 -= 120;
+ _ib_result8 = collision_bottom_left[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x8 -= 128;
+ if (_ib_y8 < 120)
+ {
+ _ib_result8 = collision_top_right[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y8 -= 120;
+ _ib_result8 = collision_bottom_right[(_ib_x8 >> 3) + ((_ib_y8 >> 3) << 4)];
+ }
+ }
+ if (_ib_result7 == 0 && _ib_result8 == 0)
+ {
+ G.player_y[0] = (byte)(G.player_y[0] - 1);
+ G.player_y[1] = (byte)(G.player_y[1] - 1);
+ G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] - 1);
+ }
+ }
+ else if ((G.temp2 & (byte)PAD.DOWN) != 0)
+ {
+ byte _ib_x9 = G.player_x[0]; byte _ib_y9 = (byte)(G.player_y[0] + 1);
+ byte _ib_result9;
+ // [inlined: isBlocked]
+ if (_ib_x9 > 122 && _ib_x9 < 134 && _ib_y9 > 114 && _ib_y9 < 125)
+ {
+ _ib_result9 = 1;
+ }
+ else if (_ib_x9 < 128)
+ {
+ if (_ib_y9 < 120)
+ {
+ _ib_result9 = collision_top_left[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y9 -= 120;
+ _ib_result9 = collision_bottom_left[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x9 -= 128;
+ if (_ib_y9 < 120)
+ {
+ _ib_result9 = collision_top_right[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y9 -= 120;
+ _ib_result9 = collision_bottom_right[(_ib_x9 >> 3) + ((_ib_y9 >> 3) << 4)];
+ }
+ }
+ byte _ib_x10 = G.player_x[1]; byte _ib_y10 = (byte)(G.player_y[1] + 1);
+ byte _ib_result10;
+ // [inlined: isBlocked]
+ if (_ib_x10 > 122 && _ib_x10 < 134 && _ib_y10 > 114 && _ib_y10 < 125)
+ {
+ _ib_result10 = 1;
+ }
+ else if (_ib_x10 < 128)
+ {
+ if (_ib_y10 < 120)
+ {
+ _ib_result10 = collision_top_left[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y10 -= 120;
+ _ib_result10 = collision_bottom_left[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x10 -= 128;
+ if (_ib_y10 < 120)
+ {
+ _ib_result10 = collision_top_right[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y10 -= 120;
+ _ib_result10 = collision_bottom_right[(_ib_x10 >> 3) + ((_ib_y10 >> 3) << 4)];
+ }
+ }
+ if (_ib_result9 == 0 && _ib_result10 == 0)
+ {
+ G.player_y[0] = (byte)(G.player_y[0] + 1);
+ G.player_y[1] = (byte)(G.player_y[1] + 1);
+ G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] + 1);
+ }
+ }
+ }
+ }
+ else if ((G.temp6 == 0 || (G.frame & 7) == G.i) && (G.frame & 1) == G.i)
+ {
+ if ((G.player_dir[G.i] & G.temp2) == 0)
+ {
+ if ((G.temp2 & (byte)PAD.LEFT) != 0) G.player_dir[G.i] = (byte)PAD.LEFT;
+ else if ((G.temp2 & (byte)PAD.RIGHT) != 0) G.player_dir[G.i] = (byte)PAD.RIGHT;
+ else if ((G.temp2 & (byte)PAD.DOWN) != 0) G.player_dir[G.i] = (byte)PAD.DOWN;
+ else if ((G.temp2 & (byte)PAD.UP) != 0) G.player_dir[G.i] = (byte)PAD.UP;
+ }
+ G.temp4 = G.player_x[G.i];
+ G.temp5 = G.player_y[G.i];
+
+ if ((G.temp2 & (byte)PAD.LEFT) != 0)
+ {
+ if (G.player_hp[G.temp1] == 0 || G.player_x[G.temp1] < G.player_x[G.i] || (byte)(G.player_x[G.temp1] - G.player_x[G.i]) < 60)
+ G.player_x[G.i] = (byte)(G.player_x[G.i] - 1);
+ }
+ else if ((G.temp2 & (byte)PAD.RIGHT) != 0)
+ {
+ if (G.player_hp[G.temp1] == 0 || (G.player_x[G.i] < 250 && (G.player_x[G.temp1] > G.player_x[G.i] || (byte)(G.player_x[G.i] - G.player_x[G.temp1]) < 60)))
+ G.player_x[G.i] = (byte)(G.player_x[G.i] + 1);
+ }
+
+ byte _ib_x11 = G.player_x[G.i]; byte _ib_y11 = G.player_y[G.i];
+ byte _ib_result11;
+ // [inlined: isBlocked]
+ if (_ib_x11 > 122 && _ib_x11 < 134 && _ib_y11 > 114 && _ib_y11 < 125)
+ {
+ _ib_result11 = 1;
+ }
+ else if (_ib_x11 < 128)
+ {
+ if (_ib_y11 < 120)
+ {
+ _ib_result11 = collision_top_left[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y11 -= 120;
+ _ib_result11 = collision_bottom_left[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x11 -= 128;
+ if (_ib_y11 < 120)
+ {
+ _ib_result11 = collision_top_right[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y11 -= 120;
+ _ib_result11 = collision_bottom_right[(_ib_x11 >> 3) + ((_ib_y11 >> 3) << 4)];
+ }
+ }
+ if (_ib_result11 != 0)
+ G.player_x[G.i] = G.temp4;
+ else if (G.player_carry[G.i] != 0xFF)
+ G.item_x[G.player_carry[G.i]] = (byte)(G.item_x[G.player_carry[G.i]] + G.player_x[G.i] - G.temp4);
+
+ if ((G.temp2 & (byte)PAD.UP) != 0)
+ {
+ if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] < G.player_y[G.i] || (byte)(G.player_y[G.temp1] - G.player_y[G.i]) < 60)
+ G.player_y[G.i] = (byte)(G.player_y[G.i] - 1);
+ }
+ else if ((G.temp2 & (byte)PAD.DOWN) != 0)
+ {
+ if (G.player_hp[G.temp1] == 0 || G.player_y[G.temp1] > G.player_y[G.i] || (byte)(G.player_y[G.i] - G.player_y[G.temp1]) < 60)
+ G.player_y[G.i] = (byte)(G.player_y[G.i] + 1);
+ }
+
+ byte _ib_x12 = G.player_x[G.i]; byte _ib_y12 = G.player_y[G.i];
+ byte _ib_result12;
+ // [inlined: isBlocked]
+ if (_ib_x12 > 122 && _ib_x12 < 134 && _ib_y12 > 114 && _ib_y12 < 125)
+ {
+ _ib_result12 = 1;
+ }
+ else if (_ib_x12 < 128)
+ {
+ if (_ib_y12 < 120)
+ {
+ _ib_result12 = collision_top_left[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y12 -= 120;
+ _ib_result12 = collision_bottom_left[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x12 -= 128;
+ if (_ib_y12 < 120)
+ {
+ _ib_result12 = collision_top_right[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y12 -= 120;
+ _ib_result12 = collision_bottom_right[(_ib_x12 >> 3) + ((_ib_y12 >> 3) << 4)];
+ }
+ }
+ if (_ib_result12 != 0)
+ G.player_y[G.i] = G.temp5;
+ else if (G.player_carry[G.i] != 0xFF)
+ G.item_y[G.player_carry[G.i]] = (byte)(G.item_y[G.player_carry[G.i]] + G.player_y[G.i] - G.temp5);
+ }
+
+ if (G.player_attack_tick[G.i] == 10)
+ {
+ G.temp0 = G.player_x[G.i];
+ G.temp1 = G.player_y[G.i];
+ G.temp6 = 5;
+ G.temp7 = 5;
+ if (G.player_dir[G.i] == (byte)PAD.LEFT) { G.temp0 -= 4; G.temp6 = 8; }
+ else if (G.player_dir[G.i] == (byte)PAD.RIGHT) { G.temp0 += 4; G.temp6 = 8; }
+ if (G.player_dir[G.i] == (byte)PAD.UP) { G.temp1 -= 4; G.temp7 = 8; }
+ else if (G.player_dir[G.i] == (byte)PAD.DOWN) { G.temp1 += 3; G.temp7 = 8; }
+ G.dx = G.temp0;
+ G.dy = G.temp1;
+ byte _ib_x13 = G.temp0; byte _ib_y13 = G.temp1;
+ byte _ib_result13;
+ // [inlined: isBlocked]
+ if (_ib_x13 > 122 && _ib_x13 < 134 && _ib_y13 > 114 && _ib_y13 < 125)
+ {
+ _ib_result13 = 1;
+ }
+ else if (_ib_x13 < 128)
+ {
+ if (_ib_y13 < 120)
+ {
+ _ib_result13 = collision_top_left[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y13 -= 120;
+ _ib_result13 = collision_bottom_left[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x13 -= 128;
+ if (_ib_y13 < 120)
+ {
+ _ib_result13 = collision_top_right[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y13 -= 120;
+ _ib_result13 = collision_bottom_right[(_ib_x13 >> 3) + ((_ib_y13 >> 3) << 4)];
+ }
+ }
+ if (_ib_result13 == 0)
+ {
+ // [inlined: took_damage]
+ G.j = 0;
+ while (G.j < 8)
+ {
+ if (G.enemies_health[G.j] == 0)
+ {
+ G.j++;
+ continue;
+ }
+ G.temp2 = G.enemies_x[G.j];
+ G.temp3 = G.enemies_y[G.j];
+ if (G.temp0 > G.temp2)
+ G.temp4 = (byte)(G.temp0 - G.temp2);
+ else
+ G.temp4 = (byte)(G.temp2 - G.temp0);
+ if (G.temp1 > G.temp3)
+ G.temp5 = (byte)(G.temp1 - G.temp3);
+ else
+ G.temp5 = (byte)(G.temp3 - G.temp1);
+ if (G.temp4 < G.temp6 && G.temp5 < G.temp7)
+ {
+ G.enemies_health[G.j] = (byte)(G.enemies_health[G.j] - 1);
+ if (G.enemies_health[G.j] != 0)
+ {
+ G.enemy_push_timer[G.j] = 4;
+ G.enemy_push_dir[G.j] = G.player_dir[G.i];
+ }
+ else
+ {
+ sfx_play(1, 0);
+ }
+ break;
+ }
+ G.j++;
+ }
+ }
+ }
+ G.i++;
+ }
+
+ G.temp2 = 0;
+ G.i = 0;
+ while (G.i < 4)
+ {
+ if (G.item_placed[G.i] == 0)
+ {
+ if ((byte)(G.item_x[G.i] - item_target_x[G.i]) < 2 || (byte)(item_target_x[G.i] - G.item_x[G.i]) < 2)
+ {
+ if ((byte)(G.item_y[G.i] - item_target_y[G.i]) < 2 || (byte)(item_target_y[G.i] - G.item_y[G.i]) < 2)
+ {
+ G.item_placed[G.i] = 1;
+ G.item_x[G.i] = item_target_x[G.i];
+ G.item_y[G.i] = item_target_y[G.i];
+ if (G.player_carry[0] == G.i) G.player_carry[0] = 0xFF;
+ if (G.player_carry[1] == G.i) G.player_carry[1] = 0xFF;
+ sfx_play(2, 3);
+ }
+ }
+ }
+ if (G.item_placed[G.i] == 0) G.temp2 = 1;
+
+ G.int_temp0 = G.item_x[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_x;
+ if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; }
+ G.temp0 = (byte)G.int_temp0;
+
+ G.int_temp0 = G.item_y[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_y;
+ if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; }
+ G.temp1 = (byte)G.int_temp0;
+
+ G.spr = oam_spr((byte)(G.temp0 - 4), (byte)(G.temp1 - 8), (byte)(0xC0 + (G.item_type[G.i] << 1)), 0x03, G.spr);
+ G.i++;
+ }
+
+ if (G.temp2 == 0) G.next_level = 1;
+ // [inlined: tick_enemies]
+ G.temp4 = (byte)(rand8() & 7);
+ G.i = 0;
+ while (G.i < 8)
+ {
+ if (G.enemies_health[G.i] == 0 && (G.frame & 7) == G.i)
+ {
+ G.enemies_x[G.i] = G.enemy_spawn_points_x[G.temp4];
+ G.enemies_y[G.i] = G.enemy_spawn_points_y[G.temp4];
+ G.enemy_push_timer[G.i] = 0;
+ G.enemies_health[G.i] = G.spawn_hp;
+ G.enemies_type[G.i] = (byte)(G.i & 1);
+ return;
+ }
+ G.i++;
+ }
+
+ G.temp2 = (byte)(G.frame & 7);
+ G.enemy_leg[G.temp2] = (byte)(1 - G.enemy_leg[G.temp2]);
+ G.temp1 = G.enemies_enemy[G.temp2];
+
+ G.temp6 = (byte)(rand8() & 3);
+ if (G.temp6 == 0)
+ {
+ G.temp6 = (byte)(rand8() & 3);
+ if (G.temp6 == 0) G.temp3 = (byte)PAD.LEFT;
+ else if (G.temp6 == 1) G.temp3 = (byte)PAD.RIGHT;
+ else if (G.temp6 == 2) G.temp3 = (byte)PAD.UP;
+ else G.temp3 = (byte)PAD.DOWN;
+ }
+ else if (G.temp6 == 1)
+ {
+ G.temp3 = G.enemies_dir[G.temp2];
+ }
+ else
+ {
+ G.temp0 = (byte)(rand8() & 1);
+ if (G.temp0 != 0)
+ {
+ if (G.enemies_x[G.temp2] > G.player_x[G.temp1])
+ G.temp3 = (byte)PAD.LEFT;
+ else
+ G.temp3 = (byte)PAD.RIGHT;
+ }
+ else
+ {
+ if (G.enemies_y[G.temp2] > G.player_y[G.temp1])
+ G.temp3 = (byte)PAD.UP;
+ else
+ G.temp3 = (byte)PAD.DOWN;
+ }
+ }
+
+ G.enemies_dir[G.temp2] = G.temp3;
+ G.temp6 = G.enemies_x[G.temp2];
+ G.temp7 = G.enemies_y[G.temp2];
+
+ if (G.enemy_push_timer[G.temp2] != 0)
+ {
+ }
+ else if (G.temp3 == (byte)PAD.RIGHT)
+ G.enemies_x[G.temp2] = (byte)(G.enemies_x[G.temp2] + G.enemy_speed);
+ else if (G.temp3 == (byte)PAD.LEFT)
+ G.enemies_x[G.temp2] = (byte)(G.enemies_x[G.temp2] - G.enemy_speed);
+ else if (G.temp3 == (byte)PAD.UP)
+ G.enemies_y[G.temp2] = (byte)(G.enemies_y[G.temp2] - G.enemy_speed);
+ else if (G.temp3 == (byte)PAD.DOWN)
+ G.enemies_y[G.temp2] = (byte)(G.enemies_y[G.temp2] + G.enemy_speed);
+
+ byte _ib_x1 = G.enemies_x[G.temp2]; byte _ib_y1 = G.enemies_y[G.temp2];
+ byte _ib_result1;
+ // [inlined: isBlocked]
+ if (_ib_x1 > 122 && _ib_x1 < 134 && _ib_y1 > 114 && _ib_y1 < 125)
+ {
+ _ib_result1 = 1;
+ }
+ else if (_ib_x1 < 128)
+ {
+ if (_ib_y1 < 120)
+ {
+ _ib_result1 = collision_top_left[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y1 -= 120;
+ _ib_result1 = collision_bottom_left[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x1 -= 128;
+ if (_ib_y1 < 120)
+ {
+ _ib_result1 = collision_top_right[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y1 -= 120;
+ _ib_result1 = collision_bottom_right[(_ib_x1 >> 3) + ((_ib_y1 >> 3) << 4)];
+ }
+ }
+ G.temp5 = _ib_result1;
+ if (G.temp5 != 0)
+ {
+ G.enemies_x[G.temp2] = G.temp6;
+ G.enemies_y[G.temp2] = G.temp7;
+ }
+ else
+ {
+ G.i = 0;
+ while (G.i < 8)
+ {
+ if (G.temp2 != G.i)
+ {
+ if ((byte)(G.enemies_x[G.i] - 6) < G.enemies_x[G.temp2] && (byte)(G.enemies_x[G.i] + 6) > G.enemies_x[G.temp2])
+ {
+ if ((byte)(G.enemies_y[G.i] - 6) < G.enemies_y[G.temp2] && (byte)(G.enemies_y[G.i] + 6) > G.enemies_y[G.temp2])
+ {
+ G.enemies_x[G.temp2] = G.temp6;
+ G.enemies_y[G.temp2] = G.temp7;
+ }
+ }
+ }
+ G.i++;
+ }
+ }
+
+ G.i = 0;
+ while (G.i < 8)
+ {
+ if (G.enemy_push_timer[G.i] != 0 && (G.frame & 3) != 0)
+ {
+ if ((G.frame & 1) != 0)
+ {
+ G.enemy_push_timer[G.i] = (byte)(G.enemy_push_timer[G.i] - 1);
+ G.temp6 = G.enemies_x[G.i];
+ G.temp7 = G.enemies_y[G.i];
+ if (G.enemy_push_dir[G.i] == (byte)PAD.LEFT) G.enemies_x[G.i] = (byte)(G.enemies_x[G.i] - 2);
+ else if (G.enemy_push_dir[G.i] == (byte)PAD.RIGHT) G.enemies_x[G.i] = (byte)(G.enemies_x[G.i] + 2);
+ else if (G.enemy_push_dir[G.i] == (byte)PAD.UP) G.enemies_y[G.i] = (byte)(G.enemies_y[G.i] - 2);
+ else if (G.enemy_push_dir[G.i] == (byte)PAD.DOWN) G.enemies_y[G.i] = (byte)(G.enemies_y[G.i] + 2);
+ byte _ib_x2 = G.enemies_x[G.i]; byte _ib_y2 = G.enemies_y[G.i];
+ byte _ib_result2;
+ // [inlined: isBlocked]
+ if (_ib_x2 > 122 && _ib_x2 < 134 && _ib_y2 > 114 && _ib_y2 < 125)
+ {
+ _ib_result2 = 1;
+ }
+ else if (_ib_x2 < 128)
+ {
+ if (_ib_y2 < 120)
+ {
+ _ib_result2 = collision_top_left[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y2 -= 120;
+ _ib_result2 = collision_bottom_left[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)];
+ }
+ }
+ else
+ {
+ _ib_x2 -= 128;
+ if (_ib_y2 < 120)
+ {
+ _ib_result2 = collision_top_right[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)];
+ }
+ else
+ {
+ _ib_y2 -= 120;
+ _ib_result2 = collision_bottom_right[(_ib_x2 >> 3) + ((_ib_y2 >> 3) << 4)];
+ }
+ }
+ if (_ib_result2 != 0)
+ {
+ G.enemies_x[G.i] = G.temp6;
+ G.enemies_y[G.i] = G.temp7;
+ }
+ }
+ }
+
+ G.temp5 = 0;
+ G.j = 0;
+ while (G.j < 2)
+ {
+ if ((G.frame & G.enemy_damage_modifier) == 0)
+ {
+ if ((byte)(G.enemies_x[G.i] - 5) < G.player_x[G.j] && (byte)(G.enemies_x[G.i] + 5) > G.player_x[G.j])
+ {
+ if ((byte)(G.enemies_y[G.i] - 5) < G.player_y[G.j] && (byte)(G.enemies_y[G.i] + 5) > G.player_y[G.j])
+ {
+ if (G.player_hp[G.j] != 0 && G.player_god_mode[G.j] == 0)
+ {
+ G.temp5 = 1;
+ G.player_hp[G.j] = (byte)(G.player_hp[G.j] - 1);
+ G.player_god_mode[G.j] = 4;
+ sfx_play(0, 1);
+ }
+ if (G.player_hp[G.j] == 0 && G.enemies_enemy[G.i] == G.j)
+ {
+ G.enemies_enemy[G.i] = (byte)(1 - G.enemies_enemy[G.i]);
+ }
+ }
+ }
+ }
+ G.j++;
+ }
+
+ G.int_temp0 = G.enemies_x[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_x;
+ if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; }
+ G.temp0 = (byte)G.int_temp0;
+
+ G.int_temp0 = G.enemies_y[G.i];
+ G.int_temp0 <<= 1;
+ G.int_temp0 -= G.scr_y;
+ if (G.int_temp0 < 0 || G.int_temp0 > 255) { G.i++; continue; }
+ G.temp1 = (byte)G.int_temp0;
+
+ if ((G.enemy_push_timer[G.i] & 1) != 0)
+ {
+ if (G.temp5 != 0)
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_damaged_attack_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_damaged_attack_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_damaged_attack_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_damaged_attack_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_damaged_attack_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_damaged_attack_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_damaged_attack_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_damaged_attack_right);
+ }
+ }
+ else
+ {
+ if (G.enemy_leg[G.i] != 0)
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_0_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_0_right);
+ }
+ }
+ else
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_damaged_leg_1_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_damaged_leg_1_right);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (G.temp5 != 0)
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, spider_attack_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, spider_attack_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, spider_attack_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, spider_attack_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 - 2), G.spr, bat_attack_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, (byte)(G.temp1 + 2), G.spr, bat_attack_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr((byte)(G.temp0 - 2), G.temp1, G.spr, bat_attack_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr((byte)(G.temp0 + 2), G.temp1, G.spr, bat_attack_right);
+ }
+ }
+ else
+ {
+ if (G.enemy_leg[G.i] != 0)
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_0_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_0_right);
+ }
+ }
+ else
+ {
+ if (G.enemies_type[G.i] == 0)
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, spider_leg_1_right);
+ }
+ else
+ {
+ if (G.enemies_dir[G.i] == (byte)PAD.UP)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_up);
+ else if (G.enemies_dir[G.i] == (byte)PAD.DOWN)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_down);
+ else if (G.enemies_dir[G.i] == (byte)PAD.LEFT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_left);
+ else if (G.enemies_dir[G.i] == (byte)PAD.RIGHT)
+ G.spr = oam_meta_spr(G.temp0, G.temp1, G.spr, bat_leg_1_right);
+ }
+ }
+ }
+ }
+ G.i++;
+ }
+
+ G.temp0 = 0;
+ if (G.to_scroll_x != 0)
+ {
+ if (G.to_scroll_x_neg != 0)
+ G.scr_x -= G.to_scroll_x;
+ else
+ G.scr_x += G.to_scroll_x;
+ }
+ if (G.to_scroll_y != 0)
+ {
+ if (G.to_scroll_y_neg != 0)
+ G.scr_y -= G.to_scroll_y;
+ else
+ G.scr_y += G.to_scroll_y;
+ }
+ scroll(G.scr_x, G.scr_y);
+ G.frame++;
+ }
+}
+
+static class G
+{
+ public static byte oam_off, i, j, spr, frame, dx, dy, scr_x, scr_y;
+ public static byte to_scroll_x, to_scroll_y, to_scroll_x_neg, to_scroll_y_neg;
+ public static byte difficulty, enemy_speed, next_level, enemy_damage_modifier, spawn_hp;
+ public static byte temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7;
+ public static int int_temp0;
+ public static byte[] player_dir = new byte[2], player_attack_tick = new byte[2];
+ public static byte[] player_x = new byte[2], player_y = new byte[2];
+ public static byte[] player_hp = new byte[2], player_carry = new byte[2], player_carry_dir = new byte[2];
+ public static byte[] player_god_mode = new byte[2];
+ public static byte[] enemies_x = new byte[8], enemies_y = new byte[8], enemies_enemy = new byte[8];
+ public static byte[] enemies_health = new byte[8], enemies_dir = new byte[8], enemies_type = new byte[8];
+ public static byte[] enemy_leg = new byte[8], enemy_push_timer = new byte[8], enemy_push_dir = new byte[8];
+ public static byte[] enemy_spawn_points_x = new byte[8], enemy_spawn_points_y = new byte[8];
+ public static byte[] item_type = new byte[4], item_x = new byte[4], item_y = new byte[4], item_placed = new byte[4];
+}
diff --git a/samples/crypto/chr_crypto_0.s b/samples/crypto/chr_crypto_0.s
new file mode 100644
index 00000000..bfe56b33
--- /dev/null
+++ b/samples/crypto/chr_crypto_0.s
@@ -0,0 +1,1025 @@
+.segment "CHARS"
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$7C,$EE,$EE,$EE,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$38,$78,$38,$38,$38,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$0E,$7C,$E0,$EE,$FE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FC,$0E,$3C,$0E,$0E,$FC,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$3E,$7E,$EE,$EE,$FE,$0E,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FC,$E0,$FC,$0E,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$E0,$FC,$EE,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$EE,$1C,$1C,$38,$38,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$EE,$7C,$EE,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$EE,$EE,$7E,$0E,$3C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$1C,$38,$70,$E0,$FE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$40,$60,$70,$78,$7C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $7E,$7C,$78,$70,$60,$40,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$03,$37,$7F,$7F
+.byte $00,$00,$00,$00,$03,$07,$07,$07
+.byte $7F,$3F,$1F,$0F,$00,$00,$00,$00
+.byte $07,$03,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$C0,$E0,$FC,$FE
+.byte $00,$00,$00,$00,$C0,$E0,$E0,$E0
+.byte $FE,$FE,$FC,$F8,$70,$00,$00,$00
+.byte $E0,$C0,$00,$08,$70,$00,$00,$00
+.byte $00,$00,$00,$03,$37,$7F,$7F,$7F
+.byte $00,$00,$00,$03,$07,$07,$07,$07
+.byte $3F,$1F,$0F,$00,$00,$00,$00,$00
+.byte $03,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$C0,$EC,$FE,$FE,$FE
+.byte $00,$00,$00,$C0,$E0,$E0,$E0,$E0
+.byte $FE,$FC,$F0,$00,$00,$00,$00,$00
+.byte $C0,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$20
+.byte $00,$00,$00,$00,$00,$00,$00,$20
+.byte $20,$40,$03,$07,$1F,$5F,$5F,$07
+.byte $20,$60,$23,$27,$23,$27,$27,$27
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$80,$F0,$F8,$FC,$FC,$FC
+.byte $00,$00,$80,$00,$C0,$E0,$E0,$E0
+.byte $20,$20,$40,$00,$00,$00,$10,$1C
+.byte $20,$20,$60,$20,$20,$20,$20,$20
+.byte $0F,$07,$03,$01,$03,$57,$5F,$1F
+.byte $20,$20,$20,$20,$23,$27,$27,$27
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$80,$E0,$F0,$F8,$F8,$F8,$F8
+.byte $00,$00,$00,$00,$C0,$E0,$E0,$E0
+.byte $00,$0C,$00,$0C,$1E,$3F,$3F,$3F
+.byte $00,$00,$FF,$00,$00,$01,$03,$03
+.byte $3F,$3F,$1F,$0F,$03,$00,$00,$00
+.byte $03,$03,$01,$00,$00,$00,$00,$00
+.byte $00,$60,$00,$70,$70,$F8,$FC,$FC
+.byte $00,$00,$FF,$00,$00,$E8,$FC,$FC
+.byte $FC,$F8,$F8,$F8,$F0,$E0,$00,$00
+.byte $F4,$F0,$E0,$00,$00,$00,$00,$00
+.byte $00,$80,$60,$00,$00,$00,$00,$00
+.byte $00,$80,$E0,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$10,$1C,$3B,$3F,$7F,$7F,$7F
+.byte $0E,$0E,$00,$03,$07,$07,$07,$07
+.byte $7F,$3F,$1F,$0F,$00,$00,$00,$00
+.byte $07,$03,$00,$00,$00,$00,$00,$00
+.byte $00,$08,$38,$DC,$FC,$FE,$FE,$FE
+.byte $70,$70,$00,$C0,$E0,$E0,$E0,$E0
+.byte $FE,$FE,$FC,$F8,$70,$00,$00,$00
+.byte $E0,$C0,$00,$08,$70,$00,$00,$00
+.byte $00,$10,$1C,$3B,$3F,$7F,$7F,$7F
+.byte $0E,$0E,$00,$03,$07,$07,$07,$07
+.byte $3F,$1F,$0F,$00,$00,$00,$00,$00
+.byte $03,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$08,$38,$DC,$FC,$FE,$FE,$FE
+.byte $70,$70,$00,$C0,$E0,$E0,$E0,$E0
+.byte $FC,$F8,$F0,$00,$00,$00,$00,$00
+.byte $C0,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$01,$03,$07,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$01,$03,$03
+.byte $0F,$1F,$1F,$1F,$0F,$07,$03,$00
+.byte $03,$13,$11,$10,$08,$00,$00,$00
+.byte $00,$C0,$E0,$E0,$C0,$E0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$E0,$F0,$F0
+.byte $F0,$F0,$E0,$C0,$C0,$C0,$80,$00
+.byte $F0,$F0,$E0,$00,$00,$00,$00,$00
+.byte $00,$01,$03,$07,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$01,$03,$03
+.byte $0F,$0F,$0F,$0F,$07,$07,$03,$00
+.byte $03,$03,$01,$00,$00,$00,$00,$00
+.byte $00,$C0,$E0,$E0,$C0,$E0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$E0,$F0,$F0
+.byte $F0,$F0,$E0,$C0,$E0,$E0,$C0,$00
+.byte $F0,$F0,$E0,$00,$00,$00,$00,$00
+.byte $07,$0F,$5F,$5F,$0F,$07,$00,$00
+.byte $27,$23,$20,$20,$20,$20,$20,$20
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $20,$20,$00,$00,$00,$00,$00,$00
+.byte $F8,$F8,$F0,$F0,$E0,$C0,$00,$00
+.byte $E0,$C0,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1F,$1F,$0F,$0F,$07,$00,$00,$00
+.byte $27,$23,$20,$0C,$07,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F8,$F8,$F0,$F0,$00,$00,$00,$00
+.byte $E0,$C0,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$03,$0F,$1F,$1F,$1F
+.byte $00,$00,$07,$00,$08,$19,$13,$13
+.byte $0F,$0F,$0F,$0F,$03,$00,$00,$00
+.byte $03,$03,$01,$00,$00,$00,$00,$00
+.byte $00,$60,$00,$E0,$C1,$E3,$F7,$FF
+.byte $00,$00,$FF,$00,$00,$E0,$F0,$F0
+.byte $FE,$FC,$FC,$F8,$F0,$00,$00,$00
+.byte $F0,$F0,$E0,$00,$00,$00,$00,$00
+.byte $00,$04,$03,$C0,$80,$80,$00,$00
+.byte $00,$04,$FF,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$01,$03,$07,$07,$07,$07
+.byte $00,$00,$00,$00,$00,$00,$01,$01
+.byte $07,$0F,$0F,$0F,$07,$03,$01,$00
+.byte $01,$09,$08,$08,$04,$00,$00,$00
+.byte $00,$E0,$F8,$FE,$FC,$F4,$F8,$F8
+.byte $00,$00,$00,$00,$03,$F3,$FB,$F8
+.byte $F8,$F8,$F4,$FC,$FE,$F8,$E0,$00
+.byte $F8,$FB,$F3,$03,$00,$00,$00,$00
+.byte $00,$00,$01,$03,$07,$07,$07,$07
+.byte $00,$00,$00,$00,$00,$00,$01,$01
+.byte $07,$07,$07,$07,$03,$01,$00,$00
+.byte $01,$01,$00,$00,$00,$00,$00,$00
+.byte $00,$E0,$F8,$FE,$FC,$F4,$F8,$F8
+.byte $00,$00,$00,$00,$03,$F3,$FB,$F8
+.byte $F8,$F8,$F4,$FC,$FE,$F8,$E0,$00
+.byte $F8,$FB,$F3,$03,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$FF,$FF,$FF,$7E,$3C,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $66,$99,$81,$81,$42,$24,$18,$00
+.byte $00,$00,$08,$10,$10,$20,$00,$00
+.byte $07,$1F,$37,$6F,$6F,$DF,$FF,$FF
+.byte $08,$08,$04,$03,$00,$00,$00,$00
+.byte $F7,$F7,$FB,$7C,$7F,$3F,$1F,$07
+.byte $00,$00,$00,$E0,$10,$08,$08,$04
+.byte $E0,$F8,$FC,$1E,$EE,$F7,$F7,$FB
+.byte $04,$24,$44,$84,$08,$00,$00,$00
+.byte $FB,$DB,$BB,$7A,$F6,$FC,$F8,$E0
+.byte $00,$00,$00,$03,$14,$24,$21,$20
+.byte $07,$1F,$3F,$7C,$6B,$DB,$DE,$DF
+.byte $20,$10,$00,$03,$00,$00,$00,$00
+.byte $DF,$EF,$FF,$7C,$7F,$3F,$1F,$07
+.byte $00,$00,$00,$E0,$10,$08,$88,$44
+.byte $E0,$F8,$FC,$1E,$EE,$F7,$77,$BB
+.byte $24,$20,$40,$80,$00,$00,$00,$00
+.byte $DB,$DF,$BF,$7E,$FE,$FC,$F8,$E0
+.byte $3C,$64,$C5,$C0,$C0,$C0,$64,$39
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$D9,$EB,$C3,$C3,$C3,$F1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$E3,$37,$F6,$06,$B7,$E3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E3,$60,$6F,$E3,$63,$63,$E3,$6F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $18,$18,$3E,$18,$18,$18,$19,$CE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$3E,$66,$78,$0E,$66,$7C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$01,$03,$03,$01,$01,$03
+.byte $00,$10,$08,$06,$20,$16,$08,$00
+.byte $07,$07,$07,$07,$07,$03,$01,$00
+.byte $20,$59,$40,$92,$28,$20,$20,$40
+.byte $00,$00,$80,$C0,$C0,$80,$80,$C0
+.byte $00,$08,$10,$60,$04,$68,$10,$00
+.byte $E0,$E0,$E0,$E0,$E0,$C0,$80,$00
+.byte $04,$1A,$02,$49,$14,$84,$04,$02
+.byte $00,$01,$03,$03,$01,$01,$03,$07
+.byte $02,$04,$06,$00,$36,$08,$00,$20
+.byte $07,$07,$07,$07,$03,$01,$00,$00
+.byte $59,$40,$42,$18,$20,$20,$10,$10
+.byte $00,$80,$C0,$C0,$80,$80,$C0,$E0
+.byte $40,$20,$60,$00,$6C,$10,$00,$04
+.byte $E0,$E0,$E0,$E0,$C0,$80,$00,$00
+.byte $1A,$02,$42,$18,$84,$04,$08,$08
+.byte $00,$00,$01,$03,$03,$01,$01,$03
+.byte $00,$08,$04,$06,$00,$26,$18,$00
+.byte $07,$07,$07,$07,$07,$03,$01,$00
+.byte $30,$C9,$00,$02,$18,$20,$20,$20
+.byte $00,$00,$80,$C0,$C0,$80,$80,$C0
+.byte $00,$00,$08,$78,$08,$70,$00,$00
+.byte $E0,$E0,$E0,$E0,$E0,$C0,$80,$00
+.byte $00,$1C,$02,$4A,$16,$84,$02,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$02,$02,$02,$08,$14,$2A,$4A
+.byte $00,$00,$01,$03,$01,$09,$15,$35
+.byte $8A,$6A,$14,$02,$02,$00,$00,$00
+.byte $75,$15,$03,$01,$01,$01,$00,$00
+.byte $00,$40,$40,$40,$10,$28,$54,$52
+.byte $00,$00,$80,$C0,$80,$90,$A8,$AC
+.byte $51,$56,$28,$40,$40,$00,$00,$00
+.byte $AE,$A8,$C0,$80,$80,$80,$00,$00
+.byte $00,$02,$02,$02,$00,$04,$0A,$0A
+.byte $00,$00,$01,$03,$01,$01,$05,$05
+.byte $12,$12,$3C,$22,$02,$00,$00,$00
+.byte $0D,$0D,$03,$01,$01,$01,$00,$00
+.byte $00,$40,$40,$40,$00,$20,$50,$50
+.byte $00,$00,$80,$C0,$80,$80,$A0,$A0
+.byte $48,$48,$3C,$44,$40,$00,$00,$00
+.byte $B0,$B0,$C0,$80,$80,$80,$00,$00
+.byte $00,$02,$02,$02,$00,$04,$0A,$0A
+.byte $00,$00,$01,$03,$01,$01,$05,$05
+.byte $12,$12,$3C,$22,$02,$00,$00,$00
+.byte $0D,$0D,$03,$01,$01,$01,$00,$00
+.byte $00,$40,$40,$40,$00,$20,$50,$50
+.byte $00,$00,$80,$C0,$80,$80,$A0,$A0
+.byte $48,$48,$3C,$44,$40,$00,$00,$00
+.byte $B0,$B0,$C0,$80,$80,$80,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$1F,$3F,$7F
+.byte $08,$86,$71,$0A,$12,$00,$08,$02
+.byte $7F,$3F,$1F,$00,$00,$00,$00,$00
+.byte $20,$08,$00,$12,$0A,$71,$86,$08
+.byte $00,$00,$00,$00,$00,$00,$98,$FC
+.byte $00,$00,$10,$22,$44,$28,$28,$00
+.byte $FC,$98,$00,$00,$00,$00,$00,$00
+.byte $00,$28,$28,$44,$22,$10,$00,$00
+.byte $00,$00,$00,$00,$00,$0F,$1F,$3F
+.byte $00,$07,$30,$C9,$09,$00,$04,$01
+.byte $3F,$1F,$0F,$00,$00,$00,$00,$00
+.byte $10,$04,$00,$09,$C9,$30,$07,$00
+.byte $00,$00,$00,$00,$00,$80,$CC,$FE
+.byte $00,$00,$90,$10,$20,$16,$15,$00
+.byte $FE,$CC,$80,$00,$00,$00,$00,$00
+.byte $00,$15,$16,$20,$10,$90,$00,$00
+.byte $00,$00,$00,$00,$00,$1F,$3F,$7F
+.byte $02,$02,$E1,$11,$12,$00,$08,$02
+.byte $7F,$3F,$1F,$00,$00,$00,$00,$00
+.byte $20,$08,$00,$12,$0A,$32,$5C,$00
+.byte $00,$00,$00,$00,$00,$00,$98,$FC
+.byte $00,$00,$20,$40,$42,$2C,$28,$00
+.byte $FC,$98,$00,$00,$00,$00,$00,$00
+.byte $00,$28,$28,$28,$1C,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$02,$02,$04,$03,$04,$1B,$00
+.byte $00,$01,$01,$03,$00,$03,$04,$3F
+.byte $00,$1B,$04,$03,$04,$02,$02,$01
+.byte $3F,$04,$03,$00,$03,$01,$01,$00
+.byte $00,$80,$40,$20,$D0,$20,$CE,$00
+.byte $00,$00,$80,$C0,$20,$C0,$08,$FC
+.byte $00,$CE,$20,$D0,$20,$40,$80,$00
+.byte $FC,$08,$C0,$20,$C0,$80,$00,$00
+.byte $00,$00,$0C,$07,$04,$04,$1B,$00
+.byte $00,$00,$00,$00,$03,$03,$04,$3F
+.byte $00,$1B,$04,$04,$07,$0C,$00,$00
+.byte $3F,$04,$03,$03,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$C0,$20,$CE,$00
+.byte $00,$00,$00,$00,$00,$C0,$08,$FC
+.byte $00,$CE,$20,$C0,$00,$00,$00,$00
+.byte $FC,$08,$C0,$00,$00,$00,$00,$00
+.byte $00,$00,$0C,$07,$04,$04,$1B,$00
+.byte $00,$00,$00,$00,$03,$03,$04,$3F
+.byte $00,$1B,$04,$04,$07,$0C,$00,$00
+.byte $3F,$04,$03,$03,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$C0,$20,$CE,$00
+.byte $00,$00,$00,$00,$00,$C0,$08,$FC
+.byte $00,$CE,$20,$C0,$00,$00,$00,$00
+.byte $FC,$08,$C0,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$3C,$42,$42,$24,$3C,$3C
+.byte $00,$00,$3C,$42,$42,$24,$24,$24
+.byte $3C,$7E,$FF,$BF,$BF,$9F,$42,$3C
+.byte $24,$42,$81,$C1,$C1,$E1,$7E,$3C
+.byte $42,$BD,$81,$BD,$7E,$7E,$7E,$7E
+.byte $42,$FF,$FF,$FF,$42,$42,$42,$42
+.byte $7E,$7E,$7E,$7E,$BD,$81,$BD,$42
+.byte $42,$42,$42,$42,$FF,$FF,$FF,$42
+.byte $00,$00,$FC,$FE,$C0,$CC,$DE,$DA
+.byte $00,$00,$FC,$80,$BF,$BF,$BF,$BF
+.byte $F0,$F0,$F0,$F0,$DA,$DE,$4C,$00
+.byte $BF,$BF,$BF,$BF,$BF,$BF,$3F,$3F
+.byte $7E,$FF,$00,$00,$00,$00,$00,$00
+.byte $7E,$FF,$42,$42,$24,$24,$18,$18
+.byte $18,$18,$3C,$3C,$7E,$7E,$FF,$7E
+.byte $00,$00,$00,$00,$00,$00,$FF,$7E
+.byte $78,$CC,$CC,$0C,$38,$70,$C0,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $30,$F0,$30,$30,$30,$30,$30,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $07,$03,$03,$03,$03,$03,$03,$07
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $CF,$63,$63,$63,$C3,$03,$03,$8F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$0F,$01,$0F,$19,$19,$CD
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$3B,$9B,$9B,$8E,$8E,$CC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0C,$3E,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$9E,$33,$3F,$30,$3B,$1E
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$76,$3A,$30,$30,$30,$7C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$40,$00,$83,$C3,$C0,$C0,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$80,$C0,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FC,$EE,$EE,$EE,$FC,$E0,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$EE,$EE,$EE,$FE,$EE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$EE,$EE,$EE,$EE,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$E0,$7C,$0E,$EE,$7C,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$E0,$F0,$E0,$E0,$FE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$F8,$EC,$EE,$EE,$EE,$FC,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7C,$E0,$EE,$EE,$EE,$7E,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$C6,$EE,$FE,$FE,$EE,$EE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FC,$EE,$EE,$EE,$FC,$EE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$E0,$E0,$E0,$E0,$EE,$FE,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$EE,$EE,$EE,$6C,$38,$10,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$70,$F0,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $70,$D9,$D9,$19,$31,$61,$C1,$F8
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E0,$F3,$B0,$B0,$B0,$B0,$F0,$E3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C1,$C3,$C6,$C7,$C6,$C6,$C6,$F3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0E,$0E,$F0,$F0,$F0,$00,$00,$00
+.byte $F8,$F8,$00,$07,$07,$07,$FF,$FF
+.byte $E0,$E0,$1F,$1F,$1F,$00,$00,$00
+.byte $8F,$8F,$90,$F0,$F0,$F0,$FF,$FF
+.byte $80,$80,$F0,$F0,$F0,$00,$00,$00
+.byte $3F,$3F,$0F,$07,$07,$07,$FF,$FF
+.byte $00,$00,$80,$80,$80,$00,$00,$00
+.byte $FF,$FF,$7F,$3F,$3F,$3F,$FF,$FF
+.byte $FC,$FC,$FF,$FF,$FF,$00,$00,$00
+.byte $81,$81,$00,$00,$00,$00,$FF,$FF
+.byte $00,$00,$07,$07,$07,$00,$00,$00
+.byte $FF,$FF,$FC,$FC,$FC,$FC,$FF,$FF
+.byte $C0,$C0,$3F,$3F,$3F,$00,$00,$00
+.byte $1F,$1F,$E0,$E0,$E0,$C0,$FF,$FF
+.byte $81,$81,$F0,$F0,$F0,$00,$00,$00
+.byte $3F,$3F,$0F,$07,$07,$07,$FF,$FF
+.byte $1F,$1F,$FF,$FF,$FF,$00,$00,$00
+.byte $F0,$F0,$80,$80,$80,$80,$FF,$FF
+.byte $38,$38,$C0,$C0,$C0,$00,$00,$00
+.byte $E3,$E3,$03,$1F,$1F,$1F,$FF,$FF
+.byte $00,$00,$FF,$FF,$FF,$00,$00,$00
+.byte $FF,$FF,$00,$00,$00,$00,$FF,$FF
+.byte $1C,$1C,$03,$03,$03,$00,$00,$00
+.byte $F1,$F1,$FE,$FE,$FE,$FE,$FF,$FF
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$00
+.byte $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F
+.byte $01,$01,$01,$01,$01,$01,$01,$0E
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$F8
+.byte $E0,$E0,$E0,$E0,$E0,$E0,$E0,$E0
+.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$8F
+.byte $3F,$07,$07,$07,$07,$07,$07,$00
+.byte $E0,$FC,$FC,$FC,$FC,$FC,$FC,$FF
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F
+.byte $F0,$00,$00,$00,$00,$00,$00,$00
+.byte $07,$07,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FC,$FC,$FC,$FC,$FC,$FC,$FC
+.byte $80,$80,$81,$81,$81,$81,$81,$81
+.byte $80,$00,$00,$00,$00,$00,$00,$00
+.byte $3F,$3F,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $E3,$FC,$FC,$FC,$FC,$FC,$FC,$FC
+.byte $0E,$80,$81,$81,$81,$81,$81,$81
+.byte $07,$00,$00,$00,$00,$00,$00,$00
+.byte $FC,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$C0,$C0,$C0,$C0
+.byte $FF,$FF,$FF,$FF,$3F,$1F,$1F,$1F
+.byte $FE,$8E,$8E,$8E,$81,$81,$81,$81
+.byte $00,$38,$38,$38,$3F,$3F,$3F,$3F
+.byte $00,$00,$00,$00,$00,$00,$00,$38
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$E7
+.byte $FC,$FC,$FC,$FC,$FC,$FC,$FC,$1C
+.byte $01,$81,$81,$81,$81,$81,$81,$F1
+.byte $03,$00,$00,$00,$00,$00,$00,$00
+.byte $FE,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$C0,$C0
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$3F,$1F
+.byte $F0,$F0,$F0,$0E,$0E,$0E,$01,$01
+.byte $0F,$07,$07,$F9,$F8,$F8,$FF,$FF
+.byte $E3,$E3,$E3,$E0,$E0,$E0,$E0,$E0
+.byte $8E,$8E,$8E,$0F,$0F,$0F,$0F,$0F
+.byte $C0,$C0,$C0,$07,$07,$07,$3F,$3F
+.byte $1F,$1F,$1F,$1C,$FC,$FC,$E0,$E0
+.byte $81,$81,$81,$80,$80,$80,$80,$80
+.byte $3F,$3F,$3F,$3F,$3F,$3F,$3F,$3F
+.byte $1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F
+.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0
+.byte $38,$38,$38,$00,$00,$00,$00,$00
+.byte $E3,$E3,$E3,$E3,$FF,$FF,$FF,$FF
+.byte $7E,$7E,$7E,$0E,$0E,$0E,$F0,$F0
+.byte $41,$C0,$C0,$C8,$F8,$F8,$00,$07
+.byte $00,$00,$00,$FC,$FC,$FC,$FF,$FF
+.byte $00,$FF,$FF,$83,$83,$83,$80,$80
+.byte $F8,$F8,$F8,$00,$00,$00,$00,$00
+.byte $04,$03,$03,$03,$FF,$FF,$FF,$FF
+.byte $0F,$0F,$0F,$70,$70,$70,$80,$80
+.byte $F8,$F8,$F8,$C0,$C7,$C7,$07,$3F
+.byte $E0,$E0,$E0,$E0,$E0,$E0,$E3,$E3
+.byte $1F,$0F,$0F,$0F,$0F,$0F,$0E,$0E
+.byte $07,$07,$07,$07,$07,$07,$07,$07
+.byte $FC,$FC,$FC,$FC,$FC,$FC,$FC,$FC
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$00,$00
+.byte $3F,$1F,$1F,$1F,$1F,$1F,$1F,$FF
+.byte $0F,$0F,$0F,$81,$81,$81,$FE,$FE
+.byte $08,$F8,$F8,$79,$7F,$7F,$00,$00
+.byte $00,$00,$00,$1F,$1F,$1F,$1F,$1F
+.byte $00,$7F,$7F,$70,$F0,$F0,$F0,$F0
+.byte $FF,$FF,$FF,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF
+.byte $01,$01,$01,$00,$00,$00,$00,$00
+.byte $01,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $1C,$1C,$1C,$FC,$FC,$FC,$FC,$FC
+.byte $F0,$F1,$F1,$81,$81,$81,$01,$01
+.byte $00,$00,$00,$00,$00,$00,$03,$03
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FE,$FE
+.byte $00,$00,$00,$00,$00,$80,$80,$80
+.byte $FF,$FF,$FF,$FF,$FF,$7F,$3F,$3F
+.byte $00,$00,$00,$00,$00,$1F,$1F,$1F
+.byte $FF,$FF,$FF,$FF,$FF,$F0,$F0,$F0
+.byte $00,$00,$00,$00,$00,$C0,$C0,$C0
+.byte $FF,$FF,$FF,$FF,$FF,$3F,$1F,$1F
+.byte $00,$00,$00,$00,$00,$3F,$3F,$3F
+.byte $FF,$FF,$FF,$FF,$FF,$E0,$E0,$E0
+.byte $00,$00,$00,$00,$00,$F0,$F0,$F0
+.byte $FF,$FF,$FF,$FF,$FF,$0F,$07,$07
+.byte $00,$00,$00,$00,$00,$C7,$C7,$C7
+.byte $FF,$FF,$FF,$FF,$FF,$3C,$1C,$1C
+.byte $00,$00,$00,$00,$00,$7F,$7F,$7F
+.byte $FF,$FF,$FF,$FF,$FF,$C0,$C0,$C0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$7F,$7F
+.byte $00,$00,$F8,$F8,$F8,$3F,$3F,$3F
+.byte $FF,$FF,$07,$03,$03,$E0,$E0,$E0
+.byte $00,$00,$0F,$0F,$0F,$00,$00,$00
+.byte $FF,$FF,$F8,$F8,$F8,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$FE,$FE,$FE
+.byte $FF,$FF,$FF,$FF,$FF,$01,$00,$00
+.byte $00,$00,$00,$00,$00,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$80,$80,$80
+.byte $00,$00,$00,$00,$00,$C0,$C0,$C0
+.byte $FF,$FF,$FF,$FF,$FF,$3F,$3F,$3F
+.byte $00,$00,$00,$00,$00,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$03,$03,$03
+.byte $FF,$FF,$FF,$FF,$FF,$FE,$FE,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$DE
+.byte $DE,$DE,$DE,$DE,$2E,$EE,$2E,$DE
+.byte $81,$81,$81,$80,$80,$80,$80,$FB
+.byte $FB,$FB,$FB,$FB,$F4,$F7,$F4,$FB
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$2E,$EE,$2E,$DE,$DE,$DE,$DE
+.byte $80,$80,$80,$80,$80,$81,$80,$80
+.byte $80,$F4,$F7,$F4,$FB,$FB,$FB,$FB
+.byte $00,$08,$10,$30,$C0,$00,$00,$FE
+.byte $76,$DE,$7E,$FE,$FE,$FE,$FE,$FE
+.byte $E0,$00,$C0,$BC,$83,$80,$80,$FF
+.byte $1E,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $80,$80,$80,$00,$00,$00,$00,$00
+.byte $C0,$DE,$EE,$EE,$EE,$EE,$B6,$36
+.byte $00,$00,$00,$01,$01,$02,$04,$18
+.byte $00,$00,$00,$01,$00,$01,$03,$07
+.byte $E0,$E0,$0F,$0F,$00,$00,$00,$00
+.byte $FF,$FF,$F0,$F0,$00,$00,$00,$00
+.byte $FF,$FF,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$FF,$FF,$00,$00,$00,$00
+.byte $0F,$0F,$E0,$E0,$00,$00,$00,$00
+.byte $FF,$FF,$1F,$1F,$00,$00,$00,$00
+.byte $00,$00,$A8,$00,$50,$F0,$F0,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$AA,$80,$D5,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$AA,$00,$54,$FF,$FF,$FF
+.byte $FE,$FE,$FE,$FE,$FE,$FF,$FF,$FF
+.byte $80,$80,$AA,$80,$95,$8F,$8F,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$40
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $00,$80,$80,$80,$80,$80,$80,$C4
+.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$12
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $00,$80,$80,$80,$80,$80,$80,$91
+.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$FE,$5E,$1E,$3E,$FE,$FE
+.byte $84,$84,$84,$84,$84,$84,$80,$FF
+.byte $FC,$FC,$FC,$FE,$FE,$FF,$FF,$FF
+.byte $00,$00,$E0,$00,$00,$00,$00,$00
+.byte $00,$FE,$FE,$FE,$3E,$1E,$5E,$FE
+.byte $80,$80,$87,$84,$84,$84,$84,$84
+.byte $80,$FF,$FF,$FF,$FF,$FE,$FE,$FC
+.byte $A0,$A0,$A0,$A0,$E0,$80,$80,$FF
+.byte $F1,$FB,$FB,$FD,$FE,$FF,$FF,$FF
+.byte $00,$5C,$40,$40,$C0,$00,$00,$00
+.byte $00,$FE,$FE,$CE,$DE,$9E,$3E,$7E
+.byte $80,$B0,$AC,$A3,$A0,$A0,$A0,$A0
+.byte $80,$FF,$FF,$FF,$FF,$F7,$F7,$F4
+.byte $07,$00,$03,$3C,$C0,$00,$00,$FE
+.byte $78,$3F,$FF,$FE,$FE,$FE,$FE,$FE
+.byte $90,$90,$88,$8C,$83,$80,$80,$FF
+.byte $FD,$FC,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$80,$80,$40,$20,$18
+.byte $00,$00,$00,$00,$00,$80,$C0,$E0
+.byte $85,$85,$89,$88,$88,$88,$90,$90
+.byte $86,$FE,$FE,$FF,$FF,$FF,$FE,$FD
+.byte $00,$00,$00,$00,$00,$80,$80,$9E
+.byte $F6,$B6,$EE,$EE,$EE,$EE,$DE,$DE
+.byte $18,$04,$02,$01,$01,$00,$00,$00
+.byte $1F,$07,$03,$01,$01,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$FE,$3E,$CE,$6E,$76,$16
+.byte $80,$80,$80,$80,$80,$00,$00,$E0
+.byte $80,$FF,$FF,$FC,$C3,$3F,$FF,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $7E,$7E,$BE,$BE,$DE,$DE,$0E,$FE
+.byte $80,$80,$81,$81,$82,$80,$80,$FF
+.byte $FE,$FE,$FD,$FD,$FB,$FB,$F0,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$0E,$DE,$DE,$BE,$BE,$7E,$7E
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$F0,$FB,$FB,$FD,$FD,$FE,$FE
+.byte $C0,$C0,$C0,$00,$30,$30,$30,$30
+.byte $F0,$F0,$F0,$F0,$C0,$C0,$C0,$C0
+.byte $27,$0F,$27,$0E,$20,$00,$00,$FE
+.byte $FF,$FF,$FF,$FE,$FE,$FE,$FE,$FE
+.byte $80,$81,$80,$80,$80,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $27,$0F,$27,$0F,$27,$0F,$27,$0F
+.byte $27,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $80,$81,$80,$80,$80,$81,$80,$80
+.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0
+.byte $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0
+.byte $27,$0F,$27,$0F,$27,$0F,$27,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $80,$80,$80,$81,$80,$80,$81,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $3E,$7E,$7E,$7E,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$FF
+.byte $FE,$FF,$FF,$FF,$FE,$FE,$FD,$FF
+.byte $E0,$00,$00,$00,$00,$00,$00,$FE
+.byte $DE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $FF,$80,$80,$80,$80,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $6E,$F6,$F6,$F6,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$00,$00,$80,$80,$FF
+.byte $FC,$FB,$C7,$1F,$7F,$FF,$FF,$FF
+.byte $02,$01,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FF,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $30,$30,$30,$00,$C0,$C0,$C0,$C0
+.byte $C0,$C0,$C0,$F0,$F0,$F0,$F0,$F0
+.byte $00,$00,$20,$08,$27,$0F,$27,$0F
+.byte $00,$FE,$FE,$FE,$FF,$FF,$FF,$FF
+.byte $00,$80,$80,$81,$80,$80,$80,$81
+.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$7E,$7E,$7E,$BE,$BE,$BE,$BE
+.byte $80,$80,$80,$80,$80,$00,$00,$80
+.byte $80,$FF,$FF,$FF,$FF,$7F,$07,$F9
+.byte $00,$02,$02,$02,$02,$02,$06,$3C
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FC,$FA
+.byte $80,$80,$80,$80,$80,$80,$80,$C0
+.byte $80,$F7,$F7,$FB,$F8,$FE,$FE,$BF
+.byte $00,$00,$00,$80,$80,$40,$1C,$07
+.byte $00,$BE,$BE,$3E,$9E,$DE,$DA,$EF
+.byte $80,$86,$83,$81,$80,$80,$80,$80
+.byte $80,$FD,$FE,$FF,$FF,$FF,$FF,$FF
+.byte $00,$30,$30,$18,$0C,$0C,$06,$06
+.byte $00,$EE,$EE,$F6,$FA,$FA,$FC,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$7E
+.byte $FE,$FE,$FE,$FE,$FE,$7E,$7E,$7E
+.byte $B0,$B0,$B0,$B0,$E0,$80,$80,$FF
+.byte $E1,$EB,$EB,$ED,$FE,$FF,$FF,$FF
+.byte $00,$00,$E0,$3E,$00,$00,$00,$FE
+.byte $FE,$FE,$DE,$FE,$FE,$FE,$FE,$FE
+.byte $06,$03,$01,$00,$00,$80,$80,$FF
+.byte $05,$0E,$0F,$7F,$7F,$FF,$FF,$FF
+.byte $80,$00,$00,$00,$00,$00,$00,$FE
+.byte $76,$E6,$EE,$FE,$FE,$FE,$FE,$FE
+.byte $81,$83,$83,$83,$83,$C3,$C3,$FF
+.byte $F7,$FA,$FE,$FE,$FE,$FE,$FE,$FF
+.byte $62,$30,$DC,$6E,$62,$60,$60,$7E
+.byte $DE,$EE,$B2,$DC,$DE,$DE,$5E,$7E
+.byte $80,$80,$80,$80,$80,$80,$80,$E0
+.byte $FF,$FB,$FB,$F9,$F9,$F0,$E0,$E0
+.byte $00,$7E,$60,$C0,$C0,$00,$00,$00
+.byte $00,$DC,$DE,$4E,$DE,$9E,$3E,$7E
+.byte $80,$B8,$BE,$B3,$B0,$B0,$B0,$B0
+.byte $80,$F7,$ED,$EF,$EF,$E7,$E7,$E4
+.byte $00,$00,$00,$06,$06,$06,$06,$06
+.byte $00,$01,$03,$05,$05,$05,$05,$05
+.byte $00,$00,$80,$80,$80,$80,$80,$80
+.byte $00,$FE,$7E,$7E,$7E,$7E,$7C,$7A
+.byte $80,$83,$01,$81,$81,$81,$81,$81
+.byte $80,$FE,$7F,$BF,$DF,$EF,$F7,$F7
+.byte $00,$06,$06,$06,$86,$82,$C2,$C2
+.byte $00,$FC,$FC,$FC,$7C,$7E,$BE,$BE
+.byte $80,$86,$86,$83,$81,$81,$80,$80
+.byte $80,$FD,$FD,$FE,$FF,$FF,$FF,$FF
+.byte $0C,$0C,$0C,$06,$06,$06,$06,$FE
+.byte $FA,$FA,$FA,$FC,$FC,$FC,$FC,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$1E
+.byte $BC,$7C,$7E,$3E,$3E,$1E,$1E,$1E
+.byte $80,$80,$80,$00,$00,$00,$00,$00
+.byte $FF,$FE,$FC,$00,$00,$00,$00,$00
+.byte $0E,$3A,$62,$C0,$80,$00,$00,$FE
+.byte $FC,$F6,$DE,$BE,$7E,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$81,$83,$86,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FE,$FD,$FF
+.byte $02,$02,$02,$06,$06,$06,$06,$FE
+.byte $FE,$FE,$FE,$FC,$FC,$FC,$FC,$FE
+.byte $8C,$8C,$8C,$8C,$8C,$8C,$8C,$FF
+.byte $FB,$FB,$FB,$FB,$FB,$FB,$FB,$FF
+.byte $00,$60,$60,$F0,$30,$18,$18,$18
+.byte $00,$DE,$DE,$EE,$EE,$F6,$F6,$F6
+.byte $80,$80,$8F,$F9,$80,$80,$80,$80
+.byte $80,$FF,$FE,$F7,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$03,$06,$08,$B0,$00
+.byte $00,$F6,$F6,$F7,$E4,$C6,$A6,$BA
+.byte $80,$B0,$B0,$98,$98,$98,$8F,$80
+.byte $80,$EF,$EF,$F7,$F7,$F7,$FF,$FF
+.byte $80,$E0,$E0,$80,$80,$80,$80,$80
+.byte $80,$DF,$DF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$02
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$83,$86,$86,$86,$86,$8C,$8C
+.byte $80,$FE,$FD,$FD,$FD,$FD,$FB,$FB
+.byte $80,$C0,$E0,$B8,$8C,$86,$83,$FF
+.byte $FF,$BF,$DF,$F7,$FB,$FD,$FE,$FF
+.byte $1E,$02,$00,$00,$00,$00,$00,$FE
+.byte $FC,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $C0,$80,$80,$80,$80,$80,$80,$FF
+.byte $BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $0E,$3C,$6C,$C6,$02,$00,$00,$FE
+.byte $FE,$FA,$DA,$BC,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$81,$83,$86,$8C,$FF
+.byte $FF,$FF,$FF,$FF,$FE,$FD,$FB,$FF
+.byte $00,$00,$00,$00,$00,$00,$80,$80
+.byte $60,$00,$00,$00,$00,$00,$80,$80
+.byte $80,$80,$80,$80,$80,$80,$80,$FF
+.byte $C0,$FE,$FE,$FE,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$F0,$1C,$00,$00
+.byte $00,$FE,$FE,$FE,$EE,$FA,$FE,$FE
+.byte $80,$80,$80,$FF,$83,$80,$80,$80
+.byte $80,$FF,$FF,$FE,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$FE,$00,$00,$00,$F0
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$EE
+.byte $80,$80,$80,$81,$8F,$80,$E0,$FF
+.byte $80,$FF,$FF,$FF,$FE,$FF,$DF,$FF
+.byte $00,$00,$00,$00,$00,$FE,$00,$00
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$87,$BC,$E0
+.byte $80,$FF,$FF,$FF,$FF,$FF,$FB,$DF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$7E,$7E,$BE,$DE,$EE,$F0
+.byte $80,$80,$80,$80,$80,$00,$80,$80
+.byte $80,$FE,$FF,$FF,$FF,$3F,$BF,$9F
+.byte $18,$20,$40,$80,$80,$00,$00,$00
+.byte $E0,$C0,$80,$00,$00,$00,$00,$00
+.byte $90,$90,$88,$88,$88,$89,$85,$FD
+.byte $FE,$FF,$FF,$FF,$FF,$FE,$FE,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$07
+.byte $00,$FE,$FE,$3E,$C2,$7C,$FF,$FF
+.byte $80,$80,$80,$80,$80,$88,$90,$90
+.byte $80,$FF,$FF,$FC,$F3,$FF,$FD,$FC
+.byte $00,$80,$80,$80,$80,$80,$80,$80
+.byte $00,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$C0,$00,$FE
+.byte $DE,$EE,$EE,$EE,$EE,$DE,$3E,$FE
+.byte $80,$80,$84,$84,$86,$83,$80,$FF
+.byte $FB,$F7,$F7,$F7,$F7,$FB,$FC,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$3E,$DE,$DE,$BE,$BE,$BE,$BE
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$FC,$FB,$FB,$FD,$FD,$FD,$FD
+.byte $84,$43,$40,$80,$00,$00,$00,$FE
+.byte $7A,$BC,$BE,$7E,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$83,$84,$84,$FF
+.byte $FF,$FF,$FF,$FF,$FC,$FB,$FB,$FF
+.byte $00,$FE,$7C,$20,$30,$28,$28,$48
+.byte $00,$00,$82,$DE,$CE,$D6,$D6,$B6
+.byte $80,$83,$80,$80,$80,$80,$80,$80
+.byte $80,$FC,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $02,$06,$0E,$0E,$72,$02,$00,$FE
+.byte $FC,$F8,$F0,$F0,$8C,$FC,$FE,$FE
+.byte $84,$88,$88,$80,$80,$80,$80,$FF
+.byte $FB,$F7,$F7,$FF,$FF,$FF,$FF,$FF
+.byte $00,$80,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $E4,$F0,$E4,$F0,$84,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $03,$03,$03,$00,$0C,$0C,$0C,$0C
+.byte $0F,$0F,$0F,$0F,$03,$03,$03,$03
+.byte $00,$02,$E2,$1E,$0E,$16,$26,$C2
+.byte $00,$FC,$1C,$E0,$F0,$E8,$D8,$3C
+.byte $80,$81,$80,$80,$80,$80,$80,$83
+.byte $80,$FE,$FF,$FF,$FF,$FF,$FF,$FC
+.byte $00,$80,$00,$00,$00,$80,$00,$00
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $E4,$F0,$E4,$F0,$E4,$F0,$E4,$F0
+.byte $E4,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$80,$00,$00,$80,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $E4,$F0,$E4,$F0,$E4,$F0,$E4,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $03,$03,$03,$03,$03,$03,$03,$03
+.byte $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$80,$00,$00,$00,$80
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$84,$90,$E4,$F0,$E4,$F0
+.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $0C,$0C,$0C,$00,$03,$03,$03,$03
+.byte $03,$03,$03,$0F,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$1E
+.byte $FE,$3E,$7E,$7E,$3E,$3E,$3E,$1E
+.byte $80,$80,$80,$80,$80,$80,$80,$E0
+.byte $F3,$FD,$FC,$FE,$FC,$FC,$F8,$E0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$EE,$EE,$F6,$F6,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$FF,$FF,$FF,$FF,$FF,$EF,$EF
+.byte $82,$82,$82,$84,$80,$80,$80,$FF
+.byte $FD,$FD,$FD,$FB,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$06
+.byte $FE,$C6,$BE,$7E,$7E,$3E,$0E,$06
+.byte $80,$80,$80,$80,$80,$80,$80,$FC
+.byte $FB,$FF,$FF,$FF,$FF,$FF,$FF,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$7E,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$FF
+.byte $F8,$FE,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $20,$00,$00,$00,$00,$00,$00,$FE
+.byte $DE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $FE,$F8,$F0,$C0,$A8,$94,$82,$FF
+.byte $01,$07,$0F,$3F,$57,$EB,$FD,$FF
+.byte $FC,$F8,$C8,$88,$84,$84,$40,$20
+.byte $00,$06,$36,$76,$7A,$7A,$BE,$DE
+.byte $FF,$FD,$81,$A3,$D3,$8C,$84,$84
+.byte $00,$82,$FE,$DC,$AC,$F3,$FB,$FB
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$E6,$F6,$F6,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$FF,$FF,$EF,$EF,$F7,$F7,$FB
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$EE,$EE,$F6,$F6,$EE,$EE,$FE
+.byte $80,$80,$80,$80,$80,$00,$00,$80
+.byte $80,$FF,$FF,$FF,$FF,$1F,$6F,$F6
+.byte $00,$00,$00,$00,$00,$00,$80,$40
+.byte $00,$FE,$FE,$FE,$FE,$FE,$7E,$BE
+.byte $80,$80,$86,$88,$90,$E0,$C0,$E1
+.byte $80,$FF,$79,$77,$6F,$1F,$3F,$1E
+.byte $30,$30,$30,$30,$30,$30,$30,$30
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0
+.byte $0C,$0C,$0C,$0C,$FC,$FC,$00,$00
+.byte $03,$03,$03,$03,$03,$03,$FF,$FF
+.byte $30,$30,$30,$30,$3F,$3F,$00,$00
+.byte $C0,$C0,$C0,$C0,$C0,$C0,$FF,$FF
+.byte $00,$00,$FC,$FC,$0C,$0C,$0C,$0C
+.byte $FF,$FF,$03,$03,$03,$03,$03,$03
+.byte $00,$00,$FF,$FF,$00,$00,$00,$00
+.byte $FF,$FF,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$3F,$3F,$30,$30,$30,$30
+.byte $FF,$FF,$C0,$C0,$C0,$C0,$C0,$C0
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $F6,$FA,$FA,$7A,$8E,$FE,$FE,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$0F
+.byte $03,$01,$00,$07,$0F,$0F,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$80
+.byte $DC,$DC,$00,$00,$00,$80,$80,$80
+.byte $80,$80,$80,$80,$80,$80,$80,$FF
+.byte $EF,$9F,$FF,$FE,$FE,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$FE,$EE,$EE,$0E,$EE,$EE
+.byte $80,$80,$80,$00,$00,$00,$00,$00
+.byte $80,$FF,$FF,$7F,$0C,$03,$07,$07
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$FE,$FE,$FE,$7E,$7E,$BE
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$FE,$FE,$FD,$FA,$F7,$F7,$F7
+.byte $40,$00,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $C4,$80,$80,$80,$80,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $12,$00,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $91,$80,$80,$80,$80,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $04,$08,$F0,$00,$00,$00,$00,$FE
+.byte $FA,$F6,$0E,$FE,$FE,$FE,$FE,$FE
+.byte $92,$88,$84,$83,$82,$81,$81,$FF
+.byte $ED,$F7,$FB,$FC,$FD,$FE,$FE,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$FE
+.byte $FE,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$FF
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $E0,$F0,$F0,$50,$00,$A8,$00,$00
+.byte $E0,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $FF,$FF,$FF,$D5,$80,$AA,$80,$80
+.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FF,$FF,$54,$00,$AA,$00,$00
+.byte $FF,$FF,$FF,$FE,$FE,$FE,$FE,$FE
+.byte $8F,$8F,$8F,$95,$80,$AA,$80,$80
+.byte $8F,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $FF,$FE,$F8,$20,$20,$10,$88,$7C
+.byte $00,$00,$06,$DE,$DE,$EE,$76,$82
+.byte $FF,$9F,$87,$8C,$BC,$82,$E1,$91
+.byte $80,$E0,$F8,$F3,$C3,$FD,$9E,$EE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$FE,$FE,$FE,$FE,$FE,$FE,$FE
+.byte $80,$80,$80,$80,$80,$80,$80,$80
+.byte $80,$FF,$FF,$FF,$FF,$FF,$FF,$FF
+.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
+.byte $03,$03,$03,$03,$03,$03,$03,$03
+.byte $00,$00,$00,$00,$0F,$0F,$E0,$E0
+.byte $00,$00,$00,$00,$F0,$F0,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$FF,$FF
+.byte $00,$00,$00,$00,$FF,$FF,$FF,$FF
+.byte $00,$00,$00,$00,$E0,$E0,$0F,$0F
+.byte $00,$00,$00,$00,$1F,$1F,$FF,$FF
+.byte $00,$00,$00,$00,$FF,$FF,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$FF,$FF
diff --git a/samples/crypto/chr_crypto_1.s b/samples/crypto/chr_crypto_1.s
new file mode 100644
index 00000000..4ffa851d
--- /dev/null
+++ b/samples/crypto/chr_crypto_1.s
@@ -0,0 +1,1025 @@
+.segment "CHARS"
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $81,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $DC,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $8E,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1F,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F7,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $9F,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$E0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$0F,$0F,$03,$03,$03,$03,$9F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$EE,$FF,$73,$63,$63,$63,$F7
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$F0,$F8,$0C,$FC,$FC,$00,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C0,$81,$03,$06,$07,$07,$06,$83
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $30,$19,$0F,$0F,$06,$06,$06,$1F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$F0,$F8,$D8,$D8,$D8,$D8,$DC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$0F,$8F,$C6,$C6,$C6,$06,$CE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$1F,$3F,$60,$7F,$7F,$60,$3F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $06,$F6,$FE,$8E,$06,$06,$8E,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$E0,$F1,$83,$03,$03,$03,$E1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$9E,$1F,$07,$06,$86,$86,$9F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C1,$CD,$FC,$FC,$CC,$C1,$C1,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$03,$03
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$71,$71
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$0E,$0E
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$FF,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$0E,$0E,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $06,$00,$82,$FE,$FC,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $03,$03,$03,$E1,$E0,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $03,$03,$03,$9F,$9F,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $63,$63,$63,$F7,$F7,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0C,$0C,$1C,$F8,$F0,$00,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C6,$C6,$C7,$E7,$E6,$06,$0F,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$1F,$30,$3F,$1E,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $60,$60,$60,$FE,$FE,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F8,$30,$30,$F1,$E1,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $19,$18,$0C,$0F,$03,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$0E,$0E,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$FA,$FE,$86
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$01,$03
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$03,$03,$00,$0F,$0F,$03
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$E0,$E0,$60,$6E,$7F,$73
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$F0,$F8,$1C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$8E,$CF,$C7
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$0F,$1F,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$EE,$FF,$78
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$B0,$F0,$70,$31,$01,$F8
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$03,$0F,$0C,$18,$18,$19
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E0,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $07,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $30,$30,$30,$30,$78,$78,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $87,$86,$86,$86,$CF,$CF,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $31,$31,$31,$33,$3F,$1D,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $86,$06,$00,$82,$FE,$FC,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $83,$03,$03,$03,$E1,$E0,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $87,$86,$86,$06,$1F,$1F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $81,$81,$C3,$E7,$FF,$3C,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$01,$01,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1C,$18,$18,$18,$3D,$3D,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $18,$18,$00,$09,$F9,$F0,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0E,$0C,$0C,$0E,$87,$83,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1E,$18,$18,$18,$7F,$7F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $8C,$8C,$8C,$9C,$FE,$EE,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $71,$31,$31,$71,$F1,$B0,$30,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1C,$18,$18,$1C,$0F,$07,$00,$07
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C3,$C3,$C3,$E7,$7E,$3C,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E0,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$8E,$8F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$73,$73
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$FA,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E0,$F1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$9E,$9F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$3C,$FE,$C3,$81,$81
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$01,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$3B,$3F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E8,$F8
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$83,$C7
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$7B,$7F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$9C,$9C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$BB,$FB
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$E7,$E7,$C3,$C3,$C3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C3,$C3,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $7F,$3D,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $BC,$BC,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E7,$E7,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1F,$0E,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FE,$7C,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E0,$C0,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0D,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$80,$80,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$83,$83,$80,$80,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $03,$01,$3D,$7F,$E3,$C1,$C1,$E3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$70,$F8,$98,$18,$18,$18
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$C7,$C7,$C3,$C3,$C3,$C3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$39,$39,$18,$18,$18,$19
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$7C,$FE,$C7,$83,$83,$C7
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$30,$30,$00,$E1,$F1,$31,$71
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $07,$0E,$0C,$0F,$07,$00,$0C,$0C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$B0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$03
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$00,$00,$C0,$C0,$C0,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $19,$03,$06,$0C,$1F,$1F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $06,$7E,$FE,$86,$FF,$F7,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $D8,$D8,$D8,$D9,$DD,$DC,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $06,$06,$06,$06,$CE,$CE,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $3E,$3C,$3C,$37,$73,$73,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$C0,$C0,$C0,$FC,$FC,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $70,$30,$30,$70,$E3,$C3,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1C,$18,$18,$1C,$8F,$87,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F8,$FC,$CE,$C6,$E3,$E3,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$01,$01,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C0,$C0,$C0,$C0,$E0,$E0,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$0F,$1F,$30,$3F,$1E,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $60,$60,$60,$60,$FE,$FE,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $30,$F0,$F0,$30,$F9,$B9,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$03,$07,$CC,$CF,$07,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $18,$18,$18,$18,$1F,$0F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $8C,$F0,$3C,$8C,$FC,$F8,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $61,$60,$60,$E1,$F1,$71,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $8C,$8C,$8C,$8C,$CF,$C7,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $BD,$99,$99,$81,$E7,$E7,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$01,$01,$01,$03,$03,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$C0,$C0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$1F,$1F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$7C,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$F0,$F8
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$CF,$CF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$70,$70,$30,$37,$37
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$80,$80,$00,$07,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$E7,$E7,$C6,$CC,$D8
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$01,$01,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$80,$C0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$3F,$7F,$60,$FE,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E1,$F1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$83,$87
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$18,$18,$18,$7F,$7F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$FC,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E0,$E1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$C0,$C0,$80,$9C,$9C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$C3,$C3,$C3,$E7,$A5
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$03,$03,$01,$01,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C0,$C0,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $7B,$7B,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FE,$EE,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F3,$E1,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$07,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FC,$F8,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F3,$F1,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F9,$F9,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $78,$78,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $8F,$8F,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $7F,$7F,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FE,$F6,$06,$FE,$FC,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F1,$F0,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $9E,$9E,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$FF,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$01,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$80,$80,$80,$80,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$77,$7F,$39,$31,$31,$31
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$F8,$FC,$0C,$FC,$FC,$0C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$D0,$F1,$30,$30,$01,$13
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$07,$8F,$1C,$18,$18,$1C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$F7,$FF,$3C,$30,$30,$30
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$F0,$F8,$0C,$FC,$FC,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$E0,$E1,$63,$66,$67,$67,$66
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F0,$70,$79,$69,$6F,$66,$66,$60
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$E0,$F0,$30,$30,$30,$30
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$0E,$0F,$07,$06,$06,$06
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0C,$00,$3C,$3C,$0C,$0C,$0C,$0C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$F7,$FF,$8E,$06,$06,$8E
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$C0,$E1,$63,$63,$63,$63
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$9D,$1F,$0E,$0C,$8C,$8C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $FF,$C1,$CD,$FC,$FC,$CC,$C1,$C1
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C0,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$0C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $F8,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $01,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$80
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$E0,$E0,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E0,$60,$60,$E0,$E0,$60,$60,$E0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $38,$30,$30,$38,$1F,$0F,$00,$0F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E6,$C6,$C6,$C6,$EF,$EF,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $80,$80,$80,$80,$F1,$F1,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $C1,$C1,$C1,$C1,$EF,$EF,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $36,$36,$36,$36,$76,$76,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $B6,$B6,$B6,$B6,$B7,$B7,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $61,$E1,$E1,$61,$F3,$73,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$07,$0F,$18,$1F,$0F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $3C,$30,$30,$30,$FF,$FF,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $1C,$0C,$0C,$1C,$FC,$EC,$0C,$FC
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E7,$66,$66,$E7,$C3,$81,$00,$01
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $38,$30,$30,$38,$1F,$0F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $78,$60,$60,$60,$FE,$FE,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $E0,$C0,$00,$00,$81,$81,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $0F,$0F,$0C,$0C,$1F,$1F,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$E0,$E0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$70,$F0
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$DC,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$80,$80,$00,$81,$81
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$01,$01,$00,$87,$C7
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$7F,$7F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$FC,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$C3,$E3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$07,$8F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$F7,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$EE,$FE
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$81,$C3
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$0F,$1F
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$EE,$FF
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$C0,$E0,$70,$31,$71
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$1F,$1F,$0C,$0C,$0C
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
+.byte $00,$00,$00,$00,$00,$00,$00,$00
diff --git a/samples/crypto/cmp_dn.raw.state b/samples/crypto/cmp_dn.raw.state
new file mode 100644
index 00000000..5afcd8db
--- /dev/null
+++ b/samples/crypto/cmp_dn.raw.state
@@ -0,0 +1,2 @@
+BG pattern: 4096
+SPR pattern: 0
diff --git a/samples/crypto/cmp_ref.raw.state b/samples/crypto/cmp_ref.raw.state
new file mode 100644
index 00000000..5afcd8db
--- /dev/null
+++ b/samples/crypto/cmp_ref.raw.state
@@ -0,0 +1,2 @@
+BG pattern: 4096
+SPR pattern: 0
diff --git a/samples/crypto/crypto.csproj b/samples/crypto/crypto.csproj
new file mode 100644
index 00000000..9ac6dfe9
--- /dev/null
+++ b/samples/crypto/crypto.csproj
@@ -0,0 +1,16 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+ 2
+
+
+
+
+
+
+
+
diff --git a/samples/crypto/demosounds.s b/samples/crypto/demosounds.s
new file mode 100644
index 00000000..f40bf822
--- /dev/null
+++ b/samples/crypto/demosounds.s
@@ -0,0 +1,70 @@
+;this file for FamiTone2 libary generated by nsf2data tool
+
+ .export _demo_sounds
+_demo_sounds:
+ .word @ntsc
+ .word @pal
+@ntsc:
+ .word @sfx_ntsc_0
+ .word @sfx_ntsc_1
+ .word @sfx_ntsc_2
+ .word @sfx_ntsc_3
+@pal:
+ .word @sfx_pal_0
+ .word @sfx_pal_1
+ .word @sfx_pal_2
+ .word @sfx_pal_3
+
+@sfx_ntsc_0:
+ .byte $80,$bf,$81,$56,$82,$03,$83,$bf,$84,$a6,$85,$02,$04,$81,$3a,$82
+ .byte $02,$84,$c4,$85,$01,$04,$81,$ab,$82,$01,$84,$52,$04,$81,$1c,$84
+ .byte $e1,$85,$00,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$b8,$81,$1c,$82
+ .byte $01,$83,$b8,$84,$e1,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$30,$00
+@sfx_pal_0:
+ .byte $80,$bf,$81,$19,$82,$03,$83,$bf,$84,$75,$85,$02,$04,$81,$11,$82
+ .byte $02,$84,$a4,$85,$01,$03,$81,$8c,$82,$01,$84,$3a,$03,$81,$08,$84
+ .byte $d1,$85,$00,$04,$81,$c6,$82,$00,$84,$9d,$03,$80,$b8,$81,$08,$82
+ .byte $01,$83,$b8,$84,$d1,$03,$81,$c6,$82,$00,$84,$9d,$04,$80,$30,$00
+@sfx_ntsc_1:
+ .byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
+ .byte $01,$8a,$03,$01,$89,$3e,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a
+ .byte $0b,$01,$89,$3d,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01
+ .byte $89,$3c,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$3b
+ .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$3a,$8a,$01
+ .byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$39,$8a,$09,$01,$8a
+ .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$89,$38,$8a,$01,$01,$8a,$0f,$01
+ .byte $8a,$0d,$01,$8a,$0b,$01,$89,$37,$8a,$09,$01,$8a,$07,$01,$8a,$05
+ .byte $01,$8a,$03,$01,$89,$36,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a
+ .byte $0b,$01,$89,$35,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01
+ .byte $89,$34,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$33
+ .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$32,$8a,$01
+ .byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$31,$8a,$09,$01,$8a
+ .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d
+ .byte $01,$00
+@sfx_pal_1:
+ .byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
+ .byte $01,$89,$3e,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89
+ .byte $3d,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3c,$8a
+ .byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$3b,$8a,$0b,$01
+ .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3a,$8a,$03,$01,$8a,$01
+ .byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$39,$8a,$0b,$01,$8a,$09,$01,$8a
+ .byte $07,$01,$8a,$05,$01,$89,$38,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01
+ .byte $8a,$0d,$01,$89,$37,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
+ .byte $01,$89,$36,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89
+ .byte $35,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$34,$8a
+ .byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$33,$8a,$0b,$01
+ .byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$32,$8a,$03,$01,$8a,$01
+ .byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$31,$8a,$0b,$01,$8a,$09,$01,$8a
+ .byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$00
+@sfx_ntsc_2:
+ .byte $80,$bf,$81,$d5,$82,$00,$02,$81,$6a,$02,$80,$b4,$04,$80,$b8,$81
+ .byte $d5,$02,$81,$6a,$02,$80,$b2,$04,$00
+@sfx_pal_2:
+ .byte $80,$bf,$81,$c6,$82,$00,$02,$81,$62,$02,$80,$b4,$03,$80,$b8,$81
+ .byte $c6,$02,$81,$62,$01,$80,$b2,$04,$00
+@sfx_ntsc_3:
+ .byte $86,$81,$87,$6a,$88,$00,$01,$87,$70,$01,$87,$6a,$01,$87,$70,$01
+ .byte $87,$6a,$01,$00
+@sfx_pal_3:
+ .byte $86,$81,$87,$62,$88,$00,$01,$87,$68,$01,$87,$62,$01,$87,$68,$01
+ .byte $87,$62,$01,$00
diff --git a/samples/crypto/famitone2.s b/samples/crypto/famitone2.s
new file mode 100644
index 00000000..f80e9f4f
--- /dev/null
+++ b/samples/crypto/famitone2.s
@@ -0,0 +1,1322 @@
+
+;settings, uncomment or put them into your main program; the latter makes possible updates easier
+
+; FT_BASE_ADR = $0300 ;page in the RAM used for FT2 variables, should be $xx00
+; FT_TEMP = $00 ;3 bytes in zeropage used by the library as a scratchpad
+; FT_DPCM_OFF = $c000 ;$c000..$ffc0, 64-byte steps
+; FT_SFX_STREAMS = 4 ;number of sound effects played at once, 1..4
+
+; FT_DPCM_ENABLE ;undefine to exclude all DMC code
+; FT_SFX_ENABLE ;undefine to exclude all sound effects code
+; FT_THREAD ;undefine if you are calling sound effects from the same thread as the sound update call
+
+; FT_PAL_SUPPORT ;undefine to exclude PAL support
+; FT_NTSC_SUPPORT ;undefine to exclude NTSC support
+
+ .import popa
+
+FT_BASE_ADR =$0500 ;page in RAM, should be $xx00
+FT_DPCM_OFF =$c000 ;sample data start address
+
+.define FT_THREAD 1 ;undefine if you call sound effects in the same thread as sound update
+.define FT_PAL_SUPPORT 1 ;undefine to exclude PAL support
+.define FT_NTSC_SUPPORT 1 ;undefine to exclude NTSC support
+.define FT_SFX_ENABLE 1
+.define FT_DPCM_ENABLE 0
+.define FT_SFX_STREAMS 4
+
+.segment "ZEROPAGE"
+
+FT_TEMP: .res 3
+
+.segment "CODE"
+
+ .export _famitone_init,_famitone_update
+ .export _music_play,_music_stop,_music_pause
+.if(FT_SFX_ENABLE)
+ .export _sfx_init
+ .export _sfx_play
+.endif
+.if(FT_DPCM_ENABLE)
+ .export _sample_play
+.endif
+
+;void __fastcall__ famitone_init(void* music_data);
+
+_famitone_init=FamiToneInit
+
+
+
+;void __fastcall__ famitone_update(void);
+
+_famitone_update=FamiToneUpdate
+
+
+
+;void __fastcall__ music_play(unsigned char song);
+
+_music_play=FamiToneMusicPlay
+
+
+
+;void __fastcall__ music_stop(void);
+
+_music_stop=FamiToneMusicStop
+
+
+
+;void __fastcall__ music_pause(unsigned char pause);
+
+_music_pause=FamiToneMusicPause
+
+
+.if(FT_SFX_ENABLE)
+;void __fastcall__ sfx_init(void* sounds_data);
+_sfx_init=FamiToneSfxInit
+
+;void __fastcall__ sfx_play(unsigned char sound,unsigned char channel);
+_sfx_play:
+
+ and #$03
+ tax
+ lda @sfxPriority,x
+ tax
+ jsr popa
+ jmp FamiToneSfxPlay
+
+@sfxPriority:
+
+ .byte FT_SFX_CH0,FT_SFX_CH1,FT_SFX_CH2,FT_SFX_CH3
+.endif
+
+.if(FT_DPCM_ENABLE)
+;void __fastcall__ sample_play(unsigned char sample);
+_sample_play=FamiToneSamplePlay
+.endif
+
+;FamiTone2 v1.12
+
+
+
+;internal defines
+;FT_PITCH_FIX if either NTSC or PAL defined
+ .if(FT_PAL_SUPPORT && FT_NTSC_SUPPORT)
+FT_PITCH_FIX = 1
+ .else
+FT_PITCH_FIX = 0
+ .endif
+
+FT_DPCM_PTR = (FT_DPCM_OFF&$3fff)>>6
+
+
+;zero page variables
+
+FT_TEMP_PTR = FT_TEMP ;word
+FT_TEMP_PTR_L = FT_TEMP_PTR+0
+FT_TEMP_PTR_H = FT_TEMP_PTR+1
+FT_TEMP_VAR1 = FT_TEMP+2
+
+
+;envelope structure offsets, 5 bytes per envelope, grouped by variable type
+
+FT_ENVELOPES_ALL = 3+3+3+2 ;3 for the pulse and triangle channels, 2 for the noise channel
+FT_ENV_STRUCT_SIZE = 5
+
+FT_ENV_VALUE = FT_BASE_ADR+0*FT_ENVELOPES_ALL
+FT_ENV_REPEAT = FT_BASE_ADR+1*FT_ENVELOPES_ALL
+FT_ENV_ADR_L = FT_BASE_ADR+2*FT_ENVELOPES_ALL
+FT_ENV_ADR_H = FT_BASE_ADR+3*FT_ENVELOPES_ALL
+FT_ENV_PTR = FT_BASE_ADR+4*FT_ENVELOPES_ALL
+
+
+;channel structure offsets, 7 bytes per channel
+
+FT_CHANNELS_ALL = 5
+FT_CHN_STRUCT_SIZE = 9
+
+FT_CHN_PTR_L = FT_BASE_ADR+0*FT_CHANNELS_ALL
+FT_CHN_PTR_H = FT_BASE_ADR+1*FT_CHANNELS_ALL
+FT_CHN_NOTE = FT_BASE_ADR+2*FT_CHANNELS_ALL
+FT_CHN_INSTRUMENT = FT_BASE_ADR+3*FT_CHANNELS_ALL
+FT_CHN_REPEAT = FT_BASE_ADR+4*FT_CHANNELS_ALL
+FT_CHN_RETURN_L = FT_BASE_ADR+5*FT_CHANNELS_ALL
+FT_CHN_RETURN_H = FT_BASE_ADR+6*FT_CHANNELS_ALL
+FT_CHN_REF_LEN = FT_BASE_ADR+7*FT_CHANNELS_ALL
+FT_CHN_DUTY = FT_BASE_ADR+8*FT_CHANNELS_ALL
+
+
+;variables and aliases
+
+FT_ENVELOPES = FT_BASE_ADR
+FT_CH1_ENVS = FT_ENVELOPES+0
+FT_CH2_ENVS = FT_ENVELOPES+3
+FT_CH3_ENVS = FT_ENVELOPES+6
+FT_CH4_ENVS = FT_ENVELOPES+9
+
+FT_CHANNELS = FT_ENVELOPES+FT_ENVELOPES_ALL*FT_ENV_STRUCT_SIZE
+FT_CH1_VARS = FT_CHANNELS+0
+FT_CH2_VARS = FT_CHANNELS+1
+FT_CH3_VARS = FT_CHANNELS+2
+FT_CH4_VARS = FT_CHANNELS+3
+FT_CH5_VARS = FT_CHANNELS+4
+
+
+FT_CH1_NOTE = FT_CH1_VARS+.lobyte(FT_CHN_NOTE)
+FT_CH2_NOTE = FT_CH2_VARS+.lobyte(FT_CHN_NOTE)
+FT_CH3_NOTE = FT_CH3_VARS+.lobyte(FT_CHN_NOTE)
+FT_CH4_NOTE = FT_CH4_VARS+.lobyte(FT_CHN_NOTE)
+FT_CH5_NOTE = FT_CH5_VARS+.lobyte(FT_CHN_NOTE)
+
+FT_CH1_INSTRUMENT = FT_CH1_VARS+.lobyte(FT_CHN_INSTRUMENT)
+FT_CH2_INSTRUMENT = FT_CH2_VARS+.lobyte(FT_CHN_INSTRUMENT)
+FT_CH3_INSTRUMENT = FT_CH3_VARS+.lobyte(FT_CHN_INSTRUMENT)
+FT_CH4_INSTRUMENT = FT_CH4_VARS+.lobyte(FT_CHN_INSTRUMENT)
+FT_CH5_INSTRUMENT = FT_CH5_VARS+.lobyte(FT_CHN_INSTRUMENT)
+
+FT_CH1_DUTY = FT_CH1_VARS+.lobyte(FT_CHN_DUTY)
+FT_CH2_DUTY = FT_CH2_VARS+.lobyte(FT_CHN_DUTY)
+FT_CH3_DUTY = FT_CH3_VARS+.lobyte(FT_CHN_DUTY)
+FT_CH4_DUTY = FT_CH4_VARS+.lobyte(FT_CHN_DUTY)
+FT_CH5_DUTY = FT_CH5_VARS+.lobyte(FT_CHN_DUTY)
+
+FT_CH1_VOLUME = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+0
+FT_CH2_VOLUME = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+0
+FT_CH3_VOLUME = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+0
+FT_CH4_VOLUME = FT_CH4_ENVS+.lobyte(FT_ENV_VALUE)+0
+
+FT_CH1_NOTE_OFF = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+1
+FT_CH2_NOTE_OFF = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+1
+FT_CH3_NOTE_OFF = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+1
+FT_CH4_NOTE_OFF = FT_CH4_ENVS+.lobyte(FT_ENV_VALUE)+1
+
+FT_CH1_PITCH_OFF = FT_CH1_ENVS+.lobyte(FT_ENV_VALUE)+2
+FT_CH2_PITCH_OFF = FT_CH2_ENVS+.lobyte(FT_ENV_VALUE)+2
+FT_CH3_PITCH_OFF = FT_CH3_ENVS+.lobyte(FT_ENV_VALUE)+2
+
+
+FT_VARS = FT_CHANNELS+FT_CHANNELS_ALL*FT_CHN_STRUCT_SIZE
+
+FT_PAL_ADJUST = FT_VARS+0
+FT_SONG_LIST_L = FT_VARS+1
+FT_SONG_LIST_H = FT_VARS+2
+FT_INSTRUMENT_L = FT_VARS+3
+FT_INSTRUMENT_H = FT_VARS+4
+FT_TEMPO_STEP_L = FT_VARS+5
+FT_TEMPO_STEP_H = FT_VARS+6
+FT_TEMPO_ACC_L = FT_VARS+7
+FT_TEMPO_ACC_H = FT_VARS+8
+FT_SONG_SPEED = FT_CH5_INSTRUMENT
+FT_PULSE1_PREV = FT_CH3_DUTY
+FT_PULSE2_PREV = FT_CH5_DUTY
+FT_DPCM_LIST_L = FT_VARS+9
+FT_DPCM_LIST_H = FT_VARS+10
+FT_DPCM_EFFECT = FT_VARS+11
+FT_OUT_BUF = FT_VARS+12 ;11 bytes
+
+
+;sound effect stream variables, 2 bytes and 15 bytes per stream
+;when sound effects are disabled, this memory is not used
+
+FT_SFX_ADR_L = FT_VARS+23
+FT_SFX_ADR_H = FT_VARS+24
+FT_SFX_BASE_ADR = FT_VARS+25
+
+FT_SFX_STRUCT_SIZE = 15
+FT_SFX_REPEAT = FT_SFX_BASE_ADR+0
+FT_SFX_PTR_L = FT_SFX_BASE_ADR+1
+FT_SFX_PTR_H = FT_SFX_BASE_ADR+2
+FT_SFX_OFF = FT_SFX_BASE_ADR+3
+FT_SFX_BUF = FT_SFX_BASE_ADR+4 ;11 bytes
+
+
+;aliases for sound effect channels to use in user calls
+
+FT_SFX_CH0 = FT_SFX_STRUCT_SIZE*0
+FT_SFX_CH1 = FT_SFX_STRUCT_SIZE*1
+FT_SFX_CH2 = FT_SFX_STRUCT_SIZE*2
+FT_SFX_CH3 = FT_SFX_STRUCT_SIZE*3
+
+
+;aliases for the APU registers
+
+APU_PL1_VOL = $4000
+APU_PL1_SWEEP = $4001
+APU_PL1_LO = $4002
+APU_PL1_HI = $4003
+APU_PL2_VOL = $4004
+APU_PL2_SWEEP = $4005
+APU_PL2_LO = $4006
+APU_PL2_HI = $4007
+APU_TRI_LINEAR = $4008
+APU_TRI_LO = $400a
+APU_TRI_HI = $400b
+APU_NOISE_VOL = $400c
+APU_NOISE_LO = $400e
+APU_NOISE_HI = $400f
+APU_DMC_FREQ = $4010
+APU_DMC_RAW = $4011
+APU_DMC_START = $4012
+APU_DMC_LEN = $4013
+APU_SND_CHN = $4015
+
+
+;aliases for the APU registers in the output buffer
+
+ .if(!FT_SFX_ENABLE) ;if sound effects are disabled, write to the APU directly
+FT_MR_PULSE1_V = APU_PL1_VOL
+FT_MR_PULSE1_L = APU_PL1_LO
+FT_MR_PULSE1_H = APU_PL1_HI
+FT_MR_PULSE2_V = APU_PL2_VOL
+FT_MR_PULSE2_L = APU_PL2_LO
+FT_MR_PULSE2_H = APU_PL2_HI
+FT_MR_TRI_V = APU_TRI_LINEAR
+FT_MR_TRI_L = APU_TRI_LO
+FT_MR_TRI_H = APU_TRI_HI
+FT_MR_NOISE_V = APU_NOISE_VOL
+FT_MR_NOISE_F = APU_NOISE_LO
+ .else ;otherwise write to the output buffer
+FT_MR_PULSE1_V = FT_OUT_BUF
+FT_MR_PULSE1_L = FT_OUT_BUF+1
+FT_MR_PULSE1_H = FT_OUT_BUF+2
+FT_MR_PULSE2_V = FT_OUT_BUF+3
+FT_MR_PULSE2_L = FT_OUT_BUF+4
+FT_MR_PULSE2_H = FT_OUT_BUF+5
+FT_MR_TRI_V = FT_OUT_BUF+6
+FT_MR_TRI_L = FT_OUT_BUF+7
+FT_MR_TRI_H = FT_OUT_BUF+8
+FT_MR_NOISE_V = FT_OUT_BUF+9
+FT_MR_NOISE_F = FT_OUT_BUF+10
+ .endif
+
+
+
+;------------------------------------------------------------------------------
+; reset APU, initialize FamiTone
+;------------------------------------------------------------------------------
+
+FamiToneInit:
+
+ sta FT_SONG_LIST_L ;store music data pointer for further use
+ stx FT_SONG_LIST_H
+ sta 0
+ ldx #FT_SFX_CH0
+ jsr _FT2SfxUpdate
+ .endif
+ .if FT_SFX_STREAMS>1
+ ldx #FT_SFX_CH1
+ jsr _FT2SfxUpdate
+ .endif
+ .if FT_SFX_STREAMS>2
+ ldx #FT_SFX_CH2
+ jsr _FT2SfxUpdate
+ .endif
+ .if FT_SFX_STREAMS>3
+ ldx #FT_SFX_CH3
+ jsr _FT2SfxUpdate
+ .endif
+
+
+ ;send data from the output buffer to the APU
+
+ lda FT_OUT_BUF ;pulse 1 volume
+ sta APU_PL1_VOL
+ lda FT_OUT_BUF+1 ;pulse 1 period LSB
+ sta APU_PL1_LO
+ lda FT_OUT_BUF+2 ;pulse 1 period MSB, only applied when changed
+ cmp FT_PULSE1_PREV
+ beq @no_pulse1_upd
+ sta FT_PULSE1_PREV
+ sta APU_PL1_HI
+@no_pulse1_upd:
+
+ lda FT_OUT_BUF+3 ;pulse 2 volume
+ sta APU_PL2_VOL
+ lda FT_OUT_BUF+4 ;pulse 2 period LSB
+ sta APU_PL2_LO
+ lda FT_OUT_BUF+5 ;pulse 2 period MSB, only applied when changed
+ cmp FT_PULSE2_PREV
+ beq @no_pulse2_upd
+ sta FT_PULSE2_PREV
+ sta APU_PL2_HI
+@no_pulse2_upd:
+
+ lda FT_OUT_BUF+6 ;triangle volume (plays or not)
+ sta APU_TRI_LINEAR
+ lda FT_OUT_BUF+7 ;triangle period LSB
+ sta APU_TRI_LO
+ lda FT_OUT_BUF+8 ;triangle period MSB
+ sta APU_TRI_HI
+
+ lda FT_OUT_BUF+9 ;noise volume
+ sta APU_NOISE_VOL
+ lda FT_OUT_BUF+10 ;noise period
+ sta APU_NOISE_LO
+
+ .endif
+
+ .if(FT_THREAD)
+ pla
+ sta FT_TEMP_PTR_H
+ pla
+ sta FT_TEMP_PTR_L
+ .endif
+
+ rts
+
+
+;internal routine, sets up envelopes of a channel according to current instrument
+;in X envelope group offset, A instrument number
+
+_FT2SetInstrument:
+ asl a ;instrument number is pre multiplied by 4
+ tay
+ lda FT_INSTRUMENT_H
+ adc #0 ;use carry to extend range for 64 instruments
+ sta