.BANK 13 DATA_0D8000: .db $70,$1C,$72,$1C,$71,$1C,$73,$1C DATA_0D8008: .db $C5,$09,$FB,$08,$C5,$09,$FB,$08 DATA_0D8010: .db $FD,$1C,$FD,$1C,$FD,$1C,$FD,$1C DATA_0D8018: .db $FB,$08,$FB,$08,$FB,$08,$FB,$08 DATA_0D8020: .db $4C,$2C,$4E,$2C,$4D,$2C,$4F,$2C DATA_0D8028: .db $FC,$2C,$FC,$2C,$FC,$2C,$FC,$2C DATA_0D8030: .db $87,$14,$88,$54,$88,$14,$87,$54 DATA_0D8038: .db $89,$1C,$8A,$1C,$92,$1C,$82,$1C DATA_0D8040: .db $92,$1C,$82,$1C,$92,$1C,$82,$1C DATA_0D8048: .db $92,$1C,$82,$1C,$89,$5C,$8A,$5C DATA_0D8050: .db $8A,$1C,$8A,$1C,$82,$1C,$82,$1C DATA_0D8058: .db $82,$1C,$82,$1C,$82,$1C,$82,$1C DATA_0D8060: .db $82,$1C,$82,$1C,$8A,$5C,$8A,$5C DATA_0D8068: .db $8A,$1C,$89,$9C,$82,$1C,$92,$9C DATA_0D8070: .db $82,$1C,$92,$9C,$82,$1C,$92,$9C DATA_0D8078: .db $82,$1C,$92,$9C,$8A,$5C,$89,$DC DATA_0D8080: .db $82,$1C,$82,$1C,$82,$1C,$BA,$9C DATA_0D8088: .db $82,$1C,$AB,$1C,$82,$1C,$AB,$1C DATA_0D8090: .db $82,$1C,$BA,$DC,$82,$1C,$82,$1C DATA_0D8098: .db $82,$1C,$82,$1C,$AA,$1C,$AA,$1C DATA_0D80A0: .db $F8,$1C,$F8,$1C,$F8,$1C,$F8,$1C DATA_0D80A8: .db $AA,$5C,$AA,$5C,$82,$1C,$82,$1C DATA_0D80B0: .db $82,$1C,$82,$1C,$BA,$1C,$82,$1C DATA_0D80B8: .db $AB,$9C,$82,$1C,$AB,$9C,$82,$1C DATA_0D80C0: .db $BA,$5C,$82,$1C,$82,$1C,$82,$1C DATA_0D80C8: .db $82,$1C,$82,$1C,$82,$1C,$9A,$DC DATA_0D80D0: .db $82,$1C,$9A,$9C,$82,$1C,$82,$1C DATA_0D80D8: .db $82,$1C,$82,$1C,$9A,$5C,$82,$1C DATA_0D80E0: .db $9A,$1C,$82,$1C,$82,$1C,$82,$1C DATA_0D80E8: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D80F0: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D80F8: .db $85,$18,$95,$18,$86,$18,$96,$18 DATA_0D8100: .db $95,$18,$95,$18,$96,$18,$96,$18 DATA_0D8108: .db $F8,$18,$F8,$18,$F8,$18,$F8,$18 DATA_0D8110: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8118: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8120: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8128: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8130: .db $F8,$10,$0C,$10,$F8,$10,$0C,$50 DATA_0D8138: .db $50,$10,$52,$10,$51,$10,$53,$10 DATA_0D8140: .db $52,$10,$52,$10,$53,$10,$53,$10 DATA_0D8148: .db $78,$18,$7A,$18,$79,$18,$7B,$18 DATA_0D8150: .db $54,$18,$56,$18,$55,$18,$57,$18 DATA_0D8158: .db $6C,$18,$6E,$18,$6D,$18,$6F,$18 DATA_0D8160: .db $6C,$1C,$6E,$1C,$6D,$1C,$6F,$1C DATA_0D8168: .db $08,$18,$18,$18,$09,$18,$19,$18 DATA_0D8170: .db $28,$18,$38,$18,$29,$18,$39,$18 DATA_0D8178: .db $F8,$08,$F8,$08,$74,$10,$75,$10 DATA_0D8180: .db $F8,$08,$F8,$08,$75,$10,$75,$10 DATA_0D8188: .db $F8,$08,$F8,$08,$75,$10,$77,$10 DATA_0D8190: .db $74,$3C,$75,$3C,$F8,$18,$F8,$18 DATA_0D8198: .db $75,$3C,$75,$3C,$F8,$18,$F8,$18 DATA_0D81A0: .db $75,$3C,$77,$3C,$F8,$18,$F8,$18 DATA_0D81A8: .db $F8,$1C,$F8,$1C,$76,$10,$75,$10 DATA_0D81B0: .db $F8,$18,$F8,$18,$75,$3C,$77,$3C DATA_0D81B8: .db $F8,$18,$F8,$18,$75,$3C,$77,$3C DATA_0D81C0: .db $98,$1C,$F8,$08,$98,$1C,$F8,$08 DATA_0D81C8: .db $A0,$10,$A2,$10,$A1,$10,$A3,$10 DATA_0D81D0: .db $A2,$10,$A2,$10,$A3,$10,$A3,$10 DATA_0D81D8: .db $A2,$10,$A4,$10,$A3,$10,$A5,$10 DATA_0D81E0: .db $A0,$3C,$A2,$3C,$A1,$3C,$A3,$3C DATA_0D81E8: .db $A2,$3C,$A2,$3C,$A3,$3C,$A3,$3C DATA_0D81F0: .db $A2,$3C,$A4,$3C,$A3,$3C,$A5,$3C DATA_0D81F8: .db $94,$09,$92,$09,$95,$09,$93,$09 DATA_0D8200: .db $C0,$09,$D0,$09,$95,$09,$93,$09 DATA_0D8208: .db $94,$09,$92,$09,$C0,$49,$D0,$49 DATA_0D8210: .db $85,$09,$92,$09,$95,$09,$93,$09 DATA_0D8218: .db $94,$09,$92,$09,$85,$49,$93,$09 DATA_0D8220: .db $92,$89,$94,$89,$93,$89,$95,$89 DATA_0D8228: .db $80,$08,$90,$08,$81,$08,$91,$08 DATA_0D8230: .db $80,$0C,$90,$0C,$81,$0C,$91,$0C DATA_0D8238: .db $80,$10,$90,$10,$81,$10,$91,$10 DATA_0D8240: .db $EA,$18,$EC,$18,$EB,$18,$ED,$18 DATA_0D8248: .db $FE,$14,$FE,$14,$FE,$14,$FE,$14 DATA_0D8250: .db $FD,$14,$FD,$14,$FD,$14,$FD,$14 DATA_0D8258: .db $F8,$14,$B0,$14,$F8,$14,$B1,$14 DATA_0D8260: .db $F8,$14,$C1,$14,$F8,$14,$C2,$14 DATA_0D8268: .db $B0,$14,$FE,$14,$B1,$14,$FE,$14 DATA_0D8270: .db $A6,$14,$B6,$14,$A7,$14,$B7,$14 DATA_0D8278: .db $B5,$14,$B5,$94,$FD,$14,$FD,$14 DATA_0D8280: .db $FE,$14,$B2,$14,$FE,$14,$B3,$14 DATA_0D8288: .db $B2,$14,$FD,$14,$B3,$14,$FD,$14 DATA_0D8290: .db $FE,$14,$FE,$14,$E7,$14,$D0,$54 DATA_0D8298: .db $C5,$14,$FE,$14,$C6,$14,$D6,$14 DATA_0D82A0: .db $F8,$14,$F8,$14,$C0,$14,$D0,$14 DATA_0D82A8: .db $FE,$14,$FE,$14,$C0,$14,$D0,$14 DATA_0D82B0: .db $FD,$14,$FD,$14,$E7,$54,$D0,$54 DATA_0D82B8: .db $C0,$14,$D0,$14,$FE,$14,$FE,$14 DATA_0D82C0: .db $C0,$14,$D0,$14,$FE,$14,$FE,$14 DATA_0D82C8: .db $E7,$54,$D0,$14,$FE,$14,$FE,$14 DATA_0D82D0: .db $A4,$14,$B4,$14,$A5,$14,$FE,$14 DATA_0D82D8: .db $E8,$14,$F3,$14,$E9,$14,$FE,$14 DATA_0D82E0: .db $D1,$14,$F1,$14,$D2,$14,$FE,$14 DATA_0D82E8: .db $E6,$14,$F5,$14,$F8,$14,$F8,$14 DATA_0D82F0: .db $E5,$14,$F5,$14,$FE,$14,$FE,$14 DATA_0D82F8: .db $E7,$14,$D0,$54,$FD,$14,$FD,$14 DATA_0D8300: .db $FD,$14,$FD,$14,$E6,$14,$F5,$14 DATA_0D8308: .db $FD,$14,$FD,$14,$E5,$14,$F5,$14 DATA_0D8310: .db $FD,$14,$FD,$14,$E5,$14,$F5,$14 DATA_0D8318: .db $C3,$14,$FD,$14,$A7,$14,$B7,$14 DATA_0D8320: .db $E1,$14,$FD,$14,$E2,$14,$F2,$14 DATA_0D8328: .db $E3,$14,$FD,$14,$E4,$14,$F4,$14 DATA_0D8330: .db $F8,$1C,$0E,$1C,$F8,$1C,$0F,$1C DATA_0D8338: .db $F8,$1C,$8C,$1C,$F8,$1C,$F8,$1C DATA_0D8340: .db $1E,$1C,$93,$14,$1F,$1C,$D5,$1C DATA_0D8348: .db $9C,$1C,$F8,$1C,$F8,$1C,$94,$14 DATA_0D8350: .db $2D,$14,$2D,$94,$2D,$54,$2D,$D4 DATA_0D8358: .db $2D,$18,$2D,$98,$2D,$58,$2D,$D8 DATA_0D8360: .db $2D,$1C,$2D,$9C,$2D,$5C,$2D,$DC DATA_0D8368: .db $3D,$1C,$3D,$9C,$3D,$5C,$3D,$DC DATA_0D8370: .db $BB,$18,$F0,$18,$8D,$18,$9D,$18 DATA_0D8378: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8380: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8388: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8390: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D8398: .db $82,$09,$92,$09,$83,$09,$93,$09 DATA_0D83A0: .db $81,$09,$D0,$09,$83,$09,$93,$09 DATA_0D83A8: .db $8D,$09,$D0,$09,$83,$09,$93,$09 DATA_0D83B0: .db $82,$09,$92,$09,$81,$49,$D0,$49 DATA_0D83B8: .db $82,$09,$92,$09,$8D,$49,$D0,$49 DATA_0D83C0: .db $0D,$18,$F8,$08,$0D,$18,$F8,$08 DATA_0D83C8: .db $2C,$1C,$3C,$1C,$2C,$5C,$3C,$5C DATA_0D83D0: .db $64,$10,$66,$10,$65,$10,$67,$10 DATA_0D83D8: .db $DA,$1C,$DC,$1C,$DB,$1C,$DD,$1C DATA_0D83E0: .db $64,$10,$66,$10,$65,$10,$67,$10 DATA_0D83E8: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D83F0: .db $64,$10,$66,$10,$65,$10,$67,$10 DATA_0D83F8: .db $64,$10,$66,$10,$65,$10,$67,$10 DATA_0D8400: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8408: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8410: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8418: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8420: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8428: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8430: .db $68,$18,$6A,$18,$69,$18,$6B,$18 DATA_0D8438: .db $06,$18,$16,$18,$07,$18,$17,$18 DATA_0D8440: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8448: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8450: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8458: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8460: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8468: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8470: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8478: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8480: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8488: .db $60,$18,$62,$18,$61,$18,$63,$18 DATA_0D8490: .db $06,$18,$16,$18,$07,$18,$17,$18 DATA_0D8498: .db $06,$18,$16,$18,$07,$18,$17,$18 DATA_0D84A0: .db $06,$18,$16,$18,$07,$18,$17,$18 DATA_0D84A8: .db $8E,$10,$9E,$10,$8F,$10,$9F,$10 DATA_0D84B0: .db $BE,$14,$F6,$14,$D7,$14,$F7,$14 DATA_0D84B8: .db $68,$1C,$6A,$1C,$69,$1C,$6B,$1C DATA_0D84C0: .db $5C,$18,$5E,$18,$5D,$18,$5F,$18 DATA_0D84C8: .db $30,$10,$32,$10,$31,$10,$33,$10 DATA_0D84D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D84D8: .db $58,$18,$5A,$18,$59,$18,$5B,$18 DATA_0D84E0: .db $00,$14,$10,$14,$01,$14,$11,$14 DATA_0D84E8: .db $02,$14,$12,$14,$03,$14,$13,$14 DATA_0D84F0: .db $20,$14,$20,$14,$21,$14,$21,$14 DATA_0D84F8: .db $22,$14,$22,$14,$23,$14,$23,$14 DATA_0D8500: .db $00,$14,$10,$14,$01,$14,$11,$14 DATA_0D8508: .db $02,$14,$12,$14,$03,$14,$13,$14 DATA_0D8510: .db $00,$14,$10,$14,$01,$14,$11,$14 DATA_0D8518: .db $02,$14,$12,$14,$03,$14,$13,$14 DATA_0D8520: .db $04,$14,$14,$14,$05,$14,$15,$14 DATA_0D8528: .db $24,$14,$34,$14,$25,$14,$35,$14 DATA_0D8530: .db $2E,$14,$3E,$14,$2E,$14,$3E,$14 DATA_0D8538: .db $2F,$14,$3F,$14,$2F,$14,$3F,$14 DATA_0D8540: .db $24,$14,$34,$14,$25,$14,$35,$14 DATA_0D8548: .db $06,$18,$16,$18,$07,$18,$17,$18 DATA_0D8550: .db $0A,$10,$1A,$10,$0A,$50,$1A,$50 DATA_0D8558: .db $2A,$10,$3A,$10,$2B,$10,$3B,$10 DATA_0D8560: .db $83,$10,$83,$10,$84,$10,$84,$10 DATA_0D8568: .db $1C,$98,$1C,$18,$1C,$D8,$1C,$58 DATA_0D8570: .db $80,$09,$90,$09,$83,$09,$93,$09 DATA_0D8578: .db $91,$09,$90,$09,$83,$09,$93,$09 DATA_0D8580: .db $D7,$09,$90,$09,$83,$09,$93,$09 DATA_0D8588: .db $82,$09,$92,$09,$80,$49,$90,$49 DATA_0D8590: .db $82,$09,$92,$09,$91,$49,$90,$49 DATA_0D8598: .db $82,$09,$92,$09,$D7,$49,$90,$49 DATA_0D85A0: .db $84,$09,$90,$09,$95,$09,$93,$09 DATA_0D85A8: .db $94,$09,$92,$09,$84,$49,$90,$49 DATA_0D85B0: .db $90,$89,$80,$89,$93,$89,$83,$89 DATA_0D85B8: .db $92,$89,$82,$89,$93,$89,$83,$89 DATA_0D85C0: .db $92,$89,$82,$89,$90,$C9,$80,$C9 DATA_0D85C8: .db $90,$89,$84,$89,$93,$89,$95,$89 DATA_0D85D0: .db $92,$89,$94,$89,$90,$C9,$84,$C9 DATA_0D85D8: .db $F8,$10,$F8,$10,$F8,$10,$F8,$10 DATA_0D85E0: .db $F8,$08,$B4,$09,$F8,$08,$B5,$09 DATA_0D85E8: .db $94,$09,$A9,$09,$95,$09,$AA,$09 DATA_0D85F0: .db $C0,$09,$BE,$09,$95,$09,$AA,$09 DATA_0D85F8: .db $C5,$09,$CC,$09,$C5,$09,$CD,$09 DATA_0D8600: .db $FB,$08,$CC,$09,$FB,$08,$CD,$09 DATA_0D8608: .db $F8,$08,$B6,$09,$F8,$08,$B7,$09 DATA_0D8610: .db $94,$09,$AB,$09,$95,$09,$AC,$09 DATA_0D8618: .db $C0,$09,$AF,$09,$95,$09,$AC,$09 DATA_0D8620: .db $C5,$09,$CE,$09,$C5,$09,$CF,$09 DATA_0D8628: .db $FB,$08,$CE,$09,$FB,$08,$CF,$09 DATA_0D8630: .db $B4,$09,$B8,$09,$B5,$09,$B9,$09 DATA_0D8638: .db $ED,$09,$B8,$09,$EE,$09,$B9,$09 DATA_0D8640: .db $EF,$09,$B8,$09,$EE,$09,$B9,$09 DATA_0D8648: .db $C6,$09,$B8,$09,$C7,$09,$B9,$09 DATA_0D8650: .db $CC,$09,$B8,$09,$CD,$09,$B9,$09 DATA_0D8658: .db $A4,$09,$BA,$09,$A5,$09,$93,$09 DATA_0D8660: .db $BB,$09,$BA,$09,$BC,$09,$93,$09 DATA_0D8668: .db $BF,$09,$BA,$09,$BC,$09,$93,$09 DATA_0D8670: .db $C8,$09,$BA,$09,$A5,$09,$93,$09 DATA_0D8678: .db $CA,$09,$BA,$09,$A5,$09,$93,$09 DATA_0D8680: .db $A5,$49,$92,$09,$A4,$49,$BA,$49 DATA_0D8688: .db $BC,$49,$92,$09,$BB,$49,$BA,$49 DATA_0D8690: .db $BC,$49,$93,$49,$BF,$49,$BA,$49 DATA_0D8698: .db $A5,$49,$92,$09,$C8,$49,$BA,$49 DATA_0D86A0: .db $A5,$49,$92,$09,$CA,$49,$BA,$49 DATA_0D86A8: .db $B5,$49,$B9,$49,$B4,$49,$B8,$49 DATA_0D86B0: .db $EE,$49,$B9,$49,$ED,$49,$B8,$49 DATA_0D86B8: .db $EE,$49,$B9,$49,$EF,$49,$B8,$49 DATA_0D86C0: .db $C7,$49,$B9,$49,$C6,$49,$B8,$49 DATA_0D86C8: .db $CD,$49,$B9,$49,$CC,$49,$B8,$49 DATA_0D86D0: .db $F8,$08,$B7,$49,$F8,$08,$B6,$49 DATA_0D86D8: .db $94,$09,$AC,$49,$95,$09,$AB,$49 DATA_0D86E0: .db $94,$09,$AC,$49,$C0,$49,$AF,$49 DATA_0D86E8: .db $C5,$09,$CF,$49,$C5,$09,$CE,$49 DATA_0D86F0: .db $FB,$08,$CF,$49,$FB,$08,$CE,$49 DATA_0D86F8: .db $F8,$08,$B5,$49,$F8,$08,$B4,$49 DATA_0D8700: .db $94,$09,$AA,$49,$95,$09,$A9,$49 DATA_0D8708: .db $94,$09,$AA,$49,$C0,$49,$BE,$49 DATA_0D8710: .db $C5,$09,$CD,$49,$C5,$09,$CC,$49 DATA_0D8718: .db $FB,$08,$CD,$49,$FB,$08,$CC,$49 DATA_0D8720: .db $F8,$08,$9B,$09,$F8,$08,$9C,$09 DATA_0D8728: .db $94,$09,$A0,$09,$95,$09,$B1,$09 DATA_0D8730: .db $C0,$09,$8F,$09,$95,$09,$B1,$09 DATA_0D8738: .db $C5,$09,$D5,$09,$C5,$09,$D6,$09 DATA_0D8740: .db $FB,$08,$D5,$09,$FB,$08,$D6,$09 DATA_0D8748: .db $9B,$09,$9D,$09,$8E,$09,$9E,$09 DATA_0D8750: .db $EC,$09,$9D,$09,$A1,$09,$9E,$09 DATA_0D8758: .db $EB,$09,$9D,$09,$A1,$09,$9E,$09 DATA_0D8760: .db $CA,$09,$9D,$09,$CB,$09,$9E,$09 DATA_0D8768: .db $D5,$09,$9D,$09,$D6,$09,$9E,$09 DATA_0D8770: .db $8E,$49,$9E,$49,$9B,$49,$9D,$49 DATA_0D8778: .db $A1,$49,$9E,$49,$EC,$49,$9D,$49 DATA_0D8780: .db $A1,$49,$9E,$49,$EB,$49,$9D,$49 DATA_0D8788: .db $CB,$49,$9E,$49,$CA,$49,$9D,$49 DATA_0D8790: .db $D6,$49,$9E,$49,$D5,$49,$9D,$49 DATA_0D8798: .db $F8,$08,$9C,$49,$F8,$08,$9B,$49 DATA_0D87A0: .db $94,$09,$B1,$49,$95,$09,$A0,$49 DATA_0D87A8: .db $94,$09,$B1,$49,$C0,$49,$8F,$49 DATA_0D87B0: .db $C5,$09,$D6,$49,$C5,$09,$D5,$49 DATA_0D87B8: .db $FB,$08,$D6,$49,$FB,$08,$D5,$49 DATA_0D87C0: .db $F8,$08,$96,$09,$87,$09,$97,$09 DATA_0D87C8: .db $94,$09,$88,$09,$89,$09,$97,$09 DATA_0D87D0: .db $C0,$09,$98,$09,$89,$09,$97,$09 DATA_0D87D8: .db $C5,$09,$D8,$09,$C9,$09,$97,$09 DATA_0D87E0: .db $FB,$08,$D8,$09,$D8,$09,$97,$09 DATA_0D87E8: .db $87,$49,$97,$49,$F8,$08,$96,$49 DATA_0D87F0: .db $89,$49,$97,$49,$95,$09,$88,$49 DATA_0D87F8: .db $89,$49,$97,$49,$C0,$49,$98,$49 DATA_0D8800: .db $C9,$49,$97,$49,$C5,$09,$D8,$49 DATA_0D8808: .db $D8,$49,$97,$49,$FB,$08,$D8,$49 DATA_0D8810: .db $DE,$1C,$EE,$1C,$DF,$1C,$EF,$1C DATA_0D8818: .db $DF,$5C,$EF,$5C,$DE,$5C,$EE,$5C DATA_0D8820: .db $C1,$09,$D1,$09,$C2,$09,$D2,$09 DATA_0D8828: .db $C2,$49,$D2,$49,$C1,$49,$D1,$49 DATA_0D8830: .db $A4,$09,$BA,$09,$BD,$09,$D0,$49 DATA_0D8838: .db $BB,$09,$BA,$09,$AD,$09,$D0,$49 DATA_0D8840: .db $BD,$49,$D0,$09,$A4,$49,$BA,$49 DATA_0D8848: .db $AD,$49,$D0,$09,$BB,$49,$BA,$49 DATA_0D8850: .db $9B,$09,$9D,$09,$A3,$09,$B2,$09 DATA_0D8858: .db $EC,$09,$9D,$09,$A2,$09,$B2,$09 DATA_0D8860: .db $A3,$49,$B2,$49,$9B,$49,$9D,$49 DATA_0D8868: .db $A2,$49,$B2,$49,$EC,$49,$9D,$49 DATA_0D8870: .db $F8,$08,$96,$09,$8A,$09,$9A,$09 DATA_0D8878: .db $94,$09,$88,$09,$99,$09,$9A,$09 DATA_0D8880: .db $8A,$49,$9A,$49,$F8,$08,$96,$49 DATA_0D8888: .db $99,$49,$9A,$49,$95,$09,$88,$49 DATA_0D8890: .db $96,$89,$F8,$08,$97,$89,$87,$89 DATA_0D8898: .db $97,$C9,$87,$C9,$96,$C9,$F8,$08 DATA_0D88A0: .db $9B,$89,$F8,$08,$9C,$89,$F8,$08 DATA_0D88A8: .db $9D,$89,$9B,$89,$9E,$89,$8E,$89 DATA_0D88B0: .db $9E,$C9,$8E,$C9,$9D,$C9,$9B,$C9 DATA_0D88B8: .db $9C,$C9,$F8,$08,$9B,$C9,$F8,$08 DATA_0D88C0: .db $F8,$08,$F8,$08,$C1,$09,$D1,$09 DATA_0D88C8: .db $C1,$09,$D1,$09,$C2,$09,$D2,$09 DATA_0D88D0: .db $C1,$49,$D1,$49,$F8,$08,$F8,$08 DATA_0D88D8: .db $C2,$49,$D2,$49,$C1,$49,$D1,$49 DATA_0D88E0: .db $F8,$1C,$44,$08,$44,$08,$45,$08 DATA_0D88E8: .db $48,$48,$49,$48,$F8,$1C,$48,$48 DATA_0D88F0: .db $44,$48,$45,$48,$F8,$1C,$44,$48 DATA_0D88F8: .db $F8,$1C,$48,$08,$48,$08,$49,$08 DATA_0D8900: .db $F8,$2C,$4C,$2C,$F8,$2C,$4D,$2C DATA_0D8908: .db $4C,$2C,$4E,$2C,$4D,$2C,$4F,$2C DATA_0D8910: .db $41,$6C,$43,$6C,$40,$6C,$42,$6C DATA_0D8918: .db $F8,$2C,$41,$6C,$F8,$2C,$40,$6C DATA_0D8920: .db $F8,$2C,$44,$2C,$44,$2C,$45,$2C DATA_0D8928: .db $46,$6C,$47,$6C,$F8,$2C,$46,$6C DATA_0D8930: .db $A6,$09,$92,$09,$A7,$09,$93,$09 DATA_0D8938: .db $AE,$09,$D0,$09,$A7,$09,$93,$09 DATA_0D8940: .db $A8,$09,$92,$09,$95,$09,$93,$09 DATA_0D8948: .db $94,$09,$92,$09,$A8,$49,$93,$09 DATA_0D8950: .db $A7,$49,$92,$09,$A6,$49,$93,$09 DATA_0D8958: .db $A7,$49,$92,$09,$AE,$49,$D0,$49 DATA_0D8960: .db $8C,$09,$92,$09,$B3,$09,$93,$09 DATA_0D8968: .db $9F,$09,$D0,$09,$B3,$09,$93,$09 DATA_0D8970: .db $B3,$49,$92,$09,$8C,$49,$93,$09 DATA_0D8978: .db $B3,$49,$92,$09,$9F,$49,$D0,$49 DATA_0D8980: .db $86,$09,$92,$09,$95,$09,$93,$09 DATA_0D8988: .db $8B,$09,$D0,$09,$95,$09,$93,$09 DATA_0D8990: .db $94,$09,$92,$09,$86,$49,$93,$09 DATA_0D8998: .db $94,$09,$92,$09,$8B,$49,$D0,$49 DATA_0D89A0: .db $94,$09,$92,$09,$95,$09,$93,$09 DATA_0D89A8: .db $C0,$09,$D0,$09,$95,$09,$93,$09 DATA_0D89B0: .db $94,$09,$92,$09,$C0,$49,$D0,$49 DATA_0D89B8: .db $86,$09,$92,$09,$C0,$49,$D0,$49 DATA_0D89C0: .db $C0,$09,$D0,$09,$86,$49,$93,$49 DATA_0D89C8: .db $82,$09,$92,$09,$83,$09,$93,$09 DATA_0D89D0: .db $92,$89,$86,$89,$93,$89,$95,$89 DATA_0D89D8: .db $92,$89,$94,$89,$93,$89,$86,$C9 DATA_0D89E0: .db $92,$89,$8C,$89,$93,$89,$B3,$89 DATA_0D89E8: .db $92,$89,$B3,$C9,$93,$89,$8C,$C9 DATA_0D89F0: .db $92,$89,$94,$89,$93,$89,$95,$89 DATA_0D89F8: .db $C2,$09,$D2,$09,$95,$09,$93,$09 DATA_0D8A00: .db $94,$09,$92,$09,$C2,$49,$D2,$49 DATA_0D8A08: .db $45,$08,$47,$08,$47,$08,$92,$09 DATA_0D8A10: .db $4B,$48,$92,$49,$49,$48,$4B,$48 DATA_0D8A18: .db $47,$48,$92,$49,$45,$48,$47,$48 DATA_0D8A20: .db $49,$08,$4B,$08,$4B,$08,$92,$09 DATA_0D8A28: .db $C2,$09,$F8,$08,$93,$09,$D1,$C9 DATA_0D8A30: .db $F3,$09,$93,$09,$93,$09,$B0,$C9 DATA_0D8A38: .db $94,$09,$D1,$89,$C2,$49,$F8,$08 DATA_0D8A40: .db $94,$09,$B0,$89,$F3,$49,$93,$09 DATA_0D8A48: .db $4E,$2C,$FB,$2C,$4F,$2C,$FB,$2C DATA_0D8A50: .db $43,$6C,$FB,$2C,$42,$6C,$FB,$2C DATA_0D8A58: .db $45,$2C,$FB,$2C,$FB,$2C,$FB,$2C DATA_0D8A60: .db $FB,$2C,$FB,$2C,$47,$6C,$FB,$2C DATA_0D8A68: .db $FB,$2C,$FB,$2C,$FB,$2C,$FB,$2C DATA_0D8A70: .db $F8,$08,$AC,$14,$A8,$14,$AD,$14 DATA_0D8A78: .db $A9,$14,$AE,$14,$F8,$08,$AF,$14 DATA_0D8A80: .db $BF,$14,$CB,$14,$F8,$08,$CC,$14 DATA_0D8A88: .db $F8,$08,$B8,$14,$B8,$14,$B9,$14 DATA_0D8A90: .db $B9,$14,$C8,$14,$BC,$14,$FF,$14 DATA_0D8A98: .db $BD,$14,$C9,$14,$CD,$14,$CA,$14 DATA_0D8AA0: .db $B9,$14,$C8,$14,$C8,$14,$FF,$14 DATA_0D8AA8: .db $D3,$14,$C4,$14,$D4,$14,$F8,$08 DATA_0D8AB0: .db $00,$0C,$10,$0C,$01,$0C,$11,$0C DATA_0D8AB8: .db $02,$0C,$12,$0C,$03,$0C,$13,$0C DATA_0D8AC0: .db $20,$0C,$20,$0C,$21,$0C,$21,$0C DATA_0D8AC8: .db $22,$0C,$22,$0C,$23,$0C,$23,$0C DATA_0D8AD0: .db $00,$0C,$10,$0C,$01,$0C,$11,$0C DATA_0D8AD8: .db $02,$0C,$12,$0C,$03,$0C,$13,$0C DATA_0D8AE0: .db $00,$0C,$10,$0C,$01,$0C,$11,$0C DATA_0D8AE8: .db $02,$0C,$12,$0C,$03,$0C,$13,$0C DATA_0D8AF0: .db $00,$18,$10,$18,$01,$18,$11,$18 DATA_0D8AF8: .db $02,$18,$12,$18,$03,$18,$13,$18 DATA_0D8B00: .db $20,$18,$20,$18,$21,$18,$21,$18 DATA_0D8B08: .db $22,$18,$22,$18,$23,$18,$23,$18 DATA_0D8B10: .db $00,$18,$10,$18,$01,$18,$11,$18 DATA_0D8B18: .db $02,$18,$12,$18,$03,$18,$13,$18 DATA_0D8B20: .db $00,$18,$10,$18,$01,$18,$11,$18 DATA_0D8B28: .db $02,$18,$12,$18,$03,$18,$13,$18 DATA_0D8B30: .db $00,$1C,$10,$1C,$01,$1C,$11,$1C DATA_0D8B38: .db $02,$1C,$12,$1C,$03,$1C,$13,$1C DATA_0D8B40: .db $20,$1C,$20,$1C,$21,$1C,$21,$1C DATA_0D8B48: .db $22,$1C,$22,$1C,$23,$1C,$23,$1C DATA_0D8B50: .db $00,$1C,$10,$1C,$01,$1C,$11,$1C DATA_0D8B58: .db $02,$1C,$12,$1C,$03,$1C,$13,$1C DATA_0D8B60: .db $00,$1C,$10,$1C,$01,$1C,$11,$1C DATA_0D8B68: .db $02,$1C,$12,$1C,$03,$1C,$13,$1C DATA_0D8B70: .db $C5,$15,$CC,$15,$C6,$15,$CD,$15 DATA_0D8B78: .db $C7,$15,$FF,$14,$C8,$15,$D5,$15 DATA_0D8B80: .db $C6,$15,$D6,$15,$CA,$15,$FF,$14 DATA_0D8B88: .db $C9,$15,$D6,$15,$C7,$15,$CF,$15 DATA_0D8B90: .db $C7,$15,$CE,$15,$C8,$15,$D5,$15 DATA_0D8B98: .db $C7,$15,$FF,$14,$C6,$15,$CF,$15 DATA_0D8BA0: .db $C7,$15,$D6,$15,$CB,$15,$D7,$15 DATA_0D8BA8: .db $F8,$14,$C5,$35,$F8,$14,$C6,$35 DATA_0D8BB0: .db $F8,$14,$C7,$35,$F8,$14,$C8,$35 DATA_0D8BB8: .db $F8,$14,$C6,$35,$F8,$14,$CA,$35 DATA_0D8BC0: .db $F8,$14,$C9,$35,$F8,$14,$C7,$35 DATA_0D8BC8: .db $F8,$14,$C7,$35,$F8,$14,$C8,$35 DATA_0D8BD0: .db $F8,$14,$C7,$35,$F8,$14,$C6,$35 DATA_0D8BD8: .db $F8,$14,$C7,$35,$F8,$14,$CB,$35 DATA_0D8BE0: .db $DC,$0D,$DC,$0D,$DD,$0D,$DD,$0D DATA_0D8BE8: .db $DE,$0D,$E2,$0D,$DF,$0D,$F8,$14 DATA_0D8BF0: .db $E0,$0D,$F8,$14,$E1,$0D,$E3,$0D DATA_0D8BF8: .db $F8,$14,$F8,$14,$E4,$0D,$E4,$0D DATA_0D8C00: .db $E7,$09,$EA,$09,$E8,$09,$F0,$09 DATA_0D8C08: .db $E8,$09,$F0,$09,$E9,$09,$F1,$09 DATA_0D8C10: .db $E8,$09,$F0,$09,$E7,$49,$EA,$49 DATA_0D8C18: .db $CA,$14,$D6,$14,$CB,$14,$D6,$15 DATA_0D8C20: .db $CC,$14,$FF,$14,$CD,$14,$D5,$15 DATA_0D8C28: .db $CB,$14,$CF,$15,$CF,$14,$FF,$14 DATA_0D8C30: .db $CE,$14,$FF,$15,$CC,$14,$D6,$15 DATA_0D8C38: .db $CC,$14,$CF,$15,$CD,$14,$D5,$15 DATA_0D8C40: .db $CC,$14,$FF,$14,$C8,$14,$D6,$15 DATA_0D8C48: .db $CC,$14,$CE,$15,$D5,$14,$D7,$14 DATA_0D8C50: .db $F8,$08,$F8,$08,$C7,$09,$D7,$09 DATA_0D8C58: .db $C7,$49,$D7,$49,$F8,$08,$F8,$08 DATA_0D8C60: .db $F8,$08,$C5,$09,$C7,$09,$C9,$09 DATA_0D8C68: .db $C7,$49,$C9,$49,$F8,$08,$C5,$49 DATA_0D8C70: .db $F8,$08,$C5,$09,$F8,$08,$C6,$09 DATA_0D8C78: .db $F8,$08,$F8,$08,$F8,$08,$D7,$09 DATA_0D8C80: .db $F8,$08,$D7,$49,$F8,$08,$F8,$08 DATA_0D8C88: .db $F8,$08,$F8,$08,$F8,$08,$C6,$09 DATA_0D8C90: .db $F8,$08,$C5,$09,$F8,$08,$F8,$08 DATA_0D8C98: .db $92,$09,$94,$09,$C8,$09,$D8,$09 DATA_0D8CA0: .db $C8,$49,$D8,$49,$93,$09,$95,$09 DATA_0D8CA8: .db $92,$09,$D5,$09,$C8,$09,$D9,$09 DATA_0D8CB0: .db $C8,$49,$D9,$49,$93,$09,$D6,$09 DATA_0D8CB8: .db $92,$09,$D5,$09,$93,$09,$D6,$09 DATA_0D8CC0: .db $92,$09,$94,$09,$93,$09,$D8,$09 DATA_0D8CC8: .db $92,$09,$D8,$49,$93,$09,$95,$09 DATA_0D8CD0: .db $92,$09,$94,$09,$92,$09,$D6,$09 DATA_0D8CD8: .db $92,$09,$D5,$09,$93,$09,$95,$09 DATA_0D8CE0: .db $C1,$09,$93,$09,$F8,$08,$D1,$09 DATA_0D8CE8: .db $F2,$09,$93,$09,$94,$09,$B0,$09 DATA_0D8CF0: .db $D1,$C9,$F8,$08,$93,$09,$D1,$C9 DATA_0D8CF8: .db $B0,$C9,$93,$09,$93,$09,$B0,$C9 DATA_0D8D00: .db $D2,$C9,$DC,$09,$93,$09,$B0,$C9 DATA_0D8D08: .db $D1,$09,$93,$09,$F8,$08,$D1,$09 DATA_0D8D10: .db $B0,$09,$93,$09,$93,$09,$B0,$09 DATA_0D8D18: .db $B0,$09,$93,$09,$C0,$49,$D2,$09 DATA_0D8D20: .db $F8,$08,$D1,$49,$D1,$49,$95,$09 DATA_0D8D28: .db $94,$09,$B0,$49,$B0,$49,$95,$09 DATA_0D8D30: .db $C0,$09,$D2,$49,$B0,$49,$95,$09 DATA_0D8D38: .db $94,$09,$D1,$89,$D1,$89,$F8,$08 DATA_0D8D40: .db $94,$09,$B0,$89,$B0,$89,$95,$09 DATA_0D8D48: .db $94,$09,$B0,$89,$D2,$89,$D0,$49 DATA_0D8D50: .db $F8,$08,$D1,$49,$C1,$49,$95,$09 DATA_0D8D58: .db $94,$09,$B0,$49,$F2,$49,$95,$09 DATA_0D8D60: .db $E4,$09,$E5,$09,$FF,$08,$E6,$09 DATA_0D8D68: .db $E7,$09,$E8,$09,$FF,$08,$E9,$09 DATA_0D8D70: .db $FF,$08,$84,$09,$FF,$08,$FF,$08 DATA_0D8D78: .db $FF,$08,$FF,$08,$FF,$08,$FF,$08 DATA_0D8D80: .db $FF,$08,$FF,$08,$FF,$08,$84,$49 DATA_0D8D88: .db $FF,$08,$E6,$49,$E4,$49,$E5,$49 DATA_0D8D90: .db $FF,$08,$E9,$49,$E7,$49,$B0,$09 DATA_0D8D98: .db $CD,$09,$DD,$09,$DD,$89,$CD,$89 DATA_0D8DA0: .db $C1,$29,$D1,$29,$C2,$29,$D2,$29 DATA_0D8DA8: .db $F2,$29,$E2,$29,$C3,$29,$D3,$29 DATA_0D8DB0: .db $E1,$29,$F1,$29,$E2,$29,$F2,$29 DATA_0D8DB8: .db $C2,$29,$D2,$29,$E3,$29,$F3,$29 DATA_0D8DC0: .db $E1,$29,$F1,$29,$E3,$29,$F3,$29 DATA_0D8DC8: .db $C1,$29,$D1,$29,$C3,$29,$D3,$29 DATA_0D8DD0: .db $E1,$09,$F1,$09,$E3,$09,$F3,$09 DATA_0D8DD8: .db $C1,$09,$D1,$09,$C3,$09,$D3,$09 DATA_0D8DE0: .db $C4,$09,$D4,$09,$AF,$09,$BF,$09 DATA_0D8DE8: .db $AF,$49,$BF,$49,$C4,$49,$D4,$49 DATA_0D8DF0: .db $F8,$08,$EA,$09,$F8,$08,$91,$09 DATA_0D8DF8: .db $F0,$09,$F0,$09,$DD,$89,$CD,$89 DATA_0D8E00: .db $CD,$09,$DD,$09,$F0,$49,$F0,$49 DATA_0D8E08: .db $C3,$09,$D3,$09,$C3,$49,$D3,$49 DATA_0D8E10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8E98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8ED0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8ED8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8EF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8F98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FD0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D8FD8: .db $D8,$0D,$DA,$0D,$D9,$0D,$DB,$0D DATA_0D8FE0: .db $D9,$0D,$DA,$0D,$D9,$0D,$DB,$0D DATA_0D8FE8: .db $D9,$0D,$DA,$0D,$D8,$4D,$DB,$0D DATA_0D8FF0: .db $D9,$0D,$E5,$0D,$D9,$0D,$E5,$0D DATA_0D8FF8: .db $C1,$29,$D1,$29,$C2,$29,$D2,$29 DATA_0D9000: .db $F2,$29,$E2,$29,$C3,$29,$D3,$29 DATA_0D9008: .db $E1,$29,$F1,$29,$E3,$29,$F3,$29 DATA_0D9010: .db $CC,$09,$DC,$09,$CB,$09,$DB,$09 DATA_0D9018: .db $CA,$09,$E0,$09,$CB,$09,$DB,$09 DATA_0D9020: .db $CC,$09,$DC,$09,$CA,$49,$E0,$49 DATA_0D9028: .db $F4,$15,$F6,$15,$F5,$15,$F7,$15 DATA_0D9030: .db $F8,$15,$F8,$15,$F9,$15,$F9,$15 DATA_0D9038: .db $F6,$95,$F4,$95,$F7,$95,$F5,$95 DATA_0D9040: .db $FA,$19,$FD,$19,$FB,$19,$FE,$19 DATA_0D9048: .db $FC,$19,$FF,$19,$FC,$19,$FF,$19 DATA_0D9050: .db $FB,$59,$FE,$59,$FA,$59,$FD,$59 DATA_0D9058: .db $FF,$14,$CD,$14,$CD,$14,$CE,$14 DATA_0D9060: .db $CE,$14,$D8,$14,$CF,$14,$D9,$14 DATA_0D9068: .db $CE,$14,$D8,$14,$D8,$14,$D9,$14 DATA_0D9070: .db $D9,$14,$E0,$14,$E0,$14,$F8,$08 DATA_0D9078: .db $DD,$C9,$CD,$C9,$DA,$49,$DA,$C9 DATA_0D9080: .db $CB,$49,$DB,$49,$CA,$49,$DA,$49 DATA_0D9088: .db $CA,$09,$DA,$09,$CB,$09,$DB,$09 DATA_0D9090: .db $DA,$09,$DA,$89,$DD,$89,$CD,$89 DATA_0D9098: .db $00,$10,$10,$10,$01,$10,$11,$10 DATA_0D90A0: .db $02,$10,$12,$10,$03,$10,$13,$10 DATA_0D90A8: .db $20,$10,$20,$10,$21,$10,$21,$10 DATA_0D90B0: .db $22,$10,$22,$10,$23,$10,$23,$10 DATA_0D90B8: .db $06,$10,$16,$10,$07,$10,$17,$10 DATA_0D90C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D90C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0D90D0: .db $20,$14,$20,$14,$21,$14,$21,$14 DATA_0D90D8: .db $22,$14,$22,$14,$23,$14,$23,$14 DATA_0D90E0: .db $26,$14,$36,$14,$26,$54,$36,$54 DATA_0D90E8: .db $26,$18,$36,$18,$26,$58,$36,$58 DATA_0D90F0: .db $26,$1C,$36,$1C,$26,$5C,$36,$5C DATA_0D90F8: .db $27,$1C,$37,$1C,$27,$5C,$37,$5C DATA_0D9100: .db $F8,$00,$F8,$00,$F8,$00,$F8,$00 DATA_0D9108: .db $53,$01,$54,$01,$F9,$00,$55,$01 DATA_0D9110: .db $F9,$00,$55,$01,$F9,$00,$55,$01 DATA_0D9118: .db $F9,$00,$55,$01,$53,$41,$56,$01 DATA_0D9120: .db $F8,$00,$06,$01,$00,$01,$07,$01 DATA_0D9128: .db $01,$01,$FC,$00,$02,$01,$FC,$00 DATA_0D9130: .db $03,$01,$FC,$00,$04,$01,$08,$01 DATA_0D9138: .db $05,$01,$09,$01,$F8,$00,$0A,$01 DATA_0D9140: .db $0B,$01,$0E,$01,$FC,$00,$FC,$00 DATA_0D9148: .db $FC,$00,$FC,$00,$FC,$00,$FC,$00 DATA_0D9150: .db $0C,$01,$0F,$01,$0D,$01,$10,$01 DATA_0D9158: .db $11,$01,$11,$01,$FC,$00,$FC,$00 DATA_0D9160: .db $14,$01,$14,$81,$FC,$00,$FC,$00 DATA_0D9168: .db $12,$01,$12,$01,$13,$01,$13,$01 DATA_0D9170: .db $FC,$00,$FC,$00,$14,$01,$14,$81 DATA_0D9178: .db $F8,$00,$27,$01,$23,$01,$FF,$00 DATA_0D9180: .db $24,$01,$FF,$00,$25,$01,$FF,$00 DATA_0D9188: .db $26,$01,$28,$01,$F8,$00,$29,$01 DATA_0D9190: .db $2A,$01,$2D,$01,$FF,$00,$FF,$00 DATA_0D9198: .db $FF,$00,$FF,$00,$30,$01,$30,$81 DATA_0D91A0: .db $2B,$01,$2E,$01,$2C,$01,$2F,$01 DATA_0D91A8: .db $18,$05,$FC,$04,$19,$05,$08,$05 DATA_0D91B0: .db $1A,$05,$1D,$05,$FF,$04,$1E,$05 DATA_0D91B8: .db $F9,$00,$55,$01,$57,$41,$59,$01 DATA_0D91C0: .db $2E,$01,$2E,$01,$2F,$01,$2F,$01 DATA_0D91C8: .db $0C,$05,$0F,$05,$20,$05,$22,$05 DATA_0D91D0: .db $FF,$04,$1B,$05,$15,$05,$1C,$05 DATA_0D91D8: .db $16,$05,$FC,$04,$17,$05,$FC,$04 DATA_0D91E0: .db $18,$01,$FC,$00,$19,$01,$08,$01 DATA_0D91E8: .db $1A,$01,$1D,$01,$FF,$00,$1E,$01 DATA_0D91F0: .db $1F,$05,$21,$05,$FC,$04,$FC,$04 DATA_0D91F8: .db $0C,$01,$0F,$01,$20,$01,$22,$01 DATA_0D9200: .db $16,$01,$FC,$00,$17,$01,$FC,$00 DATA_0D9208: .db $44,$05,$46,$05,$45,$05,$F9,$04 DATA_0D9210: .db $F9,$00,$F9,$00,$F9,$00,$F9,$00 DATA_0D9218: .db $45,$45,$F9,$04,$44,$45,$46,$45 DATA_0D9220: .db $4D,$01,$4F,$01,$3D,$01,$50,$01 DATA_0D9228: .db $3D,$01,$41,$01,$3D,$01,$41,$01 DATA_0D9230: .db $3D,$01,$51,$01,$4E,$01,$52,$01 DATA_0D9238: .db $2D,$01,$2D,$01,$FF,$00,$FF,$00 DATA_0D9240: .db $FF,$00,$FF,$00,$FF,$00,$FF,$00 DATA_0D9248: .db $2D,$01,$2D,$01,$30,$01,$30,$81 DATA_0D9250: .db $FF,$00,$1B,$01,$15,$01,$1C,$01 DATA_0D9258: .db $1F,$01,$21,$01,$FC,$00,$FC,$00 DATA_0D9260: .db $57,$01,$58,$01,$F9,$00,$55,$01 DATA_0D9268: .db $39,$01,$3B,$01,$3A,$01,$F9,$00 DATA_0D9270: .db $3C,$01,$3F,$01,$3D,$01,$40,$01 DATA_0D9278: .db $5B,$01,$F8,$00,$5C,$01,$F8,$00 DATA_0D9280: .db $5C,$01,$F8,$00,$5C,$01,$F8,$00 DATA_0D9288: .db $5C,$01,$F8,$00,$5D,$01,$F8,$00 DATA_0D9290: .db $44,$01,$5A,$01,$50,$01,$5A,$01 DATA_0D9298: .db $F8,$00,$F8,$00,$44,$00,$46,$00 DATA_0D92A0: .db $F8,$00,$F8,$00,$44,$01,$5A,$01 DATA_0D92A8: .db $50,$01,$4B,$01,$5A,$01,$5A,$01 DATA_0D92B0: .db $F8,$00,$F8,$00,$45,$00,$47,$00 DATA_0D92B8: .db $F8,$00,$F8,$00,$5A,$01,$5A,$01 DATA_0D92C0: .db $5A,$01,$5A,$01,$5A,$01,$4B,$01 DATA_0D92C8: .db $48,$01,$48,$01,$5A,$01,$4B,$01 DATA_0D92D0: .db $5A,$01,$5A,$01,$51,$01,$5A,$01 DATA_0D92D8: .db $45,$01,$5A,$01,$F8,$00,$F8,$00 DATA_0D92E0: .db $0F,$05,$F8,$00,$1F,$05,$F8,$00 DATA_0D92E8: .db $4B,$01,$F8,$00,$F8,$00,$F8,$00 DATA_0D92F0: .db $5A,$01,$5A,$01,$F8,$00,$F8,$00 DATA_0D92F8: .db $F8,$00,$F8,$00,$44,$04,$46,$04 DATA_0D9300: .db $4B,$01,$48,$01,$48,$01,$4B,$01 DATA_0D9308: .db $4B,$01,$F8,$00,$48,$01,$4B,$01 DATA_0D9310: .db $44,$04,$46,$04,$F8,$00,$F8,$00 DATA_0D9318: .db $F8,$00,$F8,$00,$45,$04,$47,$04 DATA_0D9320: .db $45,$04,$47,$04,$F8,$00,$F8,$00 DATA_0D9328: .db $48,$01,$4B,$01,$4B,$01,$F8,$00 DATA_0D9330: .db $40,$01,$59,$01,$54,$01,$5A,$01 DATA_0D9338: .db $4D,$01,$59,$01,$41,$01,$5A,$01 DATA_0D9340: .db $F8,$00,$F8,$00,$45,$04,$46,$04 DATA_0D9348: .db $59,$01,$59,$01,$5A,$01,$5A,$01 DATA_0D9350: .db $F8,$00,$F8,$00,$F8,$00,$4D,$01 DATA_0D9358: .db $59,$01,$4F,$01,$57,$01,$59,$01 DATA_0D9360: .db $54,$01,$5A,$01,$F8,$00,$F8,$00 DATA_0D9368: .db $59,$01,$59,$01,$4D,$01,$59,$01 DATA_0D9370: .db $41,$01,$5A,$01,$F8,$00,$F8,$00 DATA_0D9378: .db $F8,$00,$F8,$00,$59,$01,$59,$01 DATA_0D9380: .db $5A,$01,$5A,$01,$59,$01,$59,$01 DATA_0D9388: .db $F8,$00,$F8,$00,$40,$01,$59,$01 DATA_0D9390: .db $54,$01,$5A,$01,$59,$01,$59,$01 DATA_0D9398: .db $F8,$00,$F8,$00,$59,$01,$46,$01 DATA_0D93A0: .db $57,$01,$59,$01,$54,$01,$5A,$01 DATA_0D93A8: .db $5A,$01,$4D,$01,$F8,$00,$41,$01 DATA_0D93B0: .db $54,$01,$5A,$01,$5A,$01,$5A,$01 DATA_0D93B8: .db $51,$01,$5A,$01,$53,$01,$5A,$01 DATA_0D93C0: .db $F8,$00,$F8,$00,$4A,$01,$F8,$00 DATA_0D93C8: .db $5A,$01,$5A,$01,$57,$01,$59,$01 DATA_0D93D0: .db $54,$01,$5A,$01,$4B,$01,$F8,$00 DATA_0D93D8: .db $5A,$01,$5A,$01,$5A,$01,$52,$01 DATA_0D93E0: .db $5A,$01,$50,$01,$49,$01,$5A,$01 DATA_0D93E8: .db $F8,$00,$4B,$01,$4B,$01,$48,$01 DATA_0D93F0: .db $5A,$01,$51,$01,$5A,$01,$53,$01 DATA_0D93F8: .db $F8,$00,$F8,$00,$5A,$01,$4B,$01 DATA_0D9400: .db $3A,$11,$3A,$91,$3B,$11,$54,$11 DATA_0D9408: .db $54,$91,$54,$11,$3A,$51,$3A,$D1 DATA_0D9410: .db $F8,$00,$00,$01,$F8,$00,$00,$41 DATA_0D9418: .db $32,$11,$34,$11,$33,$11,$F9,$00 DATA_0D9420: .db $F8,$00,$01,$01,$01,$01,$02,$01 DATA_0D9428: .db $02,$01,$FA,$00,$02,$41,$FA,$00 DATA_0D9430: .db $01,$41,$02,$41,$F8,$00,$01,$41 DATA_0D9438: .db $F8,$00,$1F,$01,$F8,$00,$1F,$41 DATA_0D9440: .db $2E,$11,$F9,$00,$F9,$00,$F9,$00 DATA_0D9448: .db $02,$01,$FA,$00,$FA,$00,$FA,$00 DATA_0D9450: .db $52,$01,$FA,$00,$FA,$00,$FA,$00 DATA_0D9458: .db $FA,$00,$FA,$00,$02,$41,$FA,$00 DATA_0D9460: .db $F8,$00,$20,$01,$F8,$00,$21,$01 DATA_0D9468: .db $20,$01,$22,$01,$21,$01,$FD,$00 DATA_0D9470: .db $22,$01,$FD,$00,$22,$41,$FD,$00 DATA_0D9478: .db $21,$41,$FD,$00,$20,$41,$22,$41 DATA_0D9480: .db $F8,$00,$21,$41,$F8,$00,$20,$41 DATA_0D9488: .db $32,$11,$38,$11,$33,$11,$F9,$00 DATA_0D9490: .db $FA,$00,$FA,$00,$FA,$00,$FA,$00 DATA_0D9498: .db $FA,$00,$52,$01,$52,$01,$FA,$00 DATA_0D94A0: .db $06,$41,$02,$41,$FD,$00,$06,$41 DATA_0D94A8: .db $51,$01,$FD,$00,$FD,$00,$51,$01 DATA_0D94B0: .db $FD,$00,$FD,$00,$FD,$00,$FD,$00 DATA_0D94B8: .db $51,$01,$FD,$00,$FD,$00,$FD,$00 DATA_0D94C0: .db $FD,$00,$FD,$00,$22,$41,$FD,$00 DATA_0D94C8: .db $2B,$41,$FD,$00,$2A,$41,$22,$41 DATA_0D94D0: .db $F9,$00,$2B,$41,$F9,$00,$2A,$41 DATA_0D94D8: .db $33,$51,$F9,$00,$32,$51,$34,$51 DATA_0D94E0: .db $F9,$00,$F9,$00,$2E,$51,$F9,$00 DATA_0D94E8: .db $F8,$00,$35,$11,$F8,$00,$36,$11 DATA_0D94F0: .db $35,$11,$2E,$11,$36,$11,$F9,$00 DATA_0D94F8: .db $36,$51,$F9,$00,$35,$51,$2E,$51 DATA_0D9500: .db $F8,$00,$36,$51,$F8,$00,$35,$51 DATA_0D9508: .db $2C,$11,$39,$11,$2D,$11,$F9,$00 DATA_0D9510: .db $F9,$00,$30,$11,$F9,$00,$31,$11 DATA_0D9518: .db $2C,$11,$2F,$11,$2D,$11,$F9,$00 DATA_0D9520: .db $31,$51,$F9,$00,$30,$51,$2E,$51 DATA_0D9528: .db $F9,$00,$31,$51,$F9,$00,$30,$51 DATA_0D9530: .db $2D,$51,$F9,$00,$2C,$51,$2F,$51 DATA_0D9538: .db $2D,$51,$F9,$00,$2C,$51,$39,$51 DATA_0D9540: .db $30,$11,$2E,$11,$31,$11,$F9,$00 DATA_0D9548: .db $22,$01,$FD,$00,$FD,$00,$FD,$00 DATA_0D9550: .db $FD,$00,$05,$01,$FD,$00,$05,$41 DATA_0D9558: .db $F8,$00,$13,$01,$F8,$00,$14,$01 DATA_0D9560: .db $FD,$00,$06,$01,$06,$01,$02,$01 DATA_0D9568: .db $FD,$00,$1A,$01,$FD,$00,$1B,$01 DATA_0D9570: .db $1A,$01,$15,$01,$1B,$01,$FA,$00 DATA_0D9578: .db $15,$01,$FA,$00,$FA,$00,$FA,$00 DATA_0D9580: .db $FD,$00,$28,$41,$FD,$00,$27,$41 DATA_0D9588: .db $04,$41,$02,$41,$FA,$00,$04,$41 DATA_0D9590: .db $FA,$00,$24,$01,$FA,$00,$25,$01 DATA_0D9598: .db $24,$01,$22,$01,$25,$01,$FD,$00 DATA_0D95A0: .db $F8,$00,$12,$01,$F8,$00,$12,$41 DATA_0D95A8: .db $13,$01,$15,$01,$14,$01,$FA,$00 DATA_0D95B0: .db $14,$41,$FA,$00,$13,$41,$15,$41 DATA_0D95B8: .db $F8,$00,$14,$41,$F8,$00,$13,$41 DATA_0D95C0: .db $FA,$00,$FA,$00,$15,$41,$FA,$00 DATA_0D95C8: .db $28,$41,$FD,$00,$27,$41,$22,$41 DATA_0D95D0: .db $F8,$00,$3E,$01,$3E,$01,$FE,$00 DATA_0D95D8: .db $49,$01,$46,$01,$43,$01,$FC,$00 DATA_0D95E0: .db $3D,$41,$FC,$00,$F8,$00,$3D,$41 DATA_0D95E8: .db $33,$51,$F9,$00,$32,$51,$38,$51 DATA_0D95F0: .db $FE,$00,$FE,$00,$FE,$00,$FE,$00 DATA_0D95F8: .db $FE,$00,$41,$01,$41,$01,$FC,$00 DATA_0D9600: .db $F9,$00,$50,$01,$50,$01,$FE,$00 DATA_0D9608: .db $46,$01,$46,$01,$FC,$00,$FC,$00 DATA_0D9610: .db $41,$41,$FC,$00,$FE,$00,$41,$41 DATA_0D9618: .db $FC,$00,$3F,$01,$3F,$01,$FA,$00 DATA_0D9620: .db $42,$01,$FA,$00,$42,$01,$FA,$00 DATA_0D9628: .db $42,$01,$FA,$00,$48,$41,$45,$41 DATA_0D9630: .db $44,$01,$FE,$00,$4A,$41,$47,$41 DATA_0D9638: .db $4F,$41,$FC,$00,$F9,$00,$4F,$41 DATA_0D9640: .db $47,$01,$47,$01,$FE,$00,$FE,$00 DATA_0D9648: .db $FC,$00,$FC,$00,$46,$41,$46,$41 DATA_0D9650: .db $FA,$00,$FA,$00,$45,$41,$45,$41 DATA_0D9658: .db $FE,$00,$44,$81,$FE,$00,$44,$81 DATA_0D9660: .db $3F,$41,$FA,$00,$FC,$00,$3F,$41 DATA_0D9668: .db $FC,$00,$43,$81,$FC,$00,$43,$81 DATA_0D9670: .db $FC,$00,$43,$81,$46,$41,$49,$C1 DATA_0D9678: .db $FA,$00,$3F,$C1,$3F,$C1,$FC,$00 DATA_0D9680: .db $FC,$00,$41,$C1,$41,$C1,$FE,$00 DATA_0D9688: .db $FA,$00,$4B,$01,$4B,$01,$FA,$00 DATA_0D9690: .db $FA,$00,$40,$C1,$40,$C1,$FE,$00 DATA_0D9698: .db $4C,$81,$FC,$00,$FC,$00,$4C,$81 DATA_0D96A0: .db $41,$41,$FC,$00,$FE,$40,$41,$41 DATA_0D96A8: .db $4B,$81,$FA,$00,$FA,$00,$4B,$81 DATA_0D96B0: .db $3F,$81,$FC,$00,$FA,$00,$3F,$81 DATA_0D96B8: .db $FE,$00,$40,$01,$40,$01,$FA,$00 DATA_0D96C0: .db $41,$81,$FE,$00,$FC,$00,$41,$81 DATA_0D96C8: .db $FA,$00,$42,$81,$45,$41,$48,$C1 DATA_0D96D0: .db $FA,$00,$42,$81,$FA,$00,$42,$81 DATA_0D96D8: .db $FA,$00,$40,$C1,$40,$C1,$FE,$C0 DATA_0D96E0: .db $FE,$00,$4D,$01,$4D,$01,$FE,$00 DATA_0D96E8: .db $43,$01,$FC,$00,$43,$01,$FC,$00 DATA_0D96F0: .db $43,$01,$FC,$00,$49,$41,$46,$41 DATA_0D96F8: .db $FE,$00,$FE,$00,$47,$41,$47,$41 DATA_0D9700: .db $40,$41,$FA,$00,$FE,$00,$40,$41 DATA_0D9708: .db $45,$01,$45,$01,$FA,$00,$FA,$00 DATA_0D9710: .db $4E,$41,$FA,$00,$F9,$00,$4E,$41 DATA_0D9718: .db $FA,$00,$3C,$C1,$3C,$C1,$F8,$00 DATA_0D9720: .db $44,$01,$FE,$00,$44,$01,$FE,$00 DATA_0D9728: .db $FA,$00,$4E,$C1,$4E,$C1,$F9,$00 DATA_0D9730: .db $FE,$00,$FE,$00,$5A,$01,$5A,$01 DATA_0D9738: .db $7C,$01,$5B,$01,$79,$01,$FE,$00 DATA_0D9740: .db $5B,$01,$5B,$01,$FE,$00,$FE,$00 DATA_0D9748: .db $78,$01,$FE,$00,$79,$01,$FE,$00 DATA_0D9750: .db $78,$01,$FE,$00,$7B,$01,$5A,$01 DATA_0D9758: .db $FE,$00,$FE,$00,$78,$01,$FE,$00 DATA_0D9760: .db $79,$01,$78,$01,$5A,$01,$7B,$01 DATA_0D9768: .db $5B,$01,$7C,$01,$78,$01,$79,$01 DATA_0D9770: .db $79,$01,$FE,$00,$FE,$00,$FE,$00 DATA_0D9778: .db $40,$00,$42,$00,$41,$00,$43,$00 DATA_0D9780: .db $64,$01,$66,$01,$65,$01,$67,$01 DATA_0D9788: .db $FE,$00,$68,$41,$5E,$01,$60,$01 DATA_0D9790: .db $FE,$00,$61,$01,$FE,$00,$62,$01 DATA_0D9798: .db $5F,$01,$63,$01,$FE,$00,$68,$01 DATA_0D97A0: .db $FE,$00,$69,$01,$FE,$00,$69,$41 DATA_0D97A8: .db $6B,$41,$6E,$41,$6A,$41,$6C,$01 DATA_0D97B0: .db $FE,$00,$6D,$01,$FE,$00,$6D,$41 DATA_0D97B8: .db $6A,$01,$6C,$41,$6B,$01,$6E,$01 DATA_0D97C0: .db $FC,$00,$6F,$01,$FC,$00,$6F,$41 DATA_0D97C8: .db $70,$01,$72,$01,$71,$01,$73,$01 DATA_0D97D0: .db $74,$01,$76,$01,$75,$01,$77,$01 DATA_0D97D8: .db $0A,$41,$0B,$41,$F8,$00,$0A,$41 DATA_0D97E0: .db $F9,$00,$07,$01,$F9,$00,$07,$41 DATA_0D97E8: .db $FD,$00,$FD,$00,$0B,$41,$FD,$00 DATA_0D97F0: .db $11,$41,$0B,$41,$F9,$00,$11,$41 DATA_0D97F8: .db $F9,$00,$08,$01,$08,$01,$02,$01 DATA_0D9800: .db $08,$41,$02,$41,$F9,$00,$08,$41 DATA_0D9808: .db $F9,$00,$11,$01,$11,$01,$0B,$01 DATA_0D9810: .db $0B,$01,$FD,$00,$FD,$00,$FD,$00 DATA_0D9818: .db $FA,$00,$17,$01,$FA,$00,$18,$01 DATA_0D9820: .db $17,$01,$15,$01,$18,$01,$FA,$00 DATA_0D9828: .db $F8,$00,$09,$01,$F8,$00,$09,$41 DATA_0D9830: .db $F8,$00,$33,$51,$F8,$00,$32,$51 DATA_0D9838: .db $F8,$00,$0A,$01,$0A,$01,$0B,$01 DATA_0D9840: .db $0B,$01,$FD,$00,$0B,$41,$FD,$00 DATA_0D9848: .db $F9,$00,$F9,$00,$34,$51,$2E,$51 DATA_0D9850: .db $FD,$00,$26,$01,$FD,$00,$26,$41 DATA_0D9858: .db $FD,$00,$27,$01,$FD,$00,$28,$01 DATA_0D9860: .db $27,$01,$22,$01,$28,$01,$FD,$00 DATA_0D9868: .db $FD,$00,$19,$01,$FD,$00,$19,$41 DATA_0D9870: .db $15,$01,$FA,$00,$15,$41,$FA,$00 DATA_0D9878: .db $1B,$41,$FA,$00,$1A,$41,$15,$41 DATA_0D9880: .db $FD,$00,$1B,$41,$FD,$00,$1A,$41 DATA_0D9888: .db $7D,$01,$7D,$81,$7D,$41,$7D,$C1 DATA_0D9890: .db $4F,$00,$F8,$00,$F8,$00,$F8,$00 DATA_0D9898: .db $F8,$00,$F8,$00,$F8,$00,$4E,$00 DATA_0D98A0: .db $4C,$00,$4C,$80,$4C,$40,$4C,$C0 DATA_0D98A8: .db $4D,$00,$4D,$80,$4D,$40,$4D,$C0 DATA_0D98B0: .db $4D,$01,$FA,$00,$4E,$01,$FA,$00 DATA_0D98B8: .db $4F,$01,$FA,$00,$50,$01,$FA,$00 DATA_0D98C0: .db $51,$01,$FA,$00,$52,$01,$FA,$00 DATA_0D98C8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98D0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98D8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98E0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98E8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98F0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D98F8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0D9900: .db $FD,$04,$FD,$04,$06,$05,$07,$05 DATA_0D9908: .db $00,$05,$00,$05,$00,$45,$00,$45 DATA_0D9910: .db $00,$05,$00,$05,$72,$04,$FF,$04 DATA_0D9918: .db $00,$05,$00,$05,$FF,$04,$FF,$04 DATA_0D9920: .db $FF,$04,$FF,$04,$00,$05,$00,$05 DATA_0D9928: .db $FF,$04,$FF,$04,$0E,$45,$00,$45 DATA_0D9930: .db $FF,$04,$FF,$04,$00,$45,$00,$45 DATA_0D9938: .db $10,$05,$10,$05,$10,$45,$10,$45 DATA_0D9940: .db $FA,$04,$FA,$04,$10,$05,$10,$05 DATA_0D9948: .db $00,$05,$1B,$05,$00,$45,$1B,$45 DATA_0D9950: .db $FF,$04,$05,$45,$0B,$45,$0C,$45 DATA_0D9958: .db $FF,$04,$72,$04,$00,$45,$00,$45 DATA_0D9960: .db $FD,$04,$FD,$04,$00,$05,$00,$05 DATA_0D9968: .db $FD,$04,$FD,$04,$FD,$04,$FD,$04 DATA_0D9970: .db $01,$05,$03,$05,$02,$05,$04,$05 DATA_0D9978: .db $FF,$04,$FF,$04,$0B,$05,$0C,$05 DATA_0D9980: .db $FF,$04,$05,$05,$00,$45,$00,$45 DATA_0D9988: .db $73,$04,$FA,$04,$10,$05,$10,$05 DATA_0D9990: .db $0E,$05,$00,$05,$FF,$04,$FF,$04 DATA_0D9998: .db $00,$45,$00,$45,$FF,$04,$FF,$04 DATA_0D99A0: .db $02,$45,$04,$45,$01,$45,$03,$45 DATA_0D99A8: .db $00,$05,$1C,$05,$00,$45,$1C,$45 DATA_0D99B0: .db $00,$05,$00,$05,$FF,$04,$05,$45 DATA_0D99B8: .db $0B,$45,$0C,$45,$FF,$04,$FF,$04 DATA_0D99C0: .db $00,$45,$00,$45,$FD,$04,$FD,$04 DATA_0D99C8: .db $FD,$04,$18,$05,$FD,$04,$18,$45 DATA_0D99D0: .db $FD,$04,$13,$05,$FD,$04,$FD,$04 DATA_0D99D8: .db $FF,$04,$FF,$04,$72,$04,$FF,$04 DATA_0D99E0: .db $10,$05,$1D,$05,$10,$45,$1D,$45 DATA_0D99E8: .db $06,$45,$07,$45,$FD,$04,$FD,$04 DATA_0D99F0: .db $71,$04,$71,$84,$71,$44,$71,$C4 DATA_0D99F8: .db $10,$05,$10,$05,$FD,$04,$FD,$04 DATA_0D9A00: .db $0B,$05,$0C,$05,$FF,$04,$05,$05 DATA_0D9A08: .db $FA,$04,$FA,$04,$FA,$04,$FA,$04 DATA_0D9A10: .db $70,$04,$70,$84,$70,$44,$70,$C4 DATA_0D9A18: .db $FD,$04,$FD,$04,$FD,$04,$13,$45 DATA_0D9A20: .db $FA,$04,$19,$C5,$10,$05,$13,$85 DATA_0D9A28: .db $FD,$04,$18,$05,$10,$45,$1A,$45 DATA_0D9A30: .db $FF,$04,$FF,$04,$FF,$04,$FF,$04 DATA_0D9A38: .db $FF,$04,$05,$05,$FF,$04,$FF,$04 DATA_0D9A40: .db $FD,$04,$FD,$04,$10,$45,$10,$45 DATA_0D9A48: .db $FF,$04,$05,$45,$06,$45,$07,$45 DATA_0D9A50: .db $18,$85,$FD,$04,$18,$C5,$FD,$04 DATA_0D9A58: .db $13,$85,$FD,$04,$FD,$04,$FD,$04 DATA_0D9A60: .db $13,$45,$10,$45,$19,$05,$FA,$04 DATA_0D9A68: .db $1A,$85,$10,$05,$18,$C5,$FD,$04 DATA_0D9A70: .db $15,$05,$16,$05,$FD,$04,$13,$05 DATA_0D9A78: .db $10,$45,$10,$45,$FA,$04,$73,$04 DATA_0D9A80: .db $FA,$04,$FA,$04,$15,$05,$16,$05 DATA_0D9A88: .db $FD,$04,$13,$05,$10,$45,$10,$45 DATA_0D9A90: .db $10,$45,$19,$05,$FA,$04,$FA,$04 DATA_0D9A98: .db $10,$05,$1A,$05,$FD,$04,$18,$45 DATA_0D9AA0: .db $1C,$85,$00,$05,$1C,$C5,$00,$45 DATA_0D9AA8: .db $1D,$85,$10,$05,$1D,$C5,$10,$45 DATA_0D9AB0: .db $FD,$04,$FD,$04,$13,$C5,$FD,$04 DATA_0D9AB8: .db $16,$C5,$15,$C5,$FA,$04,$FA,$04 DATA_0D9AC0: .db $FA,$04,$FA,$04,$19,$C5,$10,$05 DATA_0D9AC8: .db $13,$85,$FD,$04,$10,$45,$10,$45 DATA_0D9AD0: .db $07,$C5,$06,$C5,$FD,$04,$FD,$04 DATA_0D9AD8: .db $07,$85,$06,$85,$05,$85,$FF,$04 DATA_0D9AE0: .db $10,$05,$10,$05,$FD,$04,$13,$45 DATA_0D9AE8: .db $15,$45,$16,$45,$FA,$04,$FA,$04 DATA_0D9AF0: .db $10,$45,$13,$C5,$FA,$04,$19,$85 DATA_0D9AF8: .db $16,$85,$15,$85,$13,$85,$FD,$04 DATA_0D9B00: .db $FD,$04,$FD,$04,$07,$85,$06,$85 DATA_0D9B08: .db $FA,$04,$FA,$04,$16,$85,$15,$85 DATA_0D9B10: .db $04,$C5,$02,$C5,$03,$C5,$01,$C5 DATA_0D9B18: .db $FF,$04,$FF,$04,$05,$C5,$FF,$04 DATA_0D9B20: .db $03,$85,$01,$85,$04,$85,$02,$85 DATA_0D9B28: .db $1B,$85,$00,$05,$1B,$C5,$00,$45 DATA_0D9B30: .db $00,$05,$0E,$85,$FF,$04,$FF,$04 DATA_0D9B38: .db $FF,$04,$FF,$04,$0C,$85,$0B,$85 DATA_0D9B40: .db $10,$05,$10,$05,$13,$C5,$FD,$04 DATA_0D9B48: .db $FF,$04,$FF,$04,$00,$45,$0E,$C5 DATA_0D9B50: .db $05,$85,$FF,$04,$00,$45,$00,$45 DATA_0D9B58: .db $0C,$C5,$0B,$C5,$FF,$04,$FF,$04 DATA_0D9B60: .db $0C,$85,$0B,$85,$05,$85,$FF,$04 DATA_0D9B68: .db $00,$05,$00,$05,$05,$C5,$FF,$04 DATA_0D9B70: .db $05,$C5,$FF,$04,$0C,$C5,$0B,$C5 DATA_0D9B78: .db $05,$C5,$FF,$04,$07,$C5,$06,$C5 DATA_0D9B80: .db $05,$85,$FF,$04,$FF,$04,$FF,$04 DATA_0D9B88: .db $FF,$04,$FF,$04,$FF,$04,$05,$45 DATA_0D9B90: .db $18,$85,$FD,$04,$1A,$C5,$10,$45 DATA_0D9B98: .db $06,$05,$07,$05,$FF,$04,$05,$05 DATA_0D9BA0: .db $10,$45,$10,$45,$FA,$04,$FA,$04 DATA_0D9BA8: .db $19,$45,$FA,$04,$13,$05,$10,$05 DATA_0D9BB0: .db $FA,$04,$1D,$85,$FA,$04,$1D,$C5 DATA_0D9BB8: .db $19,$05,$FA,$04,$FA,$04,$FA,$04 DATA_0D9BC0: .db $19,$85,$13,$C5,$FA,$04,$19,$85 DATA_0D9BC8: .db $F8,$00,$F8,$00,$F8,$00,$F8,$00 DATA_0D9BD0: .db $3A,$11,$3A,$91,$3B,$11,$54,$11 DATA_0D9BD8: .db $54,$91,$54,$11,$3A,$51,$3A,$D1 DATA_0D9BE0: .db $64,$01,$74,$01,$65,$01,$FD,$00 DATA_0D9BE8: .db $65,$41,$FD,$00,$64,$41,$74,$41 DATA_0D9BF0: .db $75,$01,$FD,$00,$FD,$00,$FD,$00 DATA_0D9BF8: .db $FD,$00,$FD,$00,$75,$41,$FD,$00 DATA_0D9C00: .db $FD,$00,$FD,$00,$FD,$00,$FD,$00 DATA_0D9C08: .db $FD,$00,$FD,$00,$FD,$00,$75,$C1 DATA_0D9C10: .db $FD,$00,$75,$81,$FD,$00,$FD,$00 DATA_0D9C18: .db $FD,$00,$59,$01,$59,$01,$59,$41 DATA_0D9C20: .db $FD,$00,$65,$C1,$74,$C1,$64,$C1 DATA_0D9C28: .db $74,$81,$64,$81,$FD,$00,$65,$81 DATA_0D9C30: .db $59,$41,$59,$01,$FD,$00,$59,$41 DATA_0D9C38: .db $66,$01,$76,$01,$67,$01,$FC,$00 DATA_0D9C40: .db $67,$41,$FC,$00,$66,$41,$76,$41 DATA_0D9C48: .db $77,$01,$FC,$00,$FC,$00,$FC,$00 DATA_0D9C50: .db $FC,$00,$FC,$00,$77,$41,$FC,$00 DATA_0D9C58: .db $FC,$00,$FC,$00,$FC,$00,$FC,$00 DATA_0D9C60: .db $6E,$01,$7E,$01,$6F,$01,$7F,$01 DATA_0D9C68: .db $6F,$41,$7F,$41,$6E,$41,$7E,$41 DATA_0D9C70: .db $FC,$00,$77,$81,$FC,$00,$FC,$00 DATA_0D9C78: .db $FC,$00,$FC,$00,$FC,$00,$77,$C1 DATA_0D9C80: .db $68,$01,$78,$01,$69,$01,$FB,$00 DATA_0D9C88: .db $69,$41,$FB,$00,$68,$41,$78,$41 DATA_0D9C90: .db $76,$81,$66,$81,$FC,$00,$67,$81 DATA_0D9C98: .db $FC,$00,$67,$C1,$76,$C1,$66,$C1 DATA_0D9CA0: .db $79,$01,$FB,$00,$FB,$00,$FB,$00 DATA_0D9CA8: .db $FB,$00,$FB,$00,$79,$41,$FB,$00 DATA_0D9CB0: .db $70,$01,$72,$01,$71,$01,$73,$01 DATA_0D9CB8: .db $FB,$00,$FB,$00,$FB,$00,$FB,$00 DATA_0D9CC0: .db $78,$81,$68,$81,$FB,$00,$69,$81 DATA_0D9CC8: .db $FB,$00,$79,$81,$FB,$00,$FB,$00 DATA_0D9CD0: .db $FB,$00,$FB,$00,$FB,$00,$79,$C1 DATA_0D9CD8: .db $FB,$00,$69,$C1,$78,$C1,$68,$C1 DATA_0D9CE0: .db $71,$41,$73,$41,$70,$41,$72,$41 DATA_0D9CE8: .db $6A,$01,$7A,$01,$6B,$01,$FA,$00 DATA_0D9CF0: .db $6B,$41,$FA,$00,$6A,$41,$7A,$41 DATA_0D9CF8: .db $7B,$01,$FA,$00,$FA,$00,$FA,$00 DATA_0D9D00: .db $FA,$00,$FA,$00,$7B,$41,$FA,$00 DATA_0D9D08: .db $6C,$01,$7C,$01,$6D,$01,$7D,$01 DATA_0D9D10: .db $6D,$41,$7D,$41,$6C,$41,$7C,$41 DATA_0D9D18: .db $FA,$00,$FA,$00,$FA,$00,$FA,$00 DATA_0D9D20: .db $7A,$81,$6A,$81,$FA,$00,$6B,$81 DATA_0D9D28: .db $FA,$00,$7B,$81,$FA,$00,$FA,$00 DATA_0D9D30: .db $FA,$00,$FA,$00,$FA,$00,$7B,$C1 DATA_0D9D38: .db $FA,$00,$6B,$C1,$7A,$C1,$6A,$C1 DATA_0D9D40: .db $35,$41,$35,$41,$35,$01,$35,$01 DATA_0D9D48: .db $2D,$41,$FA,$40,$2C,$41,$FA,$40 DATA_0D9D50: .db $2D,$41,$2C,$41,$2C,$41,$2D,$41 DATA_0D9D58: .db $34,$41,$33,$41,$34,$01,$33,$01 DATA_0D9D60: .db $2D,$41,$2C,$41,$2C,$41,$FA,$40 DATA_0D9D68: .db $FA,$40,$FA,$40,$FA,$40,$2D,$41 DATA_0D9D70: .db $2D,$41,$2C,$41,$2C,$41,$22,$01 DATA_0D9D78: .db $2D,$41,$23,$01,$2C,$41,$2D,$41 DATA_0D9D80: .db $22,$01,$2C,$41,$23,$01,$22,$01 DATA_0D9D88: .db $3A,$41,$39,$41,$3A,$01,$39,$01 DATA_0D9D90: .db $22,$01,$2C,$41,$23,$01,$2D,$41 DATA_0D9D98: .db $2D,$41,$FA,$40,$2C,$41,$2D,$41 DATA_0D9DA0: .db $38,$01,$23,$01,$21,$01,$22,$01 DATA_0D9DA8: .db $43,$41,$2F,$41,$43,$01,$2F,$01 DATA_0D9DB0: .db $38,$01,$21,$01,$21,$01,$22,$01 DATA_0D9DB8: .db $22,$01,$23,$01,$23,$01,$2D,$41 DATA_0D9DC0: .db $2B,$01,$2B,$81,$2B,$01,$2B,$81 DATA_0D9DC8: .db $2A,$01,$2A,$81,$29,$01,$29,$81 DATA_0D9DD0: .db $28,$01,$28,$81,$27,$01,$27,$81 DATA_0D9DD8: .db $26,$01,$26,$81,$25,$01,$25,$81 DATA_0D9DE0: .db $24,$01,$24,$81,$36,$01,$36,$81 DATA_0D9DE8: .db $2E,$41,$37,$41,$2E,$01,$37,$01 DATA_0D9DF0: .db $36,$01,$36,$81,$24,$01,$24,$81 DATA_0D9DF8: .db $25,$01,$25,$81,$26,$01,$26,$81 DATA_0D9E00: .db $27,$01,$27,$81,$28,$01,$28,$81 DATA_0D9E08: .db $29,$01,$29,$81,$2A,$01,$2A,$81 DATA_0D9E10: .db $22,$01,$23,$01,$23,$01,$38,$01 DATA_0D9E18: .db $38,$01,$21,$01,$21,$01,$1E,$01 DATA_0D9E20: .db $1E,$01,$1F,$01,$1F,$01,$1E,$01 DATA_0D9E28: .db $4C,$00,$4E,$00,$4C,$40,$4E,$40 DATA_0D9E30: .db $1E,$01,$1F,$01,$1F,$01,$38,$01 DATA_0D9E38: .db $22,$01,$23,$01,$23,$01,$2C,$41 DATA_0D9E40: .db $37,$41,$2E,$41,$37,$01,$2E,$01 DATA_0D9E48: .db $FA,$40,$2C,$41,$FA,$40,$FA,$40 DATA_0D9E50: .db $2F,$41,$43,$41,$2F,$01,$43,$01 DATA_0D9E58: .db $1E,$01,$21,$01,$1F,$01,$38,$01 DATA_0D9E60: .db $22,$01,$23,$01,$23,$01,$22,$01 DATA_0D9E68: .db $40,$01,$3B,$01,$41,$01,$44,$81 DATA_0D9E70: .db $42,$01,$44,$81,$40,$41,$3B,$01 DATA_0D9E78: .db $22,$01,$21,$01,$23,$01,$38,$01 DATA_0D9E80: .db $39,$41,$3A,$41,$39,$01,$3A,$01 DATA_0D9E88: .db $22,$01,$21,$01,$23,$01,$22,$01 DATA_0D9E90: .db $38,$01,$21,$01,$21,$01,$38,$01 DATA_0D9E98: .db $3C,$41,$3C,$01,$44,$41,$44,$81 DATA_0D9EA0: .db $44,$41,$44,$81,$3C,$01,$3C,$41 DATA_0D9EA8: .db $33,$41,$34,$41,$33,$01,$34,$01 DATA_0D9EB0: .db $38,$01,$23,$01,$21,$01,$38,$01 DATA_0D9EB8: .db $FA,$40,$FA,$40,$FA,$40,$FA,$40 DATA_0D9EC0: .db $3D,$01,$40,$01,$44,$41,$41,$01 DATA_0D9EC8: .db $44,$41,$42,$01,$3D,$01,$40,$41 DATA_0D9ED0: .db $FA,$40,$2C,$41,$FA,$40,$2D,$41 DATA_0D9ED8: .db $2D,$41,$23,$01,$2C,$41,$22,$01 DATA_0D9EE0: .db $38,$01,$1F,$01,$21,$01,$38,$01 DATA_0D9EE8: .db $38,$01,$1F,$01,$21,$01,$1E,$01 DATA_0D9EF0: .db $1E,$01,$21,$01,$1F,$01,$1E,$01 DATA_0D9EF8: .db $5E,$01,$7A,$01,$5F,$01,$7B,$01 DATA_0D9F00: .db $5E,$01,$6E,$01,$5F,$01,$6F,$01 DATA_0D9F08: .db $67,$41,$77,$41,$66,$41,$76,$41 DATA_0D9F10: .db $66,$01,$76,$01,$67,$01,$77,$01 DATA_0D9F18: .db $64,$01,$74,$01,$5F,$01,$6F,$01 DATA_0D9F20: .db $7A,$81,$5E,$81,$7B,$81,$5F,$81 DATA_0D9F28: .db $6E,$81,$5E,$81,$6F,$81,$5F,$81 DATA_0D9F30: .db $74,$81,$64,$81,$6F,$81,$5F,$81 DATA_0D9F38: .db $5A,$01,$6A,$01,$5B,$01,$6B,$01 DATA_0D9F40: .db $67,$41,$77,$41,$66,$41,$53,$01 DATA_0D9F48: .db $5A,$01,$54,$01,$5B,$01,$6B,$01 DATA_0D9F50: .db $6A,$81,$5A,$81,$6B,$81,$5B,$81 DATA_0D9F58: .db $54,$81,$5A,$81,$6B,$81,$5B,$81 DATA_0D9F60: .db $64,$01,$6E,$01,$65,$01,$6F,$01 DATA_0D9F68: .db $64,$01,$74,$01,$65,$01,$6F,$01 DATA_0D9F70: .db $57,$C1,$79,$C1,$56,$C1,$78,$C1 DATA_0D9F78: .db $66,$01,$53,$41,$67,$01,$77,$01 DATA_0D9F80: .db $69,$C1,$59,$C1,$68,$C1,$58,$C1 DATA_0D9F88: .db $58,$01,$68,$01,$59,$01,$69,$01 DATA_0D9F90: .db $78,$01,$56,$01,$79,$01,$57,$01 DATA_0D9F98: .db $5C,$01,$6C,$01,$5D,$01,$6D,$01 DATA_0D9FA0: .db $7C,$01,$6E,$01,$7D,$01,$6F,$01 DATA_0D9FA8: .db $F8,$00,$55,$01,$F8,$00,$F8,$00 DATA_0D9FB0: .db $6E,$81,$7C,$81,$6F,$81,$7D,$81 DATA_0D9FB8: .db $6C,$81,$5C,$81,$6D,$81,$5D,$81 DATA_0D9FC0: .db $F5,$45,$FC,$05,$F5,$01,$FD,$01 DATA_0D9FC8: .db $F5,$41,$FD,$01,$F6,$01,$F8,$01 DATA_0D9FD0: .db $F4,$01,$F7,$01,$F5,$01,$FC,$01 DATA_0D9FD8: .db $F5,$41,$FC,$01,$F5,$01,$FD,$01 DATA_0D9FE0: .db $FE,$85,$FF,$05,$FF,$81,$FE,$41 DATA_0D9FE8: .db $FE,$01,$FF,$01,$F8,$01,$F8,$81 DATA_0D9FF0: .db $F7,$01,$F7,$81,$FE,$41,$FF,$81 DATA_0D9FF8: .db $FE,$81,$FF,$01,$FF,$81,$FE,$41 DATA_0D9FF8: .db $FE,$81,$FF,$01,$FF,$81,$FE,$41 DATA_0DA000: .db $F4,$01,$F7,$01,$F6,$01,$F8,$01 DATA_0DA008: .db $F7,$01,$F7,$81,$F8,$01,$F8,$81 DATA_0DA010: .db $FF,$41,$FA,$01,$FE,$01,$FA,$41 DATA_0DA018: .db $FE,$C1,$FA,$01,$F8,$01,$FB,$01 DATA_0DA020: .db $F7,$01,$F9,$01,$FE,$01,$FA,$01 DATA_0DA028: .db $F7,$01,$F9,$01,$F8,$01,$FB,$01 DATA_0DA030: .db $74,$01,$72,$01,$75,$01,$73,$01 DATA_0DA038: .db $F5,$45,$FD,$05,$F6,$05,$F8,$05 DATA_0DA040: .db $F4,$05,$F7,$05,$F5,$05,$FC,$05 DATA_0DA048: .db $F5,$45,$FC,$05,$F5,$05,$FD,$05 DATA_0DA050: .db $FE,$05,$FF,$05,$F8,$01,$F8,$81 DATA_0DA058: .db $FE,$C5,$FA,$05,$F8,$01,$FB,$01 DATA_0DA060: .db $F5,$45,$FD,$05,$F6,$01,$F8,$01 DATA_0DA068: .db $E0,$01,$E4,$01,$E1,$01,$E5,$81 DATA_0DA070: .db $E1,$41,$E5,$C1,$E0,$41,$E4,$01 DATA_0DA078: .db $E2,$01,$E2,$01,$E5,$01,$E5,$81 DATA_0DA080: .db $E5,$41,$E5,$C1,$E2,$01,$E2,$01 DATA_0DA088: .db $E2,$01,$E0,$01,$E5,$01,$E1,$01 DATA_0DA090: .db $E5,$41,$E1,$41,$E2,$01,$E0,$41 DATA_0DA098: .db $FF,$41,$FA,$01,$FE,$C1,$FA,$01 Empty0DA0A0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0A8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0B0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0B8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0C0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0C8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0D0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0D8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0E0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0E8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0F0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DA0F8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF CODE_0DA100: E2 30 SEP #$30 ; This was done before JSLing to here, morons (which was unnecessary there too) CODE_0DA102: 20 06 A1 JSR.W CODE_0DA106 ; Run main code (why not just end the routines with RTLs? SMW's code is confusing sometimes...) Return0DA105: 6B RTL ; CODE_0DA106: E2 30 SEP #$30 ; Third time in about five opcodes, morons CODE_0DA108: A5 59 LDA $59 ; Load object size (i.e. extended object number) CODE_0DA10A: AA TAX ; Put in X too since some objects share codes CODE_0DA10B: 22 FA 86 00 JSL.L ExecutePtrLong ; and go to the correct address (why go to a 24bit address when the return is 16bit anyways? Morons...) PtrsLong0DA10F: 12 A5 0D .dw CODE_0DA512 .db :$CODE_0DA512 ; Screen exit PtrsLong0DA112: 3D A5 0D .dw CODE_0DA53D .db :$CODE_0DA53D ; Screen jump PtrsLong0DA115: 00 00 00 .dw $0000 .db $00 ;\ PtrsLong0DA118: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA11B: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA11E: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA121: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA124: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA127: 00 00 00 .dw $0000 .db $00 ; | Unused (LM will declare these to be fatal errors and change them to doors) PtrsLong0DA12A: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA12D: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA130: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA133: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA136: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA139: 00 00 00 .dw $0000 .db $00 ; | PtrsLong0DA13C: 00 00 00 .dw $0000 .db $00 ;/ PtrsLong0DA13F: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Small door PtrsLong0DA142: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible ? block (1-UP) PtrsLong0DA145: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible note block PtrsLong0DA148: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top left corner edge tile 1 PtrsLong0DA14B: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top right corner edge tile 1 PtrsLong0DA14E: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Small POW door PtrsLong0DA151: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible POW ? block PtrsLong0DA154: 4D A6 0D .dw CODE_0DA64D .db :$CODE_0DA64D ; Green star block PtrsLong0DA157: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; 3-UP moon PtrsLong0DA15A: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible 1-UP #1 PtrsLong0DA15D: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible 1-UP #2 PtrsLong0DA160: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible 1-UP #3 PtrsLong0DA163: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Invisible 1-UP #4 PtrsLong0DA166: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Red berry PtrsLong0DA169: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Pink berry PtrsLong0DA16C: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Green berry PtrsLong0DA16F: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Always turning block PtrsLong0DA172: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Bottom right of midway point (unused) PtrsLong0DA175: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Bottom right of midway point (unused) PtrsLong0DA178: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Note block (flower/feather/star) PtrsLong0DA17B: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ON/OFF block PtrsLong0DA17E: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Direction coins ? block PtrsLong0DA181: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Note block PtrsLong0DA184: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Note block, bounce on all sides PtrsLong0DA187: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Flower) PtrsLong0DA18A: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Feather) PtrsLong0DA18D: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Star) PtrsLong0DA190: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Star 2/1-UP/Vine) PtrsLong0DA193: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Multiple coins) PtrsLong0DA196: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Coin) PtrsLong0DA199: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (Nothing) PtrsLong0DA19C: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block (POW) PtrsLong0DA19F: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Flower) PtrsLong0DA1A2: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Feather) PtrsLong0DA1A5: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Star) PtrsLong0DA1A8: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Star 2) PtrsLong0DA1AB: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Multiple coins) PtrsLong0DA1AE: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Key/Wings/Balloon/Shell) PtrsLong0DA1B1: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Yoshi) PtrsLong0DA1B4: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Shell) PtrsLong0DA1B7: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; ? block (Shell) PtrsLong0DA1BA: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Turn block, unbreakable (Feather) PtrsLong0DA1BD: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top left corner edge tile 2 PtrsLong0DA1C0: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top right corner edge tile 2 PtrsLong0DA1C3: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top left corner edge tile 3 PtrsLong0DA1C6: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top right corner edge tile 3 PtrsLong0DA1C9: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top left corner edge tile 4 PtrsLong0DA1CC: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Top right corner edge tile 4 PtrsLong0DA1CF: 7B A5 0D .dw CODE_0DA57B .db :$CODE_0DA57B ; Transculent block PtrsLong0DA1D2: CA B2 0D .dw CODE_0DB2CA .db :$CODE_0DB2CA ; Yoshi Coin PtrsLong0DA1D5: 56 A6 0D .dw ADDR_0DA656 .db :$ADDR_0DA656 ; Top left slope PtrsLong0DA1D8: 56 A6 0D .dw ADDR_0DA656 .db :$ADDR_0DA656 ; Top right slope PtrsLong0DA1DB: 73 A6 0D .dw CODE_0DA673 .db :$CODE_0DA673 ; Purple triangle, left PtrsLong0DA1DE: 73 A6 0D .dw CODE_0DA673 .db :$CODE_0DA673 ; Purple triangle, right PtrsLong0DA1E1: 8E A6 0D .dw CODE_0DA68E .db :$CODE_0DA68E ; Midway point rope PtrsLong0DA1E4: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; Door PtrsLong0DA1E7: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; Invisible POW door PtrsLong0DA1EA: BF EA 0D .dw CODE_0DEABF .db :$CODE_0DEABF ; Ghost house exit PtrsLong0DA1ED: C1 A7 0D .dw CODE_0DA7C1 .db :$CODE_0DA7C1 ; Climbing net door PtrsLong0DA1F0: 59 C2 0D .dw CODE_0DC259 .db :$CODE_0DC259 ; Conveyor end tile 1 PtrsLong0DA1F3: 59 C2 0D .dw CODE_0DC259 .db :$CODE_0DC259 ; Conveyor end tile 2 PtrsLong0DA1F6: 67 CE 0D .dw CODE_0DCE67 .db :$CODE_0DCE67 ; Line guide, top left 1/4 large circle PtrsLong0DA1F9: 67 CE 0D .dw CODE_0DCE67 .db :$CODE_0DCE67 ; Line guide, top right 1/4 large circle PtrsLong0DA1FC: 67 CE 0D .dw CODE_0DCE67 .db :$CODE_0DCE67 ; Line guide, bottom left 1/4 large circle PtrsLong0DA1FF: 67 CE 0D .dw CODE_0DCE67 .db :$CODE_0DCE67 ; Line guide, bottom right 1/4 large circle PtrsLong0DA202: 94 CE 0D .dw CODE_0DCE94 .db :$CODE_0DCE94 ; Line guide, top left 1/4 small circle PtrsLong0DA205: 94 CE 0D .dw CODE_0DCE94 .db :$CODE_0DCE94 ; Line guide, top right 1/4 small circle PtrsLong0DA208: 94 CE 0D .dw CODE_0DCE94 .db :$CODE_0DCE94 ; Line guide, bottom left 1/4 small circle PtrsLong0DA20B: 94 CE 0D .dw CODE_0DCE94 .db :$CODE_0DCE94 ; Line guide, bottom right 1/4 small circle PtrsLong0DA20E: C0 CE 0D .dw CODE_0DCEC0 .db :$CODE_0DCEC0 ; Line guide end, for horizontal line PtrsLong0DA211: DA CE 0D .dw CODE_0DCEDA .db :$CODE_0DCEDA ; Line guide end, for vertical line PtrsLong0DA214: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Switch palace bottom right corner tile PtrsLong0DA217: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Switch palace bottom left corner tile PtrsLong0DA21A: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Switch palace top right corner tile PtrsLong0DA21D: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Switch palace top left corner tile PtrsLong0DA220: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Bit of brick background tile 1 PtrsLong0DA223: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Bit of brick background tile 2 PtrsLong0DA226: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Bit of brick background tile 3 PtrsLong0DA229: 5F E9 0D .dw CODE_0DE95F .db :$CODE_0DE95F ; Bit of brick background tile 4 PtrsLong0DA22C: 71 E9 0D .dw ADDR_0DE971 .db :$ADDR_0DE971 ; Large background area PtrsLong0DA22F: 57 DA 0D .dw CODE_0DDA57 .db :$CODE_0DDA57 ; Lava/mud top right corner edge PtrsLong0DA232: AA E9 0D .dw CODE_0DE9AA .db :$CODE_0DE9AA ; Ghost house clock PtrsLong0DA235: AA E9 0D .dw CODE_0DE9AA .db :$CODE_0DE9AA ; Ghost house top left to bottom right beam 1 PtrsLong0DA238: AA E9 0D .dw CODE_0DE9AA .db :$CODE_0DE9AA ; Ghost house top right to bottom left beam 1 PtrsLong0DA23B: ED E9 0D .dw CODE_0DE9ED .db :$CODE_0DE9ED ; Ghost house cobweb, top right PtrsLong0DA23E: ED E9 0D .dw CODE_0DE9ED .db :$CODE_0DE9ED ; Ghost house cobweb, top left PtrsLong0DA241: 3E EA 0D .dw ADDR_0DEA3E .db :$ADDR_0DEA3E ; Ghost house top right to bottom left beam 2 PtrsLong0DA244: 3E EA 0D .dw ADDR_0DEA3E .db :$ADDR_0DEA3E ; Ghost house top left to bottom right beam 2 PtrsLong0DA247: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe, bottom and right edge PtrsLong0DA24A: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe, bottom and left edge PtrsLong0DA24D: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe, bottom right PtrsLong0DA250: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe, bottom left PtrsLong0DA253: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe on white, bottom and right edge PtrsLong0DA256: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe on white, bottom and left edge PtrsLong0DA259: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe on white, bottom right PtrsLong0DA25C: 71 B5 0D .dw ADDR_0DB571 .db :$ADDR_0DB571 ; Cloud fringe on white, bottom left PtrsLong0DA25F: A6 CE 0D .dw ADDR_0DCEA6 .db :$ADDR_0DCEA6 ; Bit of canvass 1 PtrsLong0DA262: AE E0 0D .dw CODE_0DE0AE .db :$CODE_0DE0AE ; Canvass 1 PtrsLong0DA265: AE E0 0D .dw CODE_0DE0AE .db :$CODE_0DE0AE ; Canvass 2 PtrsLong0DA268: AE E0 0D .dw CODE_0DE0AE .db :$CODE_0DE0AE ; Canvass 3 PtrsLong0DA26B: AE E0 0D .dw CODE_0DE0AE .db :$CODE_0DE0AE ; Canvass 4 PtrsLong0DA26E: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 1 PtrsLong0DA271: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 2 PtrsLong0DA274: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 3 PtrsLong0DA277: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 4 PtrsLong0DA27A: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 5 PtrsLong0DA27D: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 6 PtrsLong0DA280: 68 DA 0D .dw CODE_0DDA68 .db :$CODE_0DDA68 ; Canvass tile 7 PtrsLong0DA283: 80 DA 0D .dw CODE_0DDA80 .db :$CODE_0DDA80 ; Bit of canvas 2 PtrsLong0DA286: 80 DA 0D .dw CODE_0DDA80 .db :$CODE_0DDA80 ; Bit of canvas 3 PtrsLong0DA289: 80 DA 0D .dw CODE_0DDA80 .db :$CODE_0DDA80 ; Bit of canvas 4 PtrsLong0DA28C: A2 DA 0D .dw CODE_0DDAA2 .db :$CODE_0DDAA2 ; Torpedo launcher PtrsLong0DA28F: 6A EB 0D .dw CODE_0DEB6A .db :$CODE_0DEB6A ; Ghost house entrance PtrsLong0DA292: 68 EC 0D .dw ADDR_0DEC68 .db :$ADDR_0DEC68 ; Water weed PtrsLong0DA295: 1B A7 0D .dw CODE_0DA71B .db :$CODE_0DA71B ; Big bush 1 PtrsLong0DA298: 60 A7 0D .dw CODE_0DA760 .db :$CODE_0DA760 ; Big bush 2 PtrsLong0DA29B: E9 C2 0D .dw CODE_0DC2E9 .db :$CODE_0DC2E9 ; Castle entrance PtrsLong0DA29E: 33 EC 0D .dw CODE_0DEC33 .db :$CODE_0DEC33 ; Yoshi's house PtrsLong0DA2A1: E7 A7 0D .dw CODE_0DA7E7 .db :$CODE_0DA7E7 ; Arrow sign PtrsLong0DA2A4: 8B B5 0D .dw CODE_0DB58B .db :$CODE_0DB58B ; ! block, green PtrsLong0DA2A7: E3 B6 0D .dw CODE_0DB6E3 .db :$CODE_0DB6E3 ; Tree branch, left PtrsLong0DA2AA: E3 B6 0D .dw CODE_0DB6E3 .db :$CODE_0DB6E3 ; Tree branch, right PtrsLong0DA2AD: 8E EC 0D .dw CODE_0DEC8E .db :$CODE_0DEC8E ; Switch, green PtrsLong0DA2B0: 8E EC 0D .dw CODE_0DEC8E .db :$CODE_0DEC8E ; Switch, yellow PtrsLong0DA2B3: 8E EC 0D .dw CODE_0DEC8E .db :$CODE_0DEC8E ; Switch, blue PtrsLong0DA2B6: 8E EC 0D .dw CODE_0DEC8E .db :$CODE_0DEC8E ; Switch, red PtrsLong0DA2B9: 83 B5 0D .dw CODE_0DB583 .db :$CODE_0DB583 ; ! block, yellow PtrsLong0DA2BC: C1 EC 0D .dw CODE_0DECC1 .db :$CODE_0DECC1 ; Ghost house window PtrsLong0DA2BF: 1E C3 0D .dw CODE_0DC31E .db :$CODE_0DC31E ; Boss door PtrsLong0DA2C2: 0D A8 0D .dw CODE_0DA80D .db :$CODE_0DA80D ; Steep left slope (vert. lev.) PtrsLong0DA2C5: 0D A8 0D .dw CODE_0DA80D .db :$CODE_0DA80D ; Steep right slope (vert. lev.) PtrsLong0DA2C8: 46 A8 0D .dw CODE_0DA846 .db :$CODE_0DA846 ; Normal left slope (vert. lev.) PtrsLong0DA2CB: 46 A8 0D .dw CODE_0DA846 .db :$CODE_0DA846 ; Normal right slope (vert. lev.) PtrsLong0DA2CE: 7D A8 0D .dw CODE_0DA87D .db :$CODE_0DA87D ; Very steep left slope (vert. lev.) PtrsLong0DA2D1: 7D A8 0D .dw CODE_0DA87D .db :$CODE_0DA87D ; Very steep right slope (vert. lev.) PtrsLong0DA2D4: 5C EC 0D .dw CODE_0DEC5C .db :$CODE_0DEC5C ; Switch palace right and bottom edge tile PtrsLong0DA2D7: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ;\ PtrsLong0DA2DA: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2DD: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2E0: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2E3: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2E6: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2E9: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2EC: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2EF: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2F2: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2F5: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2F8: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2FB: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA2FE: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA301: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA304: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA307: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA30A: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA30D: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA310: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA313: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA316: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA319: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA31C: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA31F: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA322: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA325: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA328: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA32B: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA32E: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA331: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA334: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA337: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA33A: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA33D: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA340: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA343: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA346: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA349: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA34C: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA34F: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA352: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA355: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA358: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA35B: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA35E: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA361: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA364: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA367: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA36A: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA36D: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA370: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA373: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | Unused (will create two garbage tiles each) PtrsLong0DA376: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA379: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA37C: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA37F: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA382: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA385: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA388: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA38B: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA38E: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA391: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA394: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA397: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA39A: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA39D: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3A0: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3A3: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3A6: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3A9: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3AC: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3AF: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3B2: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3B5: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3B8: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3BB: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3BE: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3C1: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3C4: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3C7: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3CA: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3CD: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3D0: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3D3: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3D6: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3D9: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3DC: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3DF: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3E2: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3E5: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3E8: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3EB: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3EE: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3F1: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3F4: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3F7: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3FA: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA3FD: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA400: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA403: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA406: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA409: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ; | PtrsLong0DA40C: D1 A6 0D .dw CODE_0DA6D1 .db :$CODE_0DA6D1 ;/ ;This code calls the code for loading an object in the current tileset. CODE_0DA40F: E2 30 SEP #$30 ; AXY already are 8bit, morons CODE_0DA411: 20 15 A4 JSR.W CODE_0DA415 ; Call local routine Return0DA414: 6B RTL ; Return CODE_0DA415: E2 30 SEP #$30 ; Who made Super Waste-my-processor's-time World... was it you? CODE_0DA417: AD 31 19 LDA.W $1931 ;\ CODE_0DA41A: 22 FA 86 00 JSL.L ExecutePtrLong ;/ Run one of those codes depending on the tileset (are all objects tileset specific?) PtrsLong0DA41E: 4B A4 0D .dw CODE_0DA44B .db :$CODE_0DA44B ; Normal 1 PtrsLong0DA421: 90 C1 0D .dw CODE_0DC190 .db :$CODE_0DC190 ; Castle 1 PtrsLong0DA424: 90 CD 0D .dw CODE_0DCD90 .db :$CODE_0DCD90 ; Rope 1 PtrsLong0DA427: 90 D9 0D .dw CODE_0DD990 .db :$CODE_0DD990 ; Underground 1 PtrsLong0DA42A: 90 E8 0D .dw CODE_0DE890 .db :$CODE_0DE890 ; Switch Palace 1 PtrsLong0DA42D: 90 E8 0D .dw CODE_0DE890 .db :$CODE_0DE890 ; Ghost House 1 PtrsLong0DA430: 90 CD 0D .dw CODE_0DCD90 .db :$CODE_0DCD90 ; Rope 2 PtrsLong0DA433: 4B A4 0D .dw CODE_0DA44B .db :$CODE_0DA44B ; Normal 2 PtrsLong0DA436: 90 CD 0D .dw CODE_0DCD90 .db :$CODE_0DCD90 ; Rope 3 PtrsLong0DA439: 90 D9 0D .dw CODE_0DD990 .db :$CODE_0DD990 ; Underground 2 PtrsLong0DA43C: 90 D9 0D .dw CODE_0DD990 .db :$CODE_0DD990 ; Switch Palace 2 PtrsLong0DA43F: 90 D9 0D .dw CODE_0DD990 .db :$CODE_0DD990 ; Castle 2 PtrsLong0DA442: 4B A4 0D .dw CODE_0DA44B .db :$CODE_0DA44B ; Cloud/Forest PtrsLong0DA445: 90 E8 0D .dw CODE_0DE890 .db :$CODE_0DE890 ; Ghost House 2 PtrsLong0DA448: 90 D9 0D .dw CODE_0DD990 .db :$CODE_0DD990 ; Underground 3 ; Tileset F (only accessible through hex editors/etc) is obviously a fatal error. ; This calls the correct code for the object if the tileset is T:0 in LM (normal or cloud/forest) CODE_0DA44B: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DA44D: A6 5A LDX $5A ; Load object number CODE_0DA44F: CA DEX ; We'll never see object number 0, so change the index to it won't clutter the table CODE_0DA450: 8A TXA ;\ CODE_0DA451: 22 FA 86 00 JSL.L ExecutePtrLong ;/ and call the correct subroutine PtrsLong0DA455: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Blue) PtrsLong0DA458: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible coin blocks PtrsLong0DA45B: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible note blocks PtrsLong0DA45E: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible POW coins PtrsLong0DA461: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coins PtrsLong0DA464: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Walk-through dirt PtrsLong0DA467: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Other color) PtrsLong0DA46A: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Note blocks PtrsLong0DA46D: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Turn blocks PtrsLong0DA470: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coin ? blocks PtrsLong0DA473: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Throw blocks PtrsLong0DA476: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Black piranha plants PtrsLong0DA479: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Cement blocks PtrsLong0DA47C: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Brown blocks PtrsLong0DA47F: 26 AA 0D .dw CODE_0DAA26 .db :$CODE_0DAA26 ; Vertical pipes PtrsLong0DA482: B4 AA 0D .dw CODE_0DAAB4 .db :$CODE_0DAAB4 ; Horizontal pipes PtrsLong0DA485: 0D AB 0D .dw CODE_0DAB0D .db :$CODE_0DAB0D ; Bullet shooter PtrsLong0DA488: 3E AB 0D .dw CODE_0DAB3E .db :$CODE_0DAB3E ; Slopes PtrsLong0DA48B: 75 B0 0D .dw CODE_0DB075 .db :$CODE_0DB075 ; Ledge edges PtrsLong0DA48E: D4 B1 0D .dw CODE_0DB1D4 .db :$CODE_0DB1D4 ; Ground ledge PtrsLong0DA491: 24 B2 0D .dw CODE_0DB224 .db :$CODE_0DB224 ; Midway/Goal point PtrsLong0DA494: 36 B3 0D .dw ADDR_0DB336 .db :$ADDR_0DB336 ; Blue coins PtrsLong0DA497: BD B3 0D .dw CODE_0DB3BD .db :$CODE_0DB3BD ; Rope/Clouds PtrsLong0DA49A: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (ani) PtrsLong0DA49D: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (not ani) PtrsLong0DA4A0: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Lava surface (ani) PtrsLong0DA4A3: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Net top edge PtrsLong0DA4A6: 2D B4 0D .dw CODE_0DB42D .db :$CODE_0DB42D ; Donut bridge PtrsLong0DA4A9: 61 B4 0D .dw CODE_0DB461 .db :$CODE_0DB461 ; Net bottom edge PtrsLong0DA4AC: 9E B4 0D .dw CODE_0DB49E .db :$CODE_0DB49E ; Net vertical edge PtrsLong0DA4AF: 1F B5 0D .dw CODE_0DB51F .db :$CODE_0DB51F ; Vert. Pipe/Bone/Log PtrsLong0DA4B2: 47 B5 0D .dw CODE_0DB547 .db :$CODE_0DB547 ; Horiz. Pipe/Bone/Log PtrsLong0DA4B5: C8 B1 0D .dw CODE_0DB1C8 .db :$CODE_0DB1C8 ; Long ground ledge PtrsLong0DA4B8: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DA4BB: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4BE: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4C1: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4C4: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4C7: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4CA: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4CD: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | Unused (LM will declare these to be "reserved" and won't let you use them) PtrsLong0DA4D0: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4D3: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4D6: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DA4D9: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DA4DC: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DA4DF: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ These could've been tileset specific, but Nintendo didn't have that many ideas for them. PtrsLong0DA4E2: 2C BB 0D .dw CODE_0DBB2C .db :$CODE_0DBB2C ; Ice blue vertical pipe PtrsLong0DA4E5: 63 BB 0D .dw CODE_0DBB63 .db :$CODE_0DBB63 ; Ice blue turn tiles PtrsLong0DA4E8: 16 B9 0D .dw CODE_0DB916 .db :$CODE_0DB916 ; Blue switch blocks PtrsLong0DA4EB: DC BA 0D .dw CODE_0DBADC .db :$CODE_0DBADC ; Forest tree top PtrsLong0DA4EE: 4C BA 0D .dw CODE_0DBA4C .db :$CODE_0DBA4C ; Solid left/right and top edge (forest) PtrsLong0DA4F1: 0A BA 0D .dw CODE_0DBA0A .db :$CODE_0DBA0A ; Ledge (forest) PtrsLong0DA4F4: C0 B9 0D .dw CODE_0DB9C0 .db :$CODE_0DB9C0 ; Large tree trunk (forest) PtrsLong0DA4F7: 66 B9 0D .dw CODE_0DB966 .db :$CODE_0DB966 ; Small tree trunk (forest) PtrsLong0DA4FA: 1E B9 0D .dw CODE_0DB91E .db :$CODE_0DB91E ; Red switch blocks PtrsLong0DA4FD: 3F B7 0D .dw CODE_0DB73F .db :$CODE_0DB73F ; Right facing diagonal pipe PtrsLong0DA500: AA B7 0D .dw CODE_0DB7AA .db :$CODE_0DB7AA ; Left facing diagonal ledge PtrsLong0DA503: 63 B8 0D .dw CODE_0DB863 .db :$CODE_0DB863 ; Right facing diagonal ledge PtrsLong0DA506: 04 B6 0D .dw CODE_0DB604 .db :$CODE_0DB604 ; Arch ledge PtrsLong0DA509: C3 B6 0D .dw CODE_0DB6C3 .db :$CODE_0DB6C3 ; Top cloud fringe PtrsLong0DA50C: 05 B7 0D .dw ADDR_0DB705 .db :$ADDR_0DB705 ; Left/right cloud fringe PtrsLong0DA50F: B7 B5 0D .dw CODE_0DB5B7 .db :$CODE_0DB5B7 ; Bushes 1 through 5 ;This is the screen exit routine. CODE_0DA512: A0 00 LDY.B #$00 ;\ Waste some time (you don't need to index an LDA [$00], morons) CODE_0DA514: B7 65 LDA [$65],Y ; |\ CODE_0DA516: 85 5A STA $5A ; |/ Get destination screen number, store in temporary address CODE_0DA518: C8 INY ; |\ CODE_0DA519: 98 TYA ; | | CODE_0DA51A: 18 CLC ; | | It's called INC $65 CODE_0DA51B: 65 65 ADC $65 ; | | CODE_0DA51D: 85 65 STA $65 ; |/ CODE_0DA51F: A5 66 LDA $66 ; | CODE_0DA521: 69 00 ADC.B #$00 ; | This big code increments the level data pointer (but why not simply REP #$20 INC $65 SEP #$20?) CODE_0DA523: 85 66 STA $66 ;/ CODE_0DA525: A5 0A LDA $0A ;\ CODE_0DA527: 29 1F AND.B #$1F ; | Get screen number to X CODE_0DA529: AA TAX ;/ CODE_0DA52A: A5 5A LDA $5A ;\ CODE_0DA52C: 9D B8 19 STA.W $19B8,X ;/ Store data from temporary variable in table (why not store directly to here? Morons...) CODE_0DA52F: A5 0B LDA $0B ;\ CODE_0DA531: 29 01 AND.B #$01 ; | Waste some MORE time, and also some RAM this time, this table isn't used ANYWHERE else than in this routine CODE_0DA533: 9D D8 19 STA.W $19D8,X ;/ CODE_0DA536: A5 0B LDA $0B ;\ CODE_0DA538: 4A LSR ; | Use Secondary Exits flag (finally something that makes sense) CODE_0DA539: 8D 93 1B STA.W $1B93 ;/ Return0DA53C: 60 RTS ; Return ;Compressed version of the above routine: ;LDA $0A : AND #$1F : TAX : LDA [$65] : STA $19B8,x : REP #$20 : INC $65 : SEP #$20 : LDA $0B : STA $1B93 : RTS ;This is the screen jump routine. It's so short that I fail to see any reason to add any more comments to it (except to flame the coders). CODE_0DA53D: A5 0A LDA $0A CODE_0DA53F: 29 1F AND.B #$1F ; The block number already is 0, morons CODE_0DA541: 8D 28 19 STA.W $1928 CODE_0DA544: 8D A1 1B STA.W $1BA1 ; Why two screen number flags? Even MORE moronic time wasting? Return0DA547: 60 RTS ; Return ;This code handles many single-tile objects. DATA_0DA548: .db $1F,$22,$24,$42,$43,$27,$29,$25 DATA_0DA550: .db $6E,$6F,$70,$71,$72,$45,$46,$47 DATA_0DA558: .db $48,$36,$37,$11,$12,$14,$15,$16 DATA_0DA560: .db $17,$18,$19,$1A,$1B,$1C,$29,$1D DATA_0DA568: .db $1F,$20,$21,$22,$23,$25,$26,$27 DATA_0DA570: .db $28,$2A,$DE,$E0,$E2,$E4,$EC,$ED DATA_0DA578: .db $2C,$25,$2D CODE_0DA57B: 8A TXA ;\ CODE_0DA57C: 38 SEC ; | CODE_0DA57D: E9 10 SBC.B #$10 ; | "Fix" object number CODE_0DA57F: 85 00 STA $00 ;/ CODE_0DA581: E0 18 CPX.B #$18 ;\ CODE_0DA583: 90 2C BCC CODE_0DA5B1 ; | CODE_0DA585: E0 1D CPX.B #$1D ; | Some objects have special behavior. This goes elsewhere with the "normal" ones. CODE_0DA587: B0 28 BCS CODE_0DA5B1 ;/ CODE_0DA589: AD BF 13 LDA.W $13BF ;\ CODE_0DA58C: 4A LSR ; | CODE_0DA58D: 4A LSR ; | CODE_0DA58E: 4A LSR ; | CODE_0DA58F: A8 TAY ; | Get level number to some index tables CODE_0DA590: AD BF 13 LDA.W $13BF ; | CODE_0DA593: 29 07 AND.B #$07 ; | CODE_0DA595: AA TAX ;/ CODE_0DA596: A5 00 LDA $00 ;\ CODE_0DA598: C9 08 CMP.B #$08 ; | The invisible 1up tiles doesn't use this code CODE_0DA59A: D0 0B BNE CODE_0DA5A7 ;/ CODE_0DA59C: B9 EE 1F LDA.W $1FEE,Y ;\ CODE_0DA59F: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | Check the flag for whether the moon has been taken in this level CODE_0DA5A3: F0 0C BEQ CODE_0DA5B1 ;/ CODE_0DA5A5: 80 09 BRA Return0DA5B0 ; Why not use RTS? CODE_0DA5A7: B9 3C 1F LDA.W $1F3C,Y ;\ CODE_0DA5AA: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | Check the flag for whether the invisible 1up has been taken in this level CODE_0DA5AE: F0 01 BEQ CODE_0DA5B1 ;/ Return0DA5B0: 60 RTS ; Return CODE_0DA5B1: A4 57 LDY $57 ; Position of the block CODE_0DA5B3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA5B6: A6 00 LDX $00 ; | CODE_0DA5B8: E0 13 CPX.B #$13 ; | Check and set which map16 page it uses CODE_0DA5BA: 30 03 BMI CODE_0DA5BF ; | CODE_0DA5BC: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DA5BF: BF 48 A5 0D LDA.L DATA_0DA548,X ; Get object number CODE_0DA5C3: 85 0C STA $0C ; Save it for later use CODE_0DA5C5: E0 01 CPX.B #$01 ;\ CODE_0DA5C7: F0 27 BEQ CODE_0DA5F0 ; | CODE_0DA5C9: E0 07 CPX.B #$07 ; | CODE_0DA5CB: F0 23 BEQ CODE_0DA5F0 ; | CODE_0DA5CD: E0 32 CPX.B #$32 ; | Check whether the object cares about item memory CODE_0DA5CF: F0 1F BEQ CODE_0DA5F0 ; | (invisible 1up block, green star block, Yoshi block, and star2/vine/1up does) CODE_0DA5D1: E0 26 CPX.B #$26 ; | CODE_0DA5D3: F0 1B BEQ CODE_0DA5F0 ; | CODE_0DA5D5: E0 1B CPX.B #$1B ; | CODE_0DA5D7: D0 6F BNE CODE_0DA648 ;/ CODE_0DA5D9: 98 TYA ;\ CODE_0DA5DA: 29 0F AND.B #$0F ; | CODE_0DA5DC: C9 01 CMP.B #$01 ; | CODE_0DA5DE: F0 10 BEQ CODE_0DA5F0 ; | CODE_0DA5E0: C9 04 CMP.B #$04 ; | CODE_0DA5E2: F0 0C BEQ CODE_0DA5F0 ; | Object 2B (vine/star2/1up mushroom) only cares about item memory on certain X positions CODE_0DA5E4: C9 07 CMP.B #$07 ; | CODE_0DA5E6: F0 08 BEQ CODE_0DA5F0 ; | CODE_0DA5E8: C9 0A CMP.B #$0A ; | CODE_0DA5EA: F0 04 BEQ CODE_0DA5F0 ; | CODE_0DA5EC: C9 0D CMP.B #$0D ; | CODE_0DA5EE: D0 58 BNE CODE_0DA648 ;/ CODE_0DA5F0: 8A TXA ;\ \ CODE_0DA5F1: 48 PHA ; | | CODE_0DA5F2: 98 TYA ; | | Preserve X and Y (why not PHX PHY?) CODE_0DA5F3: 48 PHA ; |/ CODE_0DA5F4: AE BE 13 LDX.W $13BE ; | This big code checks the item memory settings flag for the current object, and makes it add a brown used block if it has already been hit. CODE_0DA5F7: A9 F8 LDA.B #$F8 ; |\ CODE_0DA5F9: 18 CLC ; | | CODE_0DA5FA: 7F AE A8 0D ADC.L DATA_0DA8AE,X ; | | Low byte of pointer to item memory table CODE_0DA5FE: 85 08 STA $08 ; |/ CODE_0DA600: A9 19 LDA.B #$19 ; |\ CODE_0DA602: 7F B1 A8 0D ADC.L DATA_0DA8B1,X ; | | High byte of pointer CODE_0DA606: 85 09 STA $09 ; |/ CODE_0DA608: AD A1 1B LDA.W $1BA1 ; |\ CODE_0DA60B: 0A ASL ; | | CODE_0DA60C: 0A ASL ; | | Set screen number in index CODE_0DA60D: 85 0E STA $0E ; |/ CODE_0DA60F: A5 0A LDA $0A ; |\ CODE_0DA611: 29 10 AND.B #$10 ; | | CODE_0DA613: F0 06 BEQ CODE_0DA61B ; | | CODE_0DA615: A5 0E LDA $0E ; | | Set high Y byte in index CODE_0DA617: 09 02 ORA.B #$02 ; | | CODE_0DA619: 85 0E STA $0E ; |/ CODE_0DA61B: 98 TYA ; |\ CODE_0DA61C: 29 08 AND.B #$08 ; | | CODE_0DA61E: F0 06 BEQ CODE_0DA626 ; | | CODE_0DA620: A5 0E LDA $0E ; | | Set highest bit of X position in index CODE_0DA622: 09 01 ORA.B #$01 ; | | CODE_0DA624: 85 0E STA $0E ; |/ CODE_0DA626: A5 57 LDA $57 ; |\ CODE_0DA628: 29 07 AND.B #$07 ; | | Set another index to lowest three bits of X position CODE_0DA62A: AA TAX ; |/ CODE_0DA62B: A4 0E LDY $0E ; |\ CODE_0DA62D: B1 08 LDA ($08),Y ; | | CODE_0DA62F: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | | And load the bit we need CODE_0DA633: 85 0F STA $0F ; |/ CODE_0DA635: 68 PLA ; |\ CODE_0DA636: A8 TAY ; | | CODE_0DA637: 68 PLA ; | | Reload indexes CODE_0DA638: AA TAX ; |/ CODE_0DA639: A5 0F LDA $0F ; |\ CODE_0DA63B: F0 0B BEQ CODE_0DA648 ; |/ If bit is clear, do nothing CODE_0DA63D: E0 07 CPX.B #$07 ; |\ CODE_0DA63F: F0 0B BEQ Return0DA64C ; |/ If it's the green star block, don't generate used block...? This routine thinks that the green star block is 42, not 17 CODE_0DA641: 20 08 AA JSR.W Sta1To6ePointer ; |\ CODE_0DA644: A9 32 LDA.B #$32 ; | | Make it generate the used block CODE_0DA646: 85 0C STA $0C ;/ / CODE_0DA648: A5 0C LDA $0C ;\ CODE_0DA64A: 97 6B STA [$6B],Y ;/ Generate the tile it should generate Return0DA64C: 60 RTS ; Return ;This tiny code generates the green star block. CODE_0DA64D: A9 32 LDA.B #$32 ; Make the above routine think we're trying to generate object 42 CODE_0DA64F: 4C 7F A5 JMP.W CODE_0DA57F ; and go to the middle of the Fix Object Number code ;This is the code for the small slopes (no idea what they're good for). DATA_0DA652: .db $D8,$DB ; The leftmost blocks DATA_0DA654: .db $DA,$DC ; The rightmost blocks ADDR_0DA656: A4 57 LDY $57 ; Position of the block ADDR_0DA658: 8A TXA ;\ ADDR_0DA659: 38 SEC ; | ADDR_0DA65A: E9 42 SBC.B #$42 ; | Subtract $42 from object number (GAH CHANGE THE 0DA652/ETC INSTEAD, TIMEWASTERS) ADDR_0DA65C: AA TAX ;/ ADDR_0DA65D: 20 08 AA JSR.W Sta1To6ePointer ;\ GOD why not expand that inline? You're saving ONLY ONE BYTE! ADDR_0DA660: BF 52 A6 0D LDA.L DATA_0DA652,X ; | Add left block and update pointer ADDR_0DA664: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DA667: BF 54 A6 0D LDA.L DATA_0DA654,X ;\ ADDR_0DA66B: 97 6B STA [$6B],Y ; | Add right block (no need to update the pointer this time) ADDR_0DA66D: 20 08 AA JSR.W Sta1To6ePointer ;/ Return0DA670: 60 RTS ; Return ;This is the code for the triangles. DATA_0DA671: .db $B4,$B5 ; Top tiles CODE_0DA673: A4 57 LDY $57 ; Position of the block CODE_0DA675: 8A TXA ;\ CODE_0DA676: 38 SEC ; | CODE_0DA677: E9 44 SBC.B #$44 ; | Not another object number subtraction... CODE_0DA679: AA TAX ;/ CODE_0DA67A: BF 71 A6 0D LDA.L DATA_0DA671,X ;\ CODE_0DA67E: 97 6B STA [$6B],Y ;/ Set top tile CODE_0DA680: 20 08 AA JSR.W Sta1To6ePointer ; Not that one again... CODE_0DA683: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer/index downwards CODE_0DA686: A9 EB LDA.B #$EB ;\ CODE_0DA688: 97 6B STA [$6B],Y ; | Set bottom tile CODE_0DA68A: 20 08 AA JSR.W Sta1To6ePointer ;/ Return0DA68D: 60 RTS ; Return ;This is the code for the midway point. CODE_0DA68E: AE BF 13 LDX.W $13BF ;\ CODE_0DA691: BF A2 1E 00 LDA.L $001EA2,X ; | (Offtopic: Why use 24bit addressing? Morons...) CODE_0DA695: 29 40 AND.B #$40 ; | Check midway flag from table CODE_0DA697: D0 17 BNE Return0DA6B0 ;/ CODE_0DA699: AD CE 13 LDA.W $13CE ;\ CODE_0DA69C: D0 12 BNE Return0DA6B0 ;/ Check another midway flag CODE_0DA69E: A4 57 LDY $57 ; Position again CODE_0DA6A0: 88 DEY ; Odd... why is the left tile to the left of the actual object? CODE_0DA6A1: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ (Offtopic: Not ANOTHER four byte routine...) CODE_0DA6A4: A9 35 LDA.B #$35 ; | Set the left tile CODE_0DA6A6: 20 5B A9 JSR.W CODE_0DA95B ;/ (Offtopic: There's no way that this code will work around screen boundaries.) CODE_0DA6A9: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA6AC: A9 38 LDA.B #$38 ; | Set right tile CODE_0DA6AE: 97 6B STA [$6B],Y ;/ Return0DA6B0: 60 RTS ; Return ;Preserve data pointer CODE_0DA6B1: A5 6B LDA $6B CODE_0DA6B3: 85 04 STA $04 CODE_0DA6B5: A5 6C LDA $6C CODE_0DA6B7: 85 05 STA $05 Return0DA6B9: 60 RTS ; Return ;Reload data pointer CODE_0DA6BA: A5 04 LDA $04 CODE_0DA6BC: 85 6B STA $6B CODE_0DA6BE: 85 6E STA $6E CODE_0DA6C0: A5 05 LDA $05 CODE_0DA6C2: 85 6C STA $6C CODE_0DA6C4: 85 6F STA $6F CODE_0DA6C6: AD 28 19 LDA.W $1928 CODE_0DA6C9: 8D A1 1B STA.W $1BA1 Return0DA6CC: 60 RTS ; Return ;This is the code for the two-tiles-high tile doors (and the unused $98-$FF, which will generate garbage) DATA_0DA6CD: .db $1F,$27 ; Top tiles DATA_0DA6CF: .db $20,$28 ; Bottom tiles CODE_0DA6D1: A4 57 LDY $57 ; Position again CODE_0DA6D3: 8A TXA ;\ CODE_0DA6D4: 38 SEC ; | CODE_0DA6D5: E9 47 SBC.B #$47 ; | Load object type CODE_0DA6D7: AA TAX ;/ CODE_0DA6D8: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA6DB: BF CD A6 0D LDA.L DATA_0DA6CD,X ; | Set top tile CODE_0DA6DF: 97 6B STA [$6B],Y ;/ CODE_0DA6E1: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DA6E4: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA6E7: BF CF A6 0D LDA.L DATA_0DA6CF,X ; | Set bottom tile CODE_0DA6EB: 97 6B STA [$6B],Y ;/ Return0DA6ED: 60 RTS ; Return ;This is the code for the big bush. ;I know that this table uses nine bytes/row instead of eight, but it's much more readable that way. DATA_0DA6EE: .db $25,$25,$25,$4B,$4D,$4E,$25,$25,$25 DATA_0DA6F7: .db $25,$25,$54,$49,$49,$5F,$63,$25,$25 DATA_0DA700: .db $25,$25,$57,$49,$49,$52,$4A,$5D,$25 DATA_0DA709: .db $25,$5A,$49,$49,$50,$51,$4A,$60,$25 DATA_0DA712: .db $5A,$49,$49,$49,$53,$4A,$4A,$4A,$63 CODE_0DA71B: A4 57 LDY $57 ; Position CODE_0DA71D: A9 08 LDA.B #$08 ; Width CODE_0DA71F: 85 00 STA $00 CODE_0DA721: A9 04 LDA.B #$04 ; Height CODE_0DA723: 85 01 STA $01 CODE_0DA725: A2 00 LDX.B #$00 ; Block we're at CODE_0DA727: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve the pointer CODE_0DA72A: A5 00 LDA $00 ;\ CODE_0DA72C: 85 02 STA $02 ;/ Reload number of blocks in a row CODE_0DA72E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA731: BF EE A6 0D LDA.L DATA_0DA6EE,X ; | CODE_0DA735: 20 8D A7 JSR.W CODE_0DA78D ; | Add block and go to the next one CODE_0DA738: E8 INX ;/ CODE_0DA739: C6 02 DEC $02 ;\ CODE_0DA73B: 10 F1 BPL CODE_0DA72E ;/ Check for end of the line CODE_0DA73D: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DA740: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload pointer and move it downwards CODE_0DA743: C6 01 DEC $01 ;\ CODE_0DA745: 10 E3 BPL CODE_0DA72A ;/ Check for end of the bush Return0DA747: 60 RTS ; Return ;This is the code for the small bush. ;(yes, weird table width again) DATA_0DA748: .db $25,$25,$4B,$4C,$25,$25 DATA_0DA74E: .db $25,$54,$49,$5F,$63,$25 DATA_0DA754: .db $25,$57,$49,$52,$4A,$5D DATA_0DA75A: .db $5A,$49,$49,$49,$4F,$60 CODE_0DA760: A4 57 LDY $57 ; Position CODE_0DA762: A9 05 LDA.B #$05 ; Width CODE_0DA764: 85 00 STA $00 CODE_0DA766: A9 03 LDA.B #$03 ; Height CODE_0DA768: 85 01 STA $01 CODE_0DA76A: A2 00 LDX.B #$00 ; Block we're at CODE_0DA76C: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve the pointer CODE_0DA76F: A5 00 LDA $00 ;\ CODE_0DA771: 85 02 STA $02 ;/ Reload number of blocks in a row CODE_0DA773: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA776: BF 48 A7 0D LDA.L DATA_0DA748,X ; | CODE_0DA77A: 20 8D A7 JSR.W CODE_0DA78D ; | Add block and go to the next one CODE_0DA77D: E8 INX ;/ CODE_0DA77E: C6 02 DEC $02 ;\ CODE_0DA780: 10 F1 BPL CODE_0DA773 ;/ Check for end of the line CODE_0DA782: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DA785: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload pointer and move it downwards CODE_0DA788: C6 01 DEC $01 ;\ CODE_0DA78A: 10 E3 BPL CODE_0DA76F ;/ Check for end of the bush Return0DA78C: 60 RTS ; Return ;This code adds a tile for the bush. CODE_0DA78D: 85 0F STA $0F ; Preserve block to be written CODE_0DA78F: C9 25 CMP.B #$25 ;\ CODE_0DA791: D0 03 BNE CODE_0DA796 ; | If trying to write a blank tile, update the pointer without adding the block CODE_0DA793: 4C 5D A9 JMP.W CODE_0DA95D ;/ CODE_0DA796: C9 49 CMP.B #$49 ;\ CODE_0DA798: 90 12 BCC CODE_0DA7AC ; | CODE_0DA79A: C9 54 CMP.B #$54 ; | Don't change the single-color ones CODE_0DA79C: 90 0E BCC CODE_0DA7AC ;/ CODE_0DA79E: B7 6B LDA [$6B],Y ; Check what's about to be overwritten CODE_0DA7A0: C9 25 CMP.B #$25 ;\ CODE_0DA7A2: F0 08 BEQ CODE_0DA7AC ;/ If it's the blank one, don't CODE_0DA7A4: C9 49 CMP.B #$49 ;\ CODE_0DA7A6: F0 02 BEQ CODE_0DA7AA ;/ Tile 0x49 is the only "bright" one ADDR_0DA7A8: E6 0F INC $0F ;\ CODE_0DA7AA: E6 0F INC $0F ;/ Increase the value with a correct amount CODE_0DA7AC: A5 0F LDA $0F ;\ CODE_0DA7AE: 4C 5B A9 JMP.W CODE_0DA95B ;/ Load block number and add it ;This is the code for the net door. ;(yes I'm stubborn with that table width thingy) DATA_0DA7B1: .db $10,$11,$11,$12 DATA_0DA7B5: .db $13,$0B,$0B,$15 DATA_0DA7B9: .db $13,$0B,$0B,$15 DATA_0DA7BD: .db $16,$17,$17,$18 CODE_0DA7C1: A4 57 LDY $57 ; Position again... yawn CODE_0DA7C3: A2 00 LDX.B #$00 CODE_0DA7C5: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DA7C8: A9 03 LDA.B #$03 ; Number of lines CODE_0DA7CA: 85 02 STA $02 CODE_0DA7CC: BF B1 A7 0D LDA.L DATA_0DA7B1,X ;\ CODE_0DA7D0: 20 5B A9 JSR.W CODE_0DA95B ;/ Add block CODE_0DA7D3: E8 INX ;\ CODE_0DA7D4: C6 02 DEC $02 ; | Go to the next one CODE_0DA7D6: 10 F4 BPL CODE_0DA7CC ;/ CODE_0DA7D8: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DA7DB: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload and move pointer CODE_0DA7DE: E0 10 CPX.B #$10 ; Number of tiles CODE_0DA7E0: D0 E6 BNE CODE_0DA7C8 Return0DA7E2: 60 RTS ; Return ;Goal sign DATA_0DA7E3: .db $66,$67 DATA_0DA7E5: .db $68,$69 CODE_0DA7E7: A4 57 LDY $57 ; Position again... Nintendo should've added this in ExecutePtrLong instead CODE_0DA7E9: A2 00 LDX.B #$00 CODE_0DA7EB: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DA7EE: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA7F1: BF E3 A7 0D LDA.L DATA_0DA7E3,X ; | Add block CODE_0DA7F5: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DA7F8: E8 INX ;\ CODE_0DA7F9: 8A TXA ;/ Move to the next one CODE_0DA7FA: 29 01 AND.B #$01 ; Width... almost CODE_0DA7FC: D0 F0 BNE CODE_0DA7EE CODE_0DA7FE: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DA801: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload and change pointer CODE_0DA804: E0 04 CPX.B #$04 ; Number of tiles CODE_0DA806: D0 E6 BNE CODE_0DA7EE Return0DA808: 60 RTS ; Return ;Steep vertical-level-compatible slopes DATA_0DA809: .db $AA,$AF ; Top tiles DATA_0DA80B: .db $E2,$E4 ; Bottom tiles CODE_0DA80D: A4 57 LDY $57 ; Posi... you know CODE_0DA80F: 8A TXA ;\ CODE_0DA810: 38 SEC ; | CODE_0DA811: E9 91 SBC.B #$91 ; | "Fix" object number CODE_0DA813: AA TAX ;/ CODE_0DA814: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA817: BF 09 A8 0D LDA.L DATA_0DA809,X ; | Store top tile CODE_0DA81B: 97 6B STA [$6B],Y ;/ CODE_0DA81D: 20 2A A8 JSR.W CODE_0DA82A ; Update pointer CODE_0DA820: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA823: BF 0B A8 0D LDA.L DATA_0DA80B,X ; | Store bottom tile CODE_0DA827: 97 6B STA [$6B],Y ;/ Return0DA829: 60 RTS ; Return ;This moves the pointer downwards without breaking in vertical level boundaries. CODE_0DA82A: A5 57 LDA $57 ;\ CODE_0DA82C: 18 CLC ; | CODE_0DA82D: 69 10 ADC.B #$10 ; | Update position CODE_0DA82F: 85 57 STA $57 ;/ CODE_0DA831: A8 TAY ;\ CODE_0DA832: 90 09 BCC Return0DA83D ;/ Check for boundary CODE_0DA834: A5 6C LDA $6C ;\ CODE_0DA836: 18 CLC ; | CODE_0DA837: 69 02 ADC.B #$02 ; | Update pointer if needed (they're smarter than I thought, they didn't touch $6B, but it's still called INC) CODE_0DA839: 85 6C STA $6C ; | CODE_0DA83B: 85 6F STA $6F ;/ Return0DA83D: 60 RTS ; Return ;Normal vertical-level-compatible slopes (will break at horizontal boundaries, though) DATA_0DA83E: .db $96,$A0 ; Top left tile DATA_0DA840: .db $9B,$A5 ; Top right tile DATA_0DA842: .db $DE,$E6 ; Bottom left tile DATA_0DA844: .db $E6,$E0 ; Bottom right tile CODE_0DA846: A4 57 LDY $57 ; Position

YAWN

CODE_0DA848: 8A TXA ;\ CODE_0DA849: 38 SEC ; | CODE_0DA84A: E9 93 SBC.B #$93 ; | "Fix" object number CODE_0DA84C: AA TAX ;/ CODE_0DA84D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA850: BF 3E A8 0D LDA.L DATA_0DA83E,X ; | Top left tile CODE_0DA854: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DA857: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA85A: BF 40 A8 0D LDA.L DATA_0DA840,X ; | Top right tile CODE_0DA85E: 97 6B STA [$6B],Y ;/ CODE_0DA860: 20 2A A8 JSR.W CODE_0DA82A ; Update pointer CODE_0DA863: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA866: BF 42 A8 0D LDA.L DATA_0DA842,X ; | Bottom left tile CODE_0DA86A: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DA86D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA870: BF 44 A8 0D LDA.L DATA_0DA844,X ; | Bottom right tile CODE_0DA874: 97 6B STA [$6B],Y ;/ Return0DA876: 60 RTS ; Return ;This is the code for the very steep slopes (vertical level compatible). DATA_0DA877: .db $CA,$CC ; Top tile DATA_0DA879: .db $CB,$CD ; Middle tile DATA_0DA87B: .db $F1,$F2 ; Bottom tile CODE_0DA87D: A4 57 LDY $57 ; Position CODE_0DA87F: 8A TXA ;\ CODE_0DA880: 38 SEC ; | CODE_0DA881: E9 95 SBC.B #$95 ; | "Fix" object number CODE_0DA883: AA TAX ;/ CODE_0DA884: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA887: BF 77 A8 0D LDA.L DATA_0DA877,X ; | Add object CODE_0DA88B: 97 6B STA [$6B],Y ;/ CODE_0DA88D: 20 2A A8 JSR.W CODE_0DA82A ; Update pointer CODE_0DA890: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA893: BF 79 A8 0D LDA.L DATA_0DA879,X ; | Add object CODE_0DA897: 97 6B STA [$6B],Y ;/ CODE_0DA899: 20 2A A8 JSR.W CODE_0DA82A ; Update pointer CODE_0DA89C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DA89F: BF 7B A8 0D LDA.L DATA_0DA87B,X ; | Add object CODE_0DA8A3: 97 6B STA [$6B],Y ;/ Return0DA8A5: 60 RTS ; Return DATA_0DA8A6: .db $80,$40,$20,$10,$08,$04,$02,$01 ; Useful table if you want tables of one bit/e.g. level instead of one byte/level, but why repeat it this much? ;This code handles many objects. DATA_0DA8AE: .db $00,$80,$00 ; Low bytes of offsets to sprite memory table DATA_0DA8B1: .db $00,$00,$01 ; High bytes of offsets to sprite memory table DATA_0DA8B4: .db $02,$21,$23,$2A,$2B,$3F,$03,$13 ; List of objects DATA_0DA8BC: .db $1E,$24,$2E,$2F,$30,$32,$65 CODE_0DA8C3: A4 57 LDY $57 ; Position CODE_0DA8C5: A5 59 LDA $59 ;\ CODE_0DA8C7: 29 0F AND.B #$0F ; | CODE_0DA8C9: 85 00 STA $00 ; | Extract width CODE_0DA8CB: 85 02 STA $02 ;/ CODE_0DA8CD: A5 59 LDA $59 ;\ CODE_0DA8CF: 4A LSR ; | CODE_0DA8D0: 4A LSR ; | CODE_0DA8D1: 4A LSR ; | Extract height CODE_0DA8D2: 4A LSR ; | CODE_0DA8D3: 85 01 STA $01 ;/ CODE_0DA8D5: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DA8D8: E0 04 CPX.B #$04 ;\ CODE_0DA8DA: D0 52 BNE CODE_0DA92E ;/ Only coins cares about sprite memory CODE_0DA8DC: 8A TXA ;\ \ CODE_0DA8DD: 48 PHA ; | | CODE_0DA8DE: 98 TYA ; | | Preserve X and Y (why not PHX PHY?) CODE_0DA8DF: 48 PHA ; |/ CODE_0DA8E0: AE BE 13 LDX.W $13BE ; | This big code checks the item memory settings flag for the current object, and makes it generate nothing if it has already been taken. You'll get some lulzy results if you build your level so that an area with a big bunch of coins can be reentered CODE_0DA8E3: A9 F8 LDA.B #$F8 ; |\ CODE_0DA8E5: 18 CLC ; | | CODE_0DA8E6: 7F AE A8 0D ADC.L DATA_0DA8AE,X ; | | Low byte of pointer to item memory table CODE_0DA8EA: 85 08 STA $08 ; |/ CODE_0DA8EC: A9 19 LDA.B #$19 ; |\ CODE_0DA8EE: 7F B1 A8 0D ADC.L DATA_0DA8B1,X ; | | High byte of pointer CODE_0DA8F2: 85 09 STA $09 ; |/ CODE_0DA8F4: AD A1 1B LDA.W $1BA1 ; |\ CODE_0DA8F7: 0A ASL ; | | CODE_0DA8F8: 0A ASL ; | | Set screen number in index CODE_0DA8F9: 85 0E STA $0E ; |/ CODE_0DA8FB: A5 0A LDA $0A ; |\ CODE_0DA8FD: 29 10 AND.B #$10 ; | | CODE_0DA8FF: F0 06 BEQ CODE_0DA907 ; | | CODE_0DA901: A5 0E LDA $0E ; | | Set high Y bit in index CODE_0DA903: 09 02 ORA.B #$02 ; | | CODE_0DA905: 85 0E STA $0E ; |/ CODE_0DA907: 98 TYA ; |\ CODE_0DA908: 29 08 AND.B #$08 ; | | CODE_0DA90A: F0 06 BEQ CODE_0DA912 ; | | CODE_0DA90C: A5 0E LDA $0E ; | | Set highest bit of X position in index CODE_0DA90E: 09 01 ORA.B #$01 ; | | CODE_0DA910: 85 0E STA $0E ; |/ CODE_0DA912: 98 TYA ; |\ CODE_0DA913: 29 07 AND.B #$07 ; | | Set another index to lowest three bits of X position CODE_0DA915: AA TAX ; |/ CODE_0DA916: A4 0E LDY $0E ; |\ CODE_0DA918: B1 08 LDA ($08),Y ; | | CODE_0DA91A: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | | And load the bit we need CODE_0DA91E: 85 0F STA $0F ; |/ CODE_0DA920: 68 PLA ; |\ CODE_0DA921: A8 TAY ; | | CODE_0DA922: 68 PLA ; | | Reload indexes CODE_0DA923: AA TAX ; |/ CODE_0DA924: A5 0F LDA $0F ; |\ CODE_0DA926: F0 06 BEQ CODE_0DA92E ; |/ If it hasn't been taken, run standard code CODE_0DA928: 20 5D A9 JSR.W CODE_0DA95D ; |\ CODE_0DA92B: 4C 43 A9 JMP.W CODE_0DA943 ;/ / If it has been taken, update pointer and move on CODE_0DA92E: BF B4 A8 0D LDA.L DATA_0DA8B4,X ;\ CODE_0DA932: 85 0C STA $0C ;/ Get object number CODE_0DA934: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DA937: E0 07 CPX.B #$07 ; | CODE_0DA939: 30 03 BMI CODE_0DA93E ; | Set map16 page CODE_0DA93B: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DA93E: A5 0C LDA $0C ;\ CODE_0DA940: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DA943: C6 02 DEC $02 ;\ CODE_0DA945: A5 02 LDA $02 ; | Check for end of the line CODE_0DA947: 10 8F BPL CODE_0DA8D8 ;/ CODE_0DA949: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DA94C: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DA94F: A5 00 LDA $00 ; | Go to next line CODE_0DA951: 85 02 STA $02 ;/ CODE_0DA953: C6 01 DEC $01 ;\ CODE_0DA955: 30 03 BMI Return0DA95A ; | Check for end of the object CODE_0DA957: 4C D8 A8 JMP.W CODE_0DA8D8 ;/ Return0DA95A: 60 RTS ; Return ;This is the code to add a tile and move the pointer/index one tile to the right. CODE_0DA95B: 97 6B STA [$6B],Y ; Add block CODE_0DA95D: C8 INY ; Increase index CODE_0DA95E: 98 TYA ;\ CODE_0DA95F: 29 0F AND.B #$0F ; | Check whether we hit a horizontal screen boundary CODE_0DA961: D0 19 BNE Return0DA97C ;/ CODE_0DA963: A5 6B LDA $6B ;\ CODE_0DA965: 18 CLC ; | CODE_0DA966: 69 B0 ADC.B #$B0 ; | CODE_0DA968: 85 6B STA $6B ; | CODE_0DA96A: 85 6E STA $6E ; | Increase pointer CODE_0DA96C: A5 6C LDA $6C ; | CODE_0DA96E: 69 01 ADC.B #$01 ; | CODE_0DA970: 85 6C STA $6C ; | CODE_0DA972: 85 6F STA $6F ;/ CODE_0DA974: EE A1 1B INC.W $1BA1 ; Increase screen number CODE_0DA977: A5 57 LDA $57 ;\ CODE_0DA979: 29 F0 AND.B #$F0 ; | Load new index CODE_0DA97B: A8 TAY ;/ Return0DA97C: 60 RTS ; Return ;This is the code to move the pointer down one tile from the starting position. CODE_0DA97D: A5 57 LDA $57 ;\ CODE_0DA97F: 18 CLC ; | CODE_0DA980: 69 10 ADC.B #$10 ; | Increase pointer CODE_0DA982: 85 57 STA $57 ;/ CODE_0DA984: A8 TAY ;\ CODE_0DA985: 90 0A BCC Return0DA991 ;/ Check for screen boundaries CODE_0DA987: A5 6C LDA $6C ;\ CODE_0DA989: 69 00 ADC.B #$00 ; | CODE_0DA98B: 85 6C STA $6C ; | Update pointer CODE_0DA98D: 85 6F STA $6F ;/ CODE_0DA98F: 85 05 STA $05 ; Update preserved pointer Return0DA991: 60 RTS ; Return ;Move pointer down and left CODE_0DA992: A5 57 LDA $57 ;\ CODE_0DA994: 18 CLC ; | CODE_0DA995: 69 0F ADC.B #$0F ; | Move index a bit CODE_0DA997: A8 TAY ;/ CODE_0DA998: 90 03 BCC CODE_0DA99D ; Check if we hit a horizontal subscreen boundary ADDR_0DA99A: 20 87 A9 JSR.W CODE_0DA987 ; Move pointer down if needed CODE_0DA99D: 98 TYA ;\ CODE_0DA99E: 29 0F AND.B #$0F ; | CODE_0DA9A0: C9 0F CMP.B #$0F ; | Check if we hit a vertical subscreen boundary CODE_0DA9A2: D0 0D BNE CODE_0DA9B1 ;/ CODE_0DA9A4: 98 TYA ;\ CODE_0DA9A5: 18 CLC ; | CODE_0DA9A6: 69 10 ADC.B #$10 ; | Move index down CODE_0DA9A8: A8 TAY ;/ CODE_0DA9A9: 90 03 BCC CODE_0DA9AE ;\ ADDR_0DA9AB: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer down if needed CODE_0DA9AE: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer leftwards CODE_0DA9B1: 84 57 STY $57 ; Save index Return0DA9B3: 60 RTS ; Return ;Move pointer down and right CODE_0DA9B4: A5 57 LDA $57 ;\ CODE_0DA9B6: 18 CLC ; | CODE_0DA9B7: 69 11 ADC.B #$11 ; | Move index a bit CODE_0DA9B9: A8 TAY ;/ CODE_0DA9BA: 90 03 BCC CODE_0DA9BF ; Check if we hit a horizontal subscreen boundary ADDR_0DA9BC: 20 87 A9 JSR.W CODE_0DA987 ; Move pointer down if needed CODE_0DA9BF: 98 TYA ;\ CODE_0DA9C0: 29 0F AND.B #$0F ; | CODE_0DA9C2: C9 01 CMP.B #$01 ; | Check if we hit a vertical subscreen boundary CODE_0DA9C4: 10 0D BPL CODE_0DA9D3 ;/ CODE_0DA9C6: 98 TYA ;\ CODE_0DA9C7: 38 SEC ; | CODE_0DA9C8: E9 10 SBC.B #$10 ; | Move index back up CODE_0DA9CA: A8 TAY ;/ CODE_0DA9CB: B0 03 BCS CODE_0DA9D0 ;\ ADDR_0DA9CD: 20 87 A9 JSR.W CODE_0DA987 ;/ Update preserved pointer? Waste of time since $0DA9EF does this anyways. CODE_0DA9D0: 20 EF A9 JSR.W CODE_0DA9EF ; Move pointer rightwards CODE_0DA9D3: 84 57 STY $57 ; Save index Return0DA9D5: 60 RTS ; Return ;This code goes back one screen. Also updates preserved pointer. CODE_0DA9D6: A5 6B LDA $6B CODE_0DA9D8: 38 SEC CODE_0DA9D9: E9 B0 SBC.B #$B0 CODE_0DA9DB: 85 6B STA $6B CODE_0DA9DD: 85 6E STA $6E CODE_0DA9DF: 85 04 STA $04 CODE_0DA9E1: A5 6C LDA $6C CODE_0DA9E3: E9 01 SBC.B #$01 CODE_0DA9E5: 85 6C STA $6C CODE_0DA9E7: 85 6F STA $6F CODE_0DA9E9: 85 05 STA $05 CODE_0DA9EB: CE A1 1B DEC.W $1BA1 Return0DA9EE: 60 RTS ; Return ;This code goes forwards one screen. Also updates preserved pointer. CODE_0DA9EF: A5 6B LDA $6B CODE_0DA9F1: 18 CLC CODE_0DA9F2: 69 B0 ADC.B #$B0 CODE_0DA9F4: 85 6B STA $6B CODE_0DA9F6: 85 6E STA $6E CODE_0DA9F8: 85 04 STA $04 CODE_0DA9FA: A5 6C LDA $6C CODE_0DA9FC: 69 01 ADC.B #$01 CODE_0DA9FE: 85 6C STA $6C CODE_0DAA00: 85 6F STA $6F CODE_0DAA02: 85 05 STA $05 CODE_0DAA04: EE A1 1B INC.W $1BA1 Return0DAA07: 60 RTS ; Return ;This one sets the map16 page for the current object to #01. Sta1To6ePointer: A9 01 LDA.B #$01 ; This one is FAR too short to put any comments on. CODE_0DAA0A: 97 6E STA [$6E],Y Return0DAA0C: 60 RTS ; Return ;This one sets the map16 page for the current object to #00. StzTo6ePointer0080E7:A9 00 LDA.B #$00 ; Why make routines that are this short? (Also, where did the 0080E7 come from?) CODE_0DAA0F: 97 6E STA [$6E],Y Return0DAA11: 60 RTS ; Return ;This is the code for the vertical pipes. DATA_0DAA12: .db $33,$37,$39,$00,$00 ; Top left tiles (the 00's are unused) DATA_0DAA17: .db $34,$38,$3A,$00,$00 ; Top right tiles (the 00's are unused) DATA_0DAA1C: .db $00,$00,$39,$33,$37 ; Bottom left tiles (the 00's are unused) DATA_0DAA21: .db $00,$00,$3A,$34,$38 ; Bottom right tiles (the 00's are unused) CODE_0DAA26: A4 57 LDY $57 ; Position CODE_0DAA28: A5 59 LDA $59 ;\ CODE_0DAA2A: 4A LSR ; | CODE_0DAA2B: 4A LSR ; | CODE_0DAA2C: 4A LSR ; | Extract height CODE_0DAA2D: 4A LSR ; | CODE_0DAA2E: 85 00 STA $00 ;/ CODE_0DAA30: A5 59 LDA $59 ;\ CODE_0DAA32: 29 0F AND.B #$0F ; | Extract type CODE_0DAA34: AA TAX ;/ CODE_0DAA35: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DAA38: E0 03 CPX.B #$03 ;\ CODE_0DAA3A: 10 16 BPL CODE_0DAA52 ;/ Don't add the left end for the ones that shouldn't have it (I think) CODE_0DAA3C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA3F: BF 12 AA 0D LDA.L DATA_0DAA12,X ; | Add left tile CODE_0DAA43: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAA46: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA49: BF 17 AA 0D LDA.L DATA_0DAA17,X ; | Add right tile CODE_0DAA4D: 97 6B STA [$6B],Y ;/ CODE_0DAA4F: 4C 77 AA JMP.W CODE_0DAA77 CODE_0DAA52: E0 05 CPX.B #$05 ;\ CODE_0DAA54: D0 12 BNE CODE_0DAA68 ;/ Check for the endless vertical pipe CODE_0DAA56: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA59: A9 68 LDA.B #$68 ; | Add left tile CODE_0DAA5B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAA5E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA61: A9 69 LDA.B #$69 ; | Add right tile CODE_0DAA63: 97 6B STA [$6B],Y ;/ CODE_0DAA65: 4C 77 AA JMP.W CODE_0DAA77 CODE_0DAA68: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA6B: A9 35 LDA.B #$35 ; | Left tile CODE_0DAA6D: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAA70: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA73: A9 36 LDA.B #$36 ; | Right tile CODE_0DAA75: 97 6B STA [$6B],Y ;/ CODE_0DAA77: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAA7A: 20 7D A9 JSR.W CODE_0DA97D ; Go to next row CODE_0DAA7D: E0 05 CPX.B #$05 ;\ CODE_0DAA7F: F0 04 BEQ CODE_0DAA85 ; | CODE_0DAA81: E0 02 CPX.B #$02 ; | Check if the object has a special bottom CODE_0DAA83: 10 07 BPL CODE_0DAA8C ;/ CODE_0DAA85: C6 00 DEC $00 ;\ CODE_0DAA87: 10 C9 BPL CODE_0DAA52 ; | Check for end of the object (also, it's called RTS, not JMP *insert address of an RTS*) CODE_0DAA89: 4C A3 AA JMP.W Return0DAAA3 ;/ CODE_0DAA8C: C6 00 DEC $00 ;\ CODE_0DAA8E: D0 D8 BNE CODE_0DAA68 ;/ Check if this is the last tile CODE_0DAA90: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA93: BF 1C AA 0D LDA.L DATA_0DAA1C,X ; | Left tile CODE_0DAA97: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAA9A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAA9D: BF 21 AA 0D LDA.L DATA_0DAA21,X ; | Right tile CODE_0DAAA1: 97 6B STA [$6B],Y ;/ Return0DAAA3: 60 RTS ; Return ;Horizontal pipes DATA_0DAAA4: .db $3B,$3C DATA_0DAAA6: .db $3B,$3F ; End tiles (top then bottom) DATA_0DAAA8: .db $3B,$3C DATA_0DAAAA: .db $3B,$3F DATA_0DAAAC: .db $3D,$3E DATA_0DAAAE: .db $3D,$3E ; Middle tiles (top then bottom) DATA_0DAAB0: .db $3D,$3E DATA_0DAAB2: .db $3D,$3E CODE_0DAAB4: A4 57 LDY $57 ; Position CODE_0DAAB6: A5 59 LDA $59 ;\ CODE_0DAAB8: 29 0F AND.B #$0F ; | CODE_0DAABA: 85 00 STA $00 ; | Extract size CODE_0DAABC: 85 01 STA $01 ;/ CODE_0DAABE: A5 59 LDA $59 ;\ CODE_0DAAC0: 29 F0 AND.B #$F0 ; | CODE_0DAAC2: 4A LSR ; | CODE_0DAAC3: 4A LSR ; | Extract type CODE_0DAAC4: 4A LSR ; | CODE_0DAAC5: AA TAX ;/ CODE_0DAAC6: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DAAC9: E0 04 CPX.B #$04 ;\ CODE_0DAACB: 10 0D BPL CODE_0DAADA ;/ Go to another part of the code if it's an end-on-right pipe CODE_0DAACD: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAAD0: BF A4 AA 0D LDA.L DATA_0DAAA4,X ; | Add ending tile CODE_0DAAD4: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAAD7: 4C E4 AA JMP.W CODE_0DAAE4 CODE_0DAADA: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAADD: BF AC AA 0D LDA.L DATA_0DAAAC,X ; | Add middle tiles CODE_0DAAE1: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAAE4: E0 04 CPX.B #$04 ;\ CODE_0DAAE6: 10 07 BPL CODE_0DAAEF ;/ Add end of end-on-right pipes CODE_0DAAE8: C6 01 DEC $01 ;\ CODE_0DAAEA: 10 EE BPL CODE_0DAADA ; | Check for end of line (also, it's called BRA, morons) CODE_0DAAEC: 4C FC AA JMP.W CODE_0DAAFC ;/ CODE_0DAAEF: C6 01 DEC $01 ;\ CODE_0DAAF1: D0 D6 BNE CODE_0DAAC9 ;/ Check for end of line CODE_0DAAF3: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAAF6: BF A4 AA 0D LDA.L DATA_0DAAA4,X ; | Add ending tile CODE_0DAAFA: 97 6B STA [$6B],Y ;/ CODE_0DAAFC: A5 00 LDA $00 ;\ CODE_0DAAFE: 85 01 STA $01 ;/ Reload size CODE_0DAB00: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAB03: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DAB06: E8 INX ;/ Go to the next line CODE_0DAB07: 8A TXA ;\ CODE_0DAB08: 29 01 AND.B #$01 ; | Check for end of the block CODE_0DAB0A: D0 BD BNE CODE_0DAAC9 ;/ Return0DAB0C: 60 RTS ; Return ;Bullet shooter CODE_0DAB0D: A4 57 LDY $57 ; Position CODE_0DAB0F: A5 59 LDA $59 ;\ CODE_0DAB11: 4A LSR ; | CODE_0DAB12: 4A LSR ; | CODE_0DAB13: 4A LSR ; | Extract height (the width bits are obviously unused) CODE_0DAB14: 4A LSR ; | CODE_0DAB15: AA TAX ;/ CODE_0DAB16: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB19: A9 41 LDA.B #$41 ; | Add top tile CODE_0DAB1B: 97 6B STA [$6B],Y ;/ CODE_0DAB1D: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DAB20: CA DEX ; | Go to next tile and check for end of the object CODE_0DAB21: 30 1A BMI Return0DAB3D ;/ CODE_0DAB23: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB26: A9 42 LDA.B #$42 ; | Add middle tile CODE_0DAB28: 97 6B STA [$6B],Y ;/ CODE_0DAB2A: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DAB2D: CA DEX ; | Go to next tile and check for end of the object CODE_0DAB2E: 30 0D BMI Return0DAB3D ;/ CODE_0DAB30: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB33: A9 43 LDA.B #$43 ; | Add bottom tiles CODE_0DAB35: 97 6B STA [$6B],Y ;/ CODE_0DAB37: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DAB3A: CA DEX ; | Go to next tile and check for end of the object CODE_0DAB3B: 10 F3 BPL CODE_0DAB30 ;/ Return0DAB3D: 60 RTS ; Return ;Slopes (what a big code...) CODE_0DAB3E: A5 59 LDA $59 ;\ CODE_0DAB40: 29 0F AND.B #$0F ;/ Get type... CODE_0DAB42: C9 0A CMP.B #$0A ;\ CODE_0DAB44: 30 06 BMI CODE_0DAB4C ; | ADDR_0DAB46: 38 SEC ; | ...modulo 10 for some reason ADDR_0DAB47: E9 0A SBC.B #$0A ; | ADDR_0DAB49: 4C 42 AB JMP.W CODE_0DAB42 ;/ CODE_0DAB4C: 22 FA 86 00 JSL.L ExecutePtrLong PtrsLong0DAB50: 6E AB 0D .dw CODE_0DAB6E .db :$CODE_0DAB6E ; Normal slope left 21 AC 0D .dw CODE_0DAC21 .db :$CODE_0DAC21 ; Steep slope left 92 AC 0D .dw CODE_0DAC92 .db :$CODE_0DAC92 ; Gradual slope left 44 AD 0D .dw CODE_0DAD44 .db :$CODE_0DAD44 ; Normal slope right A3 AD 0D .dw CODE_0DADA3 .db :$CODE_0DADA3 ; Steep slope right EB AD 0D .dw CODE_0DADEB .db :$CODE_0DADEB ; Gradual slope right 6D AE 0D .dw CODE_0DAE6D .db :$CODE_0DAE6D ; Normal slope left upside down FC AE 0D .dw CODE_0DAEFC .db :$CODE_0DAEFC ; Normal slope right upside down 61 AF 0D .dw CODE_0DAF61 .db :$CODE_0DAF61 ; Steep slope left upside down EA AF 0D .dw CODE_0DAFEA .db :$CODE_0DAFEA ; Steep slope right upside down ;Normal slope left CODE_0DAB6E: A4 57 LDY $57 ; The obligatory position loading! CODE_0DAB70: A9 01 LDA.B #$01 ;\ CODE_0DAB72: 85 02 STA $02 ; | Number of tiles on the top, I guess CODE_0DAB74: 85 00 STA $00 ;/ CODE_0DAB76: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DAB79: A5 59 LDA $59 ;\ CODE_0DAB7B: 4A LSR ; | CODE_0DAB7C: 4A LSR ; | CODE_0DAB7D: 4A LSR ; | Get size (lol @ storing to $00 twice and not using INC A) CODE_0DAB7E: 4A LSR ; | CODE_0DAB7F: 85 00 STA $00 ; | CODE_0DAB81: E6 00 INC $00 ;/ CODE_0DAB83: A6 02 LDX $02 ; Reload size CODE_0DAB85: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB88: A9 96 LDA.B #$96 ; | Add top left tile, or whatever I should call it CODE_0DAB8A: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DAB8D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB90: A9 9B LDA.B #$9B ; | Add to right tile CODE_0DAB92: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DAB95: CA DEX ;\ CODE_0DAB96: CA DEX ; | Go to next tiles CODE_0DAB97: 30 1F BMI CODE_0DABB8 ;/ CODE_0DAB99: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAB9C: A9 DE LDA.B #$DE ; | Add bottom left tile CODE_0DAB9E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DABA1: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DABA4: A9 E6 LDA.B #$E6 ; | Add bottom right tile (identical to 0x03F) CODE_0DABA6: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DABA9: CA DEX ;\ CODE_0DABAA: 4C B5 AB JMP.W CODE_0DABB5 ;/ Go to next tiles CODE_0DABAD: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DABB0: A9 3F LDA.B #$3F ; | CODE_0DABB2: 20 5B A9 JSR.W CODE_0DA95B ; | Add 0x03F tiles CODE_0DABB5: CA DEX ; | CODE_0DABB6: 10 F5 BPL CODE_0DABAD ;/ CODE_0DABB8: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DABBB: E6 02 INC $02 ;\ CODE_0DABBD: E6 02 INC $02 ; | Update size CODE_0DABBF: C6 00 DEC $00 ;/ CODE_0DABC1: F0 29 BEQ CODE_0DABEC ; Check for last row (that one doesn't contain 0x196 nor 0x19B) CODE_0DABC3: 10 03 BPL CODE_0DABC8 ;\ CODE_0DABC5: 4C F6 AB JMP.W Return0DABF6 ;/ Check for end of the object CODE_0DABC8: A5 57 LDA $57 ;\ \ CODE_0DABCA: 18 CLC ; | | CODE_0DABCB: 69 0E ADC.B #$0E ; | | CODE_0DABCD: A8 TAY ; | | Move pointer right or left/down CODE_0DABCE: 90 03 BCC CODE_0DABD3 ; | | ADDR_0DABD0: 20 87 A9 JSR.W CODE_0DA987 ; |/ CODE_0DABD3: 98 TYA ; |\ CODE_0DABD4: 29 0F AND.B #$0F ; | | CODE_0DABD6: C9 0E CMP.B #$0E ; | | Check whether the pointer was moved right or left/down and return if it's left/down CODE_0DABD8: 30 0D BMI CODE_0DABE7 ; |/ CODE_0DABDA: 98 TYA ; |\ CODE_0DABDB: 18 CLC ; | | CODE_0DABDC: 69 10 ADC.B #$10 ; | | Move pointer downwards CODE_0DABDE: A8 TAY ; |/ CODE_0DABDF: 90 03 BCC CODE_0DABE4 ; |\ ADDR_0DABE1: 20 87 A9 JSR.W CODE_0DA987 ; | | Update screen number CODE_0DABE4: 20 D6 A9 JSR.W CODE_0DA9D6 ; |/ CODE_0DABE7: 84 57 STY $57 ; | This big code moves the pointer/index leftwards and downwards. CODE_0DABE9: 4C 83 AB JMP.W CODE_0DAB83 ;/ CODE_0DABEC: A6 02 LDX $02 ;\ CODE_0DABEE: CA DEX ; | CODE_0DABEF: CA DEX ; | Update pointers and restart loop CODE_0DABF0: 20 7D A9 JSR.W CODE_0DA97D ; | CODE_0DABF3: 4C 99 AB JMP.W CODE_0DAB99 ;/ Return0DABF6: 60 RTS ; Return ;This code adds a tile for the slopes (only used for the ones with blank pixels on them) DATA_0DABF7: .db $3F,$01,$03 ; Table for tiles to change when we're on DATA_0DABFA: .db $01,$03,$04 ; Table of what number to add when we're on one of those special tiles CODE_0DABFD: 85 0C STA $0C ;\ CODE_0DABFF: 8A TXA ; | Preserve some stuff (also, it's still called PHX) CODE_0DAC00: 48 PHA ;/ CODE_0DAC01: A2 02 LDX.B #$02 ;\ CODE_0DAC03: B7 6B LDA [$6B],Y ; | CODE_0DAC05: DF F7 AB 0D CMP.L DATA_0DABF7,X ; | CODE_0DAC09: F0 06 BEQ CODE_0DAC11 ; | Check for those special tiles CODE_0DAC0B: CA DEX ; | CODE_0DAC0C: 10 F7 BPL CODE_0DAC05 ; | CODE_0DAC0E: 4C 1A AC JMP.W CODE_0DAC1A ;/ CODE_0DAC11: A5 0C LDA $0C ;\ CODE_0DAC13: 18 CLC ; | CODE_0DAC14: 7F FA AB 0D ADC.L DATA_0DABFA,X ; | Increase tile number CODE_0DAC18: 85 0C STA $0C ;/ CODE_0DAC1A: 68 PLA ;\ CODE_0DAC1B: AA TAX ; | Reload this stuff CODE_0DAC1C: A5 0C LDA $0C ;/ CODE_0DAC1E: 4C 5B A9 JMP.W CODE_0DA95B ; And add the tile (also, I didn't expect you to be smart enough to not use JSR RTS) ;Steep slope left CODE_0DAC21: A4 57 LDY $57 ; Position CODE_0DAC23: A5 59 LDA $59 ;\ CODE_0DAC25: 4A LSR ; | CODE_0DAC26: 4A LSR ; | CODE_0DAC27: 4A LSR ; | Size CODE_0DAC28: 4A LSR ; | CODE_0DAC29: 85 00 STA $00 ; | CODE_0DAC2B: E6 00 INC $00 ;/ CODE_0DAC2D: A9 00 LDA.B #$00 ;\ CODE_0DAC2F: 85 02 STA $02 ;/ It's called STZ, morons CODE_0DAC31: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DAC34: A6 02 LDX $02 ; Load size CODE_0DAC36: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAC39: A9 AA LDA.B #$AA ; | Add top tile CODE_0DAC3B: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DAC3E: CA DEX ;\ CODE_0DAC3F: 30 16 BMI CODE_0DAC57 ;/ Go to next tile and check for end of object CODE_0DAC41: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAC44: A9 E2 LDA.B #$E2 ; | Add bottom tile CODE_0DAC46: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAC49: 4C 54 AC JMP.W CODE_0DAC54 CODE_0DAC4C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DAC4F: A9 3F LDA.B #$3F ; | CODE_0DAC51: 20 5B A9 JSR.W CODE_0DA95B ; | Add ground tiles CODE_0DAC54: CA DEX ; | CODE_0DAC55: 10 F5 BPL CODE_0DAC4C ;/ CODE_0DAC57: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAC5A: E6 02 INC $02 ;\ CODE_0DAC5C: C6 00 DEC $00 ;/ Update indexes CODE_0DAC5E: F0 29 BEQ CODE_0DAC89 ; The last line doesn't have any 0x1AA tile CODE_0DAC60: 10 03 BPL CODE_0DAC65 ;\ CODE_0DAC62: 4C 91 AC JMP.W Return0DAC91 ;/ Check for end of the object CODE_0DAC65: A5 57 LDA $57 ;\ \ CODE_0DAC67: 18 CLC ; | | CODE_0DAC68: 69 0F ADC.B #$0F ; | | CODE_0DAC6A: A8 TAY ; | | Move pointer right or left/down CODE_0DAC6B: 90 03 BCC CODE_0DAC70 ; | | CODE_0DAC6D: 20 87 A9 JSR.W CODE_0DA987 ; |/ CODE_0DAC70: 98 TYA ; |\ CODE_0DAC71: 29 0F AND.B #$0F ; | | CODE_0DAC73: C9 0F CMP.B #$0F ; | | Check whether the pointer was moved right or left/down and return if it's left/down CODE_0DAC75: D0 0D BNE CODE_0DAC84 ; |/ CODE_0DAC77: 98 TYA ; |\ CODE_0DAC78: 18 CLC ; | | CODE_0DAC79: 69 10 ADC.B #$10 ; | | Move pointer downwards CODE_0DAC7B: A8 TAY ; |/ CODE_0DAC7C: 90 03 BCC CODE_0DAC81 ; |\ ADDR_0DAC7E: 20 87 A9 JSR.W CODE_0DA987 ; | | Update screen number CODE_0DAC81: 20 D6 A9 JSR.W CODE_0DA9D6 ; |/ CODE_0DAC84: 84 57 STY $57 ; | This big code moves the pointer/index leftwards and downwards. CODE_0DAC86: 4C 34 AC JMP.W CODE_0DAC34 ;/ CODE_0DAC89: A6 02 LDX $02 ; Load size CODE_0DAC8B: 20 7D A9 JSR.W CODE_0DA97D ; Update pointer CODE_0DAC8E: 4C 3E AC JMP.W CODE_0DAC3E ; and add line Return0DAC91: 60 RTS ; Return ;Gradual slope left CODE_0DAC92: A4 57 LDY $57 ; Position CODE_0DAC94: A9 03 LDA.B #$03 ;\ CODE_0DAC96: 85 02 STA $02 ; | Number of tiles in the first row CODE_0DAC98: 85 00 STA $00 ;/ CODE_0DAC9A: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DAC9D: A5 59 LDA $59 ;\ CODE_0DAC9F: 4A LSR ; | CODE_0DACA0: 4A LSR ; | CODE_0DACA1: 4A LSR ; | Get width CODE_0DACA2: 4A LSR ; | CODE_0DACA3: 85 00 STA $00 ; | CODE_0DACA5: E6 00 INC $00 ;/ CODE_0DACA7: A6 02 LDX $02 ; Reload number of tiles in a row CODE_0DACA9: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DACAC: A9 6E LDA.B #$6E ; | CODE_0DACAE: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DACB1: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DACB4: A9 73 LDA.B #$73 ; | CODE_0DACB6: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DACB9: 20 08 AA JSR.W Sta1To6ePointer ; | Add the actual slope tiles CODE_0DACBC: A9 78 LDA.B #$78 ; | CODE_0DACBE: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DACC1: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DACC4: A9 7D LDA.B #$7D ; | CODE_0DACC6: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DACC9: CA DEX ;\ CODE_0DACCA: CA DEX ; | CODE_0DACCB: CA DEX ; | Check if it's the top line CODE_0DACCC: CA DEX ; | CODE_0DACCD: 30 31 BMI CODE_0DAD00 ;/ CODE_0DACCF: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DACD2: A9 D8 LDA.B #$D8 ; | CODE_0DACD4: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DACD7: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DACDA: A9 DA LDA.B #$DA ; | CODE_0DACDC: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DACDF: 20 08 AA JSR.W Sta1To6ePointer ; | Add the "slope assist" tiles CODE_0DACE2: A9 E6 LDA.B #$E6 ; | CODE_0DACE4: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DACE7: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DACEA: A9 E6 LDA.B #$E6 ; | CODE_0DACEC: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DACEF: CA DEX ;\ CODE_0DACF0: CA DEX ; | CODE_0DACF1: CA DEX ; | Update index CODE_0DACF2: 4C FD AC JMP.W CODE_0DACFD ;/ CODE_0DACF5: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DACF8: A9 3F LDA.B #$3F ; | CODE_0DACFA: 20 5B A9 JSR.W CODE_0DA95B ; | Add bottom tiles CODE_0DACFD: CA DEX ; | CODE_0DACFE: 10 F5 BPL CODE_0DACF5 ;/ CODE_0DAD00: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAD03: A5 02 LDA $02 ;\ CODE_0DAD05: 18 CLC ; | CODE_0DAD06: 69 04 ADC.B #$04 ; | Increase size of future lines CODE_0DAD08: 85 02 STA $02 ;/ CODE_0DAD0A: C6 00 DEC $00 ; Decrease number of lines remaining CODE_0DAD0C: F0 29 BEQ CODE_0DAD37 ; Check for last line CODE_0DAD0E: 10 03 BPL CODE_0DAD13 ;\ CODE_0DAD10: 4C 43 AD JMP.W Return0DAD43 ;/ Check for end of the object CODE_0DAD13: A5 57 LDA $57 ;\ CODE_0DAD15: 18 CLC ; | CODE_0DAD16: 69 0C ADC.B #$0C ; | Move pointer either right or left/down CODE_0DAD18: A8 TAY ;/ CODE_0DAD19: 90 03 BCC CODE_0DAD1E ; Check whether it hit a subscreen boundary ADDR_0DAD1B: 20 87 A9 JSR.W CODE_0DA987 ; and update the pointer if needed CODE_0DAD1E: 98 TYA ;\ CODE_0DAD1F: 29 0F AND.B #$0F ; | CODE_0DAD21: C9 0C CMP.B #$0C ; | Check whether it went left/down or right and return if it's left/down CODE_0DAD23: 30 0D BMI CODE_0DAD32 ;/ ADDR_0DAD25: 98 TYA ;\ ADDR_0DAD26: 18 CLC ; | ADDR_0DAD27: 69 10 ADC.B #$10 ; | Move pointer down ADDR_0DAD29: A8 TAY ;/ ADDR_0DAD2A: 90 03 BCC ADDR_0DAD2F ;\ ADDR_0DAD2C: 20 87 A9 JSR.W CODE_0DA987 ;/ Handle subscreen boundaries ADDR_0DAD2F: 20 D6 A9 JSR.W CODE_0DA9D6 ; Go left CODE_0DAD32: 84 57 STY $57 ; Save index CODE_0DAD34: 4C A7 AC JMP.W CODE_0DACA7 ; and run the loop again CODE_0DAD37: A6 02 LDX $02 ;\ CODE_0DAD39: CA DEX ; | CODE_0DAD3A: CA DEX ; | Update index CODE_0DAD3B: CA DEX ; | CODE_0DAD3C: CA DEX ;/ CODE_0DAD3D: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DAD40: 4C CF AC JMP.W CODE_0DACCF ; and run the loop again Return0DAD43: 60 RTS ; Return ;Normal slope right CODE_0DAD44: A4 57 LDY $57 ; Position CODE_0DAD46: A2 01 LDX.B #$01 ;\ CODE_0DAD48: 86 02 STX $02 ; | Number of actual slope tiles CODE_0DAD4A: 86 00 STX $00 ;/ CODE_0DAD4C: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer (why not run this before the JSL to ExecutePtrLong?) CODE_0DAD4F: A5 59 LDA $59 ;\ CODE_0DAD51: 4A LSR ; | CODE_0DAD52: 4A LSR ; | CODE_0DAD53: 4A LSR ; | Get size CODE_0DAD54: 4A LSR ; | CODE_0DAD55: 85 00 STA $00 ; | CODE_0DAD57: E6 00 INC $00 ;/ CODE_0DAD59: 4C 7F AD JMP.W CODE_0DAD7F ; Go to loop CODE_0DAD5C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DAD5F: A9 3F LDA.B #$3F ; | CODE_0DAD61: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAD64: CA DEX ; | Add dirt tiles CODE_0DAD65: E0 03 CPX.B #$03 ; | CODE_0DAD67: D0 F3 BNE CODE_0DAD5C ;/ CODE_0DAD69: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAD6C: A9 E6 LDA.B #$E6 ; | CODE_0DAD6E: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAD71: 20 08 AA JSR.W Sta1To6ePointer ; | Add actual slope tiles CODE_0DAD74: A9 E0 LDA.B #$E0 ; | CODE_0DAD76: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAD79: CA DEX ;\ CODE_0DAD7A: CA DEX ; | CODE_0DAD7B: A5 00 LDA $00 ; | Check for end of the object CODE_0DAD7D: F0 20 BEQ Return0DAD9F ;/ CODE_0DAD7F: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAD82: A9 A0 LDA.B #$A0 ; | CODE_0DAD84: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DAD87: 20 08 AA JSR.W Sta1To6ePointer ; | Add "slope assist" tiles CODE_0DAD8A: A9 A5 LDA.B #$A5 ; | CODE_0DAD8C: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DAD8F: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DAD92: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload and update pointer CODE_0DAD95: E6 02 INC $02 ;\ CODE_0DAD97: E6 02 INC $02 ; | CODE_0DAD99: A6 02 LDX $02 ; | Go to the next line CODE_0DAD9B: C6 00 DEC $00 ; | CODE_0DAD9D: 10 01 BPL CODE_0DADA0 ;/ Return0DAD9F: 60 RTS ; Return CODE_0DADA0: 4C 65 AD JMP.W CODE_0DAD65 ; Random jump to waste 3 bytes + 3 cycles ;Steep slope right CODE_0DADA3: A4 57 LDY $57 ; Position CODE_0DADA5: A2 00 LDX.B #$00 ;\ CODE_0DADA7: 86 02 STX $02 ; | Number of actual slope tiles (also, it's called STZ, morons) CODE_0DADA9: 86 00 STX $00 ;/ CODE_0DADAB: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DADAE: A5 59 LDA $59 ;\ CODE_0DADB0: 4A LSR ; | CODE_0DADB1: 4A LSR ; | CODE_0DADB2: 4A LSR ; | Get size CODE_0DADB3: 4A LSR ; | CODE_0DADB4: 85 00 STA $00 ; | CODE_0DADB6: E6 00 INC $00 ;/ CODE_0DADB8: 4C D0 AD JMP.W CODE_0DADD0 ; Go to loop CODE_0DADBB: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DADBE: A9 3F LDA.B #$3F ; | CODE_0DADC0: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DADC3: CA DEX ; | Add dirt tiles CODE_0DADC4: E0 01 CPX.B #$01 ; | CODE_0DADC6: D0 F3 BNE CODE_0DADBB ;/ CODE_0DADC8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DADCB: A9 E4 LDA.B #$E4 ; | Add slope assist tile CODE_0DADCD: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DADD0: A5 00 LDA $00 ;\ CODE_0DADD2: F0 16 BEQ Return0DADEA ;/ Check for end of the object CODE_0DADD4: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DADD7: A9 AF LDA.B #$AF ; | Add actual slope tile CODE_0DADD9: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DADDC: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DADDF: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DADE2: E6 02 INC $02 ;\ CODE_0DADE4: A6 02 LDX $02 ; | CODE_0DADE6: C6 00 DEC $00 ; | Go to next line CODE_0DADE8: 10 DA BPL CODE_0DADC4 ;/ Return0DADEA: 60 RTS ; Return ;Gradual slope right CODE_0DADEB: A4 57 LDY $57 ; Position CODE_0DADED: A2 03 LDX.B #$03 ;\ CODE_0DADEF: 86 02 STX $02 ;/ Number of actual slope tiles (thanks for forgetting to waste some time with $00) CODE_0DADF1: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DADF4: A5 59 LDA $59 ;\ CODE_0DADF6: 4A LSR ; | CODE_0DADF7: 4A LSR ; | CODE_0DADF8: 4A LSR ; | Get size CODE_0DADF9: 4A LSR ; | CODE_0DADFA: 85 00 STA $00 ; | CODE_0DADFC: E6 00 INC $00 ;/ CODE_0DADFE: 4C 36 AE JMP.W CODE_0DAE36 ; Go to loop CODE_0DAE01: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DAE04: A9 3F LDA.B #$3F ; | CODE_0DAE06: 20 5B A9 JSR.W CODE_0DA95B ; | Add dirt tiles CODE_0DAE09: CA DEX ; | (silly all.log thought that the first four instructions here was a table...) CODE_0DAE0A: E0 07 CPX.B #$07 ; | CODE_0DAE0C: D0 F3 BNE CODE_0DAE01 ;/ CODE_0DAE0E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAE11: A9 E6 LDA.B #$E6 ; | CODE_0DAE13: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAE16: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DAE19: A9 E6 LDA.B #$E6 ; | CODE_0DAE1B: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAE1E: 20 08 AA JSR.W Sta1To6ePointer ; | Add slope assist tiles CODE_0DAE21: A9 DB LDA.B #$DB ; | CODE_0DAE23: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAE26: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DAE29: A9 DC LDA.B #$DC ; | CODE_0DAE2B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAE2E: CA DEX ;\ CODE_0DAE2F: CA DEX ; | CODE_0DAE30: CA DEX ; | CODE_0DAE31: CA DEX ; | Check for end of the object CODE_0DAE32: A5 00 LDA $00 ; | CODE_0DAE34: F0 33 BEQ Return0DAE69 ;/ CODE_0DAE36: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAE39: A9 82 LDA.B #$82 ; | CODE_0DAE3B: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DAE3E: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DAE41: A9 87 LDA.B #$87 ; | CODE_0DAE43: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DAE46: 20 08 AA JSR.W Sta1To6ePointer ; | Add actual slope tiles CODE_0DAE49: A9 8C LDA.B #$8C ; | CODE_0DAE4B: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DAE4E: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DAE51: A9 91 LDA.B #$91 ; | CODE_0DAE53: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DAE56: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAE59: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DAE5C: A5 02 LDA $02 ;\ CODE_0DAE5E: 18 CLC ; | CODE_0DAE5F: 69 04 ADC.B #$04 ; | CODE_0DAE61: 85 02 STA $02 ; | Go to next tile CODE_0DAE63: A6 02 LDX $02 ; | CODE_0DAE65: C6 00 DEC $00 ; | CODE_0DAE67: 10 01 BPL CODE_0DAE6A ;/ Return0DAE69: 60 RTS ; Return CODE_0DAE6A: 4C 0A AE JMP.W CODE_0DAE0A ; Another moronic waste-three-bytes-and-cycles code... ;Normal slope left upside down CODE_0DAE6D: A4 57 LDY $57 ; Position CODE_0DAE6F: A5 59 LDA $59 ;\ CODE_0DAE71: 4A LSR ; | CODE_0DAE72: 4A LSR ; | CODE_0DAE73: 4A LSR ; | Get size CODE_0DAE74: 4A LSR ; | CODE_0DAE75: 85 00 STA $00 ;/ CODE_0DAE77: 0A ASL ;\ CODE_0DAE78: 85 02 STA $02 ; | Get width of first line CODE_0DAE7A: C6 02 DEC $02 ;/ CODE_0DAE7C: A9 00 LDA.B #$00 ;\ CODE_0DAE7E: 85 01 STA $01 ;/ Set the Is First Line flag CODE_0DAE80: A6 02 LDX $02 ; Load number of tiles in line CODE_0DAE82: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DAE85: 4C 9E AE JMP.W CODE_0DAE9E ; Go to loop CODE_0DAE88: A6 02 LDX $02 CODE_0DAE8A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAE8D: A9 C6 LDA.B #$C6 ; | CODE_0DAE8F: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAE92: 20 08 AA JSR.W Sta1To6ePointer ; | Add slope tiles CODE_0DAE95: A9 C7 LDA.B #$C7 ; | CODE_0DAE97: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAE9A: CA DEX ;\ CODE_0DAE9B: CA DEX ; | Check if it's the last line CODE_0DAE9C: 30 1F BMI CODE_0DAEBD ;/ CODE_0DAE9E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAEA1: A9 EE LDA.B #$EE ; | CODE_0DAEA3: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAEA6: 20 08 AA JSR.W Sta1To6ePointer ; | Add slope assist tiles CODE_0DAEA9: A9 F0 LDA.B #$F0 ; | CODE_0DAEAB: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAEAE: CA DEX ;\ CODE_0DAEAF: 4C BA AE JMP.W CODE_0DAEBA ;/ Go to the next area CODE_0DAEB2: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAEB5: A9 65 LDA.B #$65 ; | CODE_0DAEB7: 20 5B A9 JSR.W CODE_0DA95B ; | Add dirt tiles (what's wrong with 0x03F?) CODE_0DAEBA: CA DEX ; | CODE_0DAEBB: 10 F5 BPL CODE_0DAEB2 ;/ CODE_0DAEBD: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAEC0: A5 01 LDA $01 ;\ CODE_0DAEC2: D0 08 BNE CODE_0DAECC ; | Check if it's the first line, since we don't want the actual slope tiles on the first row CODE_0DAEC4: E6 01 INC $01 ;/ CODE_0DAEC6: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DAEC9: 4C F2 AE JMP.W CODE_0DAEF2 ; Skip Move Pointer code CODE_0DAECC: A5 02 LDA $02 ;\ CODE_0DAECE: 38 SEC ; | CODE_0DAECF: E9 02 SBC.B #$02 ; | Update size CODE_0DAED1: 85 02 STA $02 ;/ CODE_0DAED3: A5 57 LDA $57 ;\ CODE_0DAED5: 18 CLC ; | CODE_0DAED6: 69 12 ADC.B #$12 ; | Update index CODE_0DAED8: A8 TAY ;/ CODE_0DAED9: 90 03 BCC CODE_0DAEDE ;\ CODE_0DAEDB: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer downwards if needed CODE_0DAEDE: 98 TYA ;\ CODE_0DAEDF: 29 0F AND.B #$0F ; | CODE_0DAEE1: C9 02 CMP.B #$02 ; | Check if pointer should move downwards CODE_0DAEE3: 10 0D BPL CODE_0DAEF2 ;/ ADDR_0DAEE5: 98 TYA ;\ ADDR_0DAEE6: 38 SEC ; | ADDR_0DAEE7: E9 10 SBC.B #$10 ; | Move pointer back up ADDR_0DAEE9: A8 TAY ;/ ADDR_0DAEEA: B0 03 BCS ADDR_0DAEEF ;\ ADDR_0DAEEC: 20 87 A9 JSR.W CODE_0DA987 ;/ Update preserved pointer (isn't that done earlier too?) ADDR_0DAEEF: 20 EF A9 JSR.W CODE_0DA9EF ; Move pointer forwards CODE_0DAEF2: 84 57 STY $57 ; Save index CODE_0DAEF4: C6 00 DEC $00 ;\ CODE_0DAEF6: 30 03 BMI Return0DAEFB ; | Check for end of the object CODE_0DAEF8: 4C 88 AE JMP.W CODE_0DAE88 ;/ Return0DAEFB: 60 RTS ; Return ;Normal slope right upside down CODE_0DAEFC: A4 57 LDY $57 ; Position CODE_0DAEFE: A5 59 LDA $59 ;\ CODE_0DAF00: 4A LSR ; | CODE_0DAF01: 4A LSR ; | CODE_0DAF02: 4A LSR ; | Get height CODE_0DAF03: 4A LSR ; | CODE_0DAF04: 85 00 STA $00 ;/ CODE_0DAF06: 0A ASL ;\ CODE_0DAF07: 85 02 STA $02 ; | Get width of first line CODE_0DAF09: E6 02 INC $02 ;/ CODE_0DAF0B: A9 00 LDA.B #$00 ;\ CODE_0DAF0D: 85 01 STA $01 ;/ Set Is First Line flag CODE_0DAF0F: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DAF12: A6 02 LDX $02 ; Load number of tiles in line CODE_0DAF14: 4C 20 AF JMP.W CODE_0DAF20 ; Go to loop CODE_0DAF17: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF1A: A9 65 LDA.B #$65 ; | CODE_0DAF1C: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAF1F: CA DEX ; | Add dirt tiles CODE_0DAF20: E0 04 CPX.B #$04 ; | CODE_0DAF22: 10 F3 BPL CODE_0DAF17 ;/ CODE_0DAF24: E0 02 CPX.B #$02 ;\ CODE_0DAF26: 30 14 BMI CODE_0DAF3C ;/ Don't add slope assist tiles in the last line CODE_0DAF28: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF2B: A9 F0 LDA.B #$F0 ; | CODE_0DAF2D: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAF30: 20 08 AA JSR.W Sta1To6ePointer ; | Add slope assist tiles CODE_0DAF33: A9 EF LDA.B #$EF ; | CODE_0DAF35: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAF38: A5 01 LDA $01 ;\ CODE_0DAF3A: F0 10 BEQ CODE_0DAF4C ;/ Don't add actual slope tiles in top row CODE_0DAF3C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF3F: A9 C8 LDA.B #$C8 ; | CODE_0DAF41: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DAF44: 20 08 AA JSR.W Sta1To6ePointer ; | Add actual slope tiles CODE_0DAF47: A9 C9 LDA.B #$C9 ; | CODE_0DAF49: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAF4C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAF4F: A5 02 LDA $02 ;\ CODE_0DAF51: 38 SEC ; | CODE_0DAF52: E9 02 SBC.B #$02 ; | Go to next line CODE_0DAF54: 85 02 STA $02 ;/ CODE_0DAF56: AA TAX ; Reload number of tiles in line CODE_0DAF57: E6 01 INC $01 ; Clear Is First Line flag CODE_0DAF59: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DAF5C: C6 00 DEC $00 ;\ CODE_0DAF5E: 10 C0 BPL CODE_0DAF20 ;/ Check for end of the object Return0DAF60: 60 RTS ; Return ;Steep slope left upside down CODE_0DAF61: A4 57 LDY $57 ; Position CODE_0DAF63: A5 59 LDA $59 ;\ CODE_0DAF65: 4A LSR ; | CODE_0DAF66: 4A LSR ; | CODE_0DAF67: 4A LSR ; | CODE_0DAF68: 4A LSR ; | Get size CODE_0DAF69: 85 00 STA $00 ; | CODE_0DAF6B: 85 02 STA $02 ; | CODE_0DAF6D: C6 02 DEC $02 ;/ CODE_0DAF6F: A9 00 LDA.B #$00 ;\ CODE_0DAF71: 85 01 STA $01 ;/ Set Is First Line flag CODE_0DAF73: A6 02 LDX $02 ; Load number of remaining tiles on the line CODE_0DAF75: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DAF78: 4C 88 AF JMP.W CODE_0DAF88 ; Go into loop CODE_0DAF7B: A6 02 LDX $02 ; Load number of remaining tiles on the line CODE_0DAF7D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF80: A9 C4 LDA.B #$C4 ; | Add actual slope tile CODE_0DAF82: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAF85: CA DEX CODE_0DAF86: 30 16 BMI CODE_0DAF9E CODE_0DAF88: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF8B: A9 EC LDA.B #$EC ; | Add slope assist tile CODE_0DAF8D: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DAF90: 4C 9B AF JMP.W CODE_0DAF9B CODE_0DAF93: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DAF96: A9 65 LDA.B #$65 ; | CODE_0DAF98: 20 5B A9 JSR.W CODE_0DA95B ; | Add dirt tiles CODE_0DAF9B: CA DEX ; | CODE_0DAF9C: 10 F5 BPL CODE_0DAF93 ;/ CODE_0DAF9E: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DAFA1: A5 01 LDA $01 ;\ CODE_0DAFA3: D0 0A BNE CODE_0DAFAF ;/ Don't move pointer rightwards from the right line CODE_0DAFA5: E6 01 INC $01 ; Clear Is First Line flag CODE_0DAFA7: A6 02 LDX $02 CODE_0DAFA9: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DAFAC: 4C D5 AF JMP.W CODE_0DAFD5 ; and go to Check For End Of Line code CODE_0DAFAF: A5 02 LDA $02 ;\ CODE_0DAFB1: 38 SEC ; | CODE_0DAFB2: E9 01 SBC.B #$01 ; | Update size of line (it's called DEC, morons) CODE_0DAFB4: 85 02 STA $02 ;/ CODE_0DAFB6: A5 57 LDA $57 ;\ CODE_0DAFB8: 18 CLC ; | CODE_0DAFB9: 69 11 ADC.B #$11 ; | Increase index and check if we hit a horizontal subscreen boundary CODE_0DAFBB: A8 TAY ; | CODE_0DAFBC: 90 03 BCC CODE_0DAFC1 ;/ CODE_0DAFBE: 20 87 A9 JSR.W CODE_0DA987 ; Move pointer down if needed CODE_0DAFC1: 98 TYA ;\ CODE_0DAFC2: 29 0F AND.B #$0F ; | CODE_0DAFC4: C9 01 CMP.B #$01 ; | Check for vertical subscreen boundaries CODE_0DAFC6: 10 0D BPL CODE_0DAFD5 ;/ CODE_0DAFC8: 98 TYA ;\ CODE_0DAFC9: 38 SEC ; | CODE_0DAFCA: E9 10 SBC.B #$10 ; | CODE_0DAFCC: A8 TAY ; | Move pointer back up CODE_0DAFCD: B0 03 BCS CODE_0DAFD2 ; | CODE_0DAFCF: 20 DF AF JSR.W CODE_0DAFDF ;/ CODE_0DAFD2: 20 EF A9 JSR.W CODE_0DA9EF ; Move pointer rightwards CODE_0DAFD5: 84 57 STY $57 ; Save index CODE_0DAFD7: C6 00 DEC $00 ;\ CODE_0DAFD9: 30 03 BMI Return0DAFDE ; | Check for end of the object CODE_0DAFDB: 4C 7B AF JMP.W CODE_0DAF7B ;/ Return0DAFDE: 60 RTS ; Return ;This moves the pointer up one screen if carry is set. CODE_0DAFDF: A5 6C LDA $6C CODE_0DAFE1: E9 00 SBC.B #$00 CODE_0DAFE3: 85 6C STA $6C CODE_0DAFE5: 85 6F STA $6F CODE_0DAFE7: 85 05 STA $05 Return0DAFE9: 60 RTS ; Return ;Steep slope right upside down CODE_0DAFEA: A4 57 LDY $57 ; Position CODE_0DAFEC: A5 59 LDA $59 ;\ CODE_0DAFEE: 4A LSR ; | CODE_0DAFEF: 4A LSR ; | CODE_0DAFF0: 4A LSR ; | Get size CODE_0DAFF1: 4A LSR ; | CODE_0DAFF2: 85 00 STA $00 ; | CODE_0DAFF4: 85 02 STA $02 ;/ CODE_0DAFF6: A9 00 LDA.B #$00 ;\ CODE_0DAFF8: 85 01 STA $01 ;/ Set Is First Line flag CODE_0DAFFA: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DAFFD: A6 02 LDX $02 CODE_0DAFFF: 4C 0B B0 JMP.W CODE_0DB00B ; Go to loop ;I don't really like how you're cutting it in the middle of a subroutine, but okay CODE_0DB002: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB005: A9 65 LDA.B #$65 ; | CODE_0DB007: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB00A: CA DEX ; | Add dirt tiles CODE_0DB00B: E0 02 CPX.B #$02 ; | CODE_0DB00D: 10 F3 BPL CODE_0DB002 ;/ CODE_0DB00F: E0 01 CPX.B #$01 ;\ CODE_0DB011: 30 0C BMI CODE_0DB01F ;/ Don't add slope assist tiles on the last line CODE_0DB013: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB016: A9 ED LDA.B #$ED ; | Add slope assist tile CODE_0DB018: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB01B: A5 01 LDA $01 ;\ CODE_0DB01D: F0 08 BEQ CODE_0DB027 ;/ Check Is First Line flag CODE_0DB01F: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB022: A9 C5 LDA.B #$C5 ; | Add actual slope tile CODE_0DB024: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB027: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB02A: A6 02 LDX $02 ;\ CODE_0DB02C: CA DEX ; | Update number of remaining lines (wow, you morons know how to use DEX?) CODE_0DB02D: 86 02 STX $02 ;/ CODE_0DB02F: E6 01 INC $01 ; Clear Is First Line flag CODE_0DB031: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB034: C6 00 DEC $00 ;\ CODE_0DB036: 10 D3 BPL CODE_0DB00B ;/ Check for end of the object Return0DB038: 60 RTS ; Return ;Ledge edge object DATA_0DB039: .db $40,$41,$06,$45,$4B,$48,$4C,$01 ; Top tiles .db $03,$B6,$B7,$45,$4B,$48,$4C DATA_0DB048: .db $40,$41,$06,$4B,$4B,$4C,$4C,$40 ; The tiles below the top tiles (same as middle tiles) .db $41,$4B,$4C,$4B,$4B,$4C,$4C DATA_0DB057: .db $40,$41,$06,$4B,$4B,$4C,$4C,$40 ; Middle tiles .db $41,$4B,$4C,$4B,$4B,$4C,$4C DATA_0DB066: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; Bottom tiles .db $FF,$FF,$FF,$E2,$E2,$E4,$E4 CODE_0DB075: A4 57 LDY $57 ; Position CODE_0DB077: A5 59 LDA $59 ;\ CODE_0DB079: 4A LSR ; | CODE_0DB07A: 4A LSR ; | CODE_0DB07B: 4A LSR ; | Get height CODE_0DB07C: 4A LSR ; | CODE_0DB07D: 85 00 STA $00 ;/ CODE_0DB07F: A5 59 LDA $59 ;\ CODE_0DB081: 29 0F AND.B #$0F ; | Get type CODE_0DB083: AA TAX ;/ CODE_0DB084: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB087: E0 03 CPX.B #$03 ; | CODE_0DB089: 30 03 BMI CODE_0DB08E ; | Set correct map16 page CODE_0DB08B: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DB08E: BF 39 B0 0D LDA.L DATA_0DB039,X ;\ CODE_0DB092: 20 14 B1 JSR.W CODE_0DB114 ; | Add top tile CODE_0DB095: 97 6B STA [$6B],Y ;/ CODE_0DB097: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer down CODE_0DB09A: C6 00 DEC $00 ;\ CODE_0DB09C: 30 44 BMI CODE_0DB0E2 ;/ Check if size=0 CODE_0DB09E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB0A1: E0 09 CPX.B #$09 ; | CODE_0DB0A3: 10 08 BPL CODE_0DB0AD ; | CODE_0DB0A5: E0 07 CPX.B #$07 ; | CODE_0DB0A7: 10 07 BPL CODE_0DB0B0 ; | Set correct map16 page CODE_0DB0A9: E0 03 CPX.B #$03 ; | CODE_0DB0AB: 30 03 BMI CODE_0DB0B0 ; | CODE_0DB0AD: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DB0B0: BF 48 B0 0D LDA.L DATA_0DB048,X ;\ CODE_0DB0B4: 20 98 B1 JSR.W CODE_0DB198 ; | Add tile-below-top-tile CODE_0DB0B7: 97 6B STA [$6B],Y ;/ CODE_0DB0B9: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB0BC: C6 00 DEC $00 ;\ CODE_0DB0BE: 30 22 BMI CODE_0DB0E2 ;/ Check for end of the object (except the bottom tile) CODE_0DB0C0: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB0C3: E0 09 CPX.B #$09 ; | CODE_0DB0C5: 10 08 BPL CODE_0DB0CF ; | CODE_0DB0C7: E0 07 CPX.B #$07 ; | CODE_0DB0C9: 10 07 BPL CODE_0DB0D2 ; | Set correct map16 page CODE_0DB0CB: E0 03 CPX.B #$03 ; | CODE_0DB0CD: 30 03 BMI CODE_0DB0D2 ; | CODE_0DB0CF: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DB0D2: BF 57 B0 0D LDA.L DATA_0DB057,X ;\ CODE_0DB0D6: 20 98 B1 JSR.W CODE_0DB198 ; | Add middle tiles CODE_0DB0D9: 97 6B STA [$6B],Y ;/ CODE_0DB0DB: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB0DE: C6 00 DEC $00 ;\ CODE_0DB0E0: 10 DE BPL CODE_0DB0C0 ;/ Check for end of the object (except bottom tile) CODE_0DB0E2: E0 0B CPX.B #$0B ;\ CODE_0DB0E4: 30 09 BMI Return0DB0EF ;/ Check if it's one of the objects with a bottom tile CODE_0DB0E6: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB0E9: BF 66 B0 0D LDA.L DATA_0DB066,X ; | Add bottom tile CODE_0DB0ED: 97 6B STA [$6B],Y ;/ Return0DB0EF: 60 RTS ; Return ;Account for placing the top tile on top of other stuff DATA_0DB0F0: .db $7D,$7E,$82,$83,$9B,$9C,$A0,$A1 .db $AA,$AB,$AF,$B0,$D8,$DC,$DE,$E0 ; If on top of one of these... .db $E2,$E4 DATA_0DB102: .db $B8,$B9,$BA,$BB,$BC,$BD,$BE,$BF .db $C0,$C1,$C2,$C3,$D9,$DD,$DF,$E1 ; change to the corresponding one of these .db $E3,$E5 CODE_0DB114: E0 03 CPX.B #$03 ;\ CODE_0DB116: 30 08 BMI CODE_0DB120 ; | CODE_0DB118: E0 09 CPX.B #$09 ; | CODE_0DB11A: 30 04 BMI CODE_0DB120 ; | CODE_0DB11C: E0 0B CPX.B #$0B ; | Only run this code on some of the object numbers CODE_0DB11E: 30 3B BMI Return0DB15B ; | CODE_0DB120: E0 02 CPX.B #$02 ; | CODE_0DB122: F0 37 BEQ Return0DB15B ;/ CODE_0DB124: 86 0B STX $0B ; Preserve X CODE_0DB126: 85 0C STA $0C ; Preserve tile number CODE_0DB128: A2 11 LDX.B #$11 ; Size of tables CODE_0DB12A: B7 6B LDA [$6B],Y ;\ CODE_0DB12C: DF F0 B0 0D CMP.L DATA_0DB0F0,X ; | CODE_0DB130: F0 20 BEQ CODE_0DB152 ; | Check the on-top-of-one-of-these table CODE_0DB132: CA DEX ; | CODE_0DB133: 10 F7 BPL CODE_0DB12C ;/ CODE_0DB135: C9 25 CMP.B #$25 ;\ CODE_0DB137: F0 14 BEQ CODE_0DB14D ;/ If on top of tile 025, don't change anything CODE_0DB139: A5 0C LDA $0C ;\ CODE_0DB13B: C9 01 CMP.B #$01 ; | CODE_0DB13D: F0 0C BEQ CODE_0DB14B ; | CODE_0DB13F: C9 03 CMP.B #$03 ; | CODE_0DB141: F0 08 BEQ CODE_0DB14B ; | Only run this check if we're trying to add tile 101, 103, 145, or 148 CODE_0DB143: C9 45 CMP.B #$45 ; | CODE_0DB145: F0 04 BEQ CODE_0DB14B ; | CODE_0DB147: C9 48 CMP.B #$48 ; | CODE_0DB149: D0 02 BNE CODE_0DB14D ;/ CODE_0DB14B: E6 0C INC $0C ;\ CODE_0DB14D: A5 0C LDA $0C ; | Fix object number and return CODE_0DB14F: 4C 59 B1 JMP.W CODE_0DB159 ;/ CODE_0DB152: 20 08 AA JSR.W Sta1To6ePointer ; Set map16 page CODE_0DB155: BF 02 B1 0D LDA.L DATA_0DB102,X ; Load the tile to use CODE_0DB159: A6 0B LDX $0B ; Reload X Return0DB15B: 60 RTS ; Return ;Account for placing the middle tiles on top of other stuff DATA_0DB15C: .db $6E,$6F,$73,$74,$78,$79,$7D,$7E .db $82,$83,$87,$88,$8C,$8D,$91,$92 .db $96,$97,$9B,$9C,$A0,$A1,$A5,$A6 ; If on top of one of these... .db $AA,$AB,$AF,$B0,$E2,$E4 DATA_0DB17A: .db $70,$70,$75,$75,$7A,$7A,$7F,$7F .db $84,$84,$89,$89,$8E,$8E,$93,$93 .db $98,$98,$9D,$9D,$A2,$A2,$A7,$A7 ; change to the corresponding one of these .db $AC,$AC,$B1,$B1,$E9,$EA CODE_0DB198: E0 03 CPX.B #$03 ;\ CODE_0DB19A: 30 08 BMI CODE_0DB1A4 ; | CODE_0DB19C: E0 07 CPX.B #$07 ; | CODE_0DB19E: 30 27 BMI Return0DB1C7 ; | CODE_0DB1A0: E0 09 CPX.B #$09 ; | Only run this code on some of the object numbers CODE_0DB1A2: 10 23 BPL Return0DB1C7 ; | CODE_0DB1A4: E0 02 CPX.B #$02 ; | CODE_0DB1A6: F0 1F BEQ Return0DB1C7 ;/ CODE_0DB1A8: 86 0B STX $0B ; Preserve X CODE_0DB1AA: 85 0C STA $0C ; Preserve tile number CODE_0DB1AC: A2 1D LDX.B #$1D ; Size of tables CODE_0DB1AE: B7 6B LDA [$6B],Y ;\ CODE_0DB1B0: DF 5C B1 0D CMP.L DATA_0DB15C,X ; | CODE_0DB1B4: F0 08 BEQ CODE_0DB1BE ; | Check the on-top-of-one-of-these table CODE_0DB1B6: CA DEX ; | CODE_0DB1B7: 10 F7 BPL CODE_0DB1B0 ;/ CODE_0DB1B9: A5 0C LDA $0C ;\ CODE_0DB1BB: 4C C5 B1 JMP.W CODE_0DB1C5 ;/ If no match is found, return CODE_0DB1BE: 20 08 AA JSR.W Sta1To6ePointer ; Set map16 page CODE_0DB1C1: BF 7A B1 0D LDA.L DATA_0DB17A,X ; Load the tile to use CODE_0DB1C5: A6 0B LDX $0B ; Reload X Return0DB1C7: 60 RTS ; Return ;Long ground ledge CODE_0DB1C8: A5 59 LDA $59 ;\ CODE_0DB1CA: 85 00 STA $00 ; | Load width CODE_0DB1CC: AA TAX ;/ CODE_0DB1CD: A9 02 LDA.B #$02 ;\ CODE_0DB1CF: 85 02 STA $02 ;/ Load height CODE_0DB1D1: 4C E3 B1 JMP.W CODE_0DB1E3 ; Go to loop ;Standard ledge CODE_0DB1D4: A5 59 LDA $59 ;\ CODE_0DB1D6: 29 0F AND.B #$0F ; | CODE_0DB1D8: 85 00 STA $00 ; | Get width CODE_0DB1DA: AA TAX ;/ CODE_0DB1DB: A5 59 LDA $59 ;\ CODE_0DB1DD: 4A LSR ; | CODE_0DB1DE: 4A LSR ; | CODE_0DB1DF: 4A LSR ; | Get height CODE_0DB1E0: 4A LSR ; | CODE_0DB1E1: 85 02 STA $02 ;/ CODE_0DB1E3: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DB1E6: A4 57 LDY $57 ; Position CODE_0DB1E8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB1EB: A9 00 LDA.B #$00 ; | Add top tiles CODE_0DB1ED: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB1F0: CA DEX ;\ CODE_0DB1F1: E0 FF CPX.B #$FF ; | CODE_0DB1F3: D0 F3 BNE CODE_0DB1E8 ; | Check for end of the row CODE_0DB1F5: 4C 05 B2 JMP.W CODE_0DB205 ;/ CODE_0DB1F8: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB1FB: A9 3F LDA.B #$3F ; | Add bottom tile CODE_0DB1FD: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB200: CA DEX ;\ CODE_0DB201: E0 FF CPX.B #$FF ; | Check for end of line CODE_0DB203: D0 F3 BNE CODE_0DB1F8 ;/ CODE_0DB205: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB208: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB20B: A6 00 LDX $00 ;\ CODE_0DB20D: C6 02 DEC $02 ; | Go to next row CODE_0DB20F: 10 E7 BPL CODE_0DB1F8 ;/ Return0DB211: 60 RTS ; Return ;Midway/goal point DATA_0DB212: .db $2F,$25,$32 ; Top tiles of midway point DATA_0DB215: .db $30,$25,$33 ; Middle tiles of midway point DATA_0DB218: .db $31,$25,$34 ; Bottom tiles of midway point DATA_0DB21B: .db $39,$25,$3C ; Top tiles of goal point DATA_0DB21E: .db $3A,$25,$3D ; Middle tiles of goal point DATA_0DB221: .db $3B,$25,$3E ; Bottom tiles of goal point CODE_0DB224: A4 57 LDY $57 ; Position CODE_0DB226: A5 59 LDA $59 ;\ CODE_0DB228: 29 0F AND.B #$0F ; | Type CODE_0DB22A: 85 02 STA $02 ;/ CODE_0DB22C: A5 59 LDA $59 ;\ CODE_0DB22E: 4A LSR ; | CODE_0DB22F: 4A LSR ; | CODE_0DB230: 4A LSR ; | Height CODE_0DB231: 4A LSR ; | CODE_0DB232: 85 00 STA $00 ; | CODE_0DB234: 85 01 STA $01 ;/ CODE_0DB236: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DB239: A2 00 LDX.B #$00 CODE_0DB23B: BF 12 B2 0D LDA.L DATA_0DB212,X ;\ CODE_0DB23F: 85 03 STA $03 ; | CODE_0DB241: A5 02 LDA $02 ; | CODE_0DB243: F0 06 BEQ CODE_0DB24B ; | Check which tile we need CODE_0DB245: BF 1B B2 0D LDA.L DATA_0DB21B,X ; | CODE_0DB249: 85 03 STA $03 ;/ CODE_0DB24B: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB24E: A5 03 LDA $03 ; | Add top tile CODE_0DB250: 97 6B STA [$6B],Y ;/ CODE_0DB252: 98 TYA ;\ CODE_0DB253: 18 CLC ; | CODE_0DB254: 69 10 ADC.B #$10 ; | CODE_0DB256: A8 TAY ; | CODE_0DB257: 90 08 BCC CODE_0DB261 ; | Move pointer downwards CODE_0DB259: A5 6C LDA $6C ; | CODE_0DB25B: 69 00 ADC.B #$00 ; | CODE_0DB25D: 85 6C STA $6C ; | CODE_0DB25F: 85 6F STA $6F ;/ CODE_0DB261: C6 01 DEC $01 ;\ CODE_0DB263: F0 2A BEQ CODE_0DB28F ;/ Check if it's one tile high CODE_0DB265: BF 15 B2 0D LDA.L DATA_0DB215,X ;\ CODE_0DB269: 85 03 STA $03 ; | CODE_0DB26B: A5 02 LDA $02 ; | CODE_0DB26D: F0 06 BEQ CODE_0DB275 ; | Check which tile we need CODE_0DB26F: BF 1E B2 0D LDA.L DATA_0DB21E,X ; | CODE_0DB273: 85 03 STA $03 ;/ CODE_0DB275: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB278: A5 03 LDA $03 ; | Add middle tile CODE_0DB27A: 97 6B STA [$6B],Y ;/ CODE_0DB27C: 98 TYA ;\ CODE_0DB27D: 18 CLC ; | CODE_0DB27E: 69 10 ADC.B #$10 ; | CODE_0DB280: A8 TAY ; | CODE_0DB281: 90 08 BCC CODE_0DB28B ; | Move pointer downwards CODE_0DB283: A5 6C LDA $6C ; | CODE_0DB285: 69 00 ADC.B #$00 ; | CODE_0DB287: 85 6C STA $6C ; | CODE_0DB289: 85 6F STA $6F ;/ CODE_0DB28B: C6 01 DEC $01 ;\ CODE_0DB28D: D0 D6 BNE CODE_0DB265 ;/ Check if we need to add more middle tiles CODE_0DB28F: BF 18 B2 0D LDA.L DATA_0DB218,X ;\ CODE_0DB293: 85 03 STA $03 ; | CODE_0DB295: A5 02 LDA $02 ; | CODE_0DB297: F0 06 BEQ CODE_0DB29F ; | Check which tile we need CODE_0DB299: BF 21 B2 0D LDA.L DATA_0DB221,X ; | CODE_0DB29D: 85 03 STA $03 ;/ CODE_0DB29F: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB2A2: A5 03 LDA $03 ; | Add bottom tile CODE_0DB2A4: 97 6B STA [$6B],Y ;/ CODE_0DB2A6: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB2A9: A5 57 LDA $57 ;\ CODE_0DB2AB: 18 CLC ; | CODE_0DB2AC: 69 01 ADC.B #$01 ; | CODE_0DB2AE: A8 TAY ; | Check if we hit a subscreen boundary CODE_0DB2AF: 29 0F AND.B #$0F ; | CODE_0DB2B1: D0 08 BNE CODE_0DB2BB ;/ CODE_0DB2B3: 20 EF A9 JSR.W CODE_0DA9EF ; Move pointer forwards CODE_0DB2B6: A5 57 LDA $57 ;\ CODE_0DB2B8: 29 F0 AND.B #$F0 ; | CODE_0DB2BA: A8 TAY ; | Update index CODE_0DB2BB: 84 57 STY $57 ;/ CODE_0DB2BD: A5 00 LDA $00 ;\ CODE_0DB2BF: 85 01 STA $01 ;/ Reload size CODE_0DB2C1: E8 INX ;\ CODE_0DB2C2: E0 03 CPX.B #$03 ; | CODE_0DB2C4: F0 03 BEQ Return0DB2C9 ; | Check for end of the object CODE_0DB2C6: 4C 3B B2 JMP.W CODE_0DB23B ;/ Return0DB2C9: 60 RTS ; Return ;This is the code for the Yoshi coin. CODE_0DB2CA: AD BF 13 LDA.W $13BF ;\ CODE_0DB2CD: 4A LSR ; | CODE_0DB2CE: 4A LSR ; | CODE_0DB2CF: 4A LSR ; | CODE_0DB2D0: A8 TAY ; | CODE_0DB2D1: AD BF 13 LDA.W $13BF ; | Check whether the Yoshi coins in this level has been taken CODE_0DB2D4: 29 07 AND.B #$07 ; | CODE_0DB2D6: AA TAX ; | CODE_0DB2D7: B9 2F 1F LDA.W $1F2F,Y ; | CODE_0DB2DA: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | CODE_0DB2DE: D0 E9 BNE Return0DB2C9 ;/ CODE_0DB2E0: AE BE 13 LDX.W $13BE ;\ CODE_0DB2E3: A9 F8 LDA.B #$F8 ; | CODE_0DB2E5: 18 CLC ; | CODE_0DB2E6: 7F AE A8 0D ADC.L DATA_0DA8AE,X ; | CODE_0DB2EA: 85 08 STA $08 ; | CODE_0DB2EC: A9 19 LDA.B #$19 ; | CODE_0DB2EE: 7F B1 A8 0D ADC.L DATA_0DA8B1,X ; | CODE_0DB2F2: 85 09 STA $09 ; | CODE_0DB2F4: AD A1 1B LDA.W $1BA1 ; | CODE_0DB2F7: 0A ASL ; | CODE_0DB2F8: 0A ASL ; | CODE_0DB2F9: 85 0E STA $0E ; | CODE_0DB2FB: A5 0A LDA $0A ; | CODE_0DB2FD: 29 10 AND.B #$10 ; | CODE_0DB2FF: F0 06 BEQ CODE_0DB307 ; | CODE_0DB301: A5 0E LDA $0E ; | Check whether this Yoshi coin has been taken (check around $0DA5F0 - $0DA638 for more detailed comments) CODE_0DB303: 09 02 ORA.B #$02 ; | CODE_0DB305: 85 0E STA $0E ; | CODE_0DB307: A4 57 LDY $57 ; | CODE_0DB309: 98 TYA ; | CODE_0DB30A: 29 08 AND.B #$08 ; | CODE_0DB30C: F0 06 BEQ CODE_0DB314 ; | CODE_0DB30E: A5 0E LDA $0E ; | CODE_0DB310: 09 01 ORA.B #$01 ; | CODE_0DB312: 85 0E STA $0E ; | CODE_0DB314: 98 TYA ; | CODE_0DB315: 29 07 AND.B #$07 ; | CODE_0DB317: AA TAX ; | CODE_0DB318: A4 0E LDY $0E ; | CODE_0DB31A: B1 08 LDA ($08),Y ; | CODE_0DB31C: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | CODE_0DB320: D0 13 BNE Return0DB335 ;/ CODE_0DB322: A4 57 LDY $57 ; Position CODE_0DB324: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB327: A9 2D LDA.B #$2D ; | Add top tile CODE_0DB329: 97 6B STA [$6B],Y ;/ CODE_0DB32B: 20 7D A9 JSR.W CODE_0DA97D ; Go to next tile CODE_0DB32E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB331: A9 2E LDA.B #$2E ; | Add bottom tile CODE_0DB333: 97 6B STA [$6B],Y ;/ Return0DB335: 60 RTS ; Return ;Blue coins ADDR_0DB336: A4 57 LDY $57 ; Position ADDR_0DB338: A5 59 LDA $59 ;\ ADDR_0DB33A: 29 0F AND.B #$0F ; | ADDR_0DB33C: 85 00 STA $00 ; | Width ADDR_0DB33E: AA TAX ;/ ADDR_0DB33F: A5 59 LDA $59 ;\ ADDR_0DB341: 4A LSR ; | ADDR_0DB342: 4A LSR ; | ADDR_0DB343: 4A LSR ; | Height ADDR_0DB344: 4A LSR ; | ADDR_0DB345: 85 01 STA $01 ;/ ADDR_0DB347: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer ADDR_0DB34A: 98 TYA ;\ \ ADDR_0DB34B: 48 PHA ; | | ADDR_0DB34C: 8A TXA ; | | Preserve X and Y (why not PHX PHY?) ADDR_0DB34D: 48 PHA ; |/ ADDR_0DB34E: AE BE 13 LDX.W $13BE ; | This big code checks the item memory settings flag for the current object. ADDR_0DB351: A9 F8 LDA.B #$F8 ; |\ ADDR_0DB353: 18 CLC ; | | ADDR_0DB354: 7F AE A8 0D ADC.L DATA_0DA8AE,X ; | | Low byte of pointer to item memory table ADDR_0DB358: 85 08 STA $08 ; |/ ADDR_0DB35A: A9 19 LDA.B #$19 ; |\ ADDR_0DB35C: 7F B1 A8 0D ADC.L DATA_0DA8B1,X ; | | High byte of pointer ADDR_0DB360: 85 09 STA $09 ; |/ ADDR_0DB362: AD A1 1B LDA.W $1BA1 ; |\ ADDR_0DB365: 0A ASL ; | | ADDR_0DB366: 0A ASL ; | | Set screen number in index ADDR_0DB367: 85 0E STA $0E ; |/ ADDR_0DB369: A5 0A LDA $0A ; |\ ADDR_0DB36B: 29 10 AND.B #$10 ; | | ADDR_0DB36D: F0 06 BEQ ADDR_0DB375 ; | | ADDR_0DB36F: A5 0E LDA $0E ; | | Set high Y bit in index ADDR_0DB371: 09 02 ORA.B #$02 ; | | ADDR_0DB373: 85 0E STA $0E ; |/ ADDR_0DB375: 98 TYA ; |\ ADDR_0DB376: 29 08 AND.B #$08 ; | | ADDR_0DB378: F0 06 BEQ ADDR_0DB380 ; | | ADDR_0DB37A: A5 0E LDA $0E ; | | Set highest bit of X position in index ADDR_0DB37C: 09 01 ORA.B #$01 ; | | ADDR_0DB37E: 85 0E STA $0E ; |/ ADDR_0DB380: 98 TYA ; |\ ADDR_0DB381: 29 07 AND.B #$07 ; | | Set another index to lowest three bits of X position ADDR_0DB383: AA TAX ; |/ ADDR_0DB384: A4 0E LDY $0E ; |\ ADDR_0DB386: B1 08 LDA ($08),Y ; | | ADDR_0DB388: 3F A6 A8 0D AND.L DATA_0DA8A6,X ; | | And load the bit we need ADDR_0DB38C: 85 0F STA $0F ; |/ ADDR_0DB38E: 68 PLA ; |\ ADDR_0DB38F: AA TAX ; | | ADDR_0DB390: 68 PLA ; | | Reload indexes ADDR_0DB391: A8 TAY ;/ / ADDR_0DB392: 20 0D AA JSR.W StzTo6ePointer0080E7 ; Set map16 page (even if the coin has been taken) ADDR_0DB395: A9 2C LDA.B #$2C ;\ ADDR_0DB397: 85 0C STA $0C ;/ Object to generate ADDR_0DB399: A5 0F LDA $0F ;\ ADDR_0DB39B: F0 06 BEQ ADDR_0DB3A3 ;/ Check item memory flag ADDR_0DB39D: 20 87 A9 JSR.W CODE_0DA987 ; Update pointer...? ADDR_0DB3A0: 4C A8 B3 JMP.W ADDR_0DB3A8 ; Skip Add Object code ADDR_0DB3A3: A5 0C LDA $0C ;\ ADDR_0DB3A5: 20 5B A9 JSR.W CODE_0DA95B ;/ Add object ADDR_0DB3A8: CA DEX ;\ ADDR_0DB3A9: 10 9F BPL ADDR_0DB34A ;/ Check for end of the row ADDR_0DB3AB: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer ADDR_0DB3AE: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards ADDR_0DB3B1: A6 00 LDX $00 ; Reload width ADDR_0DB3B3: C6 01 DEC $01 ;\ ADDR_0DB3B5: 30 03 BMI Return0DB3BA ; | Check for end of the object ADDR_0DB3B7: 4C 4A B3 JMP.W ADDR_0DB34A ;/ Return0DB3BA: 60 RTS ; Return ;Rope/clouds DATA_0DB3BB: .db $05,$06 CODE_0DB3BD: A4 57 LDY $57 ; Position CODE_0DB3BF: A5 59 LDA $59 ;\ CODE_0DB3C1: 29 0F AND.B #$0F ; | Width CODE_0DB3C3: 85 00 STA $00 ;/ CODE_0DB3C5: A5 59 LDA $59 ;\ CODE_0DB3C7: 4A LSR ; | CODE_0DB3C8: 4A LSR ; | CODE_0DB3C9: 4A LSR ; | Type CODE_0DB3CA: 4A LSR ; | CODE_0DB3CB: AA TAX ;/ CODE_0DB3CC: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB3CF: BF BB B3 0D LDA.L DATA_0DB3BB,X ; | Add tile CODE_0DB3D3: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB3D6: C6 00 DEC $00 ;\ CODE_0DB3D8: 10 F2 BPL CODE_0DB3CC ;/ Check for end of the object Return0DB3DA: 60 RTS ; Return ;Water surface (both animated and nonanimated), lava surface, and net top edge DATA_0DB3DB: .db $00,$01,$04,$08 ; Top tiles DATA_0DB3DF: .db $02,$03,$05,$0B ; Bottom tiles CODE_0DB3E3: A4 57 LDY $57 ; Position CODE_0DB3E5: A5 59 LDA $59 ;\ CODE_0DB3E7: 29 0F AND.B #$0F ; | CODE_0DB3E9: 85 00 STA $00 ; | Width CODE_0DB3EB: 85 02 STA $02 ;/ CODE_0DB3ED: A5 59 LDA $59 ;\ CODE_0DB3EF: 4A LSR ; | CODE_0DB3F0: 4A LSR ; | CODE_0DB3F1: 4A LSR ; | Height CODE_0DB3F2: 4A LSR ; | CODE_0DB3F3: 85 01 STA $01 ;/ CODE_0DB3F5: 8A TXA ;\ CODE_0DB3F6: 38 SEC ; | CODE_0DB3F7: E9 17 SBC.B #$17 ; | Type CODE_0DB3F9: AA TAX ;/ CODE_0DB3FA: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB3FD: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB400: BF DB B3 0D LDA.L DATA_0DB3DB,X ; | Add top tile CODE_0DB404: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB407: C6 02 DEC $02 ;\ CODE_0DB409: 10 F2 BPL CODE_0DB3FD ; | Check for end of the row CODE_0DB40B: 4C 1C B4 JMP.W CODE_0DB41C ;/ CODE_0DB40E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB411: BF DF B3 0D LDA.L DATA_0DB3DF,X ; | Add middle tiles CODE_0DB415: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB418: C6 02 DEC $02 ;\ CODE_0DB41A: 10 F2 BPL CODE_0DB40E ;/ Check for end of the row CODE_0DB41C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB41F: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB422: A5 00 LDA $00 ;\ CODE_0DB424: 85 02 STA $02 ;/ Reload width CODE_0DB426: C6 01 DEC $01 ;\ CODE_0DB428: 10 E4 BPL CODE_0DB40E ;/ Check for end of the object Return0DB42A: 60 RTS ; Return ;Donut bridge DATA_0DB42B: .db $26 ; Top tile DATA_0DB42C: .db $44 ; Bottom tile CODE_0DB42D: A4 57 LDY $57 ; Position CODE_0DB42F: A5 59 LDA $59 ;\ CODE_0DB431: 29 0F AND.B #$0F ; | CODE_0DB433: 85 00 STA $00 ; | Width (the height bits are obviously unused) CODE_0DB435: 85 01 STA $01 ;/ CODE_0DB437: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB43A: A2 00 LDX.B #$00 CODE_0DB43C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB43F: E0 00 CPX.B #$00 ; | CODE_0DB441: F0 03 BEQ CODE_0DB446 ; | Set map16 page CODE_0DB443: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DB446: BF 2B B4 0D LDA.L DATA_0DB42B,X ;\ CODE_0DB44A: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DB44D: C6 01 DEC $01 ;\ CODE_0DB44F: 10 EB BPL CODE_0DB43C ;/ Check for end of the row CODE_0DB451: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB454: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB457: A5 00 LDA $00 ;\ CODE_0DB459: 85 01 STA $01 ;/ Reload width CODE_0DB45B: E8 INX ;\ CODE_0DB45C: E0 02 CPX.B #$02 ; | Check for end of the object CODE_0DB45E: D0 DC BNE CODE_0DB43C ;/ Return0DB460: 60 RTS ; Return ;Net bottom edge CODE_0DB461: A4 57 LDY $57 ; Position CODE_0DB463: A5 59 LDA $59 ;\ CODE_0DB465: 4A LSR ; | CODE_0DB466: 4A LSR ; | CODE_0DB467: 4A LSR ; | Height CODE_0DB468: 4A LSR ; | CODE_0DB469: 85 00 STA $00 ;/ CODE_0DB46B: A5 59 LDA $59 ;\ CODE_0DB46D: 29 0F AND.B #$0F ; | CODE_0DB46F: 85 01 STA $01 ; | Width CODE_0DB471: AA TAX ;/ CODE_0DB472: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB475: A5 00 LDA $00 ;\ CODE_0DB477: F0 17 BEQ CODE_0DB490 ;/ Check if it's one tile high CODE_0DB479: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB47C: A9 0B LDA.B #$0B ; | Add middle tiles CODE_0DB47E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB481: CA DEX ;\ CODE_0DB482: 10 F5 BPL CODE_0DB479 ;/ Check for end of the line CODE_0DB484: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB487: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB48A: A6 01 LDX $01 ; Reload size CODE_0DB48C: C6 00 DEC $00 ;\ CODE_0DB48E: D0 E9 BNE CODE_0DB479 ;/ Check if we're on the last line CODE_0DB490: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB493: A9 0E LDA.B #$0E ; | Add tile CODE_0DB495: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB498: CA DEX ;\ CODE_0DB499: 10 F5 BPL CODE_0DB490 ;/ Check for end of the object Return0DB49B: 60 RTS ; Return ;Net vertical edge DATA_0DB49C: .db $0A,$0C CODE_0DB49E: A4 57 LDY $57 ; Position CODE_0DB4A0: A5 59 LDA $59 ;\ CODE_0DB4A2: 4A LSR ; | CODE_0DB4A3: 4A LSR ; | CODE_0DB4A4: 4A LSR ; | Height CODE_0DB4A5: 4A LSR ; | CODE_0DB4A6: 85 00 STA $00 ;/ CODE_0DB4A8: A5 59 LDA $59 ;\ CODE_0DB4AA: 29 0F AND.B #$0F ; | Type CODE_0DB4AC: AA TAX ;/ CODE_0DB4AD: BF 9C B4 0D LDA.L DATA_0DB49C,X ;\ CODE_0DB4B1: 20 D9 B4 JSR.W CODE_0DB4D9 ;/ Add top tile CODE_0DB4B4: 4C C0 B4 JMP.W CODE_0DB4C0 ; Go to loop CODE_0DB4B7: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB4BA: BF 9C B4 0D LDA.L DATA_0DB49C,X ; | Add middle tile CODE_0DB4BE: 97 6B STA [$6B],Y ;/ CODE_0DB4C0: 98 TYA ;\ CODE_0DB4C1: 18 CLC ; | CODE_0DB4C2: 69 10 ADC.B #$10 ; | CODE_0DB4C4: A8 TAY ; | Move pointer downwards CODE_0DB4C5: 90 03 BCC CODE_0DB4CA ; | CODE_0DB4C7: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DB4CA: C6 00 DEC $00 ;\ CODE_0DB4CC: D0 E9 BNE CODE_0DB4B7 ;/ Check for end of the object (except bottom tile) CODE_0DB4CE: BF 9C B4 0D LDA.L DATA_0DB49C,X ;\ CODE_0DB4D2: 4C FE B4 JMP.W CODE_0DB4FE ;/ Add bottom tile ;A subroutine the vertical net edge uses DATA_0DB4D5: .db $07,$09 ; New tiles if it's on a top edge DATA_0DB4D7: .db $1A,$19 ; New tiles if it's on a bottom edge CODE_0DB4D9: 85 0C STA $0C ; Preserve tile CODE_0DB4DB: B7 6B LDA [$6B],Y ; Load tile we're on CODE_0DB4DD: C9 08 CMP.B #$08 ;\ CODE_0DB4DF: D0 07 BNE CODE_0DB4E8 ;/ Check if we're on a top edge CODE_0DB4E1: BF D5 B4 0D LDA.L DATA_0DB4D5,X ;\ CODE_0DB4E5: 4C F0 B4 JMP.W CODE_0DB4F0 ;/ Change to new tile CODE_0DB4E8: C9 0E CMP.B #$0E ;\ CODE_0DB4EA: D0 06 BNE CODE_0DB4F2 ;/ Check if we're on a bottom edge CODE_0DB4EC: BF D7 B4 0D LDA.L DATA_0DB4D7,X ;\ CODE_0DB4F0: 85 0C STA $0C ;/ Change to new tile CODE_0DB4F2: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB4F5: A5 0C LDA $0C ; | Add tile CODE_0DB4F7: 97 6B STA [$6B],Y ;/ Return0DB4F9: 60 RTS ; Return ;More vertical net edge stuff DATA_0DB4FA: .db $0D,$0F ; New tiles if it's on a bottom edge DATA_0DB4FC: .db $1C,$1B ; New tiles if it's on a top edge CODE_0DB4FE: 85 0C STA $0C ; Preserve tile CODE_0DB500: B7 6B LDA [$6B],Y ; Load tile we're on CODE_0DB502: C9 0E CMP.B #$0E ;\ CODE_0DB504: D0 07 BNE CODE_0DB50D ;/ Check if we're on a bottom edge CODE_0DB506: BF FA B4 0D LDA.L DATA_0DB4FA,X ;\ CODE_0DB50A: 4C 15 B5 JMP.W CODE_0DB515 ;/ Change to new tile CODE_0DB50D: C9 08 CMP.B #$08 ;\ CODE_0DB50F: D0 06 BNE CODE_0DB517 ;/ Check if we're on a top edge CODE_0DB511: BF FC B4 0D LDA.L DATA_0DB4FC,X ;\ CODE_0DB515: 85 0C STA $0C ;/ Change to new tile CODE_0DB517: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB51A: A5 0C LDA $0C ; | Add tile CODE_0DB51C: 97 6B STA [$6B],Y ;/ Return0DB51E: 60 RTS ; Return ;Vertical bone/pipe/log CODE_0DB51F: A4 57 LDY $57 ; Position CODE_0DB521: A5 59 LDA $59 ;\ CODE_0DB523: 29 F0 AND.B #$F0 ; | CODE_0DB525: 4A LSR ; | CODE_0DB526: 4A LSR ; | Height CODE_0DB527: 4A LSR ; | CODE_0DB528: 4A LSR ; | CODE_0DB529: AA TAX ;/ CODE_0DB52A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB52D: A9 53 LDA.B #$53 ; | Add top tile CODE_0DB52F: 4C 37 B5 JMP.W CODE_0DB537 ;/ CODE_0DB532: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB535: A9 54 LDA.B #$54 ; | Add middle tiles CODE_0DB537: 97 6B STA [$6B],Y ;/ CODE_0DB539: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB53C: CA DEX ;\ CODE_0DB53D: D0 F3 BNE CODE_0DB532 ;/ Check for end of the object CODE_0DB53F: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB542: A9 55 LDA.B #$55 ; | Add bottom tiles CODE_0DB544: 97 6B STA [$6B],Y ;/ Return0DB546: 60 RTS ; Return ;Horizontal bone/pipe/log CODE_0DB547: A4 57 LDY $57 ; Position CODE_0DB549: A5 59 LDA $59 ;\ CODE_0DB54B: 29 0F AND.B #$0F ; | Width CODE_0DB54D: AA TAX ;/ CODE_0DB54E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB551: A9 56 LDA.B #$56 ; | Add left tile CODE_0DB553: 4C 5B B5 JMP.W CODE_0DB55B ;/ CODE_0DB556: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB559: A9 57 LDA.B #$57 ; | Add middle tiles CODE_0DB55B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB55E: CA DEX ;\ CODE_0DB55F: D0 F5 BNE CODE_0DB556 ;/ Check for end of the object CODE_0DB561: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB564: A9 58 LDA.B #$58 ; | Add right tile CODE_0DB566: 97 6B STA [$6B],Y ;/ Return0DB568: 60 RTS ; Return ;This is the Cloud Fringe objects. DATA_0DB569: .db $91,$92,$96,$97,$9A,$9B,$9F,$A0 ADDR_0DB571: A4 57 LDY $57 ; Position again ADDR_0DB573: A5 59 LDA $59 ; That's a new version, why not TXA? ADDR_0DB575: 38 SEC ;\ ADDR_0DB576: E9 68 SBC.B #$68 ; | Update block number ADDR_0DB578: AA TAX ;/ ADDR_0DB579: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DB57C: BF 69 B5 0D LDA.L DATA_0DB569,X ; | Add block ADDR_0DB580: 97 6B STA [$6B],Y ;/ Return0DB582: 60 RTS ; Return ;Yellow switch block CODE_0DB583: A2 01 LDX.B #$01 ; Index points to the yellow one CODE_0DB585: D0 06 BNE CODE_0DB58D ; WHAT THE FUCK why not BRA? If it won't trigger, ROR RTL will be run, which will crash! DATA_0DB587: .db $6A,$6B ; Active block at second page DATA_0DB589: .db $6A,$6B ; Inactive block at first page (also lol @ two identical tables) ;Green switch block (most of this is shared by both of them, though) CODE_0DB58B: A2 00 LDX.B #$00 ; Index points to the green one CODE_0DB58D: A4 57 LDY $57 ; Position CODE_0DB58F: BD 27 1F LDA.W $1F27,X ;\ CODE_0DB592: D0 0A BNE CODE_0DB59E ;/ Check whether the switch has been hit and go to the correct place CODE_0DB594: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB597: BF 89 B5 0D LDA.L DATA_0DB589,X ; | Add outline block CODE_0DB59B: 97 6B STA [$6B],Y ;/ Return0DB59D: 60 RTS ; Return CODE_0DB59E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB5A1: BF 87 B5 0D LDA.L DATA_0DB587,X ; | Add solid block CODE_0DB5A5: 97 6B STA [$6B],Y ;/ Return0DB5A7: 60 RTS ; Return ;Bushes 1 through 5 DATA_0DB5A8: .db $73,$7A,$85,$88,$C3 ; Left tiles DATA_0DB5AD: .db $74,$7B,$86,$89,$C3 ; Middle tiles DATA_0DB5B2: .db $79,$80,$87,$8E,$C3 ; Right tiles CODE_0DB5B7: A4 57 LDY $57 ; Position CODE_0DB5B9: A5 59 LDA $59 ;\ CODE_0DB5BB: 29 0F AND.B #$0F ; | Width CODE_0DB5BD: 85 00 STA $00 ;/ CODE_0DB5BF: A5 59 LDA $59 ;\ CODE_0DB5C1: 4A LSR ; | CODE_0DB5C2: 4A LSR ; | CODE_0DB5C3: 4A LSR ; | Type CODE_0DB5C4: 4A LSR ; | CODE_0DB5C5: AA TAX ;/ CODE_0DB5C6: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB5C9: BF A8 B5 0D LDA.L DATA_0DB5A8,X ; | Add left tile CODE_0DB5CD: 4C D7 B5 JMP.W CODE_0DB5D7 ;/ CODE_0DB5D0: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB5D3: BF AD B5 0D LDA.L DATA_0DB5AD,X ; | Add middle tiles CODE_0DB5D7: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB5DA: C6 00 DEC $00 ;\ CODE_0DB5DC: D0 F2 BNE CODE_0DB5D0 ;/ Check for end of the object CODE_0DB5DE: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB5E1: BF B2 B5 0D LDA.L DATA_0DB5B2,X ; | Add right tile CODE_0DB5E5: 97 6B STA [$6B],Y ;/ Return0DB5E7: 60 RTS ; Return ;Arch ledge DATA_0DB5E8: .db $07,$0A,$0A,$08,$0A,$0A,$09 DATA_0DB5EF: .db $81,$82,$83,$81,$82,$83,$81 DATA_0DB5F6: .db $81,$25,$84,$81,$25,$84,$81 DATA_0DB5FD: .db $81,$25,$84,$81,$25,$84,$81 CODE_0DB604: A5 59 LDA $59 ;\ CODE_0DB606: 29 0F AND.B #$0F ; | Width CODE_0DB608: 85 00 STA $00 ;/ CODE_0DB60A: A9 03 LDA.B #$03 ;\ CODE_0DB60C: 85 03 STA $03 ;/ Height CODE_0DB60E: A2 00 LDX.B #$00 CODE_0DB610: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB613: A4 57 LDY $57 ; Position CODE_0DB615: A5 00 LDA $00 ;\ CODE_0DB617: 85 02 STA $02 ;/ Reload width CODE_0DB619: A9 02 LDA.B #$02 ;\ CODE_0DB61B: 85 01 STA $01 ;/ Number of tiles in left area CODE_0DB61D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB620: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | Add tile CODE_0DB624: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB627: E8 INX ;\ CODE_0DB628: C6 01 DEC $01 ; | Check for end of the left area CODE_0DB62A: 10 F1 BPL CODE_0DB61D ;/ CODE_0DB62C: C6 02 DEC $02 ;\ CODE_0DB62E: F0 22 BEQ CODE_0DB652 ;/ Check if it has a middle area CODE_0DB630: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB633: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | CODE_0DB637: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB63A: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DB63D: BF E9 B5 0D LDA.L DATA_0DB5E8+1,X ; | Add middle tiles CODE_0DB641: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB644: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DB647: BF EA B5 0D LDA.L DATA_0DB5E8+2,X ; | CODE_0DB64B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB64E: C6 02 DEC $02 ;\ CODE_0DB650: D0 DE BNE CODE_0DB630 ;/ Check if we need more middle tiles CODE_0DB652: 8A TXA ;\ CODE_0DB653: 18 CLC ; | CODE_0DB654: 69 03 ADC.B #$03 ; | Update index to table CODE_0DB656: AA TAX ;/ CODE_0DB657: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB65A: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | Add right tile CODE_0DB65E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB661: 4C B2 B6 JMP.W CODE_0DB6B2 ; Go to loop to add the lower tiles CODE_0DB664: A4 57 LDY $57 ; Position CODE_0DB666: A5 00 LDA $00 ;\ CODE_0DB668: 85 02 STA $02 ;/ Reload width CODE_0DB66A: A9 02 LDA.B #$02 ;\ CODE_0DB66C: 85 01 STA $01 ;/ Number of tiles in left area CODE_0DB66E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB671: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | Add left tiles CODE_0DB675: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB678: E8 INX ;\ CODE_0DB679: C6 01 DEC $01 ; | Check if we need more left tiles CODE_0DB67B: 10 F1 BPL CODE_0DB66E ;/ CODE_0DB67D: C6 02 DEC $02 ;\ CODE_0DB67F: F0 22 BEQ CODE_0DB6A3 ;/ Check if it has a middle area CODE_0DB681: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB684: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | CODE_0DB688: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB68B: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | CODE_0DB68E: BF E9 B5 0D LDA.L DATA_0DB5E8+1,X ; | Add middle tiles CODE_0DB692: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB695: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | CODE_0DB698: BF EA B5 0D LDA.L DATA_0DB5E8+2,X ; | CODE_0DB69C: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB69F: C6 02 DEC $02 ;\ CODE_0DB6A1: D0 DE BNE CODE_0DB681 ;/ Check if we need more middle tiles CODE_0DB6A3: 8A TXA ;\ CODE_0DB6A4: 18 CLC ; | CODE_0DB6A5: 69 03 ADC.B #$03 ; | Update index to table CODE_0DB6A7: AA TAX ;/ CODE_0DB6A8: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB6AB: BF E8 B5 0D LDA.L DATA_0DB5E8,X ; | Add right tile CODE_0DB6AF: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB6B2: E8 INX CODE_0DB6B3: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB6B6: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer down CODE_0DB6B9: C6 03 DEC $03 ;\ CODE_0DB6BB: 30 03 BMI Return0DB6C0 ; | Check for end of the object CODE_0DB6BD: 4C 64 B6 JMP.W CODE_0DB664 ;/ Return0DB6C0: 60 RTS ; Return ;Top cloud fringe DATA_0DB6C1: .db $93,$9C CODE_0DB6C3: A4 57 LDY $57 ; Position CODE_0DB6C5: A5 59 LDA $59 ;\ CODE_0DB6C7: 29 0F AND.B #$0F ; | Size CODE_0DB6C9: 85 00 STA $00 ;/ CODE_0DB6CB: A5 59 LDA $59 ;\ CODE_0DB6CD: 4A LSR ; | CODE_0DB6CE: 4A LSR ; | CODE_0DB6CF: 4A LSR ; | Type CODE_0DB6D0: 4A LSR ; | CODE_0DB6D1: AA TAX ;/ CODE_0DB6D2: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB6D5: BF C1 B6 0D LDA.L DATA_0DB6C1,X ; | Add tile CODE_0DB6D9: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB6DC: C6 00 DEC $00 ;\ CODE_0DB6DE: 10 F2 BPL CODE_0DB6D2 ;/ Check for end of the object Return0DB6E0: 60 RTS ; Return ;The two tree branches DATA_0DB6E1: .db $C1,$C2 CODE_0DB6E3: A4 57 LDY $57 ; Position CODE_0DB6E5: A5 59 LDA $59 ;\ CODE_0DB6E7: 38 SEC ; | CODE_0DB6E8: E9 88 SBC.B #$88 ; | "Fix" object number CODE_0DB6EA: AA TAX ;/ CODE_0DB6EB: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB6EE: BF E1 B6 0D LDA.L DATA_0DB6E1,X ; | Add block CODE_0DB6F2: 97 6B STA [$6B],Y ;/ Return0DB6F4: 60 RTS ; Return ;Left/right cloud fringe DATA_0DB6F5: .db $94,$8F,$9D,$98,$95,$90,$9E,$99 ; Top tiles DATA_0DB6FD: .db $8F,$8F,$98,$98,$90,$90,$99,$99 ; Middle tiles ADDR_0DB705: A4 57 LDY $57 ; Position ADDR_0DB707: A5 59 LDA $59 ;\ ADDR_0DB709: 4A LSR ; | ADDR_0DB70A: 4A LSR ; | ADDR_0DB70B: 4A LSR ; | Height ADDR_0DB70C: 4A LSR ; | ADDR_0DB70D: 85 00 STA $00 ;/ ADDR_0DB70F: A5 59 LDA $59 ;\ ADDR_0DB711: 29 0F AND.B #$0F ; | Type ADDR_0DB713: AA TAX ;/ ADDR_0DB714: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DB717: BF F5 B6 0D LDA.L DATA_0DB6F5,X ; | Add top tile ADDR_0DB71B: 4C 25 B7 JMP.W ADDR_0DB725 ;/ ADDR_0DB71E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DB721: BF FD B6 0D LDA.L DATA_0DB6FD,X ; | Add middle tiles ADDR_0DB725: 97 6B STA [$6B],Y ;/ ADDR_0DB727: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards ADDR_0DB72A: C6 00 DEC $00 ;\ ADDR_0DB72C: 10 F0 BPL ADDR_0DB71E ;/ Check for end of the object Return0DB72E: 60 RTS ; Return ;Right facing diagonal pipe DATA_0DB72F: .db $C4,$C5 DATA_0DB731: .db $C7,$EC,$ED,$C6 DATA_0DB735: .db $C7,$EE,$59,$5A,$EF DATA_0DB73A: .db $C7,$EE,$59,$5B,$5C CODE_0DB73F: A4 57 LDY $57 ; Position CODE_0DB741: A5 59 LDA $59 ;\ CODE_0DB743: 4A LSR ; | CODE_0DB744: 4A LSR ; | CODE_0DB745: 4A LSR ; | Size CODE_0DB746: 4A LSR ; | CODE_0DB747: 85 00 STA $00 ;/ CODE_0DB749: A9 01 LDA.B #$01 ;\ CODE_0DB74B: 85 01 STA $01 ;/ Number of tiles in first row CODE_0DB74D: A2 00 LDX.B #$00 CODE_0DB74F: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB752: A5 01 LDA $01 ;\ CODE_0DB754: 85 02 STA $02 ;/ Reload number of tiles in row CODE_0DB756: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB759: BF 2F B7 0D LDA.L DATA_0DB72F,X ; | Add tile CODE_0DB75D: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB760: E8 INX ;\ CODE_0DB761: C6 02 DEC $02 ; | Go to next tile CODE_0DB763: 10 F1 BPL CODE_0DB756 ;/ CODE_0DB765: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB768: 20 92 A9 JSR.W CODE_0DA992 ; Move pointer down and left CODE_0DB76B: E6 01 INC $01 ;\ CODE_0DB76D: E6 01 INC $01 ;/ Increase size of the next line CODE_0DB76F: C6 00 DEC $00 ;\ CODE_0DB771: 30 2C BMI CODE_0DB79F ;/ Check for end of the object CODE_0DB773: E0 06 CPX.B #$06 ;\ CODE_0DB775: D0 DB BNE CODE_0DB752 ;/ Check if the object should keep getting bigger CODE_0DB777: C6 01 DEC $01 ; The size of the last lines is 5, not 6 CODE_0DB779: A5 01 LDA $01 ;\ CODE_0DB77B: 85 02 STA $02 ;/ Reload width of the line CODE_0DB77D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB780: BF 2F B7 0D LDA.L DATA_0DB72F,X ; | Add tile CODE_0DB784: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB787: E8 INX ;\ CODE_0DB788: C6 02 DEC $02 ; | Check for end of the row CODE_0DB78A: 10 F1 BPL CODE_0DB77D ;/ CODE_0DB78C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB78F: 20 92 A9 JSR.W CODE_0DA992 ; Move pointer down and left CODE_0DB792: E0 10 CPX.B #$10 ;\ CODE_0DB794: D0 05 BNE CODE_0DB79B ;/ Check if we're at the end of the table CODE_0DB796: 8A TXA ;\ CODE_0DB797: 38 SEC ; | CODE_0DB798: E9 05 SBC.B #$05 ; | Decrease X if needed CODE_0DB79A: AA TAX ;/ CODE_0DB79B: C6 00 DEC $00 ;\ CODE_0DB79D: 10 DA BPL CODE_0DB779 ;/ Check for end of the object CODE_0DB79F: 20 5D A9 JSR.W CODE_0DA95D ; Move pointer down CODE_0DB7A2: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB7A5: A9 EB LDA.B #$EB ; | Add bottom tile CODE_0DB7A7: 97 6B STA [$6B],Y ;/ Return0DB7A9: 60 RTS ; Return ;Left facing diagonal ledge CODE_0DB7AA: A4 57 LDY $57 ; Position CODE_0DB7AC: A5 59 LDA $59 ;\ CODE_0DB7AE: 29 0F AND.B #$0F ; | CODE_0DB7B0: 85 00 STA $00 ; | Height CODE_0DB7B2: 85 02 STA $02 ;/ CODE_0DB7B4: A5 59 LDA $59 ;\ CODE_0DB7B6: 4A LSR ; | CODE_0DB7B7: 4A LSR ; | CODE_0DB7B8: 4A LSR ; | Width CODE_0DB7B9: 4A LSR ; | CODE_0DB7BA: 85 03 STA $03 ;/ CODE_0DB7BC: A2 01 LDX.B #$01 ;\ CODE_0DB7BE: 86 01 STX $01 ;/ Width of top row (not used) CODE_0DB7C0: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DB7C3: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB7C6: A9 AA LDA.B #$AA ; | CODE_0DB7C8: 20 FD AB JSR.W CODE_0DABFD ; | CODE_0DB7CB: AD 0D AA LDA.W StzTo6ePointer0080E7 ; | Add top row CODE_0DB7CE: A9 A1 LDA.B #$A1 ; | CODE_0DB7D0: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB7D3: 4C FD B7 JMP.W CODE_0DB7FD CODE_0DB7D6: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB7D9: A9 AA LDA.B #$AA ; | Add slope tile CODE_0DB7DB: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DB7DE: CA DEX CODE_0DB7DF: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB7E2: A9 E2 LDA.B #$E2 ; | Add slope assist tile CODE_0DB7E4: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB7E7: 4C F2 B7 JMP.W CODE_0DB7F2 CODE_0DB7EA: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB7ED: A9 3F LDA.B #$3F ; | Add dirt tiles CODE_0DB7EF: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB7F2: CA DEX ;\ CODE_0DB7F3: D0 F5 BNE CODE_0DB7EA ;/ Check if we need any dirt tiles CODE_0DB7F5: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB7F8: A9 A6 LDA.B #$A6 ; | Add the right tile with the diagonal line CODE_0DB7FA: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB7FD: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB800: 20 92 A9 JSR.W CODE_0DA992 ; Move pointer down and left CODE_0DB803: E6 01 INC $01 ;\ CODE_0DB805: E6 01 INC $01 ;/ Increase width of the row CODE_0DB807: A6 01 LDX $01 CODE_0DB809: C6 02 DEC $02 ;\ CODE_0DB80B: 10 C9 BPL CODE_0DB7D6 ;/ Go up and add more slope tiles if needed CODE_0DB80D: 20 5D A9 JSR.W CODE_0DA95D ; Go down CODE_0DB810: 84 57 STY $57 ;\ CODE_0DB812: 20 B1 A6 JSR.W CODE_0DA6B1 ;/ Preserve pointer/etc CODE_0DB815: CA DEX CODE_0DB816: 86 01 STX $01 CODE_0DB818: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB81B: A9 F7 LDA.B #$F7 ; | Add lower leftmost tile CODE_0DB81D: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DB820: 4C 36 B8 JMP.W CODE_0DB836 CODE_0DB823: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB826: A9 A3 LDA.B #$A3 ; | Add the left tile with the diagonal line CODE_0DB828: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB82B: 4C 36 B8 JMP.W CODE_0DB836 CODE_0DB82E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB831: A9 3F LDA.B #$3F ; | Add ground tiles CODE_0DB833: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB836: CA DEX ;\ CODE_0DB837: D0 F5 BNE CODE_0DB82E ;/ Check if we need more ground tiles CODE_0DB839: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB83C: A9 A6 LDA.B #$A6 ; | Add the right tile with the diagonal line CODE_0DB83E: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB841: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB844: 20 B4 A9 JSR.W CODE_0DA9B4 ; Move pointer down/right CODE_0DB847: A6 01 LDX $01 ;\ CODE_0DB849: C6 03 DEC $03 ; | Check if we need more ground tiles CODE_0DB84B: 10 D6 BPL CODE_0DB823 ;/ Return0DB84D: 60 RTS ; Return ;Add tile for the diagonal ledges and check if we need to care about those black lines CODE_0DB84E: 85 0F STA $0F ; Preserve tile CODE_0DB850: B7 6B LDA [$6B],Y ; Load the tile we're on CODE_0DB852: C9 25 CMP.B #$25 ;\ CODE_0DB854: F0 08 BEQ CODE_0DB85E ;/ Don't change anything if we're on an air tile CODE_0DB856: C9 3F CMP.B #$3F ;\ CODE_0DB858: F0 02 BEQ CODE_0DB85C ;/ Only go forwards one tile if we're on dirt ADDR_0DB85A: E6 0F INC $0F ;\ CODE_0DB85C: E6 0F INC $0F ;/ Go forwards two tiles if we're on anything else, like 1E7 or 1E8 CODE_0DB85E: A5 0F LDA $0F ;\ CODE_0DB860: 4C 5B A9 JMP.W CODE_0DA95B ;/ Add the requested tile ;Right facing diagonal ledge CODE_0DB863: A4 57 LDY $57 ; Position CODE_0DB865: A5 59 LDA $59 ;\ CODE_0DB867: 29 0F AND.B #$0F ; | CODE_0DB869: 85 00 STA $00 ; | Width CODE_0DB86B: 85 02 STA $02 ;/ CODE_0DB86D: A5 59 LDA $59 ;\ CODE_0DB86F: 4A LSR ; | CODE_0DB870: 4A LSR ; | CODE_0DB871: 4A LSR ; | Height CODE_0DB872: 4A LSR ; | CODE_0DB873: 85 03 STA $03 ;/ CODE_0DB875: A2 01 LDX.B #$01 ;\ CODE_0DB877: 86 01 STX $01 ;/ Width of first row CODE_0DB879: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DB87C: AD 0D AA LDA.W StzTo6ePointer0080E7 ;\ CODE_0DB87F: A9 AF LDA.B #$AF ; | CODE_0DB881: 20 4E B8 JSR.W CODE_0DB84E ; | CODE_0DB884: 20 08 AA JSR.W Sta1To6ePointer ; | Add top row CODE_0DB887: A9 AF LDA.B #$AF ; | CODE_0DB889: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DB88C: 4C B7 B8 JMP.W CODE_0DB8B7 CODE_0DB88F: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB892: A9 A9 LDA.B #$A9 ; | Add the left tile with the diagonal line CODE_0DB894: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB897: 4C A2 B8 JMP.W CODE_0DB8A2 CODE_0DB89A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB89D: A9 3F LDA.B #$3F ; | Add dirt tile CODE_0DB89F: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB8A2: CA DEX ;\ CODE_0DB8A3: E0 01 CPX.B #$01 ; | Check if we need more dirt tiles CODE_0DB8A5: D0 F3 BNE CODE_0DB89A ;/ CODE_0DB8A7: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB8AA: A9 E4 LDA.B #$E4 ; | CODE_0DB8AC: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DB8AF: 20 08 AA JSR.W Sta1To6ePointer ; | Add slope + slopeassist tiles CODE_0DB8B2: A9 AF LDA.B #$AF ; | CODE_0DB8B4: 20 FD AB JSR.W CODE_0DABFD ;/ CODE_0DB8B7: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB8BA: 20 92 A9 JSR.W CODE_0DA992 ; Move pointer down and left CODE_0DB8BD: E6 01 INC $01 ;\ CODE_0DB8BF: E6 01 INC $01 ;/ Increase width of future lines CODE_0DB8C1: A6 01 LDX $01 ; Load width CODE_0DB8C3: C6 02 DEC $02 ;\ CODE_0DB8C5: 10 C8 BPL CODE_0DB88F ;/ Check if we need dirt tiles CODE_0DB8C7: CA DEX ;\ CODE_0DB8C8: 86 01 STX $01 ;/ Lower width of the next line CODE_0DB8CA: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB8CD: A9 A9 LDA.B #$A9 ; | Add the left tile with the diagonal line CODE_0DB8CF: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB8D2: 4C DD B8 JMP.W CODE_0DB8DD CODE_0DB8D5: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB8D8: A9 3F LDA.B #$3F ; | Add dirt tiles CODE_0DB8DA: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB8DD: CA DEX ;\ CODE_0DB8DE: D0 F5 BNE CODE_0DB8D5 ;/ Check if we need more dirt tiles CODE_0DB8E0: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB8E3: A9 F9 LDA.B #$F9 ; | Add the lower rightmost tile CODE_0DB8E5: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB8E8: 4C 09 B9 JMP.W CODE_0DB909 CODE_0DB8EB: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB8EE: A9 A9 LDA.B #$A9 ; | Add the left tile with the diagonal line CODE_0DB8F0: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB8F3: 4C FE B8 JMP.W CODE_0DB8FE CODE_0DB8F6: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB8F9: A9 3F LDA.B #$3F ; | Add dirt tiles CODE_0DB8FB: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB8FE: CA DEX ;\ CODE_0DB8FF: D0 F5 BNE CODE_0DB8F6 ;/ Check if we need more dirt tiles CODE_0DB901: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB904: A9 AC LDA.B #$AC ; | Add the right tile with the diagonal line CODE_0DB906: 20 4E B8 JSR.W CODE_0DB84E ;/ CODE_0DB909: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB90C: 20 92 A9 JSR.W CODE_0DA992 ; Move pointer down and left CODE_0DB90F: A6 01 LDX $01 ; Reload width CODE_0DB911: C6 03 DEC $03 ;\ CODE_0DB913: 10 D6 BPL CODE_0DB8EB ;/ Check for end of the object Return0DB915: 60 RTS ; Return ;Blue switch blocks CODE_0DB916: A2 00 LDX.B #$00 ; Set tile to blue switch tile CODE_0DB918: F0 06 BEQ CODE_0DB920 ; NOT ANOTHER DANGEROUS NON-BRA DATA_0DB91A: .db $6C,$6D ; Tiles when the switch isn't hit DATA_0DB91C: .db $6C,$6D ; Tiles when the switch is hit ;Red switch blocks CODE_0DB91E: A2 01 LDX.B #$01 ; Set tile to red switch tile CODE_0DB920: A4 57 LDY $57 ; Position CODE_0DB922: A5 59 LDA $59 ;\ CODE_0DB924: 29 0F AND.B #$0F ; | Width CODE_0DB926: 85 00 STA $00 ;/ CODE_0DB928: A5 59 LDA $59 ;\ CODE_0DB92A: 4A LSR ; | CODE_0DB92B: 4A LSR ; | CODE_0DB92C: 4A LSR ; | Height CODE_0DB92D: 4A LSR ; | CODE_0DB92E: 85 01 STA $01 ;/ CODE_0DB930: A5 00 LDA $00 ;\ CODE_0DB932: 85 02 STA $02 ;/ Load width CODE_0DB934: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DB937: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB93A: BF 1A B9 0D LDA.L DATA_0DB91A,X ; | CODE_0DB93E: 85 0F STA $0F ; | CODE_0DB940: BD 29 1F LDA.W $1F29,X ; | CODE_0DB943: F0 09 BEQ CODE_0DB94E ; | Load the tile we need CODE_0DB945: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DB948: BF 1C B9 0D LDA.L DATA_0DB91C,X ; | CODE_0DB94C: 85 0F STA $0F ;/ CODE_0DB94E: A5 0F LDA $0F ;\ CODE_0DB950: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DB953: C6 02 DEC $02 ;\ CODE_0DB955: 10 E0 BPL CODE_0DB937 ;/ Check for end of the line CODE_0DB957: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB95A: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB95D: C6 01 DEC $01 ;\ CODE_0DB95F: 10 CF BPL CODE_0DB930 ;/ Check for end of the object Return0DB961: 60 RTS ; Return ;Small tree trunk (forest) DATA_0DB962: .db $BD,$BF ; Top tiles DATA_0DB964: .db $BE,$C0 ; Bottom tiles (this object is 16x32 and repeats vertically) CODE_0DB966: A4 57 LDY $57 ; Position CODE_0DB968: A5 59 LDA $59 ;\ CODE_0DB96A: 29 0F AND.B #$0F ; | Type CODE_0DB96C: AA TAX ;/ CODE_0DB96D: A5 59 LDA $59 ;\ CODE_0DB96F: 4A LSR ; | CODE_0DB970: 4A LSR ; | CODE_0DB971: 4A LSR ; | Height CODE_0DB972: 4A LSR ; | CODE_0DB973: 85 00 STA $00 ;/ CODE_0DB975: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB978: BF 62 B9 0D LDA.L DATA_0DB962,X ; | Add upper tile CODE_0DB97C: 20 97 B9 JSR.W CODE_0DB997 ;/ CODE_0DB97F: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB982: C6 00 DEC $00 ;\ CODE_0DB984: 30 10 BMI Return0DB996 ;/ Check for end of the object CODE_0DB986: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB989: BF 64 B9 0D LDA.L DATA_0DB964,X ; | Add lower tile CODE_0DB98D: 97 6B STA [$6B],Y ;/ CODE_0DB98F: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB992: C6 00 DEC $00 ;\ CODE_0DB994: 10 DF BPL CODE_0DB975 ;/ Check for end of the object Return0DB996: 60 RTS ; Return ;Add tile for small tree trunk and update tile number if it's on something useful CODE_0DB997: 85 0F STA $0F ; Preserve tile to add CODE_0DB999: E0 01 CPX.B #$01 ;\ CODE_0DB99B: D0 11 BNE CODE_0DB9AE ;/ Check which type of tree trunk it is CODE_0DB99D: B7 6B LDA [$6B],Y ;\ CODE_0DB99F: C9 B1 CMP.B #$B1 ; | CODE_0DB9A1: F0 04 BEQ CODE_0DB9A7 ; | CODE_0DB9A3: C9 B6 CMP.B #$B6 ; | If the one below everything is on top of tile 0B1 or 0B6, add tile 0B2 or 0B7 CODE_0DB9A5: D0 14 BNE CODE_0DB9BB ; | CODE_0DB9A7: 85 0F STA $0F ; | CODE_0DB9A9: E6 0F INC $0F ;/ CODE_0DB9AB: 4C BB B9 JMP.W CODE_0DB9BB CODE_0DB9AE: B7 6B LDA [$6B],Y ;\ CODE_0DB9B0: C9 0E CMP.B #$0E ; | If the one above everything is on top of tile 10E... CODE_0DB9B2: D0 07 BNE CODE_0DB9BB ;/ CODE_0DB9B4: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB9B7: A9 0D LDA.B #$0D ; | add tile 10D instead CODE_0DB9B9: 85 0F STA $0F ;/ CODE_0DB9BB: A5 0F LDA $0F ;\ CODE_0DB9BD: 97 6B STA [$6B],Y ;/ Add the tile Return0DB9BF: 60 RTS ; Return ;Large tree trunk (forest) CODE_0DB9C0: A4 57 LDY $57 ; Position CODE_0DB9C2: A5 59 LDA $59 ;\ CODE_0DB9C4: 4A LSR ; | CODE_0DB9C5: 4A LSR ; | CODE_0DB9C6: 4A LSR ; | Height (width bits are unused) CODE_0DB9C7: 4A LSR ; | CODE_0DB9C8: 85 00 STA $00 ;/ CODE_0DB9CA: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DB9CD: A2 B9 LDX.B #$B9 ;\ CODE_0DB9CF: 20 F6 B9 JSR.W CODE_0DB9F6 ;/ Add 0B9 and 0BA tiles CODE_0DB9D2: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB9D5: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB9D8: C6 00 DEC $00 ;\ CODE_0DB9DA: 30 19 BMI Return0DB9F5 ;/ Check for end of the object CODE_0DB9DC: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB9DF: A9 BB LDA.B #$BB ; | Add 0BB tile CODE_0DB9E1: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DB9E4: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DB9E7: A9 BC LDA.B #$BC ; | Add 0BC tile CODE_0DB9E9: 97 6B STA [$6B],Y ;/ CODE_0DB9EB: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DB9EE: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DB9F1: C6 00 DEC $00 ;\ CODE_0DB9F3: 10 D5 BPL CODE_0DB9CA ;/ Check for end of the object Return0DB9F5: 60 RTS ; Return ;Add one of the rows for the large tree trunk and check if we're on a ledge CODE_0DB9F6: B7 6B LDA [$6B],Y ;\ CODE_0DB9F8: C9 0E CMP.B #$0E ; | If we're on tile 10E... CODE_0DB9FA: D0 05 BNE CODE_0DBA01 ;/ CODE_0DB9FC: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DB9FF: A2 0B LDX.B #$0B ;/ add 10B/10C instead CODE_0DBA01: 8A TXA ;\ CODE_0DBA02: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DBA05: E8 INX ; | Add tiles CODE_0DBA06: 8A TXA ; | CODE_0DBA07: 97 6B STA [$6B],Y ;/ Return0DBA09: 60 RTS ; Return ;Ledge (forest) CODE_0DBA0A: A4 57 LDY $57 ; Position CODE_0DBA0C: A5 59 LDA $59 ;\ CODE_0DBA0E: 29 0F AND.B #$0F ; | CODE_0DBA10: 85 00 STA $00 ; | Width CODE_0DBA12: AA TAX ;/ CODE_0DBA13: A5 59 LDA $59 ;\ CODE_0DBA15: 4A LSR ; | CODE_0DBA16: 4A LSR ; | CODE_0DBA17: 4A LSR ; | Height CODE_0DBA18: 4A LSR ; | CODE_0DBA19: 85 01 STA $01 ;/ CODE_0DBA1B: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DBA1E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBA21: A9 0E LDA.B #$0E ; | Add actual ledge tiles CODE_0DBA23: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DBA26: CA DEX ;\ CODE_0DBA27: 10 F5 BPL CODE_0DBA1E ; | Check for end of the row CODE_0DBA29: 4C 37 BA JMP.W CODE_0DBA37 ;/ CODE_0DBA2C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DBA2F: A9 B8 LDA.B #$B8 ; | Add dirt tiles CODE_0DBA31: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DBA34: CA DEX ;\ CODE_0DBA35: 10 F5 BPL CODE_0DBA2C ;/ Check for end of the row CODE_0DBA37: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DBA3A: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DBA3D: A6 00 LDX $00 ; Reload width CODE_0DBA3F: C6 01 DEC $01 ;\ CODE_0DBA41: 10 E9 BPL CODE_0DBA2C ;/ Check for end of the object Return0DBA43: 60 RTS ; Return ;Left/right and top edge (forest) DATA_0DBA44: .db $5F,$5E,$10,$0F ; Top tiles (bad LM, show the ones with nonsolid left/right edges! You can render them correctly, so WHY NOT LET US ADD IT???) DATA_0DBA48: .db $60,$5D,$C5,$C4 ; Bottom tiles CODE_0DBA4C: A4 57 LDY $57 ; Position CODE_0DBA4E: A5 59 LDA $59 ;\ CODE_0DBA50: 29 0F AND.B #$0F ; | Type CODE_0DBA52: AA TAX ;/ CODE_0DBA53: A5 59 LDA $59 ;\ CODE_0DBA55: 4A LSR ; | CODE_0DBA56: 4A LSR ; | CODE_0DBA57: 4A LSR ; | Height CODE_0DBA58: 4A LSR ; | CODE_0DBA59: 85 00 STA $00 ;/ CODE_0DBA5B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBA5E: BF 44 BA 0D LDA.L DATA_0DBA44,X ; | Add top tile CODE_0DBA62: 97 6B STA [$6B],Y ;/ CODE_0DBA64: 4C 74 BA JMP.W CODE_0DBA74 CODE_0DBA67: E0 02 CPX.B #$02 ;\ CODE_0DBA69: 10 03 BPL CODE_0DBA6E ;/ Check if it's got a solid left/right edge CODE_0DBA6B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBA6E: BF 48 BA 0D LDA.L DATA_0DBA48,X ; | Add tile CODE_0DBA72: 97 6B STA [$6B],Y ;/ CODE_0DBA74: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer down CODE_0DBA77: C6 00 DEC $00 ;\ CODE_0DBA79: 10 EC BPL CODE_0DBA67 ;/ Check for end of the object Return0DBA7B: 60 RTS ; Return ;Forest tree top (worst coding I've ever seen) DATA_0DBA7C: .db $B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4 DATA_0DBA8C: .db $B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4 DATA_0DBA9C: .db $B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B4,$B5,$B3,$B5,$B3 DATA_0DBAAC: .db $B3,$B4,$B4,$B5,$B3,$B4,$B4,$B4,$B4,$B5,$B3,$B5,$B6,$B1,$B6,$B1 DATA_0DBABC: .db $B1,$B3,$B5,$B6,$B1,$B3,$B5,$B3,$B5,$B6,$B1,$B6,$25,$25,$25,$25 DATA_0DBACC: .db $25,$B1,$B6,$25,$25,$B1,$B6,$B1,$B6,$25,$25,$25,$25,$25,$25,$25 CODE_0DBADC: A5 59 LDA $59 ;\ CODE_0DBADE: 85 0F STA $0F ;/ Copy size CODE_0DBAE0: A5 57 LDA $57 ;\ CODE_0DBAE2: 85 0E STA $0E ; | Copy position CODE_0DBAE4: A8 TAY ;/ CODE_0DBAE5: A2 00 LDX.B #$00 CODE_0DBAE7: A9 05 LDA.B #$05 ;\ CODE_0DBAE9: 85 01 STA $01 ;/ Height CODE_0DBAEB: A9 0F LDA.B #$0F ;\ CODE_0DBAED: 85 00 STA $00 ;/ Width of one screen CODE_0DBAEF: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DBAF2: A5 00 LDA $00 ;\ CODE_0DBAF4: 85 02 STA $02 ;/ Copy width CODE_0DBAF6: BF 7C BA 0D LDA.L DATA_0DBA7C,X ;\ CODE_0DBAFA: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DBAFD: E8 INX ;\ CODE_0DBAFE: C6 02 DEC $02 ; | Check for end of the line CODE_0DBB00: 10 F4 BPL CODE_0DBAF6 ;/ CODE_0DBB02: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DBB05: A5 0E LDA $0E ;\ CODE_0DBB07: 18 CLC ; | CODE_0DBB08: 69 10 ADC.B #$10 ; | CODE_0DBB0A: 85 0E STA $0E ; | Move pointer downwards one tile CODE_0DBB0C: A8 TAY ; | CODE_0DBB0D: 90 03 BCC CODE_0DBB12 ; | CODE_0DBB0F: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DBB12: C6 01 DEC $01 ;\ CODE_0DBB14: 10 DC BPL CODE_0DBAF2 ;/ Check for end of this area CODE_0DBB16: A5 6B LDA $6B ;\ CODE_0DBB18: 18 CLC ; | CODE_0DBB19: 69 B0 ADC.B #$B0 ; | CODE_0DBB1B: 85 6B STA $6B ; | CODE_0DBB1D: 85 6E STA $6E ; | Move pointer downwards one screen (if carry doesn't get set, it screws up) CODE_0DBB1F: A5 6C LDA $6C ; | CODE_0DBB21: 69 00 ADC.B #$00 ; | CODE_0DBB23: 85 6C STA $6C ; | CODE_0DBB25: 85 6F STA $6F ;/ CODE_0DBB27: C6 0F DEC $0F ;\ CODE_0DBB29: 10 B5 BPL CODE_0DBAE0 ;/ Check for end of the object Return0DBB2B: 60 RTS ; Return ;Ice blue vertical pipe CODE_0DBB2C: A4 57 LDY $57 ; Position CODE_0DBB2E: A5 59 LDA $59 ;\ CODE_0DBB30: 4A LSR ; | CODE_0DBB31: 4A LSR ; | CODE_0DBB32: 4A LSR ; | Height CODE_0DBB33: 4A LSR ; | CODE_0DBB34: AA TAX ;/ CODE_0DBB35: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DBB38: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBB3B: A9 61 LDA.B #$61 ; | Add top left tile CODE_0DBB3D: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DBB40: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBB43: A9 62 LDA.B #$62 ; | Add top right tile CODE_0DBB45: 97 6B STA [$6B],Y ;/ CODE_0DBB47: 4C 59 BB JMP.W CODE_0DBB59 CODE_0DBB4A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBB4D: A9 63 LDA.B #$63 ; | Add middle left tile CODE_0DBB4F: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DBB52: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DBB55: A9 64 LDA.B #$64 ; | Add middle right tile CODE_0DBB57: 97 6B STA [$6B],Y ;/ CODE_0DBB59: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DBB5C: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DBB5F: CA DEX ;\ CODE_0DBB60: 10 E8 BPL CODE_0DBB4A ;/ Check for end of the object Return0DBB62: 60 RTS ; Return ;Ice blue turn tiles CODE_0DBB63: A2 0E LDX.B #$0E ;\ CODE_0DBB65: 4C C3 A8 JMP.W CODE_0DA8C3 ;/ Hijack the this-code-handles-many-objects code Empty0DBB68: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB70: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB78: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB80: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB88: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB90: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBB98: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBA0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBA8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBB0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBB8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBC0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBC8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBD0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBD8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBE0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBE8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBF0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DBBF8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0DBC00: .db $F4,$09,$F7,$09,$F5,$09,$FC,$09 DATA_0DBC08: .db $F5,$49,$FC,$09,$F5,$09,$FD,$09 DATA_0DBC10: .db $F5,$49,$FD,$09,$F6,$09,$F8,$09 DATA_0DBC18: .db $F7,$09,$F7,$89,$FE,$49,$FF,$89 DATA_0DBC20: .db $FE,$89,$FF,$09,$FF,$89,$FE,$49 DATA_0DBC28: .db $FE,$09,$FF,$09,$F8,$09,$F8,$89 DATA_0DBC30: .db $F7,$09,$F9,$09,$FE,$09,$FA,$09 DATA_0DBC38: .db $FF,$49,$FA,$09,$FE,$09,$FA,$49 DATA_0DBC40: .db $FE,$C9,$FA,$09,$F8,$09,$FB,$09 DATA_0DBC48: .db $F4,$29,$F7,$29,$F5,$29,$FC,$29 DATA_0DBC50: .db $F5,$69,$FC,$29,$F5,$29,$FD,$29 DATA_0DBC58: .db $F7,$29,$F7,$A9,$FE,$69,$FF,$A9 DATA_0DBC60: .db $FE,$A9,$FF,$29,$FF,$A9,$FE,$69 DATA_0DBC68: .db $F7,$29,$F9,$29,$FE,$29,$FA,$29 DATA_0DBC70: .db $FF,$69,$FA,$29,$FE,$29,$FA,$69 DATA_0DBC78: .db $C8,$29,$CA,$29,$C7,$29,$C9,$29 DATA_0DBC80: .db $71,$09,$73,$09,$FA,$08,$FA,$08 DATA_0DBC88: .db $FA,$08,$FA,$08,$FA,$08,$FA,$08 DATA_0DBC90: .db $FA,$08,$FA,$08,$70,$29,$72,$29 DATA_0DBC98: .db $D3,$99,$D3,$19,$D4,$99,$D4,$19 DATA_0DBCA0: .db $B1,$81,$A1,$81,$B2,$81,$A2,$81 DATA_0DBCA8: .db $B3,$81,$A3,$81,$B4,$81,$A4,$81 DATA_0DBCB0: .db $F8,$00,$F8,$00,$AC,$01,$BC,$01 DATA_0DBCB8: .db $AB,$41,$BB,$41,$F8,$00,$F8,$00 DATA_0DBCC0: .db $F8,$00,$F8,$00,$AB,$01,$BB,$01 DATA_0DBCC8: .db $AF,$01,$BF,$01,$F8,$00,$F8,$00 DATA_0DBCD0: .db $A1,$01,$B1,$01,$A2,$01,$B2,$01 DATA_0DBCD8: .db $A3,$01,$B3,$01,$A4,$01,$B4,$01 DATA_0DBCE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBCE8: .db $8A,$1D,$8A,$1D,$F8,$1C,$F8,$1C DATA_0DBCF0: .db $F8,$1C,$F8,$1C,$8A,$5D,$8A,$5D DATA_0DBCF8: .db $8B,$1D,$F8,$1C,$8B,$1D,$F8,$1C DATA_0DBD00: .db $F8,$1C,$8B,$9D,$F8,$1C,$8B,$9D DATA_0DBD08: .db $A5,$0D,$B5,$0D,$A6,$0D,$B6,$0D DATA_0DBD10: .db $A7,$0D,$B7,$0D,$A8,$0D,$B8,$0D DATA_0DBD18: .db $A9,$0D,$B9,$0D,$AA,$0D,$BA,$0D DATA_0DBD20: .db $A0,$0D,$9A,$0D,$F3,$0D,$9B,$0D DATA_0DBD28: .db $EB,$0D,$ED,$0D,$EC,$0D,$DD,$0D DATA_0DBD30: .db $EC,$4D,$DD,$4D,$EB,$4D,$ED,$4D DATA_0DBD38: .db $DD,$4D,$DD,$4D,$DD,$0D,$EF,$0D DATA_0DBD40: .db $DD,$4D,$EF,$4D,$DD,$0D,$DD,$0D DATA_0DBD48: .db $DD,$4D,$EE,$0D,$DD,$0D,$EE,$4D DATA_0DBD50: .db $7E,$0D,$7E,$0D,$21,$0C,$21,$0C DATA_0DBD58: .db $22,$0C,$22,$0C,$7F,$0D,$7F,$0D DATA_0DBD60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBD98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDD0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDD8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBDF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBE98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBED0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBED8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBEF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBF98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFD0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFD8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DBFF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC000: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC008: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC010: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC018: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC020: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC028: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC030: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC038: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC040: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC048: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC050: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC058: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC060: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC068: .db $46,$10,$46,$90,$46,$50,$46,$D0 DATA_0DC070: .db $4A,$10,$4A,$90,$4A,$50,$4A,$D0 DATA_0DC078: .db $C3,$15,$D3,$19,$C4,$15,$D4,$19 DATA_0DC080: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC088: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC090: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC098: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0B8: .db $C5,$01,$D5,$01,$C6,$01,$D6,$01 DATA_0DC0C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC0D0: .db $FA,$19,$FD,$19,$FB,$19,$FE,$19 DATA_0DC0D8: .db $FC,$19,$FF,$19,$FC,$19,$FF,$19 DATA_0DC0E0: .db $FB,$59,$FE,$59,$FA,$59,$FD,$59 DATA_0DC0E8: .db $85,$19,$96,$19,$87,$19,$97,$19 DATA_0DC0F0: .db $96,$99,$85,$99,$97,$99,$87,$99 DATA_0DC0F8: .db $88,$19,$98,$19,$89,$19,$99,$19 DATA_0DC100: .db $89,$59,$99,$59,$88,$59,$98,$59 DATA_0DC108: .db $F4,$09,$F7,$09,$F5,$09,$FC,$09 DATA_0DC110: .db $F5,$49,$FC,$09,$F5,$09,$FD,$09 DATA_0DC118: .db $F5,$49,$FD,$09,$F6,$09,$F8,$09 DATA_0DC120: .db $F7,$09,$F7,$89,$FE,$49,$FF,$89 DATA_0DC128: .db $FE,$89,$FF,$09,$FF,$89,$FE,$49 DATA_0DC130: .db $FE,$09,$FF,$09,$F8,$09,$F8,$89 DATA_0DC138: .db $F7,$09,$F9,$09,$FE,$09,$FA,$09 DATA_0DC140: .db $FF,$49,$FA,$09,$FE,$09,$FA,$49 DATA_0DC148: .db $FE,$C9,$FA,$09,$F8,$09,$FB,$09 DATA_0DC150: .db $AD,$01,$BD,$01,$8D,$01,$9D,$01 DATA_0DC158: .db $8E,$01,$9E,$01,$8F,$01,$9F,$01 DATA_0DC160: .db $8C,$01,$9C,$01,$8D,$01,$9D,$01 DATA_0DC168: .db $8E,$01,$9E,$01,$AE,$01,$BE,$01 DATA_0DC170: .db $26,$14,$36,$14,$26,$54,$36,$54 DATA_0DC178: .db $26,$18,$36,$18,$26,$58,$36,$58 DATA_0DC180: .db $26,$1C,$36,$1C,$26,$5C,$36,$5C DATA_0DC188: .db $27,$1C,$37,$1C,$27,$5C,$37,$5C ; This calls the correct code for the object if the tileset is T:1 in LM (castle) CODE_0DC190: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DC192: A6 5A LDX $5A ; Load object number CODE_0DC194: CA DEX ; We'll never see object number 0, so change the index to it won't clutter the table CODE_0DC195: 8A TXA ;\ CODE_0DC196: 22 FA 86 00 JSL.L ExecutePtrLong ;/ and call the correct subroutine PtrsLong0DC19A: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Blue) PtrsLong0DC19D: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible coin blocks PtrsLong0DC1A0: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible note blocks PtrsLong0DC1A3: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible POW coins PtrsLong0DC1A6: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coins PtrsLong0DC1A9: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Walk-through dirt PtrsLong0DC1AC: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Other color) PtrsLong0DC1AF: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Note blocks PtrsLong0DC1B2: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Turn blocks PtrsLong0DC1B5: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coin ? blocks PtrsLong0DC1B8: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Throw blocks PtrsLong0DC1BB: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Black piranha plants PtrsLong0DC1BE: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Cement blocks PtrsLong0DC1C1: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Brown blocks PtrsLong0DC1C4: 26 AA 0D .dw CODE_0DAA26 .db :$CODE_0DAA26 ; Vertical pipes PtrsLong0DC1C7: B4 AA 0D .dw CODE_0DAAB4 .db :$CODE_0DAAB4 ; Horizontal pipes PtrsLong0DC1CA: 0D AB 0D .dw CODE_0DAB0D .db :$CODE_0DAB0D ; Bullet shooter PtrsLong0DC1CD: 3E AB 0D .dw CODE_0DAB3E .db :$CODE_0DAB3E ; Slopes PtrsLong0DC1D0: 75 B0 0D .dw CODE_0DB075 .db :$CODE_0DB075 ; Ledge edges PtrsLong0DC1D3: D4 B1 0D .dw CODE_0DB1D4 .db :$CODE_0DB1D4 ; Ground ledge PtrsLong0DC1D6: 24 B2 0D .dw CODE_0DB224 .db :$CODE_0DB224 ; Midway/Goal point PtrsLong0DC1D9: 36 B3 0D .dw ADDR_0DB336 .db :$ADDR_0DB336 ; Blue coins PtrsLong0DC1DC: BD B3 0D .dw CODE_0DB3BD .db :$CODE_0DB3BD ; Rope/Clouds PtrsLong0DC1DF: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (ani) PtrsLong0DC1E2: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (not ani) PtrsLong0DC1E5: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Lava surface (ani) PtrsLong0DC1E8: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Net top edge PtrsLong0DC1EB: 2D B4 0D .dw CODE_0DB42D .db :$CODE_0DB42D ; Donut bridge PtrsLong0DC1EE: 61 B4 0D .dw CODE_0DB461 .db :$CODE_0DB461 ; Net bottom edge PtrsLong0DC1F1: 9E B4 0D .dw CODE_0DB49E .db :$CODE_0DB49E ; Net vertical edge PtrsLong0DC1F4: 1F B5 0D .dw CODE_0DB51F .db :$CODE_0DB51F ; Vert. Pipe/Bone/Log PtrsLong0DC1F7: 47 B5 0D .dw CODE_0DB547 .db :$CODE_0DB547 ; Horiz. Pipe/Bone/Log PtrsLong0DC1FA: C8 B1 0D .dw CODE_0DB1C8 .db :$CODE_0DB1C8 ; Long ground ledge PtrsLong0DC1FD: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DC200: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC203: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC206: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC209: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC20C: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC20F: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC212: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | Unused (LM will declare these to be "reserved" and won't let you use them) PtrsLong0DC215: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC218: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC21B: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC21E: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DC221: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DC224: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC227: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC22A: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | These could've been tileset specific, but Nintendo didn't have that many ideas for them. PtrsLong0DC22D: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DC230: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DC233: D8 C5 0D .dw CODE_0DC5D8 .db :$CODE_0DC5D8 ; Those weird double ended pipes that Mario can walk through the middles of PtrsLong0DC236: 8A C5 0D .dw CODE_0DC58A .db :$CODE_0DC58A ; Rock wall background PtrsLong0DC239: EF C4 0D .dw CODE_0DC4EF .db :$CODE_0DC4EF ; Large spikes PtrsLong0DC23C: 12 CF 0D .dw CODE_0DCF12 .db :$CODE_0DCF12 ; Horizontal line guide lines PtrsLong0DC23F: 33 CF 0D .dw CODE_0DCF33 .db :$CODE_0DCF33 ; Vertical line guide lines PtrsLong0DC242: 16 B9 0D .dw CODE_0DB916 .db :$CODE_0DB916 ; Blue switch blocks PtrsLong0DC245: 1E B9 0D .dw CODE_0DB91E .db :$CODE_0DB91E ; Red switch blocks PtrsLong0DC248: C9 C4 0D .dw CODE_0DC4C9 .db :$CODE_0DC4C9 ; Ledge PtrsLong0DC24B: 78 C4 0D .dw CODE_0DC478 .db :$CODE_0DC478 ; Stone block wall PtrsLong0DC24E: 41 C3 0D .dw CODE_0DC341 .db :$CODE_0DC341 ; Conveyors PtrsLong0DC251: 2E C4 0D .dw CODE_0DC42E .db :$CODE_0DC42E ; Horizontal rows of spikes PtrsLong0DC254: 4F C4 0D .dw CODE_0DC44F .db :$CODE_0DC44F ; Vertical rows of spikes / vertical columns ;Conveyor end tiles DATA_0DC257: .db $07,$08 CODE_0DC259: A4 57 LDY $57 ; Position yawn CODE_0DC25B: A5 59 LDA $59 ;\ CODE_0DC25D: 38 SEC ; | CODE_0DC25E: E9 4B SBC.B #$4B ; | Fix object number yawn CODE_0DC260: AA TAX ;/ CODE_0DC261: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC264: BF 57 C2 0D LDA.L DATA_0DC257,X ; | Add object yawn CODE_0DC268: 97 6B STA [$6B],Y ;/ Return0DC26A: 60 RTS ; Return ;Castle entrance DATA_0DC26B: .db $73,$74,$75,$73,$74,$74,$7B,$79,$7A DATA_0DC274: .db $79,$7A,$7B,$79,$7A,$7B,$73,$74,$75 DATA_0DC27D: .db $73,$74,$74,$74,$75,$73,$77,$77,$78 DATA_0DC286: .db $76,$77,$77,$7A,$7B,$79,$7A,$7A,$7B DATA_0DC28F: .db $79,$7A,$7B,$73,$74,$74,$75,$73,$74 DATA_0DC298: .db $73,$75,$73,$77,$7A,$7A,$7B,$79,$7A DATA_0DC2A1: .db $79,$7B,$79,$7B,$7C,$7D,$7D,$7D,$7D DATA_0DC2AA: .db $25,$73,$74,$75,$7E,$7F,$7F,$7F,$7F DATA_0DC2B3: .db $25,$76,$77,$78,$80,$81,$81,$81,$81 DATA_0DC2BC: .db $25,$76,$77,$78,$82,$82,$82,$82,$7C DATA_0DC2C5: .db $25,$79,$7A,$7B,$83,$84,$84,$85,$80 DATA_0DC2CE: .db $25,$73,$74,$75,$83,$84,$84,$85,$7C DATA_0DC2D7: .db $25,$76,$77,$78,$83,$84,$84,$85,$7E DATA_0DC2E0: .db $25,$79,$7A,$7B,$83,$84,$84,$85,$80 CODE_0DC2E9: A4 57 LDY $57 ; Load position CODE_0DC2EB: A2 00 LDX.B #$00 CODE_0DC2ED: A9 08 LDA.B #$08 ; Width CODE_0DC2EF: 85 00 STA $00 CODE_0DC2F1: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC2F4: BF 6B C2 0D LDA.L DATA_0DC26B,X ; | Add tile CODE_0DC2F8: C9 25 CMP.B #$25 ; | \ CODE_0DC2FA: F0 02 BEQ CODE_0DC2FE ; | / Don't add the blank tiles for some reason CODE_0DC2FC: 97 6B STA [$6B],Y ;/ CODE_0DC2FE: 20 5D A9 JSR.W CODE_0DA95D ;\ CODE_0DC301: E8 INX ;/ Go to next tile CODE_0DC302: C6 00 DEC $00 ;\ CODE_0DC304: D0 EB BNE CODE_0DC2F1 ;/ Check for end of line CODE_0DC306: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC309: BF 6B C2 0D LDA.L DATA_0DC26B,X ; | Add tile without checking for tile 25? CODE_0DC30D: 97 6B STA [$6B],Y ;/ CODE_0DC30F: E8 INX ;\ CODE_0DC310: 20 7D A9 JSR.W CODE_0DA97D ;/ Go to next line CODE_0DC313: E0 7E CPX.B #$7E ;\ CODE_0DC315: D0 D6 BNE CODE_0DC2ED ;/ Check for end of object Return0DC317: 60 RTS ; Return ;Boss door DATA_0DC318: .db $98,$99 DATA_0DC31A: .db $9A,$9B DATA_0DC31C: .db $9C,$9C CODE_0DC31E: A4 57 LDY $57 ; Load position CODE_0DC320: A2 00 LDX.B #$00 CODE_0DC322: A9 01 LDA.B #$01 ; Width CODE_0DC324: 85 00 STA $00 CODE_0DC326: A5 00 LDA $00 ;\ CODE_0DC328: 85 01 STA $01 ;/ Reload size CODE_0DC32A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC32D: BF 18 C3 0D LDA.L DATA_0DC318,X ; | Add object CODE_0DC331: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC334: E8 INX ;\ CODE_0DC335: C6 01 DEC $01 ;/ Go to next tile CODE_0DC337: 10 F1 BPL CODE_0DC32A ;\ CODE_0DC339: 20 7D A9 JSR.W CODE_0DA97D ;/ Check for end of line CODE_0DC33C: E0 06 CPX.B #$06 ; Total size CODE_0DC33E: D0 E6 BNE CODE_0DC326 Return0DC340: 60 RTS ; Return ;Conveyors CODE_0DC341: A5 59 LDA $59 ;\ CODE_0DC343: 29 02 AND.B #$02 ; | CODE_0DC345: 4A LSR ; | Check which direction the conveyor is facing CODE_0DC346: 22 FA 86 00 JSL.L ExecutePtrLong ;/ PtrsLong0DC34A: 58 C3 0D .dw CODE_0DC358 .db :$CODE_0DC358 ; Left D8 C3 0D .dw CODE_0DC3D8 .db :$CODE_0DC3D8 ; Right DATA_0DC350: .db $CE,$D1,$CF,$D0 ; Conveyor tiles DATA_0DC354: .db $F3,$F6,$F4,$F5 ; Slope assist tiles CODE_0DC358: A4 57 LDY $57 ; Position CODE_0DC35A: A9 00 LDA.B #$00 ;\ CODE_0DC35C: 85 02 STA $02 ;/ Width of the first line CODE_0DC35E: A5 59 LDA $59 ;\ CODE_0DC360: 29 03 AND.B #$03 ; | Type CODE_0DC362: AA TAX ;/ CODE_0DC363: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DC366: A5 59 LDA $59 ;\ CODE_0DC368: 4A LSR ; | CODE_0DC369: 4A LSR ; | CODE_0DC36A: 4A LSR ; | Size CODE_0DC36B: 4A LSR ; | CODE_0DC36C: 85 00 STA $00 ; | CODE_0DC36E: E6 00 INC $00 ;/ CODE_0DC370: A5 02 LDA $02 ;\ CODE_0DC372: 85 03 STA $03 ;/ Reload width of line CODE_0DC374: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC377: BF 50 C3 0D LDA.L DATA_0DC350,X ; | Add conveyor tile CODE_0DC37B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC37E: C6 03 DEC $03 ;\ CODE_0DC380: 30 19 BMI CODE_0DC39B ;/ Check if it's the first line (i.e. if we need slope assist tiles) CODE_0DC382: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC385: BF 54 C3 0D LDA.L DATA_0DC354,X ; | Add slope assist tile CODE_0DC389: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC38C: 4C 97 C3 JMP.W CODE_0DC397 CODE_0DC38F: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC392: A9 3F LDA.B #$3F ; | Add dirt tiles CODE_0DC394: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC397: C6 03 DEC $03 ;\ CODE_0DC399: 10 F4 BPL CODE_0DC38F ;/ Check for end of the line CODE_0DC39B: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC39E: E6 02 INC $02 ; Increase width of next line CODE_0DC3A0: C6 00 DEC $00 ;\ CODE_0DC3A2: F0 29 BEQ CODE_0DC3CD ;/ Check if it's the last line CODE_0DC3A4: 10 03 BPL CODE_0DC3A9 ;\ CODE_0DC3A6: 4C D7 C3 JMP.W Return0DC3D7 ;/ Check for end of the object CODE_0DC3A9: A5 57 LDA $57 ;\ CODE_0DC3AB: 18 CLC ; | Update index CODE_0DC3AC: 69 0F ADC.B #$0F ;/ CODE_0DC3AE: A8 TAY ;\ CODE_0DC3AF: 90 03 BCC CODE_0DC3B4 ; | Move pointer downwards if needed ADDR_0DC3B1: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DC3B4: 98 TYA ;\ CODE_0DC3B5: 29 0F AND.B #$0F ; | CODE_0DC3B7: C9 0F CMP.B #$0F ; | Check if we need to move the pointer leftwards CODE_0DC3B9: D0 0D BNE CODE_0DC3C8 ;/ CODE_0DC3BB: 98 TYA ;\ CODE_0DC3BC: 18 CLC ; | CODE_0DC3BD: 69 10 ADC.B #$10 ; | CODE_0DC3BF: A8 TAY ; | Move pointer downwards CODE_0DC3C0: 90 03 BCC CODE_0DC3C5 ; | CODE_0DC3C2: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DC3C5: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer leftwards CODE_0DC3C8: 84 57 STY $57 ; Save index CODE_0DC3CA: 4C 70 C3 JMP.W CODE_0DC370 CODE_0DC3CD: A5 02 LDA $02 ;\ CODE_0DC3CF: 85 03 STA $03 ;/ Reload width CODE_0DC3D1: 20 7D A9 JSR.W CODE_0DA97D ; Reload pointer CODE_0DC3D4: 4C 7E C3 JMP.W CODE_0DC37E ; Go to the add-slope-assist-tile area Return0DC3D7: 60 RTS ; Return CODE_0DC3D8: A4 57 LDY $57 ; Position CODE_0DC3DA: A9 00 LDA.B #$00 ;\ CODE_0DC3DC: 85 02 STA $02 ;/ Width of first line CODE_0DC3DE: A5 59 LDA $59 ;\ CODE_0DC3E0: 29 03 AND.B #$03 ; | Type CODE_0DC3E2: AA TAX ;/ CODE_0DC3E3: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DC3E6: A5 59 LDA $59 ;\ CODE_0DC3E8: 4A LSR ; | CODE_0DC3E9: 4A LSR ; | CODE_0DC3EA: 4A LSR ; | Height CODE_0DC3EB: 4A LSR ; | CODE_0DC3EC: 85 00 STA $00 ; | CODE_0DC3EE: E6 00 INC $00 ;/ CODE_0DC3F0: 4C 0D C4 JMP.W CODE_0DC40D CODE_0DC3F3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC3F6: A9 3F LDA.B #$3F ; | Add dirt tiles CODE_0DC3F8: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC3FB: C6 03 DEC $03 ;\ CODE_0DC3FD: A5 03 LDA $03 ; | CODE_0DC3FF: C9 01 CMP.B #$01 ; | Check if we need more dirt tiles CODE_0DC401: D0 F0 BNE CODE_0DC3F3 ;/ CODE_0DC403: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC406: BF 54 C3 0D LDA.L DATA_0DC354,X ; | Add slope assist tile CODE_0DC40A: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC40D: A5 00 LDA $00 ;\ CODE_0DC40F: F0 1A BEQ Return0DC42B ;/ Check if it's the last line CODE_0DC411: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC414: BF 50 C3 0D LDA.L DATA_0DC350,X ; | Add actual slope tiles CODE_0DC418: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC41B: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC41E: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC421: E6 02 INC $02 ; Increase width of next line CODE_0DC423: A5 02 LDA $02 ;\ CODE_0DC425: 85 03 STA $03 ;/ Reload width of line CODE_0DC427: C6 00 DEC $00 ;\ CODE_0DC429: 10 D2 BPL CODE_0DC3FD ;/ Check for end of the object Return0DC42B: 60 RTS ; Return ;Horizontal rows of spikes DATA_0DC42C: .db $5A,$59 CODE_0DC42E: A4 57 LDY $57 ; Position CODE_0DC430: A5 59 LDA $59 ;\ CODE_0DC432: 29 0F AND.B #$0F ; | Width CODE_0DC434: 85 00 STA $00 ;/ CODE_0DC436: A5 59 LDA $59 ;\ CODE_0DC438: 4A LSR ; | CODE_0DC439: 4A LSR ; | CODE_0DC43A: 4A LSR ; | Type CODE_0DC43B: 4A LSR ; | CODE_0DC43C: AA TAX ;/ CODE_0DC43D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC440: BF 2C C4 0D LDA.L DATA_0DC42C,X ; | Add tile CODE_0DC444: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC447: C6 00 DEC $00 ;\ CODE_0DC449: 10 F2 BPL CODE_0DC43D ;/ Check for end of the line Return0DC44B: 60 RTS ; Return ;Vertical rows of spikes / vertical columns DATA_0DC44C: .db $5B,$5C,$53 CODE_0DC44F: A4 57 LDY $57 ; Position CODE_0DC451: A5 59 LDA $59 ;\ CODE_0DC453: 4A LSR ; | CODE_0DC454: 4A LSR ; | CODE_0DC455: 4A LSR ; | Size CODE_0DC456: 4A LSR ; | CODE_0DC457: 85 00 STA $00 ;/ CODE_0DC459: A5 59 LDA $59 ;\ CODE_0DC45B: 29 0F AND.B #$0F ; | Type CODE_0DC45D: AA TAX ;/ CODE_0DC45E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC461: BF 4C C4 0D LDA.L DATA_0DC44C,X ; | Add tile CODE_0DC465: 97 6B STA [$6B],Y ;/ CODE_0DC467: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC46A: C6 00 DEC $00 ;\ CODE_0DC46C: 10 F0 BPL CODE_0DC45E ;/ Check for end of the object Return0DC46E: 60 RTS ; Return ;Stone block wall DATA_0DC46F: .db $5D,$60,$63 ; Top tiles DATA_0DC472: .db $5E,$61,$64 ; Middle tiles DATA_0DC475: .db $5F,$62,$65 ; Bottom tiles CODE_0DC478: A4 57 LDY $57 ; Position CODE_0DC47A: A5 59 LDA $59 ;\ CODE_0DC47C: 29 0F AND.B #$0F ; | Height CODE_0DC47E: 85 00 STA $00 ;/ CODE_0DC480: A5 59 LDA $59 ;\ CODE_0DC482: 4A LSR ; | CODE_0DC483: 4A LSR ; | CODE_0DC484: 4A LSR ; | Width CODE_0DC485: 4A LSR ; | CODE_0DC486: 85 01 STA $01 ;/ CODE_0DC488: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DC48B: A2 00 LDX.B #$00 ; Place in table CODE_0DC48D: A5 00 LDA $00 ;\ CODE_0DC48F: 85 02 STA $02 ;/ Reload width CODE_0DC491: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC494: BF 6F C4 0D LDA.L DATA_0DC46F,X ; | Add left tile CODE_0DC498: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC49B: 4C A8 C4 JMP.W CODE_0DC4A8 CODE_0DC49E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC4A1: BF 72 C4 0D LDA.L DATA_0DC472,X ; | Add middle tiles CODE_0DC4A5: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC4A8: C6 02 DEC $02 ;\ CODE_0DC4AA: D0 F2 BNE CODE_0DC49E ;/ Check if we need more middle tiles CODE_0DC4AC: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC4AF: BF 75 C4 0D LDA.L DATA_0DC475,X ; | Add right tile CODE_0DC4B3: 97 6B STA [$6B],Y ;/ CODE_0DC4B5: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC4B8: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC4BB: A2 01 LDX.B #$01 ; Set index to tables CODE_0DC4BD: C6 01 DEC $01 ;\ CODE_0DC4BF: 30 07 BMI Return0DC4C8 ;/ Check for end of the object CODE_0DC4C1: D0 02 BNE CODE_0DC4C5 ;\ CODE_0DC4C3: A2 02 LDX.B #$02 ; | Check if it's the last tile and set index CODE_0DC4C5: 4C 8D C4 JMP.W CODE_0DC48D ;/ Return0DC4C8: 60 RTS ; Return ;Ledge (castle) CODE_0DC4C9: A4 57 LDY $57 ; Position CODE_0DC4CB: A5 59 LDA $59 ;\ CODE_0DC4CD: 29 0F AND.B #$0F ; | Width CODE_0DC4CF: 85 00 STA $00 ;/ CODE_0DC4D1: A6 00 LDX $00 ; Load width CODE_0DC4D3: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC4D6: A9 09 LDA.B #$09 ; | Add top tile CODE_0DC4D8: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC4DB: CA DEX ;\ CODE_0DC4DC: 10 F5 BPL CODE_0DC4D3 ;/ Check if we need more top tiles CODE_0DC4DE: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC4E1: A6 00 LDX $00 ; Reload width CODE_0DC4E3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC4E6: A9 86 LDA.B #$86 ; | Add bottom tile CODE_0DC4E8: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC4EB: CA DEX ;\ CODE_0DC4EC: 10 F5 BPL CODE_0DC4E3 ;/ Check if we need more bottom tiles Return0DC4EE: 60 RTS ; Return ;Large spikes CODE_0DC4EF: A4 57 LDY $57 ; Position CODE_0DC4F1: A5 59 LDA $59 ;\ CODE_0DC4F3: 29 0F AND.B #$0F ; | Direction CODE_0DC4F5: AA TAX ;/ CODE_0DC4F6: A5 59 LDA $59 ;\ CODE_0DC4F8: 4A LSR ; | CODE_0DC4F9: 4A LSR ; | CODE_0DC4FA: 4A LSR ; | Height CODE_0DC4FB: 4A LSR ; | CODE_0DC4FC: 85 00 STA $00 ;/ CODE_0DC4FE: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DC501: E0 00 CPX.B #$00 ;\ CODE_0DC503: F0 19 BEQ CODE_0DC51E ;/ Check if it points upwards CODE_0DC505: 20 5D A9 JSR.W CODE_0DA95D ; Don't put anything at the first spot CODE_0DC508: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC50B: A9 87 LDA.B #$87 ; | CODE_0DC50D: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC510: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | Add top tiles CODE_0DC513: A9 88 LDA.B #$88 ; | CODE_0DC515: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC518: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC51B: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC51E: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC521: A9 89 LDA.B #$89 ; | CODE_0DC523: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC526: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DC529: A9 66 LDA.B #$66 ; | CODE_0DC52B: 20 5B A9 JSR.W CODE_0DA95B ; | Add upper row CODE_0DC52E: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DC531: A9 67 LDA.B #$67 ; | CODE_0DC533: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC536: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | CODE_0DC539: A9 8A LDA.B #$8A ; | CODE_0DC53B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC53E: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC541: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC544: C6 00 DEC $00 ;\ CODE_0DC546: 30 2A BMI CODE_0DC572 ;/ Check for end of the object CODE_0DC548: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC54B: A9 8B LDA.B #$8B ; | CODE_0DC54D: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC550: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DC553: A9 68 LDA.B #$68 ; | CODE_0DC555: 20 5B A9 JSR.W CODE_0DA95B ; | Add lower row CODE_0DC558: 20 08 AA JSR.W Sta1To6ePointer ; | CODE_0DC55B: A9 69 LDA.B #$69 ; | CODE_0DC55D: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC560: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | CODE_0DC563: A9 8C LDA.B #$8C ; | CODE_0DC565: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC568: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC56B: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC56E: C6 00 DEC $00 ;\ CODE_0DC570: 10 AC BPL CODE_0DC51E ;/ Check for end of the object CODE_0DC572: E0 00 CPX.B #$00 ;\ CODE_0DC574: D0 13 BNE Return0DC589 ;/ Check if it points downwards CODE_0DC576: 20 5D A9 JSR.W CODE_0DA95D ; Don't put anything at the first spot CODE_0DC579: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC57C: A9 8D LDA.B #$8D ; | CODE_0DC57E: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC581: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | Add bottom tiles CODE_0DC584: A9 8E LDA.B #$8E ; | CODE_0DC586: 20 5B A9 JSR.W CODE_0DA95B ;/ Return0DC589: 60 RTS ; Return ;Rock wall background CODE_0DC58A: A4 57 LDY $57 ; Position CODE_0DC58C: A5 59 LDA $59 ;\ CODE_0DC58E: 29 0F AND.B #$0F ; | Width CODE_0DC590: 85 00 STA $00 ;/ CODE_0DC592: A5 59 LDA $59 ;\ CODE_0DC594: 4A LSR ; | CODE_0DC595: 4A LSR ; | CODE_0DC596: 4A LSR ; | Height CODE_0DC597: 4A LSR ; | CODE_0DC598: 85 01 STA $01 ;/ CODE_0DC59A: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DC59D: A6 00 LDX $00 ; Load width CODE_0DC59F: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC5A2: A9 94 LDA.B #$94 ; | CODE_0DC5A4: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC5A7: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | Add upper row CODE_0DC5AA: A9 95 LDA.B #$95 ; | CODE_0DC5AC: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC5AF: CA DEX ;\ CODE_0DC5B0: 10 ED BPL CODE_0DC59F ;/ Check for end of the line CODE_0DC5B2: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC5B5: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC5B8: A6 00 LDX $00 ; Reload width CODE_0DC5BA: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC5BD: A9 96 LDA.B #$96 ; | CODE_0DC5BF: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DC5C2: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | Add lower row CODE_0DC5C5: A9 97 LDA.B #$97 ; | CODE_0DC5C7: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC5CA: CA DEX ;\ CODE_0DC5CB: 10 ED BPL CODE_0DC5BA ;/ Check for end of the line CODE_0DC5CD: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC5D0: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC5D3: C6 01 DEC $01 ;\ CODE_0DC5D5: 10 C6 BPL CODE_0DC59D ;/ Check for end of the object Return0DC5D7: 60 RTS ; Return ;Those weird double ended pipes that Mario can walk through the middles of CODE_0DC5D8: A4 57 LDY $57 ; Position CODE_0DC5DA: A5 59 LDA $59 ;\ CODE_0DC5DC: 4A LSR ; | CODE_0DC5DD: 4A LSR ; | CODE_0DC5DE: 4A LSR ; | Height CODE_0DC5DF: 4A LSR ; | CODE_0DC5E0: 85 00 STA $00 ;/ CODE_0DC5E2: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DC5E5: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC5E8: A9 33 LDA.B #$33 ; | Add top left tile CODE_0DC5EA: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC5ED: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC5F0: A9 34 LDA.B #$34 ; | Add top right tile CODE_0DC5F2: 97 6B STA [$6B],Y ;/ CODE_0DC5F4: 4C 06 C6 JMP.W CODE_0DC606 CODE_0DC5F7: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC5FA: A9 9D LDA.B #$9D ; | Add middle left tile CODE_0DC5FC: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC5FF: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DC602: A9 9E LDA.B #$9E ; | Add middle right tile CODE_0DC604: 97 6B STA [$6B],Y ;/ CODE_0DC606: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DC609: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DC60C: C6 00 DEC $00 ;\ CODE_0DC60E: D0 E7 BNE CODE_0DC5F7 ;/ Check for end of the object CODE_0DC610: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC613: A9 33 LDA.B #$33 ; | Add bottom left tile CODE_0DC615: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DC618: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DC61B: A9 34 LDA.B #$34 ; | Add bottom right tile CODE_0DC61D: 97 6B STA [$6B],Y ;/ Return0DC61F: 60 RTS ; Return Empty0DC620: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC628: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC630: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC638: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC640: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC648: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC650: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC658: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC660: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC668: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC670: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC678: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC680: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC688: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC690: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC698: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6A0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6A8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6B0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6B8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6C0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6C8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6D0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6D8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6E0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6E8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6F0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC6F8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC700: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC708: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC710: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC718: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC720: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC728: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC730: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC738: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC740: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC748: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC750: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC758: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC760: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC768: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC770: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC778: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC780: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC788: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC790: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC798: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7A0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7A8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7B0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7B8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7C0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7C8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7D0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7D8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7E0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7E8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7F0: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DC7F8: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF DATA_0DC800: .db $C5,$09,$C5,$09,$85,$09,$C6,$89 DATA_0DC808: .db $C6,$09,$85,$89,$85,$09,$C6,$89 DATA_0DC810: .db $C6,$09,$85,$89,$C5,$49,$C5,$49 DATA_0DC818: .db $C1,$1D,$D1,$1D,$C2,$1D,$F8,$1C DATA_0DC820: .db $C2,$5D,$F8,$1C,$C1,$5D,$D1,$5D DATA_0DC828: .db $D1,$9D,$C1,$9D,$F8,$1C,$C2,$9D DATA_0DC830: .db $F8,$1C,$C2,$DD,$D1,$DD,$C1,$DD DATA_0DC838: .db $F8,$1C,$DC,$1D,$CD,$1D,$DD,$1D DATA_0DC840: .db $CE,$1D,$F8,$1C,$CF,$1D,$F8,$1C DATA_0DC848: .db $E0,$1D,$F0,$1D,$F8,$1C,$F8,$1C DATA_0DC850: .db $F8,$1C,$F8,$1C,$E0,$5D,$F0,$5D DATA_0DC858: .db $CF,$5D,$F8,$1C,$CE,$5D,$F8,$1C DATA_0DC860: .db $CD,$5D,$DD,$5D,$F8,$1C,$DC,$5D DATA_0DC868: .db $DC,$9D,$F8,$1C,$DD,$9D,$CD,$9D DATA_0DC870: .db $F8,$1C,$CE,$9D,$F8,$1C,$CF,$9D DATA_0DC878: .db $F0,$9D,$E0,$9D,$F8,$1C,$F8,$1C DATA_0DC880: .db $F8,$1C,$F8,$1C,$F0,$DD,$E0,$DD DATA_0DC888: .db $F8,$1C,$CF,$DD,$F8,$1C,$CE,$DD DATA_0DC890: .db $DD,$DD,$CD,$DD,$DC,$DD,$F8,$1C DATA_0DC898: .db $F8,$1C,$CC,$1D,$CC,$1D,$F8,$1C DATA_0DC8A0: .db $CC,$5D,$F8,$1C,$F8,$1C,$CC,$5D DATA_0DC8A8: .db $F8,$1C,$F8,$1C,$E1,$1D,$F1,$1D DATA_0DC8B0: .db $E1,$5D,$F1,$5D,$F8,$1C,$F8,$1C DATA_0DC8B8: .db $E1,$1D,$F1,$1D,$F8,$1C,$F8,$1C DATA_0DC8C0: .db $F8,$1C,$F8,$1C,$E1,$5D,$F1,$5D DATA_0DC8C8: .db $F8,$1C,$F2,$1D,$F8,$1C,$F3,$1D DATA_0DC8D0: .db $F2,$1D,$F8,$1C,$F3,$1D,$F8,$1C DATA_0DC8D8: .db $F3,$5D,$F8,$1C,$F2,$5D,$F8,$1C DATA_0DC8E0: .db $F8,$1C,$F3,$5D,$F8,$1C,$F2,$5D DATA_0DC8E8: .db $DE,$1D,$DE,$1D,$F8,$1C,$F8,$1C DATA_0DC8F0: .db $F8,$1C,$F8,$1C,$DE,$5D,$DE,$5D DATA_0DC8F8: .db $DF,$1D,$F8,$1C,$DF,$1D,$F8,$1C DATA_0DC900: .db $F8,$1C,$DF,$9D,$F8,$1C,$DF,$9D DATA_0DC908: .db $F8,$1C,$7C,$1C,$7C,$1C,$F8,$1C DATA_0DC910: .db $7D,$08,$F8,$1C,$F8,$1C,$7D,$08 DATA_0DC918: .db $F8,$1C,$4C,$1C,$F8,$1C,$4D,$1C DATA_0DC920: .db $4D,$DC,$F8,$1C,$4C,$DC,$F8,$1C DATA_0DC928: .db $F8,$1C,$F8,$1C,$4C,$1C,$4D,$DC DATA_0DC930: .db $4D,$1C,$4C,$DC,$F8,$1C,$F8,$1C DATA_0DC938: .db $C3,$35,$D3,$35,$C4,$35,$D4,$35 DATA_0DC940: .db $C4,$75,$D4,$75,$C3,$75,$D3,$75 DATA_0DC948: .db $C3,$2D,$D3,$2D,$C4,$2D,$D4,$2D DATA_0DC950: .db $C4,$6D,$D4,$6D,$C3,$6D,$D3,$6D DATA_0DC958: .db $C3,$39,$D3,$39,$C4,$39,$D4,$39 DATA_0DC960: .db $C4,$79,$D4,$79,$C3,$79,$D3,$79 DATA_0DC968: .db $C3,$3D,$D3,$3D,$C4,$3D,$D4,$3D DATA_0DC970: .db $C4,$7D,$D4,$7D,$C3,$7D,$D3,$7D DATA_0DC978: .db $C5,$09,$C5,$09,$C5,$49,$C5,$49 DATA_0DC980: .db $F8,$08,$53,$09,$F8,$08,$55,$09 DATA_0DC988: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC990: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC998: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9B8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9D8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9E0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9E8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9F0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DC9F8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCA98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAD0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAD8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCAF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB68: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB70: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB78: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB80: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB88: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB90: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCB98: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBA0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBB8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBC0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBC8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBD0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBD8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBE0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBE8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBF0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCBF8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC00: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC08: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC10: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC18: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC20: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC28: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC30: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC38: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC40: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC48: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC50: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC60: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCC68: .db $80,$15,$91,$15,$D6,$15,$D6,$95 DATA_0DCC70: .db $D6,$15,$D6,$95,$D6,$15,$D6,$95 DATA_0DCC78: .db $D6,$15,$D6,$95,$80,$55,$91,$55 DATA_0DCC80: .db $D5,$15,$C7,$15,$D6,$15,$D6,$95 DATA_0DCC88: .db $D6,$15,$D6,$95,$D5,$55,$C7,$55 DATA_0DCC90: .db $4E,$08,$F8,$1C,$4E,$08,$F8,$1C DATA_0DCC98: .db $4E,$48,$F8,$1C,$4E,$48,$F8,$1C DATA_0DCCA0: .db $56,$09,$58,$09,$57,$09,$5A,$09 DATA_0DCCA8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCCB0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCCB8: .db $F4,$19,$F6,$19,$F5,$19,$F7,$19 DATA_0DCCC0: .db $F8,$19,$F8,$19,$F9,$19,$F9,$19 DATA_0DCCC8: .db $F6,$99,$F4,$99,$F7,$99,$F5,$99 DATA_0DCCD0: .db $FA,$19,$FD,$19,$FB,$19,$FE,$19 DATA_0DCCD8: .db $FC,$19,$FF,$19,$FC,$19,$FF,$19 DATA_0DCCE0: .db $FB,$59,$FE,$59,$FA,$59,$FD,$59 DATA_0DCCE8: .db $CA,$19,$DA,$19,$CB,$19,$DB,$19 DATA_0DCCF0: .db $CB,$19,$DB,$19,$CB,$19,$DB,$19 DATA_0DCCF8: .db $CB,$19,$DB,$19,$CA,$59,$DA,$59 DATA_0DCD00: .db $C8,$19,$D8,$19,$C9,$19,$D9,$19 DATA_0DCD08: .db $D8,$19,$D8,$19,$D9,$19,$D9,$19 DATA_0DCD10: .db $D8,$19,$C8,$99,$D9,$19,$C9,$99 DATA_0DCD18: .db $E2,$11,$D7,$11,$E3,$11,$F9,$1C DATA_0DCD20: .db $E4,$11,$F9,$1C,$E5,$11,$EA,$11 DATA_0DCD28: .db $D7,$11,$D7,$11,$E6,$11,$E7,$11 DATA_0DCD30: .db $E6,$51,$E7,$51,$EA,$11,$EA,$11 DATA_0DCD38: .db $E9,$11,$E9,$91,$F9,$1C,$F9,$1C DATA_0DCD40: .db $F9,$1C,$F9,$1C,$EA,$11,$E8,$11 DATA_0DCD48: .db $D7,$11,$D7,$11,$F9,$1C,$F9,$1C DATA_0DCD50: .db $F9,$1C,$F9,$1C,$E8,$91,$EA,$11 DATA_0DCD58: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DCD60: .db $20,$14,$20,$14,$21,$14,$21,$14 DATA_0DCD68: .db $22,$14,$22,$14,$23,$14,$23,$14 DATA_0DCD70: .db $26,$14,$36,$14,$26,$54,$36,$54 DATA_0DCD78: .db $26,$18,$36,$18,$26,$58,$36,$58 DATA_0DCD80: .db $26,$1C,$36,$1C,$26,$5C,$36,$5C DATA_0DCD88: .db $27,$1C,$37,$1C,$27,$5C,$37,$5C ; This calls the correct code for the object if the tileset is T:2 in LM (rope) CODE_0DCD90: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DCD92: A6 5A LDX $5A ; Load object number CODE_0DCD94: CA DEX ; We'll never see object number 0, so change the index to it won't clutter the table CODE_0DCD95: 8A TXA ;\ CODE_0DCD96: 22 FA 86 00 JSL.L ExecutePtrLong ;/ and call the correct subroutine PtrsLong0DCD9A: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Blue) PtrsLong0DCD9D: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible coin blocks PtrsLong0DCDA0: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible note blocks PtrsLong0DCDA3: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible POW coins PtrsLong0DCDA6: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coins PtrsLong0DCDA9: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Walk-through dirt PtrsLong0DCDAC: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Other color) PtrsLong0DCDAF: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Note blocks PtrsLong0DCDB2: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Turn blocks PtrsLong0DCDB5: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coin ? blocks PtrsLong0DCDB8: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Throw blocks PtrsLong0DCDBB: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Black piranha plants PtrsLong0DCDBE: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Cement blocks PtrsLong0DCDC1: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Brown blocks PtrsLong0DCDC4: 26 AA 0D .dw CODE_0DAA26 .db :$CODE_0DAA26 ; Vertical pipes PtrsLong0DCDC7: B4 AA 0D .dw CODE_0DAAB4 .db :$CODE_0DAAB4 ; Horizontal pipes PtrsLong0DCDCA: 0D AB 0D .dw CODE_0DAB0D .db :$CODE_0DAB0D ; Bullet shooter PtrsLong0DCDCD: 3E AB 0D .dw CODE_0DAB3E .db :$CODE_0DAB3E ; Slopes PtrsLong0DCDD0: 75 B0 0D .dw CODE_0DB075 .db :$CODE_0DB075 ; Ledge edges PtrsLong0DCDD3: D4 B1 0D .dw CODE_0DB1D4 .db :$CODE_0DB1D4 ; Ground ledge PtrsLong0DCDD6: 24 B2 0D .dw CODE_0DB224 .db :$CODE_0DB224 ; Midway/Goal point PtrsLong0DCDD9: 36 B3 0D .dw ADDR_0DB336 .db :$ADDR_0DB336 ; Blue coins PtrsLong0DCDDC: BD B3 0D .dw CODE_0DB3BD .db :$CODE_0DB3BD ; Rope/Clouds PtrsLong0DCDDF: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (ani) PtrsLong0DCDE2: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (not ani) PtrsLong0DCDE5: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Lava surface (ani) PtrsLong0DCDE8: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Net top edge PtrsLong0DCDEB: 2D B4 0D .dw CODE_0DB42D .db :$CODE_0DB42D ; Donut bridge PtrsLong0DCDEE: 61 B4 0D .dw CODE_0DB461 .db :$CODE_0DB461 ; Net bottom edge PtrsLong0DCDF1: 9E B4 0D .dw CODE_0DB49E .db :$CODE_0DB49E ; Net vertical edge PtrsLong0DCDF4: 1F B5 0D .dw CODE_0DB51F .db :$CODE_0DB51F ; Vert. Pipe/Bone/Log PtrsLong0DCDF7: 47 B5 0D .dw CODE_0DB547 .db :$CODE_0DB547 ; Horiz. Pipe/Bone/Log PtrsLong0DCDFA: C8 B1 0D .dw CODE_0DB1C8 .db :$CODE_0DB1C8 ; Long ground ledge PtrsLong0DCDFD: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DCE00: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE03: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE06: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE09: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE0C: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE0F: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE12: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | Unused (LM will declare these to be "reserved" and won't let you use them) PtrsLong0DCE15: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE18: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE1B: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE1E: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DCE21: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DCE24: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DCE27: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | These could've been tileset specific, but Nintendo didn't have that many ideas for them. PtrsLong0DCE2A: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DCE2D: 4E D2 0D .dw CODE_0DD24E .db :$CODE_0DD24E ; Log bridge PtrsLong0DCE30: 16 B9 0D .dw CODE_0DB916 .db :$CODE_0DB916 ; Blue switch blocks PtrsLong0DCE33: 1E B9 0D .dw CODE_0DB91E .db :$CODE_0DB91E ; Red switch blocks PtrsLong0DCE36: D9 D1 0D .dw CODE_0DD1D9 .db :$CODE_0DD1D9 ; Plants on columns PtrsLong0DCE39: F2 CE 0D .dw ADDR_0DCEF2 .db :$ADDR_0DCEF2 ; Horizontal conveyors PtrsLong0DCE3C: 41 C3 0D .dw CODE_0DC341 .db :$CODE_0DC341 ; Diagonal conveyors PtrsLong0DCE3F: 12 CF 0D .dw CODE_0DCF12 .db :$CODE_0DCF12 ; Horizontal guide lines PtrsLong0DCE42: 33 CF 0D .dw CODE_0DCF33 .db :$CODE_0DCF33 ; Vertical guide lines / vertical column PtrsLong0DCE45: 53 CF 0D .dw CODE_0DCF53 .db :$CODE_0DCF53 ; Normal/steep/ON/OFF guide lines PtrsLong0DCE48: 70 D0 0D .dw ADDR_0DD070 .db :$ADDR_0DD070 ; Very steep guide lines PtrsLong0DCE4B: 03 D1 0D .dw CODE_0DD103 .db :$CODE_0DD103 ; Mushroom ledge PtrsLong0DCE4E: 45 D1 0D .dw CODE_0DD145 .db :$CODE_0DD145 ; Mushroom column PtrsLong0DCE51: 82 D1 0D .dw ADDR_0DD182 .db :$ADDR_0DD182 ; Horizontal log PtrsLong0DCE54: A5 D1 0D .dw ADDR_0DD1A5 .db :$ADDR_0DD1A5 ; Vertical log ;Quarters of line guide circles DATA_0DCE57: .db $7A,$7B ; Top left one DATA_0DCE59: .db $7C,$25 DATA_0DCE5B: .db $7E,$7F ; Top right one DATA_0DCE5D: .db $25,$7D DATA_0DCE5F: .db $82,$25 ; Bottom left one DATA_0DCE61: .db $80,$81 DATA_0DCE63: .db $25,$83 ; Bottom right one DATA_0DCE65: .db $84,$85 CODE_0DCE67: A4 57 LDY $57 ; Position CODE_0DCE69: A5 59 LDA $59 ;\ CODE_0DCE6B: 38 SEC ; | CODE_0DCE6C: E9 4D SBC.B #$4D ; | CODE_0DCE6E: 0A ASL ; | "Fix" object number and multiply by four CODE_0DCE6F: 0A ASL ; | CODE_0DCE70: AA TAX ;/ CODE_0DCE71: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DCE74: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCE77: BF 57 CE 0D LDA.L DATA_0DCE57,X ; | Add object CODE_0DCE7B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DCE7E: E8 INX ;\ CODE_0DCE7F: 8A TXA ; | CODE_0DCE80: 29 01 AND.B #$01 ; | Go to next object and check for end of line CODE_0DCE82: D0 F0 BNE CODE_0DCE74 ;/ CODE_0DCE84: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DCE87: 20 7D A9 JSR.W CODE_0DA97D ; Go downwards CODE_0DCE8A: 8A TXA ;\ CODE_0DCE8B: 29 03 AND.B #$03 ; | Check for end of object CODE_0DCE8D: D0 E5 BNE CODE_0DCE74 ;/ Return0DCE8F: 60 RTS ; Return ;Quarters of small line guide circles DATA_0DCE90: .db $76,$77,$78,$79 CODE_0DCE94: A4 57 LDY $57 ; Position CODE_0DCE96: A5 59 LDA $59 ;\ CODE_0DCE98: 38 SEC ; | CODE_0DCE99: E9 51 SBC.B #$51 ; | "Fix" object number CODE_0DCE9B: AA TAX ;/ CODE_0DCE9C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCE9F: BF 90 CE 0D LDA.L DATA_0DCE90,X ; | Add object CODE_0DCEA3: 97 6B STA [$6B],Y ;/ Return0DCEA5: 60 RTS ; Return ;Bit of canvass 1 (I've got no idea why it isn't with the other three) ADDR_0DCEA6: A4 57 LDY $57 ; Position ADDR_0DCEA8: A5 59 LDA $59 ;\ ADDR_0DCEAA: 38 SEC ; | ADDR_0DCEAB: E9 51 SBC.B #$51 ; | "Fix" object number (it's not used anyways, morons) ADDR_0DCEAD: AA TAX ;/ ADDR_0DCEAE: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DCEB1: A9 84 LDA.B #$84 ; | Add top tile ADDR_0DCEB3: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DCEB6: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DCEB9: A9 85 LDA.B #$85 ; | Add bottom tile ADDR_0DCEBB: 97 6B STA [$6B],Y ;/ Return0DCEBD: 60 RTS ; Return ;Line guide end, for horizontal line DATA_0DCEBE: .db $96 DATA_0DCEBF: .db $97 CODE_0DCEC0: A4 57 LDY $57 ; Position CODE_0DCEC2: A5 59 LDA $59 ; Hi timewasters, is it fun to waste time? CODE_0DCEC4: A2 00 LDX.B #$00 CODE_0DCEC6: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCEC9: BF BE CE 0D LDA.L DATA_0DCEBE,X ; | Add block CODE_0DCECD: 97 6B STA [$6B],Y ;/ CODE_0DCECF: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DCED2: E8 INX ;/ Go to the next one CODE_0DCED3: E0 02 CPX.B #$02 ;\ CODE_0DCED5: D0 EF BNE CODE_0DCEC6 ;/ Check for end of the block Return0DCED7: 60 RTS ; Return ;Line guide end, for vertical line DATA_0DCED8: .db $98,$99 CODE_0DCEDA: A4 57 LDY $57 ; Position CODE_0DCEDC: A5 59 LDA $59 ; Hi again, timewasters CODE_0DCEDE: A2 00 LDX.B #$00 CODE_0DCEE0: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCEE3: BF D8 CE 0D LDA.L DATA_0DCED8,X ; | Add block CODE_0DCEE7: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DCEEA: E8 INX ;\ CODE_0DCEEB: E0 02 CPX.B #$02 ; | Go to next and check for ending CODE_0DCEED: D0 F1 BNE CODE_0DCEE0 ;/ Return0DCEEF: 60 RTS ; Return ;Horizontal conveyors DATA_0DCEF0: .db $0C,$0D ADDR_0DCEF2: A4 57 LDY $57 ; Position ADDR_0DCEF4: A5 59 LDA $59 ;\ ADDR_0DCEF6: 29 0F AND.B #$0F ; | Width ADDR_0DCEF8: 85 00 STA $00 ;/ ADDR_0DCEFA: A5 59 LDA $59 ;\ ADDR_0DCEFC: 4A LSR ; | ADDR_0DCEFD: 4A LSR ; | ADDR_0DCEFE: 4A LSR ; | Type ADDR_0DCEFF: 4A LSR ; | ADDR_0DCF00: AA TAX ;/ ADDR_0DCF01: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DCF04: BF F0 CE 0D LDA.L DATA_0DCEF0,X ; | Add tile ADDR_0DCF08: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DCF0B: C6 00 DEC $00 ;\ ADDR_0DCF0D: 10 F2 BPL ADDR_0DCF01 ;/ Check for end of the object Return0DCF0F: 60 RTS ; Return ;Horizontal guide lines DATA_0DCF10: .db $92,$93 CODE_0DCF12: A4 57 LDY $57 ; Position CODE_0DCF14: A5 59 LDA $59 ;\ CODE_0DCF16: 29 0F AND.B #$0F ; | Width CODE_0DCF18: 85 00 STA $00 ;/ CODE_0DCF1A: A5 59 LDA $59 ;\ CODE_0DCF1C: 4A LSR ; | CODE_0DCF1D: 4A LSR ; | CODE_0DCF1E: 4A LSR ; | Type CODE_0DCF1F: 4A LSR ; | CODE_0DCF20: AA TAX ;/ CODE_0DCF21: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCF24: BF 10 CF 0D LDA.L DATA_0DCF10,X ; | Add tile CODE_0DCF28: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DCF2B: C6 00 DEC $00 ;\ CODE_0DCF2D: 10 F2 BPL CODE_0DCF21 ;/ Check for end of the object Return0DCF2F: 60 RTS ; Return ;Vertical guide lines / vertical column DATA_0DCF30: .db $90,$91,$A2 CODE_0DCF33: A4 57 LDY $57 ; Position CODE_0DCF35: A5 59 LDA $59 ;\ CODE_0DCF37: 29 0F AND.B #$0F ; | Type CODE_0DCF39: AA TAX ;/ CODE_0DCF3A: A5 59 LDA $59 ;\ CODE_0DCF3C: 4A LSR ; | CODE_0DCF3D: 4A LSR ; | CODE_0DCF3E: 4A LSR ; | Height CODE_0DCF3F: 4A LSR ; | CODE_0DCF40: 85 00 STA $00 ;/ CODE_0DCF42: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCF45: BF 30 CF 0D LDA.L DATA_0DCF30,X ; | Add tile CODE_0DCF49: 97 6B STA [$6B],Y ;/ CODE_0DCF4B: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DCF4E: C6 00 DEC $00 ;\ CODE_0DCF50: 10 F0 BPL CODE_0DCF42 ;/ Check for end of the object Return0DCF52: 60 RTS ; Return ;Normal/steep/ON/OFF guide lines CODE_0DCF53: A5 59 LDA $59 ;\ CODE_0DCF55: 29 0F AND.B #$0F ; | CODE_0DCF57: AA TAX ; | Check type and run the correct code CODE_0DCF58: 22 FA 86 00 JSL.L ExecutePtrLong ;/ PtrsLong0DCF5C: 6E CF 0D .dw CODE_0DCF6E .db :$CODE_0DCF6E ; Normal slope left B1 CF 0D .dw CODE_0DCFB1 .db :$CODE_0DCFB1 ; Steep slope left F0 CF 0D .dw ADDR_0DCFF0 .db :$ADDR_0DCFF0 ; Normal slope right 34 D0 0D .dw CODE_0DD034 .db :$CODE_0DD034 ; Steep slope right B1 CF 0D .dw CODE_0DCFB1 .db :$CODE_0DCFB1 ; ON/OFF steep left slope 34 D0 0D .dw CODE_0DD034 .db :$CODE_0DD034 ; ON/OFF steep right slope CODE_0DCF6E: A4 57 LDY $57 ; Position CODE_0DCF70: A5 59 LDA $59 ;\ CODE_0DCF72: 4A LSR ; | CODE_0DCF73: 4A LSR ; | CODE_0DCF74: 4A LSR ; | Size CODE_0DCF75: 4A LSR ; | CODE_0DCF76: AA TAX ;/ CODE_0DCF77: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DCF7A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCF7D: A9 8C LDA.B #$8C ; | Add left tile CODE_0DCF7F: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DCF82: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCF85: A9 8D LDA.B #$8D ; | Add right tile CODE_0DCF87: 97 6B STA [$6B],Y ;/ CODE_0DCF89: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DCF8C: A5 57 LDA $57 ;\ CODE_0DCF8E: 18 CLC ; | CODE_0DCF8F: 69 0E ADC.B #$0E ; | Update index CODE_0DCF91: A8 TAY ;/ CODE_0DCF92: 90 03 BCC CODE_0DCF97 ;\ CODE_0DCF94: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer down if needed CODE_0DCF97: 98 TYA ;\ CODE_0DCF98: 29 0F AND.B #$0F ; | CODE_0DCF9A: C9 0E CMP.B #$0E ; | Check if pointer needs to move left CODE_0DCF9C: 30 0D BMI CODE_0DCFAB ;/ ADDR_0DCF9E: 98 TYA ;\ ADDR_0DCF9F: 18 CLC ; | ADDR_0DCFA0: 69 10 ADC.B #$10 ; | Move index down ADDR_0DCFA2: A8 TAY ;/ ADDR_0DCFA3: 90 03 BCC ADDR_0DCFA8 ;\ ADDR_0DCFA5: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer down if needed ADDR_0DCFA8: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer left CODE_0DCFAB: 84 57 STY $57 ; Save index CODE_0DCFAD: CA DEX ;\ CODE_0DCFAE: 10 CA BPL CODE_0DCF7A ;/ Check for end of the object Return0DCFB0: 60 RTS ; Return CODE_0DCFB1: A9 86 LDA.B #$86 ;\ CODE_0DCFB3: E0 04 CPX.B #$04 ; | CODE_0DCFB5: D0 02 BNE CODE_0DCFB9 ; | Check which tile we should add CODE_0DCFB7: A9 94 LDA.B #$94 ; | CODE_0DCFB9: 85 00 STA $00 ;/ CODE_0DCFBB: A4 57 LDY $57 ; Position CODE_0DCFBD: A5 59 LDA $59 ;\ CODE_0DCFBF: 4A LSR ; | CODE_0DCFC0: 4A LSR ; | CODE_0DCFC1: 4A LSR ; | Size CODE_0DCFC2: 4A LSR ; | CODE_0DCFC3: AA TAX ;/ CODE_0DCFC4: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DCFC7: A5 00 LDA $00 ; | Add tile CODE_0DCFC9: 97 6B STA [$6B],Y ;/ CODE_0DCFCB: A5 57 LDA $57 ;\ CODE_0DCFCD: 18 CLC ; | CODE_0DCFCE: 69 0F ADC.B #$0F ; | Update index CODE_0DCFD0: A8 TAY ;/ CODE_0DCFD1: 90 03 BCC CODE_0DCFD6 ;\ CODE_0DCFD3: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer down if needed CODE_0DCFD6: 98 TYA ;\ CODE_0DCFD7: 29 0F AND.B #$0F ; | CODE_0DCFD9: C9 0F CMP.B #$0F ; | Check if pointer needs to move left CODE_0DCFDB: 30 0D BMI CODE_0DCFEA ;/ CODE_0DCFDD: 98 TYA ;\ CODE_0DCFDE: 18 CLC ; | CODE_0DCFDF: 69 10 ADC.B #$10 ; | Move index down CODE_0DCFE1: A8 TAY ;/ CODE_0DCFE2: 90 03 BCC CODE_0DCFE7 ;\ ADDR_0DCFE4: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer down if needed CODE_0DCFE7: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer left CODE_0DCFEA: 84 57 STY $57 ; Save index CODE_0DCFEC: CA DEX ;\ CODE_0DCFED: 10 D5 BPL CODE_0DCFC4 ;/ Check for end of the object Return0DCFEF: 60 RTS ; Return ADDR_0DCFF0: A4 57 LDY $57 ; Position ADDR_0DCFF2: A5 59 LDA $59 ;\ ADDR_0DCFF4: 4A LSR ; | ADDR_0DCFF5: 4A LSR ; | ADDR_0DCFF6: 4A LSR ; | Size ADDR_0DCFF7: 4A LSR ; | ADDR_0DCFF8: AA TAX ;/ ADDR_0DCFF9: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer ADDR_0DCFFC: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DCFFF: A9 8E LDA.B #$8E ; | ADDR_0DD001: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DD004: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DD007: A9 8F LDA.B #$8F ; | Add right tile ADDR_0DD009: 97 6B STA [$6B],Y ;/ ADDR_0DD00B: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer (waste of time...) ADDR_0DD00E: A5 57 LDA $57 ;\ ADDR_0DD010: 18 CLC ; | ADDR_0DD011: 69 10 ADC.B #$10 ; | Move index down ADDR_0DD013: A8 TAY ;/ ADDR_0DD014: 90 03 BCC ADDR_0DD019 ;\ ADDR_0DD016: 20 87 A9 JSR.W CODE_0DA987 ;/ Update pointer if needed ADDR_0DD019: 98 TYA ;\ ADDR_0DD01A: 18 CLC ; | ADDR_0DD01B: 69 02 ADC.B #$02 ; | Move index rightwards ADDR_0DD01D: A8 TAY ;/ ADDR_0DD01E: 29 0F AND.B #$0F ;\ ADDR_0DD020: C9 02 CMP.B #$02 ; | Check if we need to move the pointer rightwards ADDR_0DD022: 10 0A BPL ADDR_0DD02E ;/ ADDR_0DD024: 98 TYA ;\ ADDR_0DD025: 38 SEC ; | Move index back up ADDR_0DD026: E9 10 SBC.B #$10 ;/ ADDR_0DD028: 29 F1 AND.B #$F1 ;\ ADDR_0DD02A: A8 TAY ;/ Move index leftwards (smells like a waste of time to me...) ADDR_0DD02B: 20 EF A9 JSR.W CODE_0DA9EF ; Move pointer rightwards ADDR_0DD02E: 84 57 STY $57 ; Save index ADDR_0DD030: CA DEX ;\ ADDR_0DD031: 10 C9 BPL ADDR_0DCFFC ;/ Check for end of the object Return0DD033: 60 RTS ; Return CODE_0DD034: A9 87 LDA.B #$87 ;\ CODE_0DD036: E0 05 CPX.B #$05 ; | CODE_0DD038: D0 02 BNE CODE_0DD03C ; | Check which tile we should add CODE_0DD03A: A9 95 LDA.B #$95 ; | CODE_0DD03C: 85 00 STA $00 ;/ CODE_0DD03E: A4 57 LDY $57 ; Position CODE_0DD040: A5 59 LDA $59 ;\ CODE_0DD042: 4A LSR ; | CODE_0DD043: 4A LSR ; | CODE_0DD044: 4A LSR ; | Size CODE_0DD045: 4A LSR ; | CODE_0DD046: AA TAX ;/ CODE_0DD047: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD04A: A5 00 LDA $00 ; | Add tile CODE_0DD04C: 97 6B STA [$6B],Y ;/ CODE_0DD04E: A5 57 LDA $57 ;\ CODE_0DD050: 18 CLC ; | CODE_0DD051: 69 10 ADC.B #$10 ; | CODE_0DD053: A8 TAY ; | Move pointer downwards CODE_0DD054: 90 03 BCC CODE_0DD059 ; | CODE_0DD056: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DD059: 98 TYA ;\ CODE_0DD05A: 18 CLC ; | CODE_0DD05B: 69 01 ADC.B #$01 ; | CODE_0DD05D: A8 TAY ; | CODE_0DD05E: 29 0F AND.B #$0F ; | CODE_0DD060: D0 08 BNE CODE_0DD06A ; | CODE_0DD062: 88 DEY ; | Move pointer rightwards CODE_0DD063: 98 TYA ; | CODE_0DD064: 29 F0 AND.B #$F0 ; | CODE_0DD066: A8 TAY ; | CODE_0DD067: 20 EF A9 JSR.W CODE_0DA9EF ; | CODE_0DD06A: 84 57 STY $57 ;/ CODE_0DD06C: CA DEX ;\ CODE_0DD06D: 10 D8 BPL CODE_0DD047 ;/ Check for end of the object Return0DD06F: 60 RTS ; Return ;Very steep guide lines ADDR_0DD070: A5 59 LDA $59 ;\ ADDR_0DD072: 4A LSR ; | ADDR_0DD073: 4A LSR ; | ADDR_0DD074: 4A LSR ; | Check type and run the correct code ADDR_0DD075: 4A LSR ; | ADDR_0DD076: 22 FA 86 00 JSL.L ExecutePtrLong ;/ PtrsLong0DD07A: 80 D0 0D .dw ADDR_0DD080 .db :$ADDR_0DD080 ; Very steep left slope C3 D0 0D .dw ADDR_0DD0C3 .db :$ADDR_0DD0C3 ; Very steep right slope ADDR_0DD080: A4 57 LDY $57 ; Position ADDR_0DD082: A5 59 LDA $59 ;\ ADDR_0DD084: 29 0F AND.B #$0F ; | Size ADDR_0DD086: AA TAX ;/ ADDR_0DD087: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DD08A: A9 88 LDA.B #$88 ; | Add upper tile ADDR_0DD08C: 97 6B STA [$6B],Y ;/ ADDR_0DD08E: 98 TYA ;\ ADDR_0DD08F: 18 CLC ; | ADDR_0DD090: 69 10 ADC.B #$10 ; | ADDR_0DD092: A8 TAY ; | Move pointer downwards ADDR_0DD093: 90 03 BCC ADDR_0DD098 ; | ADDR_0DD095: 20 87 A9 JSR.W CODE_0DA987 ;/ ADDR_0DD098: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DD09B: A9 8A LDA.B #$8A ; | Add lower tile ADDR_0DD09D: 97 6B STA [$6B],Y ;/ ADDR_0DD09F: 98 TYA ;\ ADDR_0DD0A0: 18 CLC ; | ADDR_0DD0A1: 69 0F ADC.B #$0F ; | ADDR_0DD0A3: A8 TAY ; | ADDR_0DD0A4: 90 03 BCC ADDR_0DD0A9 ; | ADDR_0DD0A6: 20 87 A9 JSR.W CODE_0DA987 ; | ADDR_0DD0A9: 98 TYA ; | ADDR_0DD0AA: 29 0F AND.B #$0F ; | ADDR_0DD0AC: C9 0F CMP.B #$0F ; | ADDR_0DD0AE: D0 0D BNE ADDR_0DD0BD ; | Move pointer down and left ADDR_0DD0B0: 98 TYA ; | ADDR_0DD0B1: 18 CLC ; | ADDR_0DD0B2: 69 10 ADC.B #$10 ; | ADDR_0DD0B4: A8 TAY ; | ADDR_0DD0B5: 90 03 BCC ADDR_0DD0BA ; | ADDR_0DD0B7: 20 87 A9 JSR.W CODE_0DA987 ; | ADDR_0DD0BA: 20 D6 A9 JSR.W CODE_0DA9D6 ; | ADDR_0DD0BD: 84 57 STY $57 ;/ ADDR_0DD0BF: CA DEX ;\ ADDR_0DD0C0: 10 C5 BPL ADDR_0DD087 ;/ Check for end of the object Return0DD0C2: 60 RTS ; Return ADDR_0DD0C3: A4 57 LDY $57 ; Position ADDR_0DD0C5: A5 59 LDA $59 ;\ ADDR_0DD0C7: 29 0F AND.B #$0F ; | Size ADDR_0DD0C9: AA TAX ;/ ADDR_0DD0CA: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DD0CD: A9 89 LDA.B #$89 ; | Add upper tile ADDR_0DD0CF: 97 6B STA [$6B],Y ;/ ADDR_0DD0D1: 98 TYA ;\ ADDR_0DD0D2: 18 CLC ; | ADDR_0DD0D3: 69 10 ADC.B #$10 ; | ADDR_0DD0D5: A8 TAY ; | Move pointer downwards ADDR_0DD0D6: 90 03 BCC ADDR_0DD0DB ; | ADDR_0DD0D8: 20 87 A9 JSR.W CODE_0DA987 ;/ ADDR_0DD0DB: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DD0DE: A9 8B LDA.B #$8B ; | Add lower tile ADDR_0DD0E0: 97 6B STA [$6B],Y ;/ ADDR_0DD0E2: 98 TYA ;\ ADDR_0DD0E3: 18 CLC ; | ADDR_0DD0E4: 69 10 ADC.B #$10 ; | ADDR_0DD0E6: A8 TAY ; | Move pointer downwards ADDR_0DD0E7: 90 03 BCC ADDR_0DD0EC ; | ADDR_0DD0E9: 20 87 A9 JSR.W CODE_0DA987 ;/ ADDR_0DD0EC: 98 TYA ;\ ADDR_0DD0ED: 18 CLC ; | ADDR_0DD0EE: 69 01 ADC.B #$01 ; | ADDR_0DD0F0: A8 TAY ; | ADDR_0DD0F1: 29 0F AND.B #$0F ; | ADDR_0DD0F3: D0 08 BNE ADDR_0DD0FD ; | ADDR_0DD0F5: 88 DEY ; | Move pointer rightwards ADDR_0DD0F6: 98 TYA ; | ADDR_0DD0F7: 29 F0 AND.B #$F0 ; | ADDR_0DD0F9: A8 TAY ; | ADDR_0DD0FA: 20 EF A9 JSR.W CODE_0DA9EF ; | ADDR_0DD0FD: 84 57 STY $57 ;/ ADDR_0DD0FF: CA DEX ;\ ADDR_0DD100: 10 C8 BPL ADDR_0DD0CA ;/ Check for end of the object Return0DD102: 60 RTS ; Return ;Mushroom ledge CODE_0DD103: A4 57 LDY $57 ; Position CODE_0DD105: A5 59 LDA $59 ;\ CODE_0DD107: 29 0F AND.B #$0F ; | Width CODE_0DD109: 85 00 STA $00 ;/ CODE_0DD10B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD10E: A2 07 LDX.B #$07 ; | CODE_0DD110: B7 6B LDA [$6B],Y ; | CODE_0DD112: C9 73 CMP.B #$73 ; | CODE_0DD114: 30 06 BMI CODE_0DD11C ; | Check which tile we want to add CODE_0DD116: C9 76 CMP.B #$76 ; | CODE_0DD118: 10 02 BPL CODE_0DD11C ; | CODE_0DD11A: A2 0A LDX.B #$0A ; | CODE_0DD11C: 8A TXA ;/ CODE_0DD11D: 20 5B A9 JSR.W CODE_0DA95B ; and add it CODE_0DD120: 4C 2B D1 JMP.W CODE_0DD12B CODE_0DD123: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD126: A9 08 LDA.B #$08 ; | Add middle tiles CODE_0DD128: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD12B: C6 00 DEC $00 ;\ CODE_0DD12D: D0 F4 BNE CODE_0DD123 ;/ Check if we need more middle tiles CODE_0DD12F: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD132: A2 09 LDX.B #$09 ; | CODE_0DD134: B7 6B LDA [$6B],Y ; | CODE_0DD136: C9 73 CMP.B #$73 ; | CODE_0DD138: 30 06 BMI CODE_0DD140 ; | Check which tile we want to add CODE_0DD13A: C9 76 CMP.B #$76 ; | CODE_0DD13C: 10 02 BPL CODE_0DD140 ; | CODE_0DD13E: A2 0B LDX.B #$0B ; | CODE_0DD140: 8A TXA ;/ CODE_0DD141: 20 5B A9 JSR.W CODE_0DA95B ; and add it Return0DD144: 60 RTS ; Return ;Mushroom column CODE_0DD145: A4 57 LDY $57 ; Position CODE_0DD147: A5 59 LDA $59 ;\ CODE_0DD149: 29 0F AND.B #$0F ; | Width CODE_0DD14B: 85 00 STA $00 ;/ CODE_0DD14D: A5 59 LDA $59 ;\ CODE_0DD14F: 4A LSR ; | CODE_0DD150: 4A LSR ; | CODE_0DD151: 4A LSR ; | Height CODE_0DD152: 4A LSR ; | CODE_0DD153: 85 01 STA $01 ;/ CODE_0DD155: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DD158: A6 00 LDX $00 ; Load width CODE_0DD15A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD15D: A9 73 LDA.B #$73 ; | Add left tile CODE_0DD15F: 4C 67 D1 JMP.W CODE_0DD167 ;/ CODE_0DD162: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD165: A9 74 LDA.B #$74 ; | Add middle tile CODE_0DD167: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD16A: CA DEX ;\ CODE_0DD16B: D0 F5 BNE CODE_0DD162 ;/ Check if we need more middle tiles CODE_0DD16D: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD170: A9 75 LDA.B #$75 ; | Add right tile CODE_0DD172: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD175: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DD178: A6 00 LDX $00 ; Reload width CODE_0DD17A: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DD17D: C6 01 DEC $01 ;\ CODE_0DD17F: 10 D7 BPL CODE_0DD158 ;/ Check for end of the object Return0DD181: 60 RTS ; Return ;Horizontal log ADDR_0DD182: A4 57 LDY $57 ; Position ADDR_0DD184: A5 59 LDA $59 ;\ ADDR_0DD186: 29 0F AND.B #$0F ; | Width ADDR_0DD188: AA TAX ;/ ADDR_0DD189: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD18C: A9 59 LDA.B #$59 ; | Add left tile ADDR_0DD18E: 4C 96 D1 JMP.W ADDR_0DD196 ;/ ADDR_0DD191: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD194: A9 5A LDA.B #$5A ; | Add middle tiles ADDR_0DD196: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DD199: CA DEX ;\ ADDR_0DD19A: D0 F5 BNE ADDR_0DD191 ;/ Check if we need more middle tiles ADDR_0DD19C: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD19F: A9 5B LDA.B #$5B ; | Add right tile ADDR_0DD1A1: 20 5B A9 JSR.W CODE_0DA95B ;/ Return0DD1A4: 60 RTS ; Return ;Vertical log ADDR_0DD1A5: A4 57 LDY $57 ; Position ADDR_0DD1A7: A5 59 LDA $59 ;\ ADDR_0DD1A9: 4A LSR ; | ADDR_0DD1AA: 4A LSR ; | ADDR_0DD1AB: 4A LSR ; | Width ADDR_0DD1AC: 4A LSR ; | ADDR_0DD1AD: AA TAX ;/ ADDR_0DD1AE: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD1B1: A9 5C LDA.B #$5C ; | Add top tile ADDR_0DD1B3: 4C BB D1 JMP.W ADDR_0DD1BB ;/ ADDR_0DD1B6: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD1B9: A9 5D LDA.B #$5D ; | Add middle tiles ADDR_0DD1BB: 97 6B STA [$6B],Y ;/ ADDR_0DD1BD: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards ADDR_0DD1C0: CA DEX ;\ ADDR_0DD1C1: D0 F3 BNE ADDR_0DD1B6 ;/ Check if we need more middle tiles ADDR_0DD1C3: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DD1C6: A9 5E LDA.B #$5E ; | Add bottom tile ADDR_0DD1C8: 97 6B STA [$6B],Y ;/ Return0DD1CA: 60 RTS ; Return ;Plants on columns DATA_0DD1CB: .db $9A,$9C,$9E,$A0 ; Left plant tiles DATA_0DD1CF: .db $9B,$9D,$9F,$A1 ; Right plant tiles DATA_0DD1D3: .db $61,$62,$63,$64,$65,$66 ; Main column tiles CODE_0DD1D9: A4 57 LDY $57 ; Position CODE_0DD1DB: A5 59 LDA $59 ;\ CODE_0DD1DD: 29 0F AND.B #$0F ; | Type CODE_0DD1DF: AA TAX ;/ CODE_0DD1E0: A5 59 LDA $59 ;\ CODE_0DD1E2: 4A LSR ; | CODE_0DD1E3: 4A LSR ; | CODE_0DD1E4: 4A LSR ; | Height CODE_0DD1E5: 4A LSR ; | CODE_0DD1E6: 85 00 STA $00 ;/ CODE_0DD1E8: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DD1EB: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD1EE: BF CB D1 0D LDA.L DATA_0DD1CB,X ; | Add left plant tile CODE_0DD1F2: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD1F5: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD1F8: BF CF D1 0D LDA.L DATA_0DD1CF,X ; | Add right plant tile CODE_0DD1FC: 97 6B STA [$6B],Y ;/ CODE_0DD1FE: C6 00 DEC $00 ;\ CODE_0DD200: 10 03 BPL CODE_0DD205 ; | Check if it has a column ADDR_0DD202: 4C 4B D2 JMP.W Return0DD24B ;/ CODE_0DD205: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DD208: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DD20B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD20E: A9 5F LDA.B #$5F ; | Add top left column tile CODE_0DD210: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD213: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD216: A9 60 LDA.B #$60 ; | Add top right column tile CODE_0DD218: 97 6B STA [$6B],Y ;/ CODE_0DD21A: C6 00 DEC $00 ;\ CODE_0DD21C: 30 2D BMI Return0DD24B ;/ Check if it has more of the column than the top tile CODE_0DD21E: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DD221: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DD224: A2 00 LDX.B #$00 CODE_0DD226: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD229: BF D3 D1 0D LDA.L DATA_0DD1D3,X ; | Add left column tile CODE_0DD22D: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DD230: E8 INX CODE_0DD231: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DD234: BF D3 D1 0D LDA.L DATA_0DD1D3,X ; | Add right column tile CODE_0DD238: 97 6B STA [$6B],Y ;/ CODE_0DD23A: E8 INX CODE_0DD23B: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DD23E: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DD241: E0 06 CPX.B #$06 ;\ CODE_0DD243: D0 02 BNE CODE_0DD247 ; | Check for end of the table CODE_0DD245: A2 00 LDX.B #$00 ;/ CODE_0DD247: C6 00 DEC $00 ;\ CODE_0DD249: 10 DB BPL CODE_0DD226 ;/ Check for end of the object Return0DD24B: 60 RTS ; Return ;Log bridge DATA_0DD24C: .db $A3,$0E CODE_0DD24E: A4 57 LDY $57 ; Position CODE_0DD250: A5 59 LDA $59 ;\ CODE_0DD252: 29 0F AND.B #$0F ; | CODE_0DD254: 85 00 STA $00 ; | Width CODE_0DD256: 85 01 STA $01 ;/ CODE_0DD258: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DD25B: A2 00 LDX.B #$00 CODE_0DD25D: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DD260: E0 00 CPX.B #$00 ; | CODE_0DD262: F0 03 BEQ CODE_0DD267 ; | Set correct map16 page CODE_0DD264: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DD267: BF 4C D2 0D LDA.L DATA_0DD24C,X ;\ CODE_0DD26B: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DD26E: C6 01 DEC $01 ;\ CODE_0DD270: 10 EB BPL CODE_0DD25D ;/ Check for end of the line CODE_0DD272: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DD275: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DD278: A5 00 LDA $00 ;\ CODE_0DD27A: 85 01 STA $01 ;/ Reload width CODE_0DD27C: E8 INX ;\ CODE_0DD27D: E0 02 CPX.B #$02 ; | Check for end of the object CODE_0DD27F: D0 DC BNE CODE_0DD25D ;/ Return0DD281: 60 RTS ; Return Empty0DD282: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD28A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD292: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD29A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2A2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2AA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2B2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2BA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2C2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2CA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2D2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2DA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2E2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2EA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2F2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD2FA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD302: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD30A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD312: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD31A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD322: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD32A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD332: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD33A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD342: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD34A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD352: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD35A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD362: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD36A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD372: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD37A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD382: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD38A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD392: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD39A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3A2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3AA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3B2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3BA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3C2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3CA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3D2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3DA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3E2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3EA: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3F2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DD3FA: .db $FF,$FF,$FF,$FF,$FF,$FF DATA_0DD400: .db $F0,$B5,$F0,$35,$F1,$B5,$F1,$35 DATA_0DD408: .db $F1,$B5,$F1,$35,$F1,$B5,$F1,$35 DATA_0DD410: .db $F1,$B5,$F1,$35,$F2,$B5,$F2,$35 DATA_0DD418: .db $CF,$3D,$F8,$1C,$CF,$3D,$F8,$1C DATA_0DD420: .db $CB,$35,$D7,$35,$CC,$35,$D8,$35 DATA_0DD428: .db $CD,$35,$D9,$35,$CC,$35,$D8,$35 DATA_0DD430: .db $CD,$35,$D9,$35,$CE,$35,$DA,$35 DATA_0DD438: .db $D7,$B5,$CB,$B5,$D8,$B5,$CC,$B5 DATA_0DD440: .db $D9,$B5,$CD,$B5,$D8,$B5,$CC,$B5 DATA_0DD448: .db $D9,$B5,$CD,$B5,$DA,$B5,$CE,$B5 DATA_0DD450: .db $E3,$B5,$E3,$35,$F1,$B5,$F1,$35 DATA_0DD458: .db $F1,$B5,$F1,$35,$E3,$B5,$E3,$35 DATA_0DD460: .db $F0,$B5,$F0,$35,$E3,$B5,$E3,$35 DATA_0DD468: .db $E3,$B5,$E3,$35,$F2,$B5,$F2,$35 DATA_0DD470: .db $E6,$39,$E8,$39,$D2,$B5,$C2,$B5 DATA_0DD478: .db $D1,$B5,$C1,$B5,$D2,$B5,$C2,$B5 DATA_0DD480: .db $D1,$B5,$C1,$B5,$E7,$39,$E9,$39 DATA_0DD488: .db $E8,$B9,$E6,$B9,$C2,$35,$D2,$35 DATA_0DD490: .db $C1,$35,$D1,$35,$C2,$35,$D2,$35 DATA_0DD498: .db $C1,$35,$D1,$35,$E9,$B9,$E7,$B9 DATA_0DD4A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4B8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4D8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4E0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4E8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4F0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD4F8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD500: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD508: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD510: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD518: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD520: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD528: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD530: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD538: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD540: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD548: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD550: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD558: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD560: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD568: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD570: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD578: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD580: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD588: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD590: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD598: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5B8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5D8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5E0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5E8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5F0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD5F8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD600: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD608: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD610: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD618: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD620: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD628: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD630: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD638: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD640: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD648: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD650: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD658: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD660: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD668: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD670: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD678: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD680: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD688: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD690: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD698: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6B8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6D8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6E0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6E8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6F0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD6F8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD700: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD708: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD710: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD718: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD720: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD728: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD730: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD738: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD740: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD748: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD750: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD758: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD760: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD768: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD770: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD778: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD780: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD788: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD790: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD798: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7B8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7C0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7C8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7D0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7D8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7E0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7E8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7F0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD7F8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD800: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD808: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD810: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD818: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD820: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD828: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD830: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD838: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD840: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD848: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD850: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD858: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD860: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD868: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD870: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD878: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD880: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD888: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD890: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD898: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD8A0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD8A8: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD8B0: .db $00,$00,$00,$00,$00,$00,$00,$00 DATA_0DD8B8: .db $F4,$11,$F6,$11,$F5,$11,$F7,$11 DATA_0DD8C0: .db $F8,$11,$F8,$11,$F9,$11,$F9,$11 DATA_0DD8C8: .db $F6,$91,$F4,$91,$F7,$91,$F5,$91 DATA_0DD8D0: .db $FA,$11,$FD,$11,$FB,$11,$FE,$11 DATA_0DD8D8: .db $FC,$11,$FF,$11,$FC,$11,$FF,$11 DATA_0DD8E0: .db $FB,$51,$FE,$51,$FA,$51,$FD,$51 DATA_0DD8E8: .db $4A,$2C,$FB,$2C,$4B,$2C,$FB,$2C DATA_0DD8F0: .db $4A,$2C,$FB,$2C,$48,$2C,$49,$2C DATA_0DD8F8: .db $FB,$2C,$FB,$2C,$49,$2C,$49,$2C DATA_0DD900: .db $C7,$29,$DB,$39,$C8,$29,$DC,$39 DATA_0DD908: .db $C7,$29,$DC,$39,$C8,$29,$DC,$39 DATA_0DD910: .db $C7,$29,$DC,$39,$C8,$29,$DF,$39 DATA_0DD918: .db $DE,$09,$B0,$09,$C8,$09,$CA,$09 DATA_0DD920: .db $C7,$09,$B0,$09,$C8,$09,$CA,$09 DATA_0DD928: .db $C8,$09,$CA,$09,$C8,$09,$CA,$09 DATA_0DD930: .db $F0,$B5,$F0,$35,$F1,$B5,$F1,$35 DATA_0DD938: .db $F1,$B5,$F1,$35,$F1,$B5,$F1,$35 DATA_0DD940: .db $F1,$B5,$F1,$35,$F2,$B5,$F2,$35 DATA_0DD948: .db $92,$89,$94,$89,$93,$89,$95,$89 DATA_0DD950: .db $E0,$11,$E3,$11,$E1,$11,$C3,$11 DATA_0DD958: .db $FA,$1C,$C4,$11,$E2,$11,$FA,$1C DATA_0DD960: .db $FA,$1C,$E2,$D1,$D3,$11,$FA,$1C DATA_0DD968: .db $D4,$11,$FA,$1C,$FA,$1C,$E2,$91 DATA_0DD970: .db $26,$14,$36,$14,$26,$54,$36,$54 DATA_0DD978: .db $26,$18,$36,$18,$26,$58,$36,$58 DATA_0DD980: .db $26,$1C,$36,$1C,$26,$5C,$36,$5C DATA_0DD988: .db $27,$1C,$37,$1C,$27,$5C,$37,$5C ; This calls the correct code for the object if the tileset is T:3 in LM (underground) CODE_0DD990: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DD992: A6 5A LDX $5A ; Load object number CODE_0DD994: CA DEX ; We'll never see object number 0, so change the index to it won't clutter the table CODE_0DD995: 8A TXA ;\ CODE_0DD996: 22 FA 86 00 JSL.L ExecutePtrLong ;/ and call the correct subroutine PtrsLong0DD99A: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Blue) PtrsLong0DD99D: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible coin blocks PtrsLong0DD9A0: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible note blocks PtrsLong0DD9A3: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible POW coins PtrsLong0DD9A6: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coins PtrsLong0DD9A9: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Walk-through dirt PtrsLong0DD9AC: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Other color) PtrsLong0DD9AF: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Note blocks PtrsLong0DD9B2: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Turn blocks PtrsLong0DD9B5: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coin ? blocks PtrsLong0DD9B8: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Throw blocks PtrsLong0DD9BB: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Black piranha plants PtrsLong0DD9BE: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Cement blocks PtrsLong0DD9C1: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Brown blocks PtrsLong0DD9C4: 26 AA 0D .dw CODE_0DAA26 .db :$CODE_0DAA26 ; Vertical pipes PtrsLong0DD9C7: B4 AA 0D .dw CODE_0DAAB4 .db :$CODE_0DAAB4 ; Horizontal pipes PtrsLong0DD9CA: 0D AB 0D .dw CODE_0DAB0D .db :$CODE_0DAB0D ; Bullet shooter PtrsLong0DD9CD: 3E AB 0D .dw CODE_0DAB3E .db :$CODE_0DAB3E ; Slopes PtrsLong0DD9D0: 75 B0 0D .dw CODE_0DB075 .db :$CODE_0DB075 ; Ledge edges PtrsLong0DD9D3: D4 B1 0D .dw CODE_0DB1D4 .db :$CODE_0DB1D4 ; Ground ledge PtrsLong0DD9D6: 24 B2 0D .dw CODE_0DB224 .db :$CODE_0DB224 ; Midway/Goal point PtrsLong0DD9D9: 36 B3 0D .dw ADDR_0DB336 .db :$ADDR_0DB336 ; Blue coins PtrsLong0DD9DC: BD B3 0D .dw CODE_0DB3BD .db :$CODE_0DB3BD ; Rope/Clouds PtrsLong0DD9DF: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (ani) PtrsLong0DD9E2: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (not ani) PtrsLong0DD9E5: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Lava surface (ani) PtrsLong0DD9E8: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Net top edge PtrsLong0DD9EB: 2D B4 0D .dw CODE_0DB42D .db :$CODE_0DB42D ; Donut bridge PtrsLong0DD9EE: 61 B4 0D .dw CODE_0DB461 .db :$CODE_0DB461 ; Net bottom edge PtrsLong0DD9F1: 9E B4 0D .dw CODE_0DB49E .db :$CODE_0DB49E ; Net vertical edge PtrsLong0DD9F4: 1F B5 0D .dw CODE_0DB51F .db :$CODE_0DB51F ; Vert. Pipe/Bone/Log PtrsLong0DD9F7: 47 B5 0D .dw CODE_0DB547 .db :$CODE_0DB547 ; Horiz. Pipe/Bone/Log PtrsLong0DD9FA: C8 B1 0D .dw CODE_0DB1C8 .db :$CODE_0DB1C8 ; Long ground ledge PtrsLong0DD9FD: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DDA00: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA03: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA06: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA09: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA0C: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA0F: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA12: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | Unused (LM will declare these to be "reserved" and won't let you use them) PtrsLong0DDA15: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA18: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA1B: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA1E: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DDA21: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DDA24: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA27: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA2A: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | These could've been tileset specific, but Nintendo didn't have that many ideas for them. PtrsLong0DDA2D: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DDA30: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DDA33: 16 B9 0D .dw CODE_0DB916 .db :$CODE_0DB916 ; Blue switch blocks PtrsLong0DDA36: 1E B9 0D .dw CODE_0DB91E .db :$CODE_0DB91E ; Red switch blocks PtrsLong0DDA39: 35 E1 0D .dw CODE_0DE135 .db :$CODE_0DE135 ; Four-sided edge ground square PtrsLong0DDA3C: 3A DF 0D .dw CODE_0DDF3A .db :$CODE_0DDF3A ; Multiple canvasses (position hardcoded) PtrsLong0DDA3F: C8 DA 0D .dw CODE_0DDAC8 .db :$CODE_0DDAC8 ; Right facing mud/lava PtrsLong0DDA42: F2 DA 0D .dw CODE_0DDAF2 .db :$CODE_0DDAF2 ; Mud/lava slopes PtrsLong0DDA45: A9 DC 0D .dw CODE_0DDCA9 .db :$CODE_0DDCA9 ; Mud/lava with top PtrsLong0DDA48: A9 DC 0D .dw CODE_0DDCA9 .db :$CODE_0DDCA9 ; Mud/lava tiles PtrsLong0DDA4B: 87 DD 0D .dw CODE_0DDD87 .db :$CODE_0DDD87 ; Very steep slopes PtrsLong0DDA4E: EA DC 0D .dw CODE_0DDCEA .db :$CODE_0DDCEA ; Upside down ledge PtrsLong0DDA51: 2E DD 0D .dw CODE_0DDD2E .db :$CODE_0DDD2E ; Solid edges / solid edges with bottoms PtrsLong0DDA54: 5C DD 0D .dw CODE_0DDD5C .db :$CODE_0DDD5C ; Solid dirt ;Lava/mud top right corner edge CODE_0DDA57: A4 57 LDY $57 ; Position CODE_0DDA59: 20 08 AA JSR.W Sta1To6ePointer ; Second page CODE_0DDA5C: A9 FE LDA.B #$FE ;\ CODE_0DDA5E: 97 6B STA [$6B],Y ;/ Tile $1FE Return0DDA60: 60 RTS ; Return ;Canvass tiles 1 through 7 DATA_0DDA61: .db $7D,$7E,$7F,$80,$81,$82,$83 CODE_0DDA68: A4 57 LDY $57 ; Position CODE_0DDA6A: A5 59 LDA $59 ;\ CODE_0DDA6C: 38 SEC ; | CODE_0DDA6D: E9 75 SBC.B #$75 ; | "Fix" object number CODE_0DDA6F: AA TAX ;/ CODE_0DDA70: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDA73: BF 61 DA 0D LDA.L DATA_0DDA61,X ; | Add tile CODE_0DDA77: 97 6B STA [$6B],Y ;/ Return0DDA79: 60 RTS ; Return ;Bit of canvas 2 through 4 DATA_0DDA7A: .db $81,$82,$83 ; Top tiles DATA_0DDA7D: .db $84,$85,$86 ; Bottom tiles CODE_0DDA80: A4 57 LDY $57 ; Position CODE_0DDA82: A5 59 LDA $59 ;\ CODE_0DDA84: 38 SEC ; | CODE_0DDA85: E9 7C SBC.B #$7C ; | "Fix" object number CODE_0DDA87: AA TAX ;/ CODE_0DDA88: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDA8B: BF 7A DA 0D LDA.L DATA_0DDA7A,X ; | Top tile CODE_0DDA8F: 97 6B STA [$6B],Y ;/ CODE_0DDA91: 20 7D A9 JSR.W CODE_0DA97D ; Go to next tile CODE_0DDA94: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDA97: BF 7D DA 0D LDA.L DATA_0DDA7D,X ; | Bottom tile CODE_0DDA9B: 97 6B STA [$6B],Y ;/ Return0DDA9D: 60 RTS ; Return ;Torpedo launcher DATA_0DDA9E: .db $66,$67 DATA_0DDAA0: .db $68,$69 CODE_0DDAA2: A4 57 LDY $57 ; Position CODE_0DDAA4: A2 00 LDX.B #$00 CODE_0DDAA6: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDAA9: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDAAC: BF 9E DA 0D LDA.L DATA_0DDA9E,X ; | Add object CODE_0DDAB0: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDAB3: E8 INX ;\ CODE_0DDAB4: 8A TXA ;/ Go to next object CODE_0DDAB5: 29 01 AND.B #$01 ;\ CODE_0DDAB7: D0 F0 BNE CODE_0DDAA9 ;/ Check for end of line CODE_0DDAB9: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDABC: 20 7D A9 JSR.W CODE_0DA97D ; Go to next line CODE_0DDABF: E0 04 CPX.B #$04 ;\ CODE_0DDAC1: D0 E6 BNE CODE_0DDAA9 ;/ Return0DDAC3: 60 RTS ; Return ;Right facing mud/lava DATA_0DDAC4: .db $5A,$5B ; Tiles if it has a top DATA_0DDAC6: .db $5B,$5B ; Tiles if it doesn't have a top CODE_0DDAC8: A4 57 LDY $57 ; Position CODE_0DDACA: A5 59 LDA $59 ;\ CODE_0DDACC: 29 0F AND.B #$0F ; | Type CODE_0DDACE: AA TAX ;/ CODE_0DDACF: A5 59 LDA $59 ;\ CODE_0DDAD1: 4A LSR ; | CODE_0DDAD2: 4A LSR ; | CODE_0DDAD3: 4A LSR ; | Height CODE_0DDAD4: 4A LSR ; | CODE_0DDAD5: 85 00 STA $00 ;/ CODE_0DDAD7: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDADA: BF C4 DA 0D LDA.L DATA_0DDAC4,X ; | Add top tile CODE_0DDADE: 4C E8 DA JMP.W CODE_0DDAE8 ;/ CODE_0DDAE1: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDAE4: BF C6 DA 0D LDA.L DATA_0DDAC6,X ; | CODE_0DDAE8: 97 6B STA [$6B],Y ; | Add middle tile CODE_0DDAEA: 20 7D A9 JSR.W CODE_0DA97D ;/ CODE_0DDAED: C6 00 DEC $00 ;\ CODE_0DDAEF: 10 F0 BPL CODE_0DDAE1 ;/ Check for end of the object Return0DDAF1: 60 RTS ; Return ;Mud/lava slopes CODE_0DDAF2: A5 59 LDA $59 ;\ CODE_0DDAF4: 29 03 AND.B #$03 ; | Run the correct code for the type of slope we're trying to add CODE_0DDAF6: 22 FA 86 00 JSL.L ExecutePtrLong ;/ PtrsLong0DDAFA: 06 DB 0D .dw CODE_0DDB06 .db :$CODE_0DDB06 ; Normal left mud/lava slope 8F DB 0D .dw CODE_0DDB8F .db :$CODE_0DDB8F ; Steep left mud/lava slope 02 DC 0D .dw ADDR_0DDC02 .db :$ADDR_0DDC02 ; Normal right mud/lava slope 61 DC 0D .dw CODE_0DDC61 .db :$CODE_0DDC61 ; Steep right mud/lava slope CODE_0DDB06: A4 57 LDY $57 ; Position CODE_0DDB08: A9 01 LDA.B #$01 ;\ CODE_0DDB0A: 85 02 STA $02 ; | Width of the first line CODE_0DDB0C: 85 00 STA $00 ;/ CODE_0DDB0E: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDB11: A5 59 LDA $59 ;\ CODE_0DDB13: 4A LSR ; | CODE_0DDB14: 4A LSR ; | CODE_0DDB15: 4A LSR ; | Size CODE_0DDB16: 4A LSR ; | CODE_0DDB17: 85 00 STA $00 ; | CODE_0DDB19: E6 00 INC $00 ;/ CODE_0DDB1B: A6 02 LDX $02 ; Load size CODE_0DDB1D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDB20: A9 D2 LDA.B #$D2 ; | Add upper left tile CODE_0DDB22: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDB25: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDB28: A9 D3 LDA.B #$D3 ; | Add upper right tile CODE_0DDB2A: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDB2D: CA DEX ;\ CODE_0DDB2E: CA DEX ; | Check if we need "slope assist" and plain-color tiles CODE_0DDB2F: 30 1F BMI CODE_0DDB50 ;/ CODE_0DDB31: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDB34: A9 FB LDA.B #$FB ; | Add bottom left tile CODE_0DDB36: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDB39: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDB3C: A9 FF LDA.B #$FF ; | Add bottom right tile CODE_0DDB3E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDB41: CA DEX ;\ CODE_0DDB42: 4C 4D DB JMP.W CODE_0DDB4D ;/ Go to loop CODE_0DDB45: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDB48: A9 FF LDA.B #$FF ; | Add plain-color tiles CODE_0DDB4A: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDB4D: CA DEX ;\ CODE_0DDB4E: 10 F5 BPL CODE_0DDB45 ;/ Check if we need more plain-color tiles CODE_0DDB50: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDB53: E6 02 INC $02 ;\ CODE_0DDB55: E6 02 INC $02 ;/ Update size of line CODE_0DDB57: C6 00 DEC $00 ;\ CODE_0DDB59: F0 29 BEQ CODE_0DDB84 ;/ Check for the last line CODE_0DDB5B: 10 03 BPL CODE_0DDB60 ;\ CODE_0DDB5D: 4C 8E DB JMP.W Return0DDB8E ;/ Check for end of the object CODE_0DDB60: A5 57 LDA $57 ;\ CODE_0DDB62: 18 CLC ; | CODE_0DDB63: 69 0E ADC.B #$0E ; | Move index left/down or right CODE_0DDB65: A8 TAY ;/ CODE_0DDB66: 90 03 BCC CODE_0DDB6B ;\ ADDR_0DDB68: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer downwards if needed CODE_0DDB6B: 98 TYA ;\ CODE_0DDB6C: 29 0F AND.B #$0F ; | CODE_0DDB6E: C9 0E CMP.B #$0E ; | Check which direction it went CODE_0DDB70: 30 0D BMI CODE_0DDB7F ;/ CODE_0DDB72: 98 TYA ;\ CODE_0DDB73: 18 CLC ; | CODE_0DDB74: 69 10 ADC.B #$10 ; | Move index downwards CODE_0DDB76: A8 TAY ;/ CODE_0DDB77: 90 03 BCC CODE_0DDB7C ;\ ADDR_0DDB79: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer downwards if needed CODE_0DDB7C: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer leftwards CODE_0DDB7F: 84 57 STY $57 ; Update position CODE_0DDB81: 4C 1B DB JMP.W CODE_0DDB1B CODE_0DDB84: A6 02 LDX $02 ;\ CODE_0DDB86: CA DEX ; | Update line size CODE_0DDB87: CA DEX ;/ CODE_0DDB88: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDB8B: 4C 31 DB JMP.W CODE_0DDB31 Return0DDB8E: 60 RTS ; Return CODE_0DDB8F: A4 57 LDY $57 ; Position CODE_0DDB91: A9 00 LDA.B #$00 ;\ CODE_0DDB93: 85 02 STA $02 ; | Width of the first line CODE_0DDB95: 85 00 STA $00 ;/ CODE_0DDB97: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDB9A: A5 59 LDA $59 ;\ CODE_0DDB9C: 4A LSR ; | CODE_0DDB9D: 4A LSR ; | CODE_0DDB9E: 4A LSR ; | Size CODE_0DDB9F: 4A LSR ; | CODE_0DDBA0: 85 00 STA $00 ; | CODE_0DDBA2: E6 00 INC $00 ;/ CODE_0DDBA4: A6 02 LDX $02 ; Load size CODE_0DDBA6: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDBA9: A9 D6 LDA.B #$D6 ; | Add upper tile CODE_0DDBAB: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDBAE: CA DEX ;\ CODE_0DDBAF: 30 16 BMI CODE_0DDBC7 ;/ Check if we need "slope assist" tiles CODE_0DDBB1: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDBB4: A9 FD LDA.B #$FD ; | Add lower tile CODE_0DDBB6: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDBB9: 4C C4 DB JMP.W CODE_0DDBC4 ; Go to loop CODE_0DDBBC: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDBBF: A9 FF LDA.B #$FF ; | Add plain-color tile CODE_0DDBC1: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDBC4: CA DEX ;\ CODE_0DDBC5: 10 F5 BPL CODE_0DDBBC ;/ Check if we need more plain-color tiles CODE_0DDBC7: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDBCA: E6 02 INC $02 ; Update size of line CODE_0DDBCC: C6 00 DEC $00 ;\ CODE_0DDBCE: F0 29 BEQ CODE_0DDBF9 ;/ Check for the last line CODE_0DDBD0: 10 03 BPL CODE_0DDBD5 ;\ CODE_0DDBD2: 4C 01 DC JMP.W Return0DDC01 ;/ Check for end of the object CODE_0DDBD5: A5 57 LDA $57 ;\ CODE_0DDBD7: 18 CLC ; | CODE_0DDBD8: 69 0F ADC.B #$0F ; | Move index left/down or right CODE_0DDBDA: A8 TAY ;/ CODE_0DDBDB: 90 03 BCC CODE_0DDBE0 ;\ ADDR_0DDBDD: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer downwards if needed CODE_0DDBE0: 98 TYA ;\ CODE_0DDBE1: 29 0F AND.B #$0F ; | CODE_0DDBE3: C9 0F CMP.B #$0F ; | Check which direction it went CODE_0DDBE5: D0 0D BNE CODE_0DDBF4 ;/ CODE_0DDBE7: 98 TYA ;\ CODE_0DDBE8: 18 CLC ; | CODE_0DDBE9: 69 10 ADC.B #$10 ; | Move index downwards CODE_0DDBEB: A8 TAY ;/ CODE_0DDBEC: 90 03 BCC CODE_0DDBF1 ;\ ADDR_0DDBEE: 20 87 A9 JSR.W CODE_0DA987 ;/ Move pointer downwards if needed CODE_0DDBF1: 20 D6 A9 JSR.W CODE_0DA9D6 ; Move pointer leftwards CODE_0DDBF4: 84 57 STY $57 ; Update position CODE_0DDBF6: 4C A4 DB JMP.W CODE_0DDBA4 CODE_0DDBF9: A6 02 LDX $02 ; Reload line size CODE_0DDBFB: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDBFE: 4C AE DB JMP.W CODE_0DDBAE Return0DDC01: 60 RTS ; Return ADDR_0DDC02: A4 57 LDY $57 ; Position ADDR_0DDC04: A2 01 LDX.B #$01 ;\ ADDR_0DDC06: 86 02 STX $02 ; | Width of first line ADDR_0DDC08: 86 00 STX $00 ;/ ADDR_0DDC0A: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer ADDR_0DDC0D: A5 59 LDA $59 ;\ ADDR_0DDC0F: 4A LSR ; | ADDR_0DDC10: 4A LSR ; | ADDR_0DDC11: 4A LSR ; | Size ADDR_0DDC12: 4A LSR ; | ADDR_0DDC13: 85 00 STA $00 ; | ADDR_0DDC15: E6 00 INC $00 ;/ ADDR_0DDC17: 4C 3D DC JMP.W ADDR_0DDC3D ADDR_0DDC1A: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DDC1D: A9 FF LDA.B #$FF ; | Add plain-color tiles ADDR_0DDC1F: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DDC22: CA DEX ;\ ADDR_0DDC23: E0 03 CPX.B #$03 ; | Check if we need more plain-color tiles ADDR_0DDC25: D0 F3 BNE ADDR_0DDC1A ;/ ADDR_0DDC27: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DDC2A: A9 FF LDA.B #$FF ; | Add bottom left tile ADDR_0DDC2C: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DDC2F: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DDC32: A9 FC LDA.B #$FC ; | Add bottom right tile ADDR_0DDC34: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DDC37: CA DEX ;\ ADDR_0DDC38: CA DEX ; | ADDR_0DDC39: A5 00 LDA $00 ; | Check if it's the last line ADDR_0DDC3B: F0 20 BEQ Return0DDC5D ;/ ADDR_0DDC3D: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DDC40: A9 D4 LDA.B #$D4 ; | Add top left tile ADDR_0DDC42: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DDC45: 20 08 AA JSR.W Sta1To6ePointer ;\ ADDR_0DDC48: A9 D5 LDA.B #$D5 ; | Add top right tile ADDR_0DDC4A: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DDC4D: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer ADDR_0DDC50: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards ADDR_0DDC53: E6 02 INC $02 ;\ ADDR_0DDC55: E6 02 INC $02 ;/ Update size of line ADDR_0DDC57: A6 02 LDX $02 ; Reload size of line ADDR_0DDC59: C6 00 DEC $00 ;\ ADDR_0DDC5B: 10 01 BPL ADDR_0DDC5E ;/ Check for end of the object Return0DDC5D: 60 RTS ; Return ADDR_0DDC5E: 4C 23 DC JMP.W ADDR_0DDC23 CODE_0DDC61: A4 57 LDY $57 ; Position CODE_0DDC63: A2 00 LDX.B #$00 ;\ CODE_0DDC65: 86 02 STX $02 ; | Width of first line CODE_0DDC67: 86 00 STX $00 ;/ CODE_0DDC69: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDC6C: A5 59 LDA $59 ;\ CODE_0DDC6E: 4A LSR ; | CODE_0DDC6F: 4A LSR ; | CODE_0DDC70: 4A LSR ; | Size CODE_0DDC71: 4A LSR ; | CODE_0DDC72: 85 00 STA $00 ; | CODE_0DDC74: E6 00 INC $00 ;/ CODE_0DDC76: 4C 8E DC JMP.W CODE_0DDC8E CODE_0DDC79: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDC7C: A9 FF LDA.B #$FF ; | Add plain-color tiles CODE_0DDC7E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDC81: CA DEX ;\ CODE_0DDC82: E0 01 CPX.B #$01 ; | Check if we need more plain-color tiles CODE_0DDC84: D0 F3 BNE CODE_0DDC79 ;/ CODE_0DDC86: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDC89: A9 FE LDA.B #$FE ; | Add lower tile CODE_0DDC8B: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDC8E: A5 00 LDA $00 ;\ CODE_0DDC90: F0 16 BEQ Return0DDCA8 ;/ Check if it's the last line CODE_0DDC92: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDC95: A9 D7 LDA.B #$D7 ; | Add upper tile CODE_0DDC97: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDC9A: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDC9D: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDCA0: E6 02 INC $02 ; Update size of line CODE_0DDCA2: A6 02 LDX $02 ; Reload size of line CODE_0DDCA4: C6 00 DEC $00 ;\ CODE_0DDCA6: 10 DA BPL CODE_0DDC82 ;/ Check for end of the object Return0DDCA8: 60 RTS ; Return ;Mud/lava with and without top CODE_0DDCA9: A4 57 LDY $57 ; Position CODE_0DDCAB: A5 59 LDA $59 ;\ CODE_0DDCAD: 29 0F AND.B #$0F ; | Width CODE_0DDCAF: 85 00 STA $00 ;/ CODE_0DDCB1: A5 59 LDA $59 ;\ CODE_0DDCB3: 4A LSR ; | CODE_0DDCB4: 4A LSR ; | CODE_0DDCB5: 4A LSR ; | Height CODE_0DDCB6: 4A LSR ; | CODE_0DDCB7: 85 01 STA $01 ;/ CODE_0DDCB9: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDCBC: 8A TXA CODE_0DDCBD: A6 00 LDX $00 ; Load width CODE_0DDCBF: 38 SEC ;\ CODE_0DDCC0: E9 39 SBC.B #$39 ; | Check if we need top tiles CODE_0DDCC2: D0 0E BNE CODE_0DDCD2 ;/ CODE_0DDCC4: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDCC7: A9 59 LDA.B #$59 ; | Add top tile CODE_0DDCC9: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDCCC: CA DEX ;\ CODE_0DDCCD: 10 F5 BPL CODE_0DDCC4 ; | Check if we need more top tiles CODE_0DDCCF: 4C DD DC JMP.W CODE_0DDCDD ;/ CODE_0DDCD2: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDCD5: A9 FF LDA.B #$FF ; | Add bottom tiles CODE_0DDCD7: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDCDA: CA DEX ;\ CODE_0DDCDB: 10 F5 BPL CODE_0DDCD2 ;/ Check if we need more bottom tiles CODE_0DDCDD: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDCE0: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDCE3: A6 00 LDX $00 ;\ CODE_0DDCE5: C6 01 DEC $01 ; | Check for end of the object CODE_0DDCE7: 10 E9 BPL CODE_0DDCD2 ;/ Return0DDCE9: 60 RTS ; Return ;Upside down ledge CODE_0DDCEA: A4 57 LDY $57 ; Position CODE_0DDCEC: A5 59 LDA $59 ;\ CODE_0DDCEE: 4A LSR ; | CODE_0DDCEF: 4A LSR ; | CODE_0DDCF0: 4A LSR ; | Height CODE_0DDCF1: 4A LSR ; | CODE_0DDCF2: 85 00 STA $00 ;/ CODE_0DDCF4: A5 59 LDA $59 ;\ CODE_0DDCF6: 29 0F AND.B #$0F ; | Width CODE_0DDCF8: 85 01 STA $01 ;/ CODE_0DDCFA: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDCFD: A5 00 LDA $00 ;\ CODE_0DDCFF: F0 17 BEQ CODE_0DDD18 ;/ Check if we need dirt tiles CODE_0DDD01: A6 01 LDX $01 ; Load width CODE_0DDD03: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDD06: A9 65 LDA.B #$65 ; | Add dirt tile CODE_0DDD08: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDD0B: CA DEX ;\ CODE_0DDD0C: 10 F5 BPL CODE_0DDD03 ;/ Check if we need more dirt tiles CODE_0DDD0E: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDD11: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDD14: C6 00 DEC $00 ;\ CODE_0DDD16: D0 E9 BNE CODE_0DDD01 ;/ Check for the last row CODE_0DDD18: A6 01 LDX $01 ; Load width CODE_0DDD1A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDD1D: A9 4E LDA.B #$4E ; | Add bottom tile CODE_0DDD1F: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDD22: CA DEX ;\ CODE_0DDD23: 10 F5 BPL CODE_0DDD1A ;/ Check for end of the object Return0DDD25: 60 RTS ; Return ;Solid edges / solid edges with bottoms DATA_0DDD26: .db $50,$50,$51,$51 ; Upper tiles DATA_0DDD2A: .db $4D,$50,$4F,$51 ; Bottom tiles CODE_0DDD2E: A4 57 LDY $57 ; Position CODE_0DDD30: A5 59 LDA $59 ;\ CODE_0DDD32: 4A LSR ; | CODE_0DDD33: 4A LSR ; | CODE_0DDD34: 4A LSR ; | Height CODE_0DDD35: 4A LSR ; | CODE_0DDD36: 85 00 STA $00 ;/ CODE_0DDD38: A5 59 LDA $59 ;\ CODE_0DDD3A: 29 0F AND.B #$0F ; | Type CODE_0DDD3C: AA TAX ;/ CODE_0DDD3D: A5 00 LDA $00 ;\ CODE_0DDD3F: F0 10 BEQ CODE_0DDD51 ;/ Check if we need upper tiles CODE_0DDD41: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDD44: BF 26 DD 0D LDA.L DATA_0DDD26,X ; | Add upper tile CODE_0DDD48: 97 6B STA [$6B],Y ;/ CODE_0DDD4A: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDD4D: C6 00 DEC $00 ;\ CODE_0DDD4F: D0 F0 BNE CODE_0DDD41 ;/ Check if we need more upper tiles CODE_0DDD51: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDD54: BF 2A DD 0D LDA.L DATA_0DDD2A,X ; | Add bottom tile CODE_0DDD58: 20 5B A9 JSR.W CODE_0DA95B ;/ Return0DDD5B: 60 RTS ; Return ;Solid dirt CODE_0DDD5C: A4 57 LDY $57 ; Position CODE_0DDD5E: A5 59 LDA $59 ;\ CODE_0DDD60: 4A LSR ; | CODE_0DDD61: 4A LSR ; | CODE_0DDD62: 4A LSR ; | Height CODE_0DDD63: 4A LSR ; | CODE_0DDD64: 85 00 STA $00 ;/ CODE_0DDD66: A5 59 LDA $59 ;\ CODE_0DDD68: 29 0F AND.B #$0F ; | Width CODE_0DDD6A: 85 01 STA $01 ;/ CODE_0DDD6C: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDD6F: A6 01 LDX $01 ; Load width CODE_0DDD71: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDD74: A9 65 LDA.B #$65 ; | Add tile CODE_0DDD76: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDD79: CA DEX ;\ CODE_0DDD7A: 10 F5 BPL CODE_0DDD71 ;/ Check for end of the line CODE_0DDD7C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDD7F: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDD82: C6 00 DEC $00 ;\ CODE_0DDD84: 10 E9 BPL CODE_0DDD6F ;/ Check for end of the object Return0DDD86: 60 RTS ; Return ;Very steep slopes CODE_0DDD87: A5 59 LDA $59 ;\ CODE_0DDD89: 4A LSR ; | CODE_0DDD8A: 4A LSR ; | CODE_0DDD8B: 4A LSR ; | Check type and run the correct code CODE_0DDD8C: 4A LSR ; | CODE_0DDD8D: 29 01 AND.B #$01 ; | CODE_0DDD8F: 22 FA 86 00 JSL.L ExecutePtrLong ;/ PtrsLong0DDD93: 99 DD 0D .dw CODE_0DDD99 .db :$CODE_0DDD99 ; Very steep left slope 3C DE 0D .dw CODE_0DDE3C .db :$CODE_0DDE3C ; Very steep right slope CODE_0DDD99: A4 57 LDY $57 ; Position CODE_0DDD9B: A5 59 LDA $59 ;\ CODE_0DDD9D: 29 0F AND.B #$0F ; | Width CODE_0DDD9F: 85 00 STA $00 ;/ CODE_0DDDA1: 0A ASL ;\ CODE_0DDDA2: 18 CLC ; | CODE_0DDDA3: 69 02 ADC.B #$02 ; | Height (this object is added in vertical stripes rather than horizontal) CODE_0DDDA5: 85 01 STA $01 ;/ CODE_0DDDA7: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDDAA: A6 01 LDX $01 ; Load height CODE_0DDDAC: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDDAF: A9 CA LDA.B #$CA ; | Add top tile CODE_0DDDB1: 97 6B STA [$6B],Y ;/ CODE_0DDDB3: 98 TYA ;\ CODE_0DDDB4: 18 CLC ; | CODE_0DDDB5: 69 10 ADC.B #$10 ; | CODE_0DDDB7: A8 TAY ; | CODE_0DDDB8: 90 08 BCC CODE_0DDDC2 ; | Move pointer downwards ADDR_0DDDBA: A5 6C LDA $6C ; | ADDR_0DDDBC: 69 00 ADC.B #$00 ; | ADDR_0DDDBE: 85 6C STA $6C ; | ADDR_0DDDC0: 85 6F STA $6F ;/ CODE_0DDDC2: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDDC5: A9 CB LDA.B #$CB ; | Add middle tile (not counting dirt tiles) CODE_0DDDC7: 97 6B STA [$6B],Y ;/ CODE_0DDDC9: 98 TYA ;\ CODE_0DDDCA: 18 CLC ; | CODE_0DDDCB: 69 10 ADC.B #$10 ; | CODE_0DDDCD: A8 TAY ; | CODE_0DDDCE: 90 08 BCC CODE_0DDDD8 ; | Move pointer downwards ADDR_0DDDD0: A5 6C LDA $6C ; | ADDR_0DDDD2: 69 00 ADC.B #$00 ; | ADDR_0DDDD4: 85 6C STA $6C ; | ADDR_0DDDD6: 85 6F STA $6F ;/ CODE_0DDDD8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDDDB: A9 F1 LDA.B #$F1 ; | Add bottom tile (not counting dirt tiles) CODE_0DDDDD: 97 6B STA [$6B],Y ;/ CODE_0DDDDF: 98 TYA ;\ CODE_0DDDE0: 18 CLC ; | CODE_0DDDE1: 69 10 ADC.B #$10 ; | CODE_0DDDE3: A8 TAY ; | CODE_0DDDE4: 90 08 BCC CODE_0DDDEE ; | Move pointer downwards ADDR_0DDDE6: A5 6C LDA $6C ; | ADDR_0DDDE8: 69 00 ADC.B #$00 ; | ADDR_0DDDEA: 85 6C STA $6C ; | ADDR_0DDDEC: 85 6F STA $6F ;/ CODE_0DDDEE: CA DEX ;\ CODE_0DDDEF: CA DEX ; | Update number of remaining tiles in the line and go to loop CODE_0DDDF0: 4C 09 DE JMP.W CODE_0DDE09 ;/ CODE_0DDDF3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDDF6: A9 3F LDA.B #$3F ; | Add dirt tile CODE_0DDDF8: 97 6B STA [$6B],Y ;/ CODE_0DDDFA: 98 TYA ;\ CODE_0DDDFB: 18 CLC ; | CODE_0DDDFC: 69 10 ADC.B #$10 ; | CODE_0DDDFE: A8 TAY ; | CODE_0DDDFF: 90 08 BCC CODE_0DDE09 ; | Move pointer downwards ADDR_0DDE01: A5 6C LDA $6C ; | ADDR_0DDE03: 69 00 ADC.B #$00 ; | ADDR_0DDE05: 85 6C STA $6C ; | ADDR_0DDE07: 85 6F STA $6F ;/ CODE_0DDE09: CA DEX ;\ CODE_0DDE0A: 10 E7 BPL CODE_0DDDF3 ;/ Check if we need more dirt tiles CODE_0DDE0C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDE0F: A5 57 LDA $57 ;\ CODE_0DDE11: 18 CLC ; | CODE_0DDE12: 69 1F ADC.B #$1F ; | CODE_0DDE14: A8 TAY ; | CODE_0DDE15: 90 03 BCC CODE_0DDE1A ; | ADDR_0DDE17: 20 87 A9 JSR.W CODE_0DA987 ; | CODE_0DDE1A: 98 TYA ; | CODE_0DDE1B: 29 0F AND.B #$0F ; | CODE_0DDE1D: C9 0F CMP.B #$0F ; | CODE_0DDE1F: D0 0D BNE CODE_0DDE2E ; | Move pointer down and left CODE_0DDE21: 98 TYA ; | CODE_0DDE22: 18 CLC ; | CODE_0DDE23: 69 10 ADC.B #$10 ; | CODE_0DDE25: A8 TAY ; | CODE_0DDE26: 90 03 BCC CODE_0DDE2B ; | ADDR_0DDE28: 20 87 A9 JSR.W CODE_0DA987 ; | CODE_0DDE2B: 20 D6 A9 JSR.W CODE_0DA9D6 ; | CODE_0DDE2E: 84 57 STY $57 ;/ CODE_0DDE30: C6 01 DEC $01 ;\ CODE_0DDE32: C6 01 DEC $01 ;/ Update height CODE_0DDE34: C6 00 DEC $00 ;\ CODE_0DDE36: 30 03 BMI Return0DDE3B ; | Check for end of the object CODE_0DDE38: 4C A7 DD JMP.W CODE_0DDDA7 ;/ Return0DDE3B: 60 RTS ; Return CODE_0DDE3C: A4 57 LDY $57 ; Position CODE_0DDE3E: A5 59 LDA $59 ;\ CODE_0DDE40: 29 0F AND.B #$0F ; | Width CODE_0DDE42: 85 00 STA $00 ;/ CODE_0DDE44: 0A ASL ;\ CODE_0DDE45: 18 CLC ; | CODE_0DDE46: 69 02 ADC.B #$02 ; | Height CODE_0DDE48: 85 01 STA $01 ;/ CODE_0DDE4A: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDE4D: A6 01 LDX $01 ; Load height CODE_0DDE4F: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDE52: A9 CC LDA.B #$CC ; | Add top tile CODE_0DDE54: 97 6B STA [$6B],Y ;/ CODE_0DDE56: 98 TYA ;\ CODE_0DDE57: 18 CLC ; | CODE_0DDE58: 69 10 ADC.B #$10 ; | CODE_0DDE5A: A8 TAY ; | CODE_0DDE5B: 90 08 BCC CODE_0DDE65 ; | Move pointer downwards ADDR_0DDE5D: A5 6C LDA $6C ; | ADDR_0DDE5F: 69 00 ADC.B #$00 ; | ADDR_0DDE61: 85 6C STA $6C ; | ADDR_0DDE63: 85 6F STA $6F ;/ CODE_0DDE65: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDE68: A9 CD LDA.B #$CD ; | Add middle tile (not counting dirt tiles) CODE_0DDE6A: 97 6B STA [$6B],Y ;/ CODE_0DDE6C: 98 TYA ;\ CODE_0DDE6D: 18 CLC ; | CODE_0DDE6E: 69 10 ADC.B #$10 ; | CODE_0DDE70: A8 TAY ; | CODE_0DDE71: 90 08 BCC CODE_0DDE7B ; | Move pointer downwards ADDR_0DDE73: A5 6C LDA $6C ; | ADDR_0DDE75: 69 00 ADC.B #$00 ; | ADDR_0DDE77: 85 6C STA $6C ; | ADDR_0DDE79: 85 6F STA $6F ;/ CODE_0DDE7B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDE7E: A9 F2 LDA.B #$F2 ; | Add bottom tile (not counting dirt tiles) CODE_0DDE80: 97 6B STA [$6B],Y ;/ CODE_0DDE82: 98 TYA ;\ CODE_0DDE83: 18 CLC ; | CODE_0DDE84: 69 10 ADC.B #$10 ; | CODE_0DDE86: A8 TAY ; | CODE_0DDE87: 90 08 BCC CODE_0DDE91 ; | Move pointer downwards ADDR_0DDE89: A5 6C LDA $6C ; | ADDR_0DDE8B: 69 00 ADC.B #$00 ; | ADDR_0DDE8D: 85 6C STA $6C ; | ADDR_0DDE8F: 85 6F STA $6F ;/ CODE_0DDE91: CA DEX ;\ CODE_0DDE92: CA DEX ; | Update number of remaining tiles in the line and go to loop CODE_0DDE93: 4C AC DE JMP.W CODE_0DDEAC ;/ CODE_0DDE96: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDE99: A9 3F LDA.B #$3F ; | Add dirt tile CODE_0DDE9B: 97 6B STA [$6B],Y ;/ CODE_0DDE9D: 98 TYA ;\ CODE_0DDE9E: 18 CLC ; | CODE_0DDE9F: 69 10 ADC.B #$10 ; | CODE_0DDEA1: A8 TAY ; | CODE_0DDEA2: 90 08 BCC CODE_0DDEAC ; | Move pointer downwards ADDR_0DDEA4: A5 6C LDA $6C ; | ADDR_0DDEA6: 69 00 ADC.B #$00 ; | ADDR_0DDEA8: 85 6C STA $6C ; | ADDR_0DDEAA: 85 6F STA $6F ;/ CODE_0DDEAC: CA DEX ;\ CODE_0DDEAD: 10 E7 BPL CODE_0DDE96 ;/ Check if we need more dirt tiles CODE_0DDEAF: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDEB2: A5 57 LDA $57 ;\ CODE_0DDEB4: 18 CLC ; | CODE_0DDEB5: 69 20 ADC.B #$20 ; | CODE_0DDEB7: A8 TAY ; | CODE_0DDEB8: 90 03 BCC CODE_0DDEBD ; | ADDR_0DDEBA: 20 87 A9 JSR.W CODE_0DA987 ; | CODE_0DDEBD: 98 TYA ; | CODE_0DDEBE: 18 CLC ; | CODE_0DDEBF: 69 01 ADC.B #$01 ; | CODE_0DDEC1: A8 TAY ; | Move pointer down and right CODE_0DDEC2: 29 0F AND.B #$0F ; | CODE_0DDEC4: D0 08 BNE CODE_0DDECE ; | CODE_0DDEC6: 20 EF A9 JSR.W CODE_0DA9EF ; | CODE_0DDEC9: 88 DEY ; | CODE_0DDECA: 98 TYA ; | CODE_0DDECB: 29 F0 AND.B #$F0 ; | CODE_0DDECD: A8 TAY ; | CODE_0DDECE: 84 57 STY $57 ;/ CODE_0DDED0: C6 01 DEC $01 ;\ CODE_0DDED2: C6 01 DEC $01 ;/ Update height CODE_0DDED4: C6 00 DEC $00 ;\ CODE_0DDED6: 30 03 BMI Return0DDEDB ; | Check for end of the object CODE_0DDED8: 4C 4A DE JMP.W CODE_0DDE4A ;/ Return0DDEDB: 60 RTS ; Return ;Multiple canvasses (position hardcoded) DATA_0DDEDC: .db $5C,$5D,$5E,$60 DATA_0DDEE0: .db $73,$74,$75 ; This line is added twice DATA_0DDEE3: .db $62,$63,$64,$5F DATA_0DDEE7: .db $76,$76,$76 DATA_0DDEEA: .db $50,$58,$94,$9C,$D0,$D8,$14,$1C ; Low bytes of pointers to where to place the canvasses DATA_0DDEF2: .db $C8,$C8,$C8,$C8,$C8,$C8,$C9,$C9 ; High bytes of pointers to where to place the canvasses DATA_0DDEFA: .db $00,$C8,$B0,$C9,$60,$CB,$10,$CD ; Table of 16-bit pointers to the screens (bank is 7E) .db $C0,$CE,$70,$D0,$20,$D2,$D0,$D3 .db $80,$D5,$30,$D7,$E0,$D8,$90,$DA .db $40,$DC,$F0,$DD,$A0,$DF,$50,$E1 DATA_0DDF1A: .db $00,$C8,$B0,$C9,$60,$CB,$10,$CD ; Table of 16-bit pointers to the screens (bank is 7F) .db $C0,$CE,$70,$D0,$20,$D2,$D0,$D3 .db $80,$D5,$30,$D7,$E0,$D8,$90,$DA .db $40,$DC,$F0,$DD,$A0,$DF,$50,$E1 CODE_0DDF3A: A5 59 LDA $59 ;\ CODE_0DDF3C: 29 0F AND.B #$0F ; | Remove height bits CODE_0DDF3E: 85 59 STA $59 ;/ CODE_0DDF40: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DDF43: A0 50 LDY.B #$50 ;\ CODE_0DDF45: 84 57 STY $57 ;/ Change position CODE_0DDF47: A9 0F LDA.B #$0F ;\ CODE_0DDF49: 85 00 STA $00 ;/ Width of a row CODE_0DDF4B: A9 04 LDA.B #$04 ;\ CODE_0DDF4D: 85 01 STA $01 ;/ Height CODE_0DDF4F: A6 00 LDX $00 ; Load width CODE_0DDF51: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDF54: A9 61 LDA.B #$61 ; | Add tile CODE_0DDF56: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DDF59: CA DEX ;\ CODE_0DDF5A: 10 F5 BPL CODE_0DDF51 ;/ Check for end of the row CODE_0DDF5C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDF5F: A5 57 LDA $57 ;\ CODE_0DDF61: 18 CLC ; | CODE_0DDF62: 69 40 ADC.B #$40 ; | CODE_0DDF64: 85 57 STA $57 ; | Move pointer down CODE_0DDF66: A8 TAY ; | CODE_0DDF67: 90 03 BCC CODE_0DDF6C ; | CODE_0DDF69: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DDF6C: C6 01 DEC $01 ;\ CODE_0DDF6E: 10 DF BPL CODE_0DDF4F ;/ Check for end of this area CODE_0DDF70: A9 00 LDA.B #$00 ;\ CODE_0DDF72: 85 6B STA $6B ; | CODE_0DDF74: 85 04 STA $04 ; | CODE_0DDF76: 85 6E STA $6E ; | CODE_0DDF78: A9 00 LDA.B #$00 ; | CODE_0DDF7A: 85 00 STA $00 ; | Hijack the pointers CODE_0DDF7C: A9 07 LDA.B #$07 ; | CODE_0DDF7E: 85 03 STA $03 ; | CODE_0DDF80: A9 02 LDA.B #$02 ; | CODE_0DDF82: 85 01 STA $01 ;/ CODE_0DDF84: A6 00 LDX $00 ;\ CODE_0DDF86: BF EA DE 0D LDA.L DATA_0DDEEA,X ; | CODE_0DDF8A: 85 57 STA $57 ; | CODE_0DDF8C: A8 TAY ; | CODE_0DDF8D: BF F2 DE 0D LDA.L DATA_0DDEF2,X ; | Set up pointers to where to place the canvasses CODE_0DDF91: 85 6C STA $6C ; | CODE_0DDF93: 85 05 STA $05 ; | CODE_0DDF95: 85 6F STA $6F ;/ CODE_0DDF97: A9 03 LDA.B #$03 ;\ CODE_0DDF99: 85 02 STA $02 ;/ Width of top line CODE_0DDF9B: A2 00 LDX.B #$00 CODE_0DDF9D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDFA0: BF DC DE 0D LDA.L DATA_0DDEDC,X ; | CODE_0DDFA4: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DDFA7: E8 INX ; | Add top line CODE_0DDFA8: C6 02 DEC $02 ; | CODE_0DDFAA: 10 F1 BPL CODE_0DDF9D ;/ CODE_0DDFAC: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDFAF: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDFB2: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDFB5: BF DC DE 0D LDA.L DATA_0DDEDC,X ; | CODE_0DDFB9: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DDFBC: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | CODE_0DDFBF: BF DD DE 0D LDA.L DATA_0DDEDC+1,X ; | CODE_0DDFC3: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DDFC6: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | Add middle lines CODE_0DDFC9: BF DE DE 0D LDA.L DATA_0DDEDC+2,X ; | CODE_0DDFCD: 97 6B STA [$6B],Y ; | CODE_0DDFCF: 20 7D A9 JSR.W CODE_0DA97D ; | CODE_0DDFD2: C6 01 DEC $01 ; | CODE_0DDFD4: 10 DC BPL CODE_0DDFB2 ;/ CODE_0DDFD6: E8 INX ;\ CODE_0DDFD7: E8 INX ; | Increase index to table CODE_0DDFD8: E8 INX ;/ CODE_0DDFD9: A9 03 LDA.B #$03 ;\ CODE_0DDFDB: 85 02 STA $02 ;/ Width of bottom line CODE_0DDFDD: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DDFE0: BF DC DE 0D LDA.L DATA_0DDEDC,X ; | CODE_0DDFE4: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DDFE7: E8 INX ; | Add bottom line CODE_0DDFE8: C6 02 DEC $02 ; | CODE_0DDFEA: 10 F1 BPL CODE_0DDFDD ;/ CODE_0DDFEC: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DDFEF: A9 02 LDA.B #$02 ;\ CODE_0DDFF1: 85 02 STA $02 ;/ CODE_0DDFF3: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DDFF6: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DDFF9: BF DC DE 0D LDA.L DATA_0DDEDC,X ; | CODE_0DDFFD: 20 5B A9 JSR.W CODE_0DA95B ; | Add bottom line CODE_0DE001: C6 02 DEC $02 ; | CODE_0DE003: 10 F1 BPL CODE_0DDFF6 ;/ CODE_0DE005: C6 03 DEC $03 ;\ CODE_0DE007: 30 05 BMI CODE_0DE00E ; | CODE_0DE009: E6 00 INC $00 ; | Check for end of the object CODE_0DE00B: 4C 80 DF JMP.W CODE_0DDF80 ;/ CODE_0DE00E: A9 01 LDA.B #$01 ;\ CODE_0DE010: 85 08 STA $08 ;/ First screen to copy to CODE_0DE012: A9 00 LDA.B #$00 ;\ CODE_0DE014: 85 09 STA $09 ;/ High byte of screen number (always 0) CODE_0DE016: C2 30 REP #$30 ; Index (16 bit) Accum (16 bit) CODE_0DE018: A5 08 LDA $08 ;\ CODE_0DE01A: 0A ASL ; | Get index to table CODE_0DE01B: AA TAX ;/ CODE_0DE01C: BF FA DE 0D LDA.L DATA_0DDEFA,X ;\ CODE_0DE020: 85 04 STA $04 ;/ Get pointer to low byte of map16 tiles table CODE_0DE022: BF 1A DF 0D LDA.L DATA_0DDF1A,X ;\ CODE_0DE026: 85 06 STA $06 ;/ Get pointer to high byte of map16 tiles table CODE_0DE028: A9 B0 01 LDA.W #$01B0 ;\ CODE_0DE02B: 85 00 STA $00 ;/ Size of a screen CODE_0DE02D: A9 00 C8 LDA.W #$C800 ;\ CODE_0DE030: 85 02 STA $02 ;/ Where to copy from CODE_0DE032: 8B PHB ; Preserve DBR (MVN/MVP changes this one) CODE_0DE033: A5 00 LDA $00 ;\ CODE_0DE035: A6 02 LDX $02 ; | Load settings CODE_0DE037: A4 04 LDY $04 ;/ CODE_0DE039: 54 7E 7E MVN $7E,$7E ; And move it CODE_0DE03C: AB PLB ; Reload DBR CODE_0DE03D: A9 B0 01 LDA.W #$01B0 ;\ CODE_0DE040: 85 00 STA $00 ;/ Size of a screen CODE_0DE042: A9 00 C8 LDA.W #$C800 ;\ CODE_0DE045: 85 02 STA $02 ;/ Where to copy from CODE_0DE047: 8B PHB ; Preserve DBR (MVN/MVP changes this one) CODE_0DE048: A5 00 LDA $00 ;\ CODE_0DE04A: A6 02 LDX $02 ; | Load settings CODE_0DE04C: A4 06 LDY $06 ;/ CODE_0DE04E: 54 7F 7F MVN $7F,$7F ; And move it CODE_0DE051: AB PLB ; Reload DBR CODE_0DE052: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DE054: C6 59 DEC $59 ;\ CODE_0DE056: F0 05 BEQ Return0DE05D ; | CODE_0DE058: E6 08 INC $08 ; | Check for end of the object CODE_0DE05A: 4C 16 E0 JMP.W CODE_0DE016 ;/ Return0DE05D: 60 RTS ; Return ;Canvass 1 through 4 (i.e. all of them) DATA_0DE05E: .db $5C,$5D,$5E,$60 ; No, I don't know what those 60's are for DATA_0DE062: .db $73,$74,$75 DATA_0DE065: .db $73,$74,$75 DATA_0DE068: .db $73,$74,$75 DATA_0DE06B: .db $73,$74,$75 DATA_0DE06E: .db $76,$76,$76 DATA_0DE071: .db $5C,$5D,$5E,$60 DATA_0DE075: .db $77,$78,$79 DATA_0DE078: .db $7A,$7B,$7C DATA_0DE07B: .db $77,$78,$79 DATA_0DE07E: .db $7A,$7B,$7C DATA_0DE081: .db $76,$76,$76 DATA_0DE084: .db $5C,$5D,$5E,$60 DATA_0DE088: .db $73,$7D,$75 DATA_0DE08B: .db $73,$7E,$75 DATA_0DE08E: .db $73,$74,$75 DATA_0DE091: .db $7F,$74,$75 DATA_0DE094: .db $76,$76,$76 DATA_0DE097: .db $5C,$5D,$5E,$60 DATA_0DE09B: .db $77,$82,$83 DATA_0DE09E: .db $7A,$85,$86 DATA_0DE0A1: .db $81,$78,$79 DATA_0DE0A4: .db $84,$7B,$7C DATA_0DE0A7: .db $76,$76,$76 DATA_0DE0AA: .db $00,$13,$26,$39 ; Offsets in the table (powers of 19) CODE_0DE0AE: A4 57 LDY $57 ; Position CODE_0DE0B0: A5 59 LDA $59 ;\ CODE_0DE0B2: 38 SEC ; | CODE_0DE0B3: E9 71 SBC.B #$71 ; | "Fix" object number CODE_0DE0B5: AA TAX ;/ CODE_0DE0B6: BF AA E0 0D LDA.L DATA_0DE0AA,X ;\ CODE_0DE0BA: AA TAX ;/ Multiply with 19 to get index to table CODE_0DE0BB: 20 B1 A6 JSR.W CODE_0DA6B1 ; Save pointer CODE_0DE0BE: A9 02 LDA.B #$02 ;\ CODE_0DE0C0: 85 01 STA $01 ;/ Why not put this later? Spaghetti code... CODE_0DE0C2: A9 03 LDA.B #$03 ;\ CODE_0DE0C4: 85 02 STA $02 ;/ Width of first row CODE_0DE0C6: 20 08 AA JSR.W Sta1To6ePointer ;\ \ CODE_0DE0C9: BF 5E E0 0D LDA.L DATA_0DE05E,X ; | | Add tile CODE_0DE0CD: 20 5B A9 JSR.W CODE_0DA95B ; |/ CODE_0DE0D0: E8 INX ; | CODE_0DE0D1: C6 02 DEC $02 ; | This code adds the top row of tiles. CODE_0DE0D3: 10 F1 BPL CODE_0DE0C6 ;/ CODE_0DE0D5: 20 BA A6 JSR.W CODE_0DA6BA ;\ CODE_0DE0D8: 20 7D A9 JSR.W CODE_0DA97D ;/ Reload pointer and go to next row CODE_0DE0DB: A9 02 LDA.B #$02 ; Width of other rows CODE_0DE0DD: 85 02 STA $02 CODE_0DE0DF: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ \ CODE_0DE0E2: BF 5E E0 0D LDA.L DATA_0DE05E,X ; | | Add tile CODE_0DE0E6: 20 5B A9 JSR.W CODE_0DA95B ; | / CODE_0DE0E9: E8 INX ; | CODE_0DE0EA: C6 02 DEC $02 ; | This code adds the middle rows. CODE_0DE0EC: 10 F1 BPL CODE_0DE0DF ; | CODE_0DE0EE: 20 BA A6 JSR.W CODE_0DA6BA ; | > Reload pointer CODE_0DE0F1: 20 7D A9 JSR.W CODE_0DA97D ; | CODE_0DE0F4: C6 01 DEC $01 ; | CODE_0DE0F6: 10 E3 BPL CODE_0DE0DB ;/ CODE_0DE0F8: A9 02 LDA.B #$02 ; Width of the second-to-bottom row CODE_0DE0FA: 85 02 STA $02 CODE_0DE0FC: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DE0FF: BF 5E E0 0D LDA.L DATA_0DE05E,X ; | CODE_0DE103: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DE106: E8 INX ; | This code adds the second-to-bottom row. CODE_0DE107: C6 02 DEC $02 ; | CODE_0DE109: 10 F1 BPL CODE_0DE0FC ;/ CODE_0DE10B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DE10E: A9 5F LDA.B #$5F ; | Add that 15F tile CODE_0DE110: 97 6B STA [$6B],Y ;/ CODE_0DE112: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DE115: A9 02 LDA.B #$02 ; Width of the bottom row CODE_0DE117: 85 02 STA $02 CODE_0DE119: 20 7D A9 JSR.W CODE_0DA97D ; Go to next row CODE_0DE11C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DE11F: BF 5E E0 0D LDA.L DATA_0DE05E,X ; | CODE_0DE123: 20 5B A9 JSR.W CODE_0DA95B ; | CODE_0DE126: E8 INX ; | This code adds the bottom row. CODE_0DE127: C6 02 DEC $02 ; | CODE_0DE129: 10 F1 BPL CODE_0DE11C ;/ Return0DE12B: 60 RTS ; Return ;Four-sided edge ground square DATA_0DE12C: .db $45,$50,$4D ; Left tiles DATA_0DE12F: .db $00,$F0,$4E ; Middle tiles DATA_0DE132: .db $48,$51,$4F ; Right tiles CODE_0DE135: A4 57 LDY $57 ; Position CODE_0DE137: A5 59 LDA $59 ;\ CODE_0DE139: 29 0F AND.B #$0F ; | Width CODE_0DE13B: 85 00 STA $00 ;/ CODE_0DE13D: A5 59 LDA $59 ;\ CODE_0DE13F: 4A LSR ; | CODE_0DE140: 4A LSR ; | CODE_0DE141: 4A LSR ; | Height CODE_0DE142: 4A LSR ; | CODE_0DE143: 85 01 STA $01 ;/ CODE_0DE145: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DE148: A2 00 LDX.B #$00 ; Index to table CODE_0DE14A: A5 00 LDA $00 ;\ CODE_0DE14C: 85 02 STA $02 ;/ Reload width CODE_0DE14E: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DE151: BF 2C E1 0D LDA.L DATA_0DE12C,X ; | Add left tile CODE_0DE155: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DE158: 4C 65 E1 JMP.W CODE_0DE165 CODE_0DE15B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DE15E: BF 2F E1 0D LDA.L DATA_0DE12F,X ; | Add middle tile CODE_0DE162: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DE165: C6 02 DEC $02 ;\ CODE_0DE167: D0 F2 BNE CODE_0DE15B ;/ Check if we need more middle tiles CODE_0DE169: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DE16C: BF 32 E1 0D LDA.L DATA_0DE132,X ; | Add right tile CODE_0DE170: 97 6B STA [$6B],Y ;/ CODE_0DE172: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DE175: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DE178: A2 01 LDX.B #$01 CODE_0DE17A: C6 01 DEC $01 ;\ CODE_0DE17C: 30 07 BMI Return0DE185 ;/ Check for end of the object CODE_0DE17E: D0 02 BNE CODE_0DE182 ;\ CODE_0DE180: A2 02 LDX.B #$02 ; | Check for the last line CODE_0DE182: 4C 4A E1 JMP.W CODE_0DE14A ;/ Return0DE185: 60 RTS ; Return Empty0DE186: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE18E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE196: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE19E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1A6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1AE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1B6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1BE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1C6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1CE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1D6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1DE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1E6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1EE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1F6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE1FE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE206: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE20E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE216: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE21E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE226: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE22E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE236: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE23E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE246: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE24E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE256: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE25E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE266: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE26E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE276: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE27E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE286: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE28E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE296: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE29E: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2A6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2AE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2B6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2BE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2C6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2CE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2D6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2DE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2E6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2EE: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2F6: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Empty0DE2FE: .db $FF,$FF DATA_0DE300: .db $82,$1D,$82,$DD,$82,$DD,$83,$1D DATA_0DE308: .db $82,$1D,$86,$1D,$82,$DD,$82,$1D DATA_0DE310: .db $82,$1D,$82,$DD,$89,$1D,$82,$1D DATA_0DE318: .db $8A,$1D,$82,$DD,$82,$DD,$82,$1D DATA_0DE320: .db $7A,$05,$7A,$85,$7A,$45,$7A,$C5 DATA_0DE328: .db $88,$0D,$98,$0D,$89,$0D,$99,$0D DATA_0DE330: .db $98,$0D,$98,$0D,$99,$0D,$99,$0D DATA_0DE338: .db $F8,$1C,$85,$4D,$82,$4D,$84,$4D DATA_0DE340: .db $81,$4D,$83,$4D,$80,$4D,$F8,$1C DATA_0DE348: .db $F8,$1C,$85,$4D,$85,$4D,$84,$4D DATA_0DE350: .db $84,$4D,$83,$4D,$83,$4D,$F8,$1C DATA_0DE358: .db $80,$0D,$F8,$1C,$81,$0D,$83,$0D DATA_0DE360: .db $82,$0D,$84,$0D,$F8,$1C,$85,$0D DATA_0DE368: .db $83,$0D,$F8,$1C,$84,$0D,$83,$0D DATA_0DE370: .db $85,$0D,$84,$0D,$F8,$1C,$85,$0D DATA_0DE378: .db $20,$0D,$20,$8D,$20,$0D,$20,$8D DATA_0DE380: .db $30,$0D,$30,$0D,$30,$4D,$30,$4D DATA_0DE388: .db $F8,$1C,$8D,$4D,$8D,$4D,$8C,$4D DATA_0DE390: .db $8C,$4D,$8B,$4D,$8B,$4D,$F8,$1C DATA_0DE398: .db $8B,$0D,$F8,$1C,$8C,$0D,$8B,$0D DATA_0DE3A0: .db $8D,$0D,$8C,$0D,$F8,$1C,$8D,$0D DATA_0DE3A8: .db $8E,$2D,$8E,$AD,$F8,$3C,$F8,$3C DATA_0DE3B0: .db $F8,$3C,$9A,$2D,$F8,$3C,$9B,$2D DATA_0DE3B8: .db $F8,$3C,$9B,$2D,$F8,$3C,$9B,$2D DATA_0DE3C0: .db $F8,$3C,$9B,$2D,$F8,$3C,$9A,$6D DATA_0DE3C8: .db $F8,$08,$F8,$08,$AB,$0D,$F8,$08 DATA_0DE3D0: .db $AC,$0D,$BC,$0D,$AD,$0D,$BD,$0D DATA_0DE3D8: .db $CC,$0D,$F8,$08,$CD,$0D,$F8,$08 DATA_0DE3E0: .db $CD,$4D,$F8,$08,$CC,$4D,$F8,$08 DATA_0DE3E8: .db $AD,$4D,$BD,$4D,$AC,$4D,$BC,$4D DATA_0DE3F0: .db $AB,$4D,$F8,$08,$F8,$08,$F8,$08 DATA_0DE3F8: .db $31,$0D,$32,$0D,$32,$0D,$31,$0D DATA_0DE400: .db $31,$0D,$F8,$1C,$32,$0D,$31,$0D DATA_0DE408: .db $F8,$1C,$32,$0D,$F8,$1C,$31,$0D DATA_0DE410: .db $31,$0D,$32,$0D,$32,$0D,$F8,$1C DATA_0DE418: .db $F8,$1C,$32,$0D,$F8,$1C,$F8,$1C DATA_0DE420: .db $20,$0D,$20,$8D,$9E,$0D,$AE,$0D DATA_0DE428: .db $9F,$0D,$AF,$0D,$9F,$4D,$AF,$4D DATA_0DE430: .db $9E,$4D,$AE,$4D,$20,$0D,$20,$8D DATA_0DE438: .db $F8,$1C,$F8,$1C,$BE,$0D,$BE,$0D DATA_0DE440: .db $BF,$0D,$CF,$0D,$BF,$4D,$CF,$4D DATA_0DE448: .db $BE,$4D,$BE,$4D,$F8,$1C,$F8,$1C DATA_0DE450: .db $8D,$0D,$8C,$0D,$BE,$0D,$EE,$0D DATA_0DE458: .db $DF,$0D,$EF,$0D,$DF,$4D,$EF,$4D DATA_0DE460: .db $BE,$4D,$EE,$4D,$8D,$4D,$8C,$4D DATA_0DE468: .db $60,$11,$60,$91,$49,$51,$48,$D1 DATA_0DE470: .db $49,$11,$48,$91,$49,$51,$48,$D1 DATA_0DE478: .db $49,$11,$48,$91,$60,$51,$60,$D1 DATA_0DE480: .db $8F,$09,$AA,$09,$AA,$09,$8F,$09 DATA_0DE488: .db $43,$41,$43,$41,$39,$01,$39,$01 DATA_0DE490: .db $26,$01,$27,$81,$26,$01,$27,$81 DATA_0DE498: .db $63,$01,$73,$01,$62,$01,$72,$01 DATA_0DE4A0: .db $4C,$01,$73,$01,$4B,$01,$72,$01 DATA_0DE4A8: .db $4A,$01,$71,$01,$4B,$01,$72,$01 DATA_0DE4B0: .db $61,$01,$71,$01,$62,$01,$72,$01 DATA_0DE4B8: .db $3E,$01,$73,$01,$3F,$01,$72,$01 DATA_0DE4C0: .db $3E,$01,$71,$01,$3F,$01,$72,$01 DATA_0DE4C8: .db $40,$01,$3B,$01,$41,$01,$45,$81 DATA_0DE4D0: .db $42,$01,$45,$81,$40,$41,$3B,$01 DATA_0DE4D8: .db $3C,$41,$3C,$01,$45,$01,$45,$81 DATA_0DE4E0: .db $45,$01,$45,$81,$3C,$01,$3C,$41 DATA_0DE4E8: .db $3D,$01,$40,$01,$45,$01,$41,$01 DATA_0DE4F0: .db $45,$01,$42,$01,$3D,$01,$40,$41 DATA_0DE4F8: .db $41,$01,$45,$01,$41,$01,$45,$01 DATA_0DE500: .db $45,$81,$41,$01,$45,$81,$41,$01 DATA_0DE508: .db $3E,$01,$3F,$01,$3F,$01,$3E,$01 DATA_0DE510: .db $26,$01,$27,$81,$26,$01,$C2,$01 DATA_0DE518: .db $26,$01,$C3,$01,$26,$01,$C4,$01 DATA_0DE520: .db $26,$01,$C5,$01,$26,$01,$C6,$01 DATA_0DE528: .db $26,$01,$C7,$01,$26,$01,$C8,$01 DATA_0DE530: .db $26,$01,$C9,$01,$26,$01,$27,$81 DATA_0DE538: .db $4A,$01,$71,$01,$D2,$01,$E2,$01 DATA_0DE540: .db $D3,$01,$E3,$01,$D4,$01,$E4,$01 DATA_0DE548: .db $D5,$01,$E5,$01,$D6,$01,$E6,$01 DATA_0DE550: .db $D7,$01,$E7,$01,$D8,$01,$E8,$01 DATA_0DE558: .db $D9,$01,$E9,$01,$4A,$01,$72,$01 DATA_0DE560: .db $3E,$01,$73,$01,$3F,$01,$3E,$01 DATA_0DE568: .db $3E,$01,$3F,$01,$3F,$01,$72,$01 DATA_0DE570: .db $3D,$01,$3C,$01,$FA,$1C,$FA,$1C DATA_0DE578: .db $FA,$1C,$FA,$1C,$FA,$1C,$FA,$1C DATA_0DE580: .db $FA,$1C,$FA,$1C,$3D,$21,$3C,$21 DATA_0DE588: .db $26,$21,$27,$A1,$26,$21,$27,$A1 DATA_0DE590: .db $3E,$21,$3F,$21,$3F,$21,$3E,$21 DATA_0DE598: .db $FA,$1C,$FA,$1C,$3D,$01,$3C,$01 DATA_0DE5A0: .db $BB,$09,$F2,$09,$BB,$09,$F2,$09 DATA_0DE5A8: .db $F0,$09,$F0,$09,$F0,$09,$F0,$09 DATA_0DE5B0: .db $F8,$1C,$F8,$1C,$44,$14,$46,$14 DATA_0DE5B8: .db $F8,$1C,$F8,$1C,$45,$14,$47,$14 DATA_0DE5C0: .db $F8,$08,$F8,$08,$95,$19,$95,$19 DATA_0DE5C8: .db $96,$19,$96,$19,$97,$19,$97,$19 DATA_0DE5D0: .db $F8,$08,$8E,$09,$8B,$09,$8F,$09 DATA_0DE5D8: .db $8C,$09,$FF,$08,$8D,$09,$FF,$08 DATA_0DE5E0: .db $A4,$09,$FF,$08,$A4,$09,$FF,$08 DATA_0DE5E8: .db $98,$09,$FF,$08,$99,$09,$FF,$08 DATA_0DE5F0: .db $9A,$09,$9B,$09,$F8,$08,$9C,$09 DATA_0DE5F8: .db $A6,$09,$B6,$09,$FF,$08,$FF,$08 DATA_0DE600: .db $FF,$08,$FF,$08,$FF,$08,$FF,$08 DATA_0DE608: .db $9D,$09,$9F,$09,$9E,$09,$A7,$09 DATA_0DE610: .db $F1,$09,$F1,$09,$FF,$08,$FF,$08 DATA_0DE618: .db $FF,$08,$FF,$08,$A5,$09,$A5,$09 DATA_0DE620: .db $F1,$09,$B2,$09,$A3,$09,$B3,$09 DATA_0DE628: .db $FF,$08,$B2,$09,$A3,$09,$B3,$09 DATA_0DE630: .db $FF,$08,$B4,$09,$A3,$09,$B5,$09 DATA_0DE638: .db $FF,$08,$B2,$09,$A3,$09,$92,$09 DATA_0DE640: .db $FF,$08,$93,$09,$A3,$09,$94,$09 DATA_0DE648: .db $FF,$08,$B2,$09,$A5,$09,$B3,$09 DATA_0DE650: .db $A8,$09,$A8,$09,$A9,$09,$A9,$09 DATA_0DE658: .db $C4,$1D,$D4,$1D,$C5,$1D,$D5,$1D DATA_0DE660: .db $F8,$08,$F8,$08,$E6,$0D,$F6,$0D DATA_0DE668: .db $E7,$0D,$F7,$0D,$E8,$0D,$F8,$0D DATA_0DE670: .db $E9,$09,$F9,$09,$A9,$09,$A9,$09 DATA_0DE678: .db $F8,$08,$C0,$09,$95,$19,$C1,$09 DATA_0DE680: .db $96,$19,$C1,$09,$97,$19,$C3,$09 DATA_0DE688: .db $F8,$08,$C3,$49,$F8,$08,$F8,$08 DATA_0DE690: .db $F8,$08,$AA,$09,$F8,$08,$AB,$09 DATA_0DE698: .db $E4,$1D,$F4,$09,$E5,$1D,$F5,$09 DATA_0DE6A0: .db $D0,$09,$D0,$09,$D1,$09,$E1,$09 DATA_0DE6A8: .db $D2,$09,$D2,$09,$D3,$09,$E3,$09 DATA_0DE6B0: .db $D3,$49,$E3,$49,$F8,$08,$AA,$09 DATA_0DE6B8: .db $B1,$89,$B0,$09,$B0,$89,$B1,$09 DATA_0DE6C0: .db $80,$14,$90,$14,$81,$14,$91,$14 DATA_0DE6C8: .db $AC,$15,$BC,$15,$AD,$15,$BD,$15 DATA_0DE6D0: .db $AD,$55,$BD,$55,$AC,$55,$BC,$55 DATA_0DE6D8: .db $CC,$15,$DC,$19,$CD,$15,$DD,$19 DATA_0DE6E0: .db $CD,$55,$DE,$19,$CC,$55,$DF,$19 DATA_0DE6E8: .db $AC,$19,$BC,$19,$AD,$19,$BD,$19 DATA_0DE6F0: .db $AD,$59,$BD,$59,$AC,$59,$BC,$59 DATA_0DE6F8: .db $CC,$19,$DC,$19,$CD,$19,$DD,$19 DATA_0DE700: .db $CD,$59,$DE,$19,$CC,$59,$DF,$19 DATA_0DE708: .db $AC,$1D,$BC,$1D,$AD,$1D,$BD,$1D DATA_0DE710: .db $AD,$5D,$BD,$5D,$AC,$5D,$BC,$5D DATA_0DE718: .db $CC,$1D,$DC,$19,$CD,$1D,$DD,$19 DATA_0DE720: .db $CD,$5D,$DE,$19,$CC,$5D,$DF,$19 DATA_0DE728: .db $AE,$1D,$BE,$1D,$AF,$1D,$BF,$1D DATA_0DE730: .db $AF,$5D,$BF,$5D,$AE,$5D,$BE,$5D DATA_0DE738: .db $CE,$1D,$DC,$19,$CF,$1D,$DD,$19 DATA_0DE740: .db $CF,$5D,$DE,$19,$CE,$5D,$DF,$19 DATA_0DE748: .db $A6,$01,$B6,$01,$A7,$01,$B7,$01 DATA_0DE750: .db $A6,$41,$B6,$41,$20,$0D,$20,$8D DATA_0DE758: .db $B6,$01,$DC,$01,$B7,$01,$DD,$01 DATA_0DE760: .db $B6,$41,$DC,$41,$20,$0D,$20,$8D DATA_0DE768: .db $80,$09,$EA,$09,$81,$09,$EB,$09 DATA_0DE770: .db $81,$49,$EB,$49,$81,$09,$EB,$09 DATA_0DE778: .db $81,$49,$EB,$49,$80,$49,$EA,$49 DATA_0DE780: .db $A2,$09,$9D,$4D,$A3,$09,$9C,$0D DATA_0DE788: .db $A2,$09,$9C,$0D,$A3,$09,$9C,$0D DATA_0DE790: .db $A2,$09,$9C,$0D,$A3,$09,$9D,$0D DATA_0DE798: .db $D1,$09,$F1,$89,$D1,$09,$F1,$89 DATA_0DE7A0: .db $A8,$15,$B8,$09,$A9,$15,$B9,$09 DATA_0DE7A8: .db $EC,$09,$B0,$09,$ED,$09,$B1,$09 DATA_0DE7B0: .db $82,$1D,$84,$1D,$87,$1D,$FD,$1D DATA_0DE7B8: .db $82,$1D,$82,$DD,$82,$DD,$82,$1D DATA_0DE7C0: .db $82,$1D,$84,$1D,$82,$DD,$85,$1D DATA_0DE7C8: .db $82,$1D,$82,$DD,$87,$1D,$88,$1D DATA_0DE7D0: .db $FA,$19,$FD,$19,$FB,$19,$FE,$19 DATA_0DE7D8: .db $FC,$19,$FF,$19,$FC,$19,$FF,$19 DATA_0DE7E0: .db $FB,$59,$FE,$59,$FA,$59,$FD,$59 DATA_0DE7E8: .db $CE,$01,$DE,$01,$CE,$01,$DE,$01 DATA_0DE7F0: .db $EC,$01,$EC,$01,$ED,$01,$ED,$01 DATA_0DE7F8: .db $ED,$41,$ED,$41,$EC,$41,$EC,$41 DATA_0DE800: .db $87,$DD,$88,$DD,$82,$DD,$82,$1D DATA_0DE808: .db $84,$DD,$82,$DD,$85,$DD,$82,$1D DATA_0DE810: .db $90,$09,$A0,$09,$91,$09,$A1,$09 DATA_0DE818: .db $B0,$09,$C0,$09,$B1,$09,$C1,$09 DATA_0DE820: .db $B1,$49,$C1,$49,$B0,$49,$C0,$49 DATA_0DE828: .db $B2,$09,$BA,$09,$D1,$09,$F1,$89 DATA_0DE830: .db $D1,$09,$F1,$89,$B3,$09,$BA,$09 DATA_0DE838: .db $BA,$09,$BA,$09,$BB,$09,$F2,$09 DATA_0DE840: .db $BB,$09,$F2,$09,$BA,$09,$BA,$09 DATA_0DE848: .db $BA,$09,$BA,$09,$F0,$09,$F0,$09 DATA_0DE850: .db $E0,$11,$EB,$11,$E1,$11,$CA,$11 DATA_0DE858: .db $FA,$1C,$CB,$11,$EA,$11,$FA,$1C DATA_0DE860: .db $FA,$1C,$EA,$D1,$DA,$11,$FA,$1C DATA_0DE868: .db $DB,$11,$FA,$1C,$FA,$1C,$EA,$91 DATA_0DE870: .db $F0,$09,$F0,$09,$BA,$09,$BA,$09 DATA_0DE878: .db $BA,$09,$B4,$09,$F0,$09,$D1,$09 DATA_0DE880: .db $F0,$09,$D1,$09,$F0,$09,$D1,$09 DATA_0DE888: .db $F0,$09,$D1,$09,$BA,$09,$B5,$09 ; This calls the correct code for the object if the tileset is T:4 in LM (ghost house or switch palace) CODE_0DE890: E2 30 SEP #$30 ; Index (8 bit) Accum (8 bit) CODE_0DE892: A6 5A LDX $5A ; Load object number CODE_0DE894: CA DEX ; We'll never see object number 0, so change the index to it won't clutter the table CODE_0DE895: 8A TXA ;\ CODE_0DE896: 22 FA 86 00 JSL.L ExecutePtrLong ;/ and call the correct subroutine PtrsLong0DE89A: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Blue) PtrsLong0DE89D: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible coin blocks PtrsLong0DE8A0: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible note blocks PtrsLong0DE8A3: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Invisible POW coins PtrsLong0DE8A6: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coins PtrsLong0DE8A9: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Walk-through dirt PtrsLong0DE8AC: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Water (Other color) PtrsLong0DE8AF: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Note blocks PtrsLong0DE8B2: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Turn blocks PtrsLong0DE8B5: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Coin ? blocks PtrsLong0DE8B8: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Throw blocks PtrsLong0DE8BB: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Black piranha plants PtrsLong0DE8BE: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Cement blocks PtrsLong0DE8C1: C3 A8 0D .dw CODE_0DA8C3 .db :$CODE_0DA8C3 ; Brown blocks PtrsLong0DE8C4: 26 AA 0D .dw CODE_0DAA26 .db :$CODE_0DAA26 ; Vertical pipes PtrsLong0DE8C7: B4 AA 0D .dw CODE_0DAAB4 .db :$CODE_0DAAB4 ; Horizontal pipes PtrsLong0DE8CA: 0D AB 0D .dw CODE_0DAB0D .db :$CODE_0DAB0D ; Bullet shooter PtrsLong0DE8CD: 3E AB 0D .dw CODE_0DAB3E .db :$CODE_0DAB3E ; Slopes PtrsLong0DE8D0: 75 B0 0D .dw CODE_0DB075 .db :$CODE_0DB075 ; Ledge edges PtrsLong0DE8D3: D4 B1 0D .dw CODE_0DB1D4 .db :$CODE_0DB1D4 ; Ground ledge PtrsLong0DE8D6: 24 B2 0D .dw CODE_0DB224 .db :$CODE_0DB224 ; Midway/Goal point PtrsLong0DE8D9: 36 B3 0D .dw ADDR_0DB336 .db :$ADDR_0DB336 ; Blue coins PtrsLong0DE8DC: BD B3 0D .dw CODE_0DB3BD .db :$CODE_0DB3BD ; Rope/Clouds PtrsLong0DE8DF: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (ani) PtrsLong0DE8E2: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Water surface (not ani) PtrsLong0DE8E5: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Lava surface (ani) PtrsLong0DE8E8: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; Net top edge PtrsLong0DE8EB: 2D B4 0D .dw CODE_0DB42D .db :$CODE_0DB42D ; Donut bridge PtrsLong0DE8EE: 61 B4 0D .dw CODE_0DB461 .db :$CODE_0DB461 ; Net bottom edge PtrsLong0DE8F1: 9E B4 0D .dw CODE_0DB49E .db :$CODE_0DB49E ; Net vertical edge PtrsLong0DE8F4: 1F B5 0D .dw CODE_0DB51F .db :$CODE_0DB51F ; Vert. Pipe/Bone/Log PtrsLong0DE8F7: 47 B5 0D .dw CODE_0DB547 .db :$CODE_0DB547 ; Horiz. Pipe/Bone/Log PtrsLong0DE8FA: C8 B1 0D .dw CODE_0DB1C8 .db :$CODE_0DB1C8 ; Long ground ledge PtrsLong0DE8FD: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;\ PtrsLong0DE900: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE903: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE906: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE909: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE90C: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE90F: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE912: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | Unused (LM will declare these to be "reserved" and won't let you use them) PtrsLong0DE915: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE918: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE91B: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ; | PtrsLong0DE91E: E3 B3 0D .dw CODE_0DB3E3 .db :$CODE_0DB3E3 ;/ PtrsLong0DE921: 6C F0 0D .dw CODE_0DF06C .db :$CODE_0DF06C ; Thin horizontal upward spikes PtrsLong0DE924: 66 F0 0D .dw ADDR_0DF066 .db :$ADDR_0DF066 ; Log background PtrsLong0DE927: 2B F0 0D .dw CODE_0DF02B .db :$CODE_0DF02B ; Grass ledge 1 PtrsLong0DE92A: A8 EF 0D .dw CODE_0DEFA8 .db :$CODE_0DEFA8 ; Wooden crate PtrsLong0DE92D: 67 EF 0D .dw CODE_0DEF67 .db :$CODE_0DEF67 ; Grass ledge 2 PtrsLong0DE930: 45 EF 0D .dw CODE_0DEF45 .db :$CODE_0DEF45 ; Cloud ledge (I wonder why it's called "ledge" when you can't stand on it) PtrsLong0DE933: C0 EE 0D .dw CODE_0DEEC0 .db :$CODE_0DEEC0 ; Wood ledge on column PtrsLong0DE936: C9 EC 0D .dw CODE_0DECC9 .db :$CODE_0DECC9 ; Grey bricks background PtrsLong0DE939: C9 EC 0D .dw CODE_0DECC9 .db :$CODE_0DECC9 ; Wooden blocks PtrsLong0DE93C: 12 ED 0D .dw CODE_0DED12 .db :$CODE_0DED12 ; Horizontal log background and hand rails PtrsLong0DE93F: 43 ED 0D .dw CODE_0DED43 .db :$CODE_0DED43 ; Wood ledge without column PtrsLong0DE942: 6B ED 0D .dw CODE_0DED6B .db :$CODE_0DED6B ; Some vertical log backgrounds PtrsLong0DE945: 99 ED 0D .dw CODE_0DED99 .db :$CODE_0DED99 ; Solid vertical brick edges, vertical rows of spikes, and some likely unused things PtrsLong0DE948: B9 ED 0D .dw CODE_0DEDB9 .db :$CODE_0DEDB9 ; Another ledge (the wood thingies seen in the bonus rooms, like level FD) PtrsLong0DE94B: DB ED 0D .dw CODE_0DEDDB .db :$CODE_0DEDDB ; Upside down ledge (switch palace) PtrsLong0DE94E: 17 EE 0D .dw CODE_0DEE17 .db :$CODE_0DEE17 ; Ledge (switch palace) PtrsLong0DE951: 52 EE 0D .dw CODE_0DEE52 .db :$CODE_0DEE52 ; Right facing edge (switch palace) PtrsLong0DE954: 89 EE 0D .dw CODE_0DEE89 .db :$CODE_0DEE89 ; Left facing edge (switch palace) ;Switch palace corner tiles and Bit of brick background tiles 1-4 DATA_0DE957: .db $73,$74,$75,$76,$93,$94,$95,$96 CODE_0DE95F: A4 57 LDY $57 ; Position CODE_0DE961: A5 59 LDA $59 ;\ CODE_0DE963: 38 SEC ; | CODE_0DE964: E9 57 SBC.B #$57 ; | "Fix" object number CODE_0DE966: AA TAX ;/ CODE_0DE967: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DE96A: BF 57 E9 0D LDA.L DATA_0DE957,X ; | Add tile CODE_0DE96E: 97 6B STA [$6B],Y ;/ Return0DE970: 60 RTS ; Return ;Large background area ADDR_0DE971: A9 03 LDA.B #$03 ; Size of this object ADDR_0DE973: 85 00 STA $00 ADDR_0DE975: A0 00 LDY.B #$00 ;\ ADDR_0DE977: 20 0D AA JSR.W StzTo6ePointer0080E7 ; | ADDR_0DE97A: A9 77 LDA.B #$77 ; | Add tile ADDR_0DE97C: 97 6B STA [$6B],Y ;/ ADDR_0DE97E: C8 INY ;\ ADDR_0DE97F: D0 F6 BNE ADDR_0DE977 ;/ Check how many tiles have been added ADDR_0DE981: A5 6C LDA $6C ;\ ADDR_0DE983: 18 CLC ; | ADDR_0DE984: 69 01 ADC.B #$01 ; | Increase pointers (it's called INC $6C INC $6F, morons) ADDR_0DE986: 85 6C STA $6C ; | ADDR_0DE988: 85 6F STA $6F ;/ ADDR_0DE98A: C6 00 DEC $00 ;\ ADDR_0DE98C: 10 E9 BPL ADDR_0DE977 ;/ Check for end of object Return0DE98E: 60 RTS ; Return ;Ghost house clock and ghost house beam 1 (both directions) DATA_0DE98F: .db $97,$98,$99 DATA_0DE992: .db $9A,$9B,$9C ; Ghost house clock DATA_0DE995: .db $9D,$9E,$9F DATA_0DE998: .db $86,$87,$25 DATA_0DE99B: .db $25,$86,$87 ; Ghost house top left to bottom right beam 1 DATA_0DE99E: .db $25,$25,$86 DATA_0DE9A1: .db $25,$84,$85 DATA_0DE9A4: .db $84,$85,$25 ; Ghost house top right to bottom left beam 1 DATA_0DE9A7: .db $85,$25,$25 CODE_0DE9AA: A4 57 LDY $57 ; Position CODE_0DE9AC: A5 59 LDA $59 ;\ CODE_0DE9AE: 38 SEC ; | CODE_0DE9AF: E9 61 SBC.B #$61 ; | CODE_0DE9B1: 85 00 STA $00 ; | CODE_0DE9B3: 0A ASL ; | CODE_0DE9B4: 0A ASL ; | "Fix" type and multiply with 9 CODE_0DE9B5: 0A ASL ; | CODE_0DE9B6: 18 CLC ; | CODE_0DE9B7: 65 00 ADC $00 ; | CODE_0DE9B9: AA TAX ;/ CODE_0DE9BA: A9 02 LDA.B #$02 ; Size of first row, also height CODE_0DE9BC: 85 00 STA $00 CODE_0DE9BE: 85 01 STA $01 CODE_0DE9C0: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DE9C3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DE9C6: BF 8F E9 0D LDA.L DATA_0DE98F,X ; | Add block CODE_0DE9CA: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DE9CD: E8 INX ;\ CODE_0DE9CE: C6 00 DEC $00 ; | Go to next block CODE_0DE9D0: 10 F1 BPL CODE_0DE9C3 ;/ CODE_0DE9D2: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DE9D5: 20 7D A9 JSR.W CODE_0DA97D ; Go to next row CODE_0DE9D8: A9 02 LDA.B #$02 ; Size of the other rows CODE_0DE9DA: 85 00 STA $00 CODE_0DE9DC: C6 01 DEC $01 ;\ CODE_0DE9DE: 10 E3 BPL CODE_0DE9C3 ;/ Check for end of object Return0DE9E0: 60 RTS ; Return ;Ghost house cobwebs (parts of the routine is also used by the ghost house window) DATA_0DE9E1: .db $8C,$8D DATA_0DE9E3: .db $25,$8E ; Ghost house cobweb, top right corner DATA_0DE9E5: .db $90,$91 DATA_0DE9E7: .db $8F,$25 ; Ghost house cobweb, top left corner DATA_0DE9E9: .db $FC,$FD DATA_0DE9EB: .db $FE,$FF ; Ghost house window CODE_0DE9ED: A5 59 LDA $59 ;\ CODE_0DE9EF: 38 SEC ; | CODE_0DE9F0: E9 64 SBC.B #$64 ; | CODE_0DE9F2: 0A ASL ; | "Fix" type and multiply with 4 CODE_0DE9F3: 0A ASL ; | CODE_0DE9F4: AA TAX ;/ CODE_0DE9F5: A4 57 LDY $57 ; Position (it's usually loaded before the type is fixed, but whatever) CODE_0DE9F7: A9 01 LDA.B #$01 ; Size of the first row, also height CODE_0DE9F9: 85 00 STA $00 CODE_0DE9FB: 85 01 STA $01 CODE_0DE9FD: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEA00: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEA03: BF E1 E9 0D LDA.L DATA_0DE9E1,X ; | Add block CODE_0DEA07: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEA0A: E8 INX ;\ CODE_0DEA0B: C6 00 DEC $00 ; | Go to the next block CODE_0DEA0D: 10 F1 BPL CODE_0DEA00 ;/ CODE_0DEA0F: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEA12: 20 7D A9 JSR.W CODE_0DA97D ; Go to the next row CODE_0DEA15: A9 01 LDA.B #$01 ; Size of the other row CODE_0DEA17: 85 00 STA $00 CODE_0DEA19: C6 01 DEC $01 ;\ CODE_0DEA1B: 10 E3 BPL CODE_0DEA00 ;/ Check for the end of the object Return0DEA1D: 60 RTS ; Return ;Ghost house top right to bottom left beam 2 (both directions) DATA_0DEA1E: .db $25,$25,$7A,$7B DATA_0DEA22: .db $25,$7C,$7D,$25 DATA_0DEA26: .db $7C,$7D,$25,$25 ; Ghost house top right to bottom left beam 2 DATA_0DEA2A: .db $7D,$25,$25,$25 DATA_0DEA2E: .db $7E,$7F,$25,$25 DATA_0DEA32: .db $25,$80,$81,$25 DATA_0DEA36: .db $25,$25,$80,$81 ; Ghost house top left to bottom right beam 2 DATA_0DEA3A: .db $25,$25,$25,$80 ADDR_0DEA3E: A4 57 LDY $57 ; Position ADDR_0DEA40: A5 59 LDA $59 ;\ ADDR_0DEA42: 38 SEC ; | ADDR_0DEA43: E9 66 SBC.B #$66 ; | ADDR_0DEA45: 0A ASL ; | ADDR_0DEA46: 0A ASL ; | "Fix" type and multiply with 16 ADDR_0DEA47: 0A ASL ; | ADDR_0DEA48: 0A ASL ; | ADDR_0DEA49: AA TAX ;/ ADDR_0DEA4A: A9 03 LDA.B #$03 ; Size of the first row, also height ADDR_0DEA4C: 85 00 STA $00 ADDR_0DEA4E: 85 01 STA $01 ADDR_0DEA50: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer ADDR_0DEA53: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DEA56: BF 1E EA 0D LDA.L DATA_0DEA1E,X ; | Add block ADDR_0DEA5A: 20 5B A9 JSR.W CODE_0DA95B ;/ ADDR_0DEA5D: E8 INX ;\ ADDR_0DEA5E: C6 00 DEC $00 ; | Go to the next block ADDR_0DEA60: 10 F1 BPL ADDR_0DEA53 ;/ ADDR_0DEA62: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer ADDR_0DEA65: 20 7D A9 JSR.W CODE_0DA97D ; Go to the next row ADDR_0DEA68: A9 03 LDA.B #$03 ; Size of the other row ADDR_0DEA6A: 85 00 STA $00 ADDR_0DEA6C: C6 01 DEC $01 ;\ ADDR_0DEA6E: 10 E3 BPL ADDR_0DEA53 ;/ Check for the end of the object Return0DEA70: 60 RTS ; Return ;Ghost house exit DATA_0DEA71: .db $A5,$A5,$A4,$A5,$A5,$A4 DATA_0DEA77: .db $A7,$A8,$A4,$A7,$A8,$A4 DATA_0DEA7D: .db $AC,$AD,$A4,$AC,$AD,$A4 DATA_0DEA83: .db $AE,$AF,$A4,$AE,$AF,$A4 DATA_0DEA89: .db $B0,$B1,$A4,$B0,$B1,$A4 DATA_0DEA8F: .db $A7,$A8,$A4,$A7,$A8,$A4 DATA_0DEA95: .db $A5,$A5,$A5,$A5,$A5,$A4 DATA_0DEA9B: .db $B4,$B4,$B4,$B4,$B4,$A4 DATA_0DEAA1: .db $AC,$B2,$AD,$B4,$B4,$A4 DATA_0DEAA7: .db $B0,$B3,$B1,$B4,$B4,$A4 DATA_0DEAAD: .db $C1,$C2,$C6,$B4,$B4,$A4 DATA_0DEAB3: .db $C1,$C2,$C6,$A5,$A5,$A4 DATA_0DEAB9: .db $C1,$C2,$C6,$A7,$A8,$A4 CODE_0DEABF: A4 57 LDY $57 ; Position CODE_0DEAC1: A2 00 LDX.B #$00 CODE_0DEAC3: A9 05 LDA.B #$05 ; Width CODE_0DEAC5: 85 00 STA $00 CODE_0DEAC7: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEACA: BF 71 EA 0D LDA.L DATA_0DEA71,X ; | Add block CODE_0DEACE: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEAD1: E8 INX ;\ CODE_0DEAD2: C6 00 DEC $00 ; | Go to next one and check for end of line CODE_0DEAD4: 10 F1 BPL CODE_0DEAC7 ;/ CODE_0DEAD6: 20 7D A9 JSR.W CODE_0DA97D ; Go to next row (I've got reasons to belive that LM renders this one incorrectly!) CODE_0DEAD9: E0 4E CPX.B #$4E ; Total size CODE_0DEADB: D0 E6 BNE CODE_0DEAC3 Return0DEADD: 60 RTS ; Return ;Ghost house entrance DATA_0DEADE: .db $A4,$A6,$A9,$A9,$A9,$A9,$A9,$A9,$A9,$A9 DATA_0DEAE8: .db $A4,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5,$A5 DATA_0DEAF2: .db $A4,$C0,$A8,$A8,$A8,$A8,$AB,$AB,$A8,$A8 DATA_0DEAFC: .db $A4,$A6,$AC,$AD,$C0,$AC,$AD,$A6,$AC,$AD DATA_0DEB06: .db $A4,$A6,$AE,$AF,$A6,$AE,$AF,$BF,$AE,$AF DATA_0DEB10: .db $A4,$BF,$B0,$B1,$AB,$B0,$B1,$A6,$B0,$B1 DATA_0DEB1A: .db $A4,$A6,$AB,$A8,$A9,$A8,$AB,$A9,$A8,$A8 DATA_0DEB24: .db $A4,$A5,$A5,$A5,$B5,$B6,$B7,$B8,$B9,$A5 DATA_0DEB2E: .db $A4,$A7,$A8,$AB,$BA,$BB,$BC,$BD,$BE,$A8 DATA_0DEB38: .db $A4,$C0,$AC,$AD,$A6,$AC,$B2,$AD,$BF,$AC DATA_0DEB42: .db $A4,$A7,$AE,$AF,$C0,$AE,$B3,$AF,$AB,$AE DATA_0DEB4C: .db $A4,$BF,$B0,$B1,$A6,$C1,$C2,$C3,$A6,$B0 DATA_0DEB56: .db $A4,$A5,$A5,$A5,$A5,$C1,$C2,$C3,$C4,$C4 DATA_0DEB60: .db $A4,$B4,$B4,$B4,$B4,$C1,$C2,$C3,$C5,$C5 CODE_0DEB6A: A4 57 LDY $57 ; Position CODE_0DEB6C: A2 00 LDX.B #$00 CODE_0DEB6E: A9 09 LDA.B #$09 ; Width CODE_0DEB70: 85 00 STA $00 CODE_0DEB72: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEB75: BF DE EA 0D LDA.L DATA_0DEADE,X ; | Add tile CODE_0DEB79: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEB7C: E8 INX ;\ CODE_0DEB7D: C6 00 DEC $00 ; | Go to next tile CODE_0DEB7F: D0 F1 BNE CODE_0DEB72 ;/ CODE_0DEB81: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEB84: BF DE EA 0D LDA.L DATA_0DEADE,X ; | Add the last tile on the row CODE_0DEB88: 97 6B STA [$6B],Y ;/ CODE_0DEB8A: E8 INX ;\ CODE_0DEB8B: 20 7D A9 JSR.W CODE_0DA97D ;/ Go to next line CODE_0DEB8E: E0 8C CPX.B #$8C ; Total size CODE_0DEB90: D0 DC BNE CODE_0DEB6E Return0DEB92: 60 RTS ; Return ;Yoshi's house DATA_0DEB93: .db $25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$CB,$CC,$25,$25,$25 DATA_0DEBA3: .db $25,$CD,$CE,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$D0,$D1,$25 DATA_0DEBB3: .db $25,$D2,$EB,$D3,$D3,$D3,$EB,$D3,$D3,$D3,$D3,$EB,$D3,$D3,$D4,$25 DATA_0DEBC3: .db $25,$D5,$D3,$EB,$D3,$D3,$D3,$D3,$D3,$EB,$D3,$D3,$D3,$EB,$D6,$25 DATA_0DEBD3: .db $25,$D5,$D3,$D3,$D3,$D3,$D3,$EB,$D3,$D3,$D3,$D3,$D3,$D3,$D6,$25 DATA_0DEBE3: .db $25,$D7,$D8,$D9,$D8,$D8,$D9,$D8,$D8,$D9,$D8,$DA,$DB,$D8,$DC,$25 DATA_0DEBF3: .db $25,$25,$25,$DD,$25,$25,$DD,$25,$25,$DD,$25,$CB,$CC,$25,$25,$25 DATA_0DEC03: .db $25,$25,$DE,$DD,$25,$25,$DD,$25,$25,$DD,$25,$CB,$CC,$25,$25,$25 DATA_0DEC13: .db $25,$DF,$E0,$E1,$25,$25,$DD,$25,$25,$DD,$25,$E2,$E3,$E4,$25,$25 DATA_0DEC23: .db $E5,$E5,$E6,$DD,$E5,$E5,$DD,$E5,$E5,$DD,$E5,$E7,$E8,$E9,$E5,$E5 CODE_0DEC33: A4 57 LDY $57 CODE_0DEC35: A2 00 LDX.B #$00 CODE_0DEC37: A9 0F LDA.B #$0F ; Width CODE_0DEC39: 85 00 STA $00 CODE_0DEC3B: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEC3E: BF 93 EB 0D LDA.L DATA_0DEB93,X ; | Add tile CODE_0DEC42: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEC45: E8 INX ;\ CODE_0DEC46: C6 00 DEC $00 ; | Go to next tile CODE_0DEC48: D0 F1 BNE CODE_0DEC3B ;/ CODE_0DEC4A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEC4D: BF 93 EB 0D LDA.L DATA_0DEB93,X ; | Add the last tile on the row CODE_0DEC51: 97 6B STA [$6B],Y ;/ CODE_0DEC53: E8 INX ;\ CODE_0DEC54: 20 7D A9 JSR.W CODE_0DA97D ;/ Go to next line CODE_0DEC57: E0 A0 CPX.B #$A0 ; Total size CODE_0DEC59: D0 DC BNE CODE_0DEC37 Return0DEC5B: 60 RTS ; Return ;Switch palace right and bottom edge tile CODE_0DEC5C: A4 57 LDY $57 ; Position CODE_0DEC5E: 20 08 AA JSR.W Sta1To6ePointer ; Page 1 CODE_0DEC61: A9 10 LDA.B #$10 ;\ CODE_0DEC63: 97 6B STA [$6B],Y ;/ Tile 0x?10 (in this case, it's 0x110) Return0DEC65: 60 RTS ; Return ;Water weed DATA_0DEC66: .db $C9 DATA_0DEC67: .db $CA ; This was CMP.B #$CA in all.log. *Insert epic facepalm* ADDR_0DEC68: A4 57 LDY $57 ; Position ADDR_0DEC6A: A2 00 LDX.B #$00 ADDR_0DEC6C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ ADDR_0DEC6F: BF 66 EC 0D LDA.L ADDR_0DEC66,X ; | Add tile (why not unroll this loop?) ADDR_0DEC73: 97 6B STA [$6B],Y ;/ ADDR_0DEC75: 20 7D A9 JSR.W CODE_0DA97D ;\ ADDR_0DEC78: E8 INX ;/ Go to next tile ADDR_0DEC79: E0 02 CPX.B #$02 ; Height ADDR_0DEC7B: D0 EF BNE ADDR_0DEC6C Return0DEC7D: 60 RTS ; Return ;The four switches in the switch palaces DATA_0DEC7E: .db $EC,$ED DATA_0DEC80: .db $EE,$EF ; Green switch DATA_0DEC82: .db $F0,$F1 DATA_0DEC84: .db $F2,$F3 ; Yellow switch DATA_0DEC86: .db $F4,$F5 DATA_0DEC88: .db $F6,$F7 ; Blue switch DATA_0DEC8A: .db $F8,$F9 DATA_0DEC8C: .db $FA,$FB ; Red switch CODE_0DEC8E: A4 57 LDY $57 ; Position CODE_0DEC90: A5 59 LDA $59 ;\ CODE_0DEC92: 38 SEC ; | CODE_0DEC93: E9 8A SBC.B #$8A ; | "Fix" object number CODE_0DEC95: AA TAX ;/ CODE_0DEC96: BF 27 1F 00 LDA.L $001F27,X ;\ CODE_0DEC9A: D0 24 BNE Return0DECC0 ;/ Don't add anything if this switch palace has already been hit CODE_0DEC9C: 8A TXA ;\ CODE_0DEC9D: 0A ASL ; | CODE_0DEC9E: 0A ASL ; | Multiply object number with 4 CODE_0DEC9F: AA TAX ;/ CODE_0DECA0: A9 01 LDA.B #$01 ; Size (both width and height) CODE_0DECA2: 85 00 STA $00 ;\ CODE_0DECA4: 85 01 STA $01 ;/ Preserve sizes CODE_0DECA6: A5 00 LDA $00 ;\ CODE_0DECA8: 85 02 STA $02 ;/ Reload width CODE_0DECAA: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DECAD: BF 7E EC 0D LDA.L DATA_0DEC7E,X ; | Add tile CODE_0DECB1: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DECB4: E8 INX ;\ CODE_0DECB5: C6 02 DEC $02 ; | Go to next one and check for end of the line CODE_0DECB7: 10 F1 BPL CODE_0DECAA ;/ CODE_0DECB9: 20 7D A9 JSR.W CODE_0DA97D ;\ CODE_0DECBC: C6 01 DEC $01 ; | Go to next row and check for end of the object CODE_0DECBE: 10 E6 BPL CODE_0DECA6 ;/ Return0DECC0: 60 RTS ; Return ;Ghost house window CODE_0DECC1: A2 08 LDX.B #$08 ; Set offset to 8 CODE_0DECC3: 4C F5 E9 JMP.W CODE_0DE9F5 ; and "steal" the ghost house cobwebs code ;Grey bricks background and wooden blocks DATA_0DECC6: .db $92,$5E,$82 CODE_0DECC9: 8A TXA ;\ CODE_0DECCA: 38 SEC ; | CODE_0DECCB: E9 34 SBC.B #$34 ; | Check which type of object it is CODE_0DECCD: AA TAX ;/ CODE_0DECCE: A4 57 LDY $57 ; Position CODE_0DECD0: A5 59 LDA $59 ;\ CODE_0DECD2: 29 0F AND.B #$0F ; | CODE_0DECD4: 85 00 STA $00 ; | Width CODE_0DECD6: 85 02 STA $02 ;/ CODE_0DECD8: A5 59 LDA $59 ;\ CODE_0DECDA: 4A LSR ; | CODE_0DECDB: 4A LSR ; | CODE_0DECDC: 4A LSR ; | Height CODE_0DECDD: 4A LSR ; | CODE_0DECDE: 85 01 STA $01 ;/ CODE_0DECE0: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DECE3: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DECE6: E0 01 CPX.B #$01 ; | CODE_0DECE8: D0 03 BNE CODE_0DECED ; | Set map16 page CODE_0DECEA: 20 08 AA JSR.W Sta1To6ePointer ;/ CODE_0DECED: BF C6 EC 0D LDA.L DATA_0DECC6,X ;\ CODE_0DECF1: 20 5B A9 JSR.W CODE_0DA95B ;/ Add tile CODE_0DECF4: C6 02 DEC $02 ;\ CODE_0DECF6: A5 02 LDA $02 ; | Check for end of the line CODE_0DECF8: 10 E9 BPL CODE_0DECE3 ;/ CODE_0DECFA: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DECFD: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DED00: A5 00 LDA $00 ;\ CODE_0DED02: 85 02 STA $02 ;/ Reload width CODE_0DED04: C6 01 DEC $01 ;\ CODE_0DED06: 10 DB BPL CODE_0DECE3 ;/ Check for end of the object Return0DED08: 60 RTS ; Return ;Horizontal log background and hand rails DATA_0DED09: .db $82,$89,$88 ; Left tiles DATA_0DED0C: .db $82,$8A,$88 ; Middle tiles DATA_0DED0F: .db $82,$8B,$88 ; Right tiles CODE_0DED12: A4 57 LDY $57 ; Position CODE_0DED14: A5 59 LDA $59 ;\ CODE_0DED16: 29 0F AND.B #$0F ; | Width CODE_0DED18: 85 00 STA $00 ;/ CODE_0DED1A: A5 59 LDA $59 ;\ CODE_0DED1C: 4A LSR ; | CODE_0DED1D: 4A LSR ; | CODE_0DED1E: 4A LSR ; | Type CODE_0DED1F: 4A LSR ; | CODE_0DED20: AA TAX ;/ CODE_0DED21: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DED24: BF 09 ED 0D LDA.L DATA_0DED09,X ; | Add left tile CODE_0DED28: 4C 32 ED JMP.W CODE_0DED32 ;/ CODE_0DED2B: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DED2E: BF 0C ED 0D LDA.L DATA_0DED0C,X ; | Add middle tile CODE_0DED32: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DED35: C6 00 DEC $00 ;\ CODE_0DED37: D0 F2 BNE CODE_0DED2B ;/ CODE_0DED39: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DED3C: BF 0F ED 0D LDA.L DATA_0DED0F,X ; | Add right tile CODE_0DED40: 97 6B STA [$6B],Y ;/ Return0DED42: 60 RTS ; Return ;Wood ledge without column CODE_0DED43: A4 57 LDY $57 ; Position CODE_0DED45: A5 59 LDA $59 ;\ CODE_0DED47: 29 0F AND.B #$0F ; | Height CODE_0DED49: AA TAX ;/ CODE_0DED4A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DED4D: A9 0A LDA.B #$0A ; | Add left tile CODE_0DED4F: 4C 57 ED JMP.W CODE_0DED57 ;/ CODE_0DED52: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DED55: A9 0B LDA.B #$0B ; | Add middle tile CODE_0DED57: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DED5A: CA DEX ;\ CODE_0DED5B: D0 F5 BNE CODE_0DED52 ;/ Check for end of the object CODE_0DED5D: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DED60: A9 0C LDA.B #$0C ; | Add right tile CODE_0DED62: 97 6B STA [$6B],Y ;/ Return0DED64: 60 RTS ; Return ;Some vertical log backgrounds DATA_0DED65: .db $83,$78,$79 ; Top tiles DATA_0DED68: .db $83,$79,$79 ; Middle tiles CODE_0DED6B: A4 57 LDY $57 ; Position CODE_0DED6D: A5 59 LDA $59 ;\ CODE_0DED6F: 4A LSR ; | CODE_0DED70: 4A LSR ; | CODE_0DED71: 4A LSR ; | Height CODE_0DED72: 4A LSR ; | CODE_0DED73: 85 00 STA $00 ;/ CODE_0DED75: A5 59 LDA $59 ;\ CODE_0DED77: 29 0F AND.B #$0F ; | Type CODE_0DED79: AA TAX ;/ CODE_0DED7A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DED7D: BF 65 ED 0D LDA.L DATA_0DED65,X ; | Add top tile CODE_0DED81: 4C 8B ED JMP.W CODE_0DED8B ;/ CODE_0DED84: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DED87: BF 68 ED 0D LDA.L DATA_0DED68,X ; | Add middle tile CODE_0DED8B: 97 6B STA [$6B],Y ;/ CODE_0DED8D: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DED90: C6 00 DEC $00 ;\ CODE_0DED92: 10 F0 BPL CODE_0DED84 ;/ Check for end of the object Return0DED94: 60 RTS ; Return ;Solid vertical brick edges, vertical rows of spikes, and some likely unused things DATA_0DED95: .db $5F,$60,$5A,$5B CODE_0DED99: A5 59 LDA $59 ;\ CODE_0DED9B: 29 0F AND.B #$0F ; | Type CODE_0DED9D: AA TAX ;/ CODE_0DED9E: A4 57 LDY $57 ; Position CODE_0DEDA0: A5 59 LDA $59 ;\ CODE_0DEDA2: 4A LSR ; | CODE_0DEDA3: 4A LSR ; | CODE_0DEDA4: 4A LSR ; | Height CODE_0DEDA5: 4A LSR ; | CODE_0DEDA6: 85 00 STA $00 ;/ CODE_0DEDA8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEDAB: BF 95 ED 0D LDA.L DATA_0DED95,X ; | Add tile CODE_0DEDAF: 97 6B STA [$6B],Y ;/ CODE_0DEDB1: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEDB4: C6 00 DEC $00 ;\ CODE_0DEDB6: 10 F0 BPL CODE_0DEDA8 ;/ Check for end of the object Return0DEDB8: 60 RTS ; Return ;Another ledge (the wood thingies seen in the bonus rooms, like level FD) CODE_0DEDB9: A4 57 LDY $57 ; Position CODE_0DEDBB: A5 59 LDA $59 ;\ CODE_0DEDBD: 29 0F AND.B #$0F ; | Size CODE_0DEDBF: AA TAX ;/ CODE_0DEDC0: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEDC3: A9 07 LDA.B #$07 ; | Add left tile CODE_0DEDC5: 4C CD ED JMP.W CODE_0DEDCD ;/ CODE_0DEDC8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEDCB: A9 08 LDA.B #$08 ; | Add middle tile CODE_0DEDCD: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEDD0: CA DEX ;\ CODE_0DEDD1: D0 F5 BNE CODE_0DEDC8 ;/ Check for end of the object CODE_0DEDD3: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEDD6: A9 09 LDA.B #$09 ; | Add right tile CODE_0DEDD8: 97 6B STA [$6B],Y ;/ Return0DEDDA: 60 RTS ; Return ;Upside down ledge (switch palace) CODE_0DEDDB: A4 57 LDY $57 ; Position CODE_0DEDDD: A5 59 LDA $59 ;\ CODE_0DEDDF: 29 0F AND.B #$0F ; | Width CODE_0DEDE1: 85 00 STA $00 ;/ CODE_0DEDE3: A5 59 LDA $59 ;\ CODE_0DEDE5: 4A LSR ; | CODE_0DEDE6: 4A LSR ; | CODE_0DEDE7: 4A LSR ; | Height CODE_0DEDE8: 4A LSR ; | CODE_0DEDE9: 85 01 STA $01 ;/ CODE_0DEDEB: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEDEE: A6 00 LDX $00 ; Load width CODE_0DEDF0: A5 01 LDA $01 ;\ CODE_0DEDF2: F0 17 BEQ CODE_0DEE0B ;/ Check if we need any middle tiles CODE_0DEDF4: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEDF7: A9 53 LDA.B #$53 ; | Add middle tile CODE_0DEDF9: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEDFC: CA DEX ;\ CODE_0DEDFD: 10 F5 BPL CODE_0DEDF4 ;/ Check for end of the line CODE_0DEDFF: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEE02: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEE05: A6 00 LDX $00 ; Reload width CODE_0DEE07: C6 01 DEC $01 ;\ CODE_0DEE09: D0 E9 BNE CODE_0DEDF4 ;/ Check for end of the object (except bottom line) CODE_0DEE0B: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE0E: A9 54 LDA.B #$54 ; | Add bottom tile CODE_0DEE10: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEE13: CA DEX ;\ CODE_0DEE14: 10 F5 BPL CODE_0DEE0B ;/ Check for end of the object Return0DEE16: 60 RTS ; Return ;Ledge (switch palace) CODE_0DEE17: A4 57 LDY $57 ; Position CODE_0DEE19: A5 59 LDA $59 ;\ CODE_0DEE1B: 29 0F AND.B #$0F ; | Width CODE_0DEE1D: 85 00 STA $00 ;/ CODE_0DEE1F: A5 59 LDA $59 ;\ CODE_0DEE21: 4A LSR ; | CODE_0DEE22: 4A LSR ; | CODE_0DEE23: 4A LSR ; | Height CODE_0DEE24: 4A LSR ; | CODE_0DEE25: 85 01 STA $01 ;/ CODE_0DEE27: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEE2A: A6 00 LDX $00 ; Load width CODE_0DEE2C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE2F: A9 5D LDA.B #$5D ; | Add top tile CODE_0DEE31: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEE34: CA DEX ;\ CODE_0DEE35: 10 F5 BPL CODE_0DEE2C ; | Check for end of the line CODE_0DEE37: 4C 45 EE JMP.W CODE_0DEE45 ;/ CODE_0DEE3A: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE3D: A9 53 LDA.B #$53 ; | Add middle tile CODE_0DEE3F: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEE42: CA DEX ;\ CODE_0DEE43: 10 F5 BPL CODE_0DEE3A ;/ Check for end of the line CODE_0DEE45: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEE48: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEE4B: A6 00 LDX $00 ; Reload width CODE_0DEE4D: C6 01 DEC $01 ;\ CODE_0DEE4F: 10 E9 BPL CODE_0DEE3A ;/ Check for end of the object Return0DEE51: 60 RTS ; Return ;Right facing edge (switch palace) CODE_0DEE52: A4 57 LDY $57 ; Position CODE_0DEE54: A5 59 LDA $59 ;\ CODE_0DEE56: 29 0F AND.B #$0F ; | Width CODE_0DEE58: 85 00 STA $00 ;/ CODE_0DEE5A: A5 59 LDA $59 ;\ CODE_0DEE5C: 4A LSR ; | CODE_0DEE5D: 4A LSR ; | CODE_0DEE5E: 4A LSR ; | Height CODE_0DEE5F: 4A LSR ; | CODE_0DEE60: 85 01 STA $01 ;/ CODE_0DEE62: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEE65: A6 00 LDX $00 ; Load width CODE_0DEE67: F0 0B BEQ CODE_0DEE74 ; Check if we need any middle tiles CODE_0DEE69: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE6C: A9 53 LDA.B #$53 ; | Add middle tile CODE_0DEE6E: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEE71: CA DEX ;\ CODE_0DEE72: D0 F5 BNE CODE_0DEE69 ;/ Check for end of the line CODE_0DEE74: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE77: A9 55 LDA.B #$55 ; | Add right tile CODE_0DEE79: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEE7C: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEE7F: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEE82: A6 00 LDX $00 ; Reload width CODE_0DEE84: C6 01 DEC $01 ;\ CODE_0DEE86: 10 DD BPL CODE_0DEE65 ;/ Check for end of the object Return0DEE88: 60 RTS ; Return ;Left facing edge (switch palace) CODE_0DEE89: A4 57 LDY $57 ; Position CODE_0DEE8B: A5 59 LDA $59 ;\ CODE_0DEE8D: 29 0F AND.B #$0F ; | Width CODE_0DEE8F: 85 00 STA $00 ;/ CODE_0DEE91: A5 59 LDA $59 ;\ CODE_0DEE93: 4A LSR ; | CODE_0DEE94: 4A LSR ; | CODE_0DEE95: 4A LSR ; | Height CODE_0DEE96: 4A LSR ; | CODE_0DEE97: 85 01 STA $01 ;/ CODE_0DEE99: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEE9C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEE9F: A9 5C LDA.B #$5C ; | Add left tile CODE_0DEEA1: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEEA4: A6 00 LDX $00 ; Load width CODE_0DEEA6: F0 0B BEQ CODE_0DEEB3 ; Check if we need any middle tiles CODE_0DEEA8: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEEAB: A9 53 LDA.B #$53 ; | Add middle tile CODE_0DEEAD: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEEB0: CA DEX ;\ CODE_0DEEB1: 10 F5 BPL CODE_0DEEA8 ;/ Check for end of the line CODE_0DEEB3: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEEB6: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEEB9: A6 00 LDX $00 ; Reload width CODE_0DEEBB: C6 01 DEC $01 ;\ CODE_0DEEBD: 10 DD BPL CODE_0DEE9C ;/ Check for end of the object Return0DEEBF: 60 RTS ; Return ;Wood ledge on column CODE_0DEEC0: A4 57 LDY $57 ; Position CODE_0DEEC2: A5 59 LDA $59 ;\ CODE_0DEEC4: 29 0F AND.B #$0F ; | Number of columns CODE_0DEEC6: 85 00 STA $00 ;/ CODE_0DEEC8: 0A ASL ;\ CODE_0DEEC9: 0A ASL ; | CODE_0DEECA: 18 CLC ; | "Real" width CODE_0DEECB: 69 02 ADC.B #$02 ; | CODE_0DEECD: AA TAX ;/ CODE_0DEECE: A5 59 LDA $59 ;\ CODE_0DEED0: 4A LSR ; | CODE_0DEED1: 4A LSR ; | CODE_0DEED2: 4A LSR ; | Height CODE_0DEED3: 4A LSR ; | CODE_0DEED4: 85 01 STA $01 ;/ CODE_0DEED6: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEED9: 20 4A ED JSR.W CODE_0DED4A ; Add the ledge by "stealing" the column-less one's code CODE_0DEEDC: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEEDF: A5 57 LDA $57 ;\ CODE_0DEEE1: 18 CLC ; | CODE_0DEEE2: 69 01 ADC.B #$01 ; | CODE_0DEEE4: A8 TAY ; | CODE_0DEEE5: 29 0F AND.B #$0F ; | CODE_0DEEE7: D0 08 BNE CODE_0DEEF1 ; | ADDR_0DEEE9: A5 57 LDA $57 ; | ADDR_0DEEEB: 29 F0 AND.B #$F0 ; | ADDR_0DEEED: A8 TAY ; | Move pointer downwards and rightwards ADDR_0DEEEE: 20 EF A9 JSR.W CODE_0DA9EF ; | CODE_0DEEF1: 98 TYA ; | CODE_0DEEF2: 18 CLC ; | CODE_0DEEF3: 69 10 ADC.B #$10 ; | CODE_0DEEF5: 85 57 STA $57 ; | CODE_0DEEF7: A8 TAY ; | CODE_0DEEF8: 90 03 BCC CODE_0DEEFD ; | ADDR_0DEEFA: 20 87 A9 JSR.W CODE_0DA987 ;/ CODE_0DEEFD: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEF00: A6 01 LDX $01 ; Load height (looks like this object is added in vertical stripes) CODE_0DEF02: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF05: A9 78 LDA.B #$78 ; | Add top tile CODE_0DEF07: 4C 0F EF JMP.W CODE_0DEF0F ;/ CODE_0DEF0A: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF0D: A9 79 LDA.B #$79 ; | Add middle tile CODE_0DEF0F: 97 6B STA [$6B],Y ;/ CODE_0DEF11: 98 TYA ;\ CODE_0DEF12: 18 CLC ; | CODE_0DEF13: 69 10 ADC.B #$10 ; | CODE_0DEF15: A8 TAY ; | CODE_0DEF16: 90 09 BCC CODE_0DEF21 ; | ADDR_0DEF18: A5 6C LDA $6C ; | Move pointer downwards ADDR_0DEF1A: 18 CLC ; | ADDR_0DEF1B: 69 01 ADC.B #$01 ; | ADDR_0DEF1D: 85 6C STA $6C ; | ADDR_0DEF1F: 85 6F STA $6F ;/ CODE_0DEF21: CA DEX ;\ CODE_0DEF22: D0 E6 BNE CODE_0DEF0A ;/ Check for end of the line CODE_0DEF24: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEF27: A5 57 LDA $57 ;\ CODE_0DEF29: 18 CLC ; | CODE_0DEF2A: 69 04 ADC.B #$04 ; | CODE_0DEF2C: A8 TAY ; | CODE_0DEF2D: 29 0F AND.B #$0F ; | CODE_0DEF2F: C9 04 CMP.B #$04 ; | CODE_0DEF31: 10 08 BPL CODE_0DEF3B ; | Move pointer rightwards CODE_0DEF33: 98 TYA ; | CODE_0DEF34: 38 SEC ; | CODE_0DEF35: E9 10 SBC.B #$10 ; | CODE_0DEF37: A8 TAY ; | CODE_0DEF38: 20 EF A9 JSR.W CODE_0DA9EF ; | CODE_0DEF3B: 84 57 STY $57 ;/ CODE_0DEF3D: C6 00 DEC $00 ;\ CODE_0DEF3F: 30 03 BMI Return0DEF44 ; | Check for end of the object CODE_0DEF41: 4C FD EE JMP.W CODE_0DEEFD ;/ Return0DEF44: 60 RTS ; Return ;Cloud ledge (I wonder why it's called "ledge" when you can't stand on it) CODE_0DEF45: A4 57 LDY $57 ; Position CODE_0DEF47: A5 59 LDA $59 ;\ CODE_0DEF49: 29 0F AND.B #$0F ; | Width CODE_0DEF4B: AA TAX ;/ CODE_0DEF4C: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF4F: A9 A0 LDA.B #$A0 ; | Add left tile CODE_0DEF51: 4C 59 EF JMP.W CODE_0DEF59 ;/ CODE_0DEF54: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF57: A9 A1 LDA.B #$A1 ; | Add middle tile CODE_0DEF59: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEF5C: CA DEX ;\ CODE_0DEF5D: D0 F5 BNE CODE_0DEF54 ;/ Check for end of the object CODE_0DEF5F: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF62: A9 A2 LDA.B #$A2 ; | Add right tile CODE_0DEF64: 97 6B STA [$6B],Y ;/ Return0DEF66: 60 RTS ; Return ;Grass ledge 2 CODE_0DEF67: A4 57 LDY $57 ; Position CODE_0DEF69: A5 59 LDA $59 ;\ CODE_0DEF6B: 29 0F AND.B #$0F ; | Width CODE_0DEF6D: 85 00 STA $00 ;/ CODE_0DEF6F: A5 59 LDA $59 ;\ CODE_0DEF71: 4A LSR ; | CODE_0DEF72: 4A LSR ; | CODE_0DEF73: 4A LSR ; | Height CODE_0DEF74: 4A LSR ; | CODE_0DEF75: 85 01 STA $01 ;/ CODE_0DEF77: A6 00 LDX $00 ; Load width CODE_0DEF79: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEF7C: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEF7F: A9 0E LDA.B #$0E ; | Add top tile CODE_0DEF81: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEF84: CA DEX ;\ CODE_0DEF85: 10 F5 BPL CODE_0DEF7C ;/ Check for end of the line CODE_0DEF87: C6 01 DEC $01 ;\ CODE_0DEF89: 30 16 BMI Return0DEFA1 ;/ Check if we need any lower tiles CODE_0DEF8B: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer CODE_0DEF8E: 20 7D A9 JSR.W CODE_0DA97D ; Move pointer downwards CODE_0DEF91: A6 00 LDX $00 ; Reload width CODE_0DEF93: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEF96: A9 A3 LDA.B #$A3 ; | Add lower tile CODE_0DEF98: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEF9B: CA DEX ;\ CODE_0DEF9C: 10 F5 BPL CODE_0DEF93 ; | Check for end of the object CODE_0DEF9E: 4C 87 EF JMP.W CODE_0DEF87 ;/ Return0DEFA1: 60 RTS ; Return ;Wooden crate DATA_0DEFA2: .db $63,$65 ; Left tiles DATA_0DEFA4: .db $C7,$C8 ; Middle tiles (the top and bottom lines aren't here) DATA_0DEFA6: .db $64,$6A ; Right tiles CODE_0DEFA8: A4 57 LDY $57 ; Position CODE_0DEFAA: A5 59 LDA $59 ;\ CODE_0DEFAC: 29 0F AND.B #$0F ; | Width CODE_0DEFAE: 85 00 STA $00 ;/ CODE_0DEFB0: A5 59 LDA $59 ;\ CODE_0DEFB2: 4A LSR ; | CODE_0DEFB3: 4A LSR ; | CODE_0DEFB4: 4A LSR ; | Height CODE_0DEFB5: 4A LSR ; | CODE_0DEFB6: 85 01 STA $01 ;/ CODE_0DEFB8: 20 B1 A6 JSR.W CODE_0DA6B1 ; Preserve pointer CODE_0DEFBB: A5 00 LDA $00 ;\ CODE_0DEFBD: 85 02 STA $02 ;/ Reload width CODE_0DEFBF: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEFC2: A9 61 LDA.B #$61 ;/ Add top left tile CODE_0DEFC4: D0 05 BNE CODE_0DEFCB ; This looks like some random instruction that should be BRA! CODE_0DEFC6: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEFC9: A9 0D LDA.B #$0D ; | Add upper middle tile CODE_0DEFCB: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEFCE: C6 02 DEC $02 ;\ CODE_0DEFD0: D0 F4 BNE CODE_0DEFC6 ;/ Check if we need more middle tiles CODE_0DEFD2: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEFD5: A9 62 LDA.B #$62 ; | Add upper right tile CODE_0DEFD7: 97 6B STA [$6B],Y ;/ CODE_0DEFD9: A2 01 LDX.B #$01 ; Set which line we're on CODE_0DEFDB: 4C FE EF JMP.W CODE_0DEFFE CODE_0DEFDE: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEFE1: BF A2 EF 0D LDA.L DATA_0DEFA2,X ; | Add left tile CODE_0DEFE5: D0 07 BNE CODE_0DEFEE ;/ CODE_0DEFE7: 20 0D AA JSR.W StzTo6ePointer0080E7 ;\ CODE_0DEFEA: BF A4 EF 0D LDA.L DATA_0DEFA4,X ; | Add middle tile CODE_0DEFEE: 20 5B A9 JSR.W CODE_0DA95B ;/ CODE_0DEFF1: C6 02 DEC $02 ;\ CODE_0DEFF3: D0 F2 BNE CODE_0DEFE7 ;/ Check if we need more middle tiles CODE_0DEFF5: 20 08 AA JSR.W Sta1To6ePointer ;\ CODE_0DEFF8: BF A6 EF 0D LDA.L DATA_0DEFA6,X ; | Add right tile CODE_0DEFFC: 97 6B STA [$6B],Y ;/ CODE_0DEFFE: 20 BA A6 JSR.W CODE_0DA6BA ; Reload pointer DATA_0DF08A: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF DATA_0DF300: .db $20,$00,$40,$A4,$FA,$34,$20,$60 .db $C0,$2C,$FA,$34,$20,$61,$C0,$2C .db $FA,$34,$20,$62,$C0,$2C,$FA,$34 .db $21,$C3,$C0,$22,$FA,$34,$21,$C4 .db $C0,$22,$FA,$34,$21,$C5,$C0,$22 .db $FA,$34,$20,$6F,$C0,$14,$FA,$34 .db $20,$70,$C0,$14,$FA,$34,$20,$71 .db $C0,$14,$FA,$34,$20,$72,$C0,$14 .db $FA,$34,$21,$C3,$40,$1E,$FA,$34 .db $21,$E0,$40,$7E,$FA,$34,$20,$5C .db $C0,$2E,$FA,$34,$20,$5D,$C0,$2E .db $FA,$34,$20,$5E,$C0,$2E,$FA,$34 .db $20,$5F,$C0,$2E,$FA,$34,$22,$3A .db $C0,$10,$FA,$34,$22,$3B,$C0,$10 .db $FA,$34,$22,$40,$C0,$10,$FA,$34 .db $22,$41,$C0,$10,$FA,$34,$22,$42 .db $C0,$10,$FA,$34,$22,$43,$C0,$10 .db $FA,$34,$22,$44,$C0,$10,$FA,$34 .db $22,$45,$C0,$10,$FA,$34,$23,$40 .db $49,$3E,$FA,$34,$50,$72,$00,$19 .db $0F,$38,$12,$38,$1C,$38,$11,$38 .db $12,$38,$17,$38,$85,$38,$15,$38 .db $0A,$38,$14,$38,$12,$38,$1D,$38 .db $1E,$38,$50,$82,$00,$11,$19,$38 .db $0A,$38,$1B,$38,$0A,$38,$27,$38 .db $0B,$38,$18,$38,$16,$38,$0B,$38 .db $51,$67,$00,$15,$19,$38,$0A,$38 .db $1B,$38,$0A,$38,$27,$38,$10,$38 .db $18,$38,$18,$38,$16,$38,$0B,$38 .db $0A,$38,$51,$B2,$00,$0B,$15,$38 .db $0A,$38,$14,$38,$12,$38,$1D,$38 .db $1E,$38,$52,$28,$00,$09,$1C,$38 .db $19,$38,$12,$38,$17,$38,$22,$38 .db $52,$B7,$00,$0D,$20,$38,$12,$38 .db $10,$38,$10,$38,$15,$38,$0E,$38 .db $1B,$38,$53,$2E,$00,$0D,$0B,$38 .db $18,$38,$0B,$38,$27,$38,$18,$38 .db $16,$38,$0B,$38,$FF DATA_0DF42D: .db $20,$00,$40,$DE,$FA,$34,$20,$80 .db $40,$1E,$FA,$34,$20,$A0,$40,$1E .db $FA,$34,$20,$C0,$C0,$28,$FA,$34 .db $20,$C1,$C0,$28,$FA,$34,$20,$C2 .db $C0,$28,$FA,$34,$20,$CD,$C0,$0C .db $FA,$34,$20,$CE,$C0,$0C,$FA,$34 .db $20,$CF,$C0,$0C,$FA,$34,$21,$A3 .db $40,$18,$FA,$34,$21,$C3,$40,$18 .db $FA,$34,$21,$E3,$40,$30,$FA,$34 .db $22,$03,$40,$30,$FA,$34,$22,$2D .db $C0,$12,$FA,$34,$22,$2E,$C0,$12 .db $FA,$34,$20,$7C,$C0,$1A,$FA,$34 .db $20,$7D,$C0,$2E,$FA,$34,$20,$7E .db $C0,$2E,$FA,$34,$20,$7F,$C0,$2E .db $FA,$34,$23,$60,$49,$3E,$FA,$34 .db $50,$81,$00,$1B,$0A,$38,$16,$38 .db $0A,$38,$23,$38,$12,$38,$17,$38 .db $10,$38,$FC,$00,$0F,$38,$15,$38 .db $22,$38,$12,$38,$17,$38,$85,$38 .db $50,$A1,$00,$1B,$11,$38,$0A,$38 .db $16,$38,$16,$38,$0E,$38,$1B,$38 .db $FC,$00,$0B,$38,$1B,$38,$18,$38 .db $1D,$38,$11,$38,$0E,$38,$1B,$38 .db $50,$F2,$00,$15,$1C,$38,$1E,$38 .db $19,$38,$0E,$38,$1B,$38,$FC,$00 .db $14,$38,$18,$38,$18,$38,$19,$38 .db $0A,$38,$52,$57,$00,$0F,$0C,$38 .db $11,$38,$0A,$38,$1B,$38,$10,$38 .db $12,$38,$17,$38,$85,$38,$52,$78 .db $00,$09,$0C,$38,$11,$38,$1E,$38 .db $0C,$38,$14,$38,$52,$A4,$00,$0D .db $13,$38,$1E,$38,$16,$38,$19,$38 .db $12,$38,$17,$38,$10,$38,$52,$C1 .db $00,$19,$19,$38,$12,$38,$1B,$38 .db $11,$38,$0A,$38,$17,$38,$0A,$38 .db $FC,$00,$19,$38,$15,$38,$0A,$38 .db $17,$38,$1D,$38,$53,$30,$00,$0D .db $1F,$38,$18,$38,$15,$38,$0C,$38 .db $0A,$38,$17,$38,$18,$38,$53,$51 .db $00,$09,$15,$38,$18,$38,$1D,$38 .db $1E,$38,$1C,$38,$FF DATA_0DF572: .db $20,$00,$40,$BE,$FA,$34,$20,$6B .db $40,$28,$FA,$34,$20,$8B,$40,$28 .db $FA,$34,$20,$AB,$40,$28,$FA,$34 .db $20,$60,$C0,$1E,$FA,$34,$20,$61 .db $C0,$1E,$FA,$34,$20,$62,$C0,$1E .db $FA,$34,$20,$CB,$C0,$18,$FA,$34 .db $20,$CC,$C0,$18,$FA,$34,$20,$CD .db $C0,$18,$FA,$34,$20,$DE,$C0,$18 .db $FA,$34,$20,$DF,$C0,$18,$FA,$34 .db $22,$60,$40,$8E,$FA,$34,$22,$C0 .db $40,$0E,$FA,$34,$22,$E0,$40,$0E .db $FA,$34,$23,$00,$40,$0E,$FA,$34 .db $23,$20,$40,$0E,$FA,$34,$23,$40 .db $40,$0E,$FA,$34,$23,$60,$40,$0E .db $FA,$34,$22,$B5,$40,$14,$FA,$34 .db $22,$D5,$40,$14,$FA,$34,$22,$F5 .db $40,$14,$FA,$34,$23,$15,$40,$14 .db $FA,$34,$23,$35,$40,$14,$FA,$34 .db $23,$55,$40,$14,$FA,$34,$23,$75 .db $49,$14,$FA,$34,$50,$81,$00,$17 .db $1C,$38,$1E,$38,$16,$38,$18,$38 .db $FC,$00,$0B,$38,$1B,$38,$18,$38 .db $1D,$38,$11,$38,$0E,$38,$1B,$38 .db $50,$F5,$00,$13,$16,$38,$18,$38 .db $17,$38,$1D,$38,$22,$38,$FC,$00 .db $16,$38,$18,$38,$15,$38,$0E,$38 .db $51,$D0,$00,$09,$19,$38,$18,$38 .db $14,$38,$0E,$38,$22,$38,$53,$2D .db $00,$15,$0B,$38,$1E,$38,$15,$38 .db $15,$38,$0E,$38,$1D,$38,$FC,$00 .db $0B,$38,$12,$38,$15,$38,$15,$38 .db $FF DATA_0DF66B: .db $20,$00,$41,$12,$FA,$34,$20,$80 .db $40,$12,$FA,$34,$20,$A0,$40,$12 .db $FA,$34,$20,$C0,$40,$12,$FA,$34 .db $20,$E0,$40,$12,$FA,$34,$21,$00 .db $40,$12,$FA,$34,$21,$20,$40,$12 .db $FA,$34,$21,$40,$40,$12,$FA,$34 .db $21,$60,$40,$12,$FA,$34,$21,$80 .db $40,$12,$FA,$34,$21,$A0,$40,$12 .db $FA,$34,$21,$C0,$40,$12,$FA,$34 .db $21,$E0,$40,$88,$FA,$34,$22,$40 .db $C0,$0E,$FA,$34,$22,$41,$C0,$0E .db $FA,$34,$22,$42,$C0,$0E,$FA,$34 .db $22,$43,$C0,$0E,$FA,$34,$22,$44 .db $C0,$0E,$FA,$34,$22,$2C,$C0,$10 .db $FA,$34,$22,$2D,$C0,$10,$FA,$34 .db $23,$40,$40,$1A,$FA,$34,$20,$9C .db $C0,$2C,$FA,$34,$20,$9D,$C0,$2C .db $FA,$34,$20,$9E,$C0,$2C,$FA,$34 .db $20,$9F,$C0,$2C,$FA,$34,$23,$60 .db $49,$3E,$FA,$34,$51,$11,$00,$05 .db $1B,$38,$0E,$38,$21,$38,$52,$03 .db $00,$11,$16,$38,$0E,$38,$10,$38 .db $0A,$38,$FC,$00,$16,$38,$18,$38 .db $15,$38,$0E,$38,$53,$30,$00,$15 .db $0B,$38,$0A,$38,$17,$38,$23,$38 .db $0A,$38,$12,$38,$FC,$00,$0B,$38 .db $12,$38,$15,$38,$15,$38,$FF DATA_0DF742: .db $20,$00,$41,$06,$FA,$34,$20,$A0 .db $C0,$18,$FA,$34,$20,$A1,$C0,$18 .db $FA,$34,$20,$A2,$C0,$18,$FA,$34 .db $20,$A3,$C0,$18,$FA,$34,$20,$92 .db $40,$1A,$FA,$34,$20,$B2,$40,$1A .db $FA,$34,$20,$D2,$40,$1A,$FA,$34 .db $20,$F2,$40,$1A,$FA,$34,$21,$12 .db $40,$1A,$FA,$34,$21,$32,$40,$1A .db $FA,$34,$21,$52,$40,$1A,$FA,$34 .db $21,$72,$40,$1A,$FA,$34,$21,$92 .db $40,$1A,$FA,$34,$21,$B2,$40,$22 .db $FA,$34,$21,$D2,$40,$22,$FA,$34 .db $21,$F2,$40,$22,$FA,$34,$22,$12 .db $40,$22,$FA,$34,$22,$20,$40,$92 .db $FA,$34,$22,$80,$40,$12,$FA,$34 .db $22,$A0,$40,$12,$FA,$34,$22,$C0 .db $40,$12,$FA,$34,$22,$E0,$40,$12 .db $FA,$34,$23,$00,$40,$12,$FA,$34 .db $23,$20,$40,$12,$FA,$34,$22,$7C .db $C0,$0C,$FA,$34,$22,$7D,$C0,$0C .db $FA,$34,$22,$7E,$C0,$0C,$FA,$34 .db $22,$7F,$C0,$0C,$FA,$34,$23,$40 .db $49,$7E,$FA,$34,$50,$C2,$00,$13 .db $0D,$38,$12,$38,$17,$38,$18,$38 .db $27,$38,$1B,$38,$11,$38,$12,$38 .db $17,$38,$18,$38,$51,$E9,$00,$13 .db $0D,$38,$12,$38,$17,$38,$18,$38 .db $27,$38,$1D,$38,$18,$38,$1B,$38 .db $0C,$38,$11,$38,$53,$30,$00,$0B .db $14,$38,$18,$38,$18,$38,$19,$38 .db $0A,$38,$1C,$38,$FF DATA_0DF837: .db $20,$00,$41,$04,$FA,$34,$20,$A0 .db $C0,$28,$FA,$34,$20,$A1,$C0,$28 .db $FA,$34,$20,$A2,$C0,$28,$FA,$34 .db $20,$8A,$C0,$10,$FA,$34,$20,$8B .db $C0,$10,$FA,$34,$20,$9A,$C0,$2A .db $FA,$34,$20,$9B,$C0,$2A,$FA,$34 .db $20,$9C,$C0,$2A,$FA,$34,$20,$9D .db $C0,$2A,$FA,$34,$20,$9E,$C0,$2A .db $FA,$34,$20,$9F,$C0,$2A,$FA,$34 .db $21,$AA,$40,$B6,$FA,$34,$22,$23 .db $C0,$10,$FA,$34,$22,$24,$C0,$10 .db $FA,$34,$22,$25,$C0,$10,$FA,$34 .db $22,$19,$C0,$12,$FA,$34,$23,$40 .db $49,$7E,$FA,$34,$50,$A2,$00,$11 .db $1C,$38,$19,$38,$12,$38,$14,$38 .db $0E,$38,$FC,$00,$1D,$38,$18,$38 .db $19,$38,$50,$B1,$00,$0F,$1C,$38 .db $20,$38,$18,$38,$18,$38,$19,$38 .db $0E,$38,$1B,$38,$1C,$38,$52,$03 .db $00,$17,$0B,$38,$1E,$38,$23,$38 .db $23,$38,$22,$38,$FC,$00,$0B,$38 .db $0E,$38,$0E,$38,$1D,$38,$15,$38 .db $0E,$38,$52,$72,$00,$0B,$0B,$38 .db $15,$38,$0A,$38,$1B,$38,$10,$38 .db $10,$38,$FF DATA_0DF8FA: .db $20,$00,$40,$BE,$FA,$34,$20,$60 .db $C0,$16,$FA,$34,$20,$61,$C0,$16 .db $FA,$34,$20,$62,$C0,$16,$FA,$34 .db $20,$7C,$C0,$16,$FA,$34,$20,$7D .db $C0,$2C,$FA,$34,$20,$7E,$C0,$2C .db $FA,$34,$20,$7F,$C0,$2C,$FA,$34 .db $21,$E0,$40,$9C,$FA,$34,$22,$40 .db $C0,$10,$FA,$34,$22,$41,$C0,$10 .db $FA,$34,$22,$42,$C0,$10,$FA,$34 .db $22,$4C,$C0,$10,$FA,$34,$22,$4D .db $C0,$10,$FA,$34,$22,$4E,$C0,$10 .db $FA,$34,$23,$4C,$49,$66,$FA,$34 .db $50,$84,$00,$0B,$0B,$38,$15,$38 .db $1E,$38,$1B,$38,$19,$38,$1C,$38 .db $50,$B2,$00,$0B,$1E,$38,$1B,$38 .db $0C,$38,$11,$38,$12,$38,$17,$38 .db $51,$A7,$00,$17,$19,$38,$18,$38 .db $1B,$38,$0C,$38,$1E,$38,$27,$38 .db $19,$38,$1E,$38,$0F,$38,$0F,$38 .db $0E,$38,$1B,$38,$52,$52,$00,$15 .db $1D,$38,$18,$38,$1B,$38,$19,$38 .db $0E,$38,$0D,$38,$18,$38,$FC,$00 .db $1D,$38,$0E,$38,$0D,$38,$53,$02 .db $00,$17,$1B,$38,$12,$38,$19,$38 .db $FC,$00,$1F,$38,$0A,$38,$17,$38 .db $FC,$00,$0F,$38,$12,$38,$1C,$38 .db $11,$38,$FF DATA_0DF9CD: .db $20,$00,$40,$E2,$FA,$34,$20,$80 .db $C0,$2C,$FA,$34,$20,$81,$C0,$2C .db $FA,$34,$20,$82,$C0,$2C,$FA,$34 .db $20,$83,$C0,$12,$FA,$34,$20,$8E .db $C0,$26,$FA,$34,$20,$8F,$C0,$26 .db $FA,$34,$20,$90,$C0,$10,$FA,$34 .db $20,$91,$C0,$10,$FA,$34,$20,$7C .db $C0,$28,$FA,$34,$20,$7D,$C0,$28 .db $FA,$34,$20,$7E,$C0,$28,$FA,$34 .db $20,$7F,$C0,$28,$FA,$34,$21,$AE .db $40,$C2,$FA,$34,$23,$0E,$40,$22 .db $FA,$34,$23,$2E,$40,$22,$FA,$34 .db $23,$4E,$49,$82,$FA,$34,$50,$A3 .db $00,$19,$86,$78,$0B,$38,$18,$38 .db $18,$38,$86,$38,$FC,$00,$0B,$38 .db $1E,$38,$0D,$38,$0D,$38,$12,$38 .db $0E,$38,$1C,$38,$50,$D2,$00,$13 .db $0F,$38,$12,$38,$1C,$38,$11,$38 .db $12,$38,$17,$38,$85,$38,$0B,$38 .db $18,$38,$18,$38,$52,$22,$00,$19 .db $1D,$38,$11,$38,$0E,$38,$FC,$00 .db $0B,$38,$12,$38,$10,$38,$FC,$00 .db $86,$78,$0B,$38,$18,$38,$18,$38 .db $86,$38,$52,$B3,$00,$0B,$0E,$38 .db $0E,$38,$1B,$38,$12,$38,$0E,$38 .db $1C,$38,$FF DATA_0DFA98: .db $20,$00,$40,$BE,$FA,$34,$20,$60 .db $C0,$2E,$FA,$34,$20,$61,$C0,$2E .db $FA,$34,$20,$62,$C0,$2E,$FA,$34 .db $21,$63,$C0,$1E,$FA,$34,$21,$64 .db $C0,$1E,$FA,$34,$21,$65,$C0,$1E .db $FA,$34,$20,$7D,$C0,$2A,$FA,$34 .db $20,$7E,$C0,$2A,$FA,$34,$20,$7F .db $C0,$2A,$FA,$34,$21,$7C,$C0,$1A .db $FA,$34,$21,$AE,$C0,$1A,$FA,$34 .db $21,$AF,$C0,$1A,$FA,$34,$21,$60 .db $40,$7E,$FA,$34,$23,$30,$40,$1E .db $FA,$34,$23,$50,$49,$5E,$FA,$34 .db $50,$6B,$00,$13,$15,$38,$12,$38 .db $15,$38,$FC,$00,$1C,$38,$19,$38 .db $0A,$38,$1B,$38,$14,$38,$22,$38 .db $50,$F1,$00,$15,$0B,$38,$18,$38 .db $17,$38,$22,$38,$FC,$00,$0B,$38 .db $0E,$38,$0E,$38,$1D,$38,$15,$38 .db $0E,$38,$51,$22,$00,$11,$0D,$38 .db $1B,$38,$22,$38,$FC,$00,$0B,$38 .db $18,$38,$17,$38,$0E,$38,$1C,$38 .db $52,$4F,$00,$0B,$1D,$38,$11,$38 .db $20,$38,$18,$38,$16,$38,$19,$38 .db $52,$B6,$00,$0B,$1D,$38,$11,$38 .db $20,$38,$12,$38,$16,$38,$19,$38 .db $52,$E9,$00,$0D,$11,$38,$18,$38 .db $1D,$38,$11,$38,$0E,$38,$0A,$38 .db $0D,$38,$FF DATA_0DFB73: .db $20,$00,$40,$FE,$FA,$34,$20,$80 .db $C0,$14,$FA,$34,$20,$81,$C0,$14 .db $FA,$34,$20,$82,$C0,$14,$FA,$34 .db $20,$83,$C0,$14,$FA,$34,$20,$84 .db $C0,$14,$FA,$34,$20,$85,$C0,$14 .db $FA,$34,$20,$86,$C0,$14,$FA,$34 .db $20,$87,$C0,$14,$FA,$34,$20,$98 .db $C0,$14,$FA,$34,$20,$99,$C0,$14 .db $FA,$34,$20,$9A,$C0,$14,$FA,$34 .db $20,$9B,$C0,$14,$FA,$34,$20,$9C .db $C0,$14,$FA,$34,$20,$9D,$C0,$14 .db $FA,$34,$20,$9E,$C0,$14,$FA,$34 .db $20,$9F,$C0,$14,$FA,$34,$21,$E0 .db $40,$7E,$FA,$34,$22,$20,$C0,$12 .db $FA,$34,$22,$21,$C0,$12,$FA,$34 .db $22,$22,$C0,$12,$FA,$34,$22,$23 .db $C0,$12,$FA,$34,$22,$3C,$C0,$12 .db $FA,$34,$22,$3D,$C0,$12,$FA,$34 .db $22,$3E,$C0,$12,$FA,$34,$22,$3F .db $C0,$12,$FA,$34,$23,$60,$49,$3E .db $FA,$34,$50,$90,$00,$0D,$10,$38 .db $1B,$38,$12,$38,$17,$38,$0D,$38 .db $0E,$38,$1B,$38,$51,$A7,$00,$17 .db $0B,$38,$0A,$38,$15,$38,$15,$38 .db $85,$78,$17,$38,$85,$38,$0C,$38 .db $11,$38,$0A,$38,$12,$38,$17,$38 .db $52,$4D,$00,$0F,$0F,$38,$12,$38 .db $1C,$38,$11,$38,$0B,$38,$18,$38 .db $17,$38,$0E,$38,$FF DATA_0DFC58: .db $20,$00,$40,$FE,$FA,$34,$20,$80 .db $C0,$2A,$FA,$34,$20,$81,$C0,$2A .db $FA,$34,$20,$82,$C0,$2A,$FA,$34 .db $20,$83,$C0,$2A,$FA,$34,$20,$84 .db $C0,$2A,$FA,$34,$20,$85,$C0,$2A .db $FA,$34,$20,$86,$C0,$2A,$FA,$34 .db $20,$87,$C0,$2A,$FA,$34,$20,$98 .db $C0,$2A,$FA,$34,$20,$99,$C0,$2A .db $FA,$34,$20,$9A,$C0,$2A,$FA,$34 .db $20,$9B,$C0,$2A,$FA,$34,$20,$9C .db $C0,$2A,$FA,$34,$20,$9D,$C0,$2A .db $FA,$34,$20,$9E,$C0,$2A,$FA,$34 .db $20,$9F,$C0,$2A,$FA,$34,$23,$40 .db $49,$7E,$FA,$34,$51,$8D,$00,$0B .db $1B,$38,$0E,$38,$23,$38,$17,$38 .db $18,$38,$1B,$38,$FF DATA_0DFCD5: .db $20,$00,$42,$80,$FA,$34,$21,$40 .db $C0,$12,$FA,$34,$21,$41,$C0,$12 .db $FA,$34,$21,$42,$C0,$12,$FA,$34 .db $21,$43,$C0,$12,$FA,$34,$21,$44 .db $C0,$12,$FA,$34,$21,$45,$C0,$12 .db $FA,$34,$21,$46,$C0,$12,$FA,$34 .db $21,$47,$C0,$12,$FA,$34,$21,$58 .db $C0,$12,$FA,$34,$21,$59,$C0,$12 .db $FA,$34,$21,$5A,$C0,$12,$FA,$34 .db $21,$5B,$C0,$12,$FA,$34,$21,$5C .db $C0,$12,$FA,$34,$21,$5D,$C0,$12 .db $FA,$34,$21,$5E,$C0,$12,$FA,$34 .db $21,$5F,$C0,$12,$FA,$34,$22,$80 .db $4A,$FE,$FA,$34,$51,$8B,$00,$15 .db $16,$38,$0E,$38,$0C,$38,$11,$38 .db $0A,$38,$14,$38,$18,$38,$18,$38 .db $19,$38,$0A,$38,$1C,$38,$FF DATA_0DFD5C: .db $20,$00,$5F,$FE,$FA,$14,$51,$25 .db $00,$0B,$16,$38,$18,$38,$1B,$38 .db $1D,$38,$18,$38,$17,$38,$51,$44 .db $00,$11,$14,$38,$18,$38,$18,$38 .db $19,$38,$0A,$38,$FC,$00,$13,$38 .db $1B,$38,$24,$38,$51,$37,$00,$05 .db $1B,$38,$18,$38,$22,$38,$51,$56 .db $00,$09,$14,$38,$18,$38,$18,$38 .db $19,$38,$0A,$38,$52,$0D,$00,$0B .db $0B,$38,$18,$38,$20,$38,$1C,$38 .db $0E,$38,$1B,$38,$52,$43,$00,$09 .db $15,$38,$0E,$38,$16,$38,$16,$38 .db $22,$38,$52,$63,$00,$09,$14,$38 .db $18,$38,$18,$38,$19,$38,$0A,$38 .db $52,$59,$00,$09,$20,$38,$0E,$38 .db $17,$38,$0D,$38,$22,$38,$52,$78 .db $00,$0D,$18,$38,$24,$38,$14,$38 .db $18,$38,$18,$38,$19,$38,$0A,$38 .db $53,$06,$00,$07,$12,$38,$10,$38 .db $10,$38,$22,$38,$53,$26,$00,$09 .db $14,$38,$18,$38,$18,$38,$19,$38 .db $0A,$38,$53,$17,$00,$09,$15,$38 .db $0A,$38,$1B,$38,$1B,$38,$22,$38 .db $53,$37,$00,$09,$14,$38,$18,$38 .db $18,$38,$19,$38,$0A,$38,$53,$2E .db $00,$0B,$15,$38,$1E,$38,$0D,$38 .db $20,$38,$12,$38,$10,$38,$53,$4D .db $00,$11,$1F,$38,$18,$38,$17,$38 .db $FC,$00,$14,$38,$18,$38,$18,$38 .db $19,$38,$0A,$38,$FF,$FF,$FF,$52 .db $C1,$00,$0D,$19,$38,$1E,$38,$16 .db $38,$19,$38,$14,$38,$12,$38,$17 .db $38,$FF,$FF,$53,$2D,$00,$0B,$19 .db $38,$12,$38,$0D,$38,$10,$38,$12 .db $38,$1D,$38,$FF,$FF,$FF,$FF,$53 .db $2E,$00,$15,$16,$38,$0A,$38,$1C .db $38,$14,$38,$FC,$00,$14,$38,$18 .db $38,$18,$38,$19,$38,$0A,$38,$1C .db $38,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF