.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