; SkoolKit disassembly for Chaos - The Battle of Wizards ; ; Copyright (c) 1985 Games Workshop ; ; Disassembly by Guesser & Szeliga (https://szeliga.zapto.org/stuff/Chaos/chaos.html) @start=$7D00 @org=$4000 ; Title screen ; ; #UDGTABLE ; { #SCR(loading) | CHAOS title screen. } ; TABLE# @label=DISPLAY_FILE b$4000 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4020 DEFB $00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4040 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4060 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4080 DEFB $00,$01,$FF,$FF,$F0,$3F,$E3,$FE,$0F,$FF,$FF,$83,$FF,$FF,$E1,$FF,$FF,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $40A0 DEFB $00,$00,$FE,$0F,$80,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $40C0 DEFB $00,$00,$FE,$00,$00,$1F,$F1,$FC,$07,$FC,$7F,$01,$FC,$1F,$C0,$3F,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $40E0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4100 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4120 DEFB $00,$00,$42,$00,$3C,$00,$00,$00,$00,$00,$42,$00,$00,$20,$00,$40,$00,$00,$00,$18,$3C,$3C,$7E,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4140 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4160 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4180 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$FF,$FF,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $41A0 DEFB $00,$00,$FE,$0E,$00,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $41C0 DEFB $00,$00,$FE,$00,$60,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$0F,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $41E0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4200 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4220 DEFB $00,$00,$99,$00,$42,$38,$68,$38,$38,$00,$42,$38,$1C,$28,$38,$40,$38,$78,$00,$28,$42,$42,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4240 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4260 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4280 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$FF,$FF,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $42A0 DEFB $00,$00,$FE,$08,$00,$1F,$C3,$FC,$07,$F0,$FF,$01,$FC,$1F,$C0,$FE,$07,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $42C0 DEFB $00,$00,$FE,$01,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$03,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $42E0 DEFB $00,$00,$FF,$1F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FE,$3F,$C0,$FF,$1F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4300 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4320 DEFB $00,$00,$A1,$00,$40,$04,$54,$44,$40,$00,$42,$44,$20,$30,$40,$78,$44,$44,$00,$08,$42,$3C,$7C,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4340 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4360 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4380 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$FF,$FF,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $43A0 DEFB $00,$00,$FE,$00,$00,$1F,$CF,$FC,$07,$F3,$FF,$01,$FC,$1F,$C0,$FE,$01,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $43C0 DEFB $00,$00,$FE,$07,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$C0,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $43E0 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4400 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4420 DEFB $00,$00,$A1,$00,$4E,$3C,$54,$78,$38,$00,$42,$44,$20,$30,$38,$44,$44,$44,$00,$08,$3E,$42,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4440 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4460 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4480 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$FF,$FF,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $44A0 DEFB $00,$00,$FE,$00,$00,$1F,$FF,$FC,$07,$FF,$FF,$01,$FC,$1F,$C0,$FF,$80,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $44C0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$F0,$3F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $44E0 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4500 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4520 DEFB $00,$00,$99,$00,$42,$44,$54,$40,$04,$00,$5A,$44,$20,$28,$04,$44,$44,$78,$00,$08,$02,$42,$42,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4540 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4560 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4580 DEFB $00,$00,$FF,$1F,$E0,$1F,$C1,$FC,$07,$F8,$FF,$01,$FE,$3F,$C0,$FF,$1F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $45A0 DEFB $00,$00,$FE,$00,$00,$1F,$FF,$FC,$07,$FF,$FF,$01,$FC,$1F,$C0,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $45C0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FC,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $45E0 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4600 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4620 DEFB $00,$00,$42,$00,$3C,$3C,$54,$3C,$78,$00,$24,$38,$20,$24,$78,$44,$38,$40,$00,$3E,$3C,$3C,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4640 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4660 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4680 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $46A0 DEFB $00,$00,$FE,$00,$00,$1F,$FF,$FC,$07,$FF,$FF,$01,$FC,$1F,$C0,$FF,$F8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $46C0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $46E0 DEFB $00,$00,$FF,$FF,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FF,$FF,$C0,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4700 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4720 DEFB $00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4740 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4760 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4780 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $47A0 DEFB $00,$00,$FE,$00,$00,$1F,$FD,$FC,$07,$FF,$7F,$01,$FC,$1F,$C0,$FF,$FE,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $47C0 DEFB $00,$00,$FE,$0F,$E0,$1F,$C1,$FC,$07,$F0,$7F,$01,$FC,$1F,$C0,$FE,$0F,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $47E0 DEFB $00,$01,$FF,$FF,$F0,$3F,$E3,$FE,$0F,$F8,$FF,$83,$FF,$FF,$E1,$FF,$FF,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4800 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4820 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4840 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$76,$FE,$3F,$FD,$EF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00 $4860 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$01,$E0,$00,$F7,$FC,$8C,$DE,$FF,$FF,$FD,$2F,$B8,$70,$00,$00,$00,$00 $4880 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$30,$3C,$00,$00,$07,$00,$07,$6F,$82,$FE,$FF,$00,$7B,$3D,$3E,$F5,$FA,$37,$00,$00 $48A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$00,$00,$00,$00,$37,$FD,$FF,$F3,$79,$7F,$AF,$DF,$4F,$7D,$E0 $48C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$F0,$00,$7F,$00,$1F,$0F,$EF,$DF,$DF,$D9,$1F,$C7,$7F,$7E,$F1 $48E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$7F,$7D,$FD $4900 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4920 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4940 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$8F,$79,$FF,$FE,$2F,$FF,$FF,$80,$00,$00,$00,$00,$00,$00 $4960 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FF,$F8,$00,$F7,$FC,$EC,$DE,$FF,$FF,$FE,$F7,$BB,$AF,$C0,$00,$00,$00 $4980 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$39,$FE,$00,$00,$07,$00,$07,$5F,$FD,$FE,$FE,$FF,$7C,$FE,$FE,$CE,$F9,$FB,$C0,$00 $49A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$00,$00,$00,$03,$83,$FD,$FF,$EF,$67,$BF,$9F,$DF,$BF,$7E,$E0 $49C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$F8,$03,$FA,$00,$F8,$7F,$EF,$0F,$1F,$0F,$EF,$DF,$7F,$7F,$7F $49E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$7E,$FD,$FF $4A00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4A20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4A40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$00,$00,$00,$F3,$67,$FF,$FF,$DF,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00 $4A60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FC,$00,$7B,$FE,$73,$BE,$FF,$FF,$FF,$77,$5B,$9F,$E0,$00,$00,$00 $4A80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$DF,$00,$00,$07,$00,$07,$3F,$FD,$FE,$FE,$FF,$3D,$FE,$FF,$3F,$65,$FD,$F0,$00 $4AA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$00,$00,$00,$1F,$54,$FD,$F3,$EF,$1F,$BE,$5F,$DE,$3F,$7E,$F0 $4AC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$F4,$03,$C7,$FE,$00,$00,$00,$00,$6F,$BF,$7F,$7F,$7F $4AE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$7E,$FB,$FF $4B00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4B20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4B40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$00,$00,$01,$5C,$6F,$FF,$FF,$C0,$1F,$FF,$F0,$00,$00,$00,$00,$00,$00 $4B60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7E,$00,$3D,$FF,$1F,$7F,$7F,$FF,$FF,$77,$6A,$6F,$E6,$00,$00,$00 $4B80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$03,$80,$7F,$07,$00,$06,$0F,$E3,$FD,$FE,$FF,$D2,$FD,$7F,$7F,$5D,$FD,$F8,$00 $4BA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$00,$00,$00,$3E,$AA,$1C,$0F,$AF,$7F,$B9,$DF,$DD,$BF,$7E,$F0 $4BC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$E8,$1C,$3F,$FC,$00,$00,$00,$00,$1C,$3E,$FF,$7E,$FF $4BE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$06,$CE,$FB,$FF $4C00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4C20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4C40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$01,$7B,$8F,$FF,$FF,$DF,$E0,$3F,$F0,$00,$00,$00,$00,$00,$00 $4C60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$00,$1E,$FE,$60,$FF,$7F,$FF,$FE,$F8,$F1,$F7,$CF,$00,$00,$00 $4C80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$C0,$FF,$C7,$00,$06,$03,$DF,$FD,$FE,$FF,$CE,$F3,$7C,$BF,$BE,$FD,$FE,$00 $4CA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$80,$00,$00,$FD,$55,$00,$F7,$5F,$7F,$A7,$DF,$C3,$BF,$7E,$F8 $4CC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$D0,$33,$FF,$F0,$00,$00,$00,$00,$03,$DE,$FC,$00,$FF $4CE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$31,$17,$FF $4D00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4D20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$38,$00,$0D,$FF,$F8,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4D40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$01,$BB,$70,$FF,$FF,$DF,$FF,$C7,$F0,$00,$00,$00,$00,$00,$00 $4D60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00,$0F,$7D,$7D,$7F,$BF,$FF,$FE,$F3,$FB,$F7,$37,$C0,$00,$00 $4D80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$E3,$FF,$E7,$00,$03,$00,$EF,$FF,$FE,$FF,$DF,$6F,$73,$BF,$3E,$FE,$00,$00 $4DA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$80,$00,$03,$EA,$AA,$1F,$CF,$DC,$FF,$1F,$DE,$1F,$BF,$60,$F8 $4DC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FF,$80,$4F,$F9,$C0,$00,$00,$00,$00,$01,$DE,$C3,$7E,$0F $4DE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$EF,$E7,$FE $4E00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4E20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7B,$FD,$FE,$1F,$FE,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4E40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$01,$C7,$7B,$7F,$FF,$3F,$FF,$FB,$F6,$00,$00,$00,$00,$00,$00 $4E60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$07,$8D,$7E,$BF,$4F,$FF,$FD,$ED,$E5,$F6,$FB,$E0,$00,$00 $4E80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$C3,$FF,$00,$00,$00,$07,$FB,$FD,$7F,$DF,$1F,$0F,$BC,$BD,$F8,$FB,$80 $4EA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$80,$00,$0F,$D5,$55,$3C,$3F,$E3,$7C,$EF,$D1,$DF,$B8,$1E,$1C $4EC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$E1,$3F,$7E,$F3 $4EE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$EF,$E8,$FD $4F00 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $4F20 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$01,$C1,$E3,$F1,$FF,$F0,$00,$00,$00,$00,$00,$00,$00 $4F40 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1C,$00,$00,$01,$F7,$85,$80,$00,$FF,$FF,$FD,$CF,$B3,$F0,$00,$00,$00,$00 $4F60 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$00,$00,$F3,$7E,$C0,$F0,$FF,$83,$DD,$DD,$F9,$FB,$D8,$00,$00 $4F80 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$00,$FF,$00,$00,$00,$03,$F7,$FD,$00,$2C,$7F,$FF,$B3,$DD,$F7,$7D,$C0 $4FA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$C0,$00,$3F,$A0,$A0,$F3,$FF,$EF,$23,$E7,$CF,$D8,$07,$7E,$EE $4FC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$70,$00,$00,$00,$00,$00,$00,$00,$1F,$7F,$7E,$FB $4FE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$DF,$EF,$3B $5000 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FE,$3F,$C0,$00,$00,$00,$00,$00,$01,$BF,$DF,$D7 $5020 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$C0,$FF,$F8,$7F,$7F,$BF,$D3,$F7,$EF,$E0,$00,$00,$00,$7F,$E5,$FF $5040 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$BF,$FF,$DF,$80,$7E,$FB,$F9,$F9,$FD,$3B,$FB,$F8,$00,$73,$7F,$7F,$D7 $5060 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FA,$BC,$1F,$FF,$FF,$58,$00,$00,$00,$00,$28,$AC,$09,$CF,$7F,$DF,$FB,$FD $5080 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$A3,$F9,$5F,$FF,$BF,$FE,$F8,$DF,$DF,$87,$01,$BF,$F7,$C6,$FF,$7F,$EF,$FD,$FF $50A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$57,$FB,$FF,$EF,$FD,$3E,$D3,$DF,$DE,$FD,$FF,$37,$FF,$BC,$EF,$FF,$7C $50C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$FF,$DE,$3F,$E3,$F8,$55,$7F,$D3,$FD,$F7,$F7,$EF,$BF,$F7,$9F,$EF,$DF,$DF,$F7,$FF,$00 $50E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7E,$F3,$FE,$AB,$AF,$F4,$F5,$55,$C7,$7A,$FD,$FE,$DF,$FF,$BF,$FF,$DF,$FF,$EE,$7A,$00,$00 $5100 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$81,$F9,$DF,$F1,$E0,$00,$00,$00,$00,$00,$7F,$BF,$D7 $5120 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$3F,$7F,$FB,$87,$7F,$BF,$EF,$F7,$C0,$40,$00,$00,$01,$8F,$FB,$FF $5140 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$BF,$FF,$E0,$7F,$86,$F5,$F6,$E6,$F2,$FF,$FF,$6C,$00,$4F,$7F,$BF,$CF $5160 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$F9,$7B,$EF,$FF,$FC,$E8,$00,$00,$00,$00,$14,$40,$53,$BF,$7F,$DF,$FB,$FD $5180 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$AF,$FA,$9F,$FF,$7F,$FE,$E5,$DF,$9F,$F0,$FE,$3F,$EF,$F9,$7F,$7F,$EF,$FD,$FF $51A0 DEFB $7C,$00,$10,$00,$00,$00,$00,$42,$3E,$7E,$3C,$3C,$78,$7E,$00,$3B,$FB,$FF,$EF,$F8,$FF,$6F,$EF,$BF,$3D,$FF,$D7,$FF,$BF,$6F,$FF,$78 $51C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$FF,$9E,$C0,$1F,$FA,$02,$EF,$EF,$FD,$EF,$F7,$DF,$DF,$EF,$EF,$DF,$EF,$DF,$F7,$FE,$00 $51E0 DEFB $00,$10,$00,$00,$78,$00,$00,$00,$00,$00,$7D,$FC,$7D,$55,$9F,$FB,$F8,$AA,$AE,$F6,$FB,$FE,$EF,$FF,$5F,$FF,$CF,$FF,$EF,$98,$00,$00 $5200 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$DF,$FF,$7E,$27,$E7,$CE,$F8,$00,$00,$00,$00,$01,$9F,$7F,$E7 $5220 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3D,$FF,$7F,$FB,$FB,$7F,$5F,$D7,$F4,$2F,$EE,$00,$00,$03,$F7,$E5,$FF $5240 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$DF,$FC,$17,$FF,$B8,$0E,$EF,$1E,$0E,$FA,$AA,$F2,$01,$BF,$BF,$DF,$AF $5260 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$FA,$FB,$F3,$FF,$E3,$E0,$00,$00,$00,$00,$0A,$02,$00,$7F,$7F,$DF,$FB,$FD $5280 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$AF,$F9,$5F,$FF,$7F,$FD,$9E,$EF,$6F,$F6,$FE,$C7,$DF,$FD,$9F,$BF,$EF,$FE,$FF $52A0 DEFB $42,$44,$38,$38,$38,$00,$00,$42,$08,$04,$42,$42,$44,$40,$00,$9F,$FB,$FF,$EF,$F5,$FF,$5F,$F7,$7F,$DB,$FF,$EF,$FF,$BF,$8F,$FF,$70 $52C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3E,$FC,$6E,$FF,$DF,$FD,$50,$5C,$1F,$FD,$EF,$FB,$DF,$EF,$DF,$F7,$DF,$F3,$DF,$F7,$FC,$00 $52E0 DEFB $00,$10,$38,$00,$44,$38,$44,$44,$00,$00,$3D,$FB,$8A,$AB,$BF,$C5,$FE,$55,$45,$4F,$77,$FE,$F7,$FF,$6F,$FF,$B3,$FF,$EF,$E0,$00,$00 $5300 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$BF,$FE,$FF,$DF,$FB,$3F,$7D,$00,$00,$00,$00,$01,$E6,$FF,$EB $5320 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$73,$FF,$7F,$FB,$FC,$FF,$5F,$B7,$F3,$F7,$EF,$00,$00,$03,$FB,$DE,$FF $5340 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$EF,$F3,$F9,$FF,$DC,$00,$00,$0F,$56,$FD,$FD,$E8,$07,$BF,$BF,$EE,$77 $5360 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$F9,$77,$FC,$7F,$DF,$D8,$00,$00,$00,$00,$05,$15,$1F,$80,$7F,$DF,$FB,$F3 $5380 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$AF,$FA,$8F,$FE,$FF,$FB,$7E,$F6,$F7,$CF,$3D,$F8,$BF,$FB,$E3,$BF,$EF,$FE,$FF $53A0 DEFB $7C,$44,$10,$44,$40,$10,$00,$42,$08,$08,$40,$42,$42,$7C,$00,$AF,$F7,$FF,$DF,$ED,$FF,$BF,$F6,$FF,$EB,$FF,$E7,$FF,$BF,$F1,$FF,$60 $53C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$73,$EE,$FF,$BF,$FA,$AA,$83,$DF,$FD,$DF,$FD,$BF,$F7,$DF,$FB,$DF,$FD,$DF,$F7,$F8,$00 $53E0 DEFB $00,$10,$44,$00,$42,$44,$44,$28,$00,$00,$DD,$F7,$F7,$47,$37,$3D,$FF,$AA,$AB,$BF,$6F,$EC,$F7,$FF,$77,$FF,$BC,$3F,$F7,$F8,$00,$00 $5400 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$7F,$FC,$FF,$A7,$FC,$FF,$9E,$00,$00,$00,$00,$01,$F9,$FF,$DD $5420 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$6F,$FF,$7F,$FD,$FF,$7F,$6F,$7B,$CB,$F7,$EF,$00,$00,$05,$FD,$3E,$FF $5440 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D,$B7,$EF,$FE,$FF,$E8,$00,$00,$00,$2A,$F3,$FB,$9A,$0F,$BF,$BF,$FF,$F7 $5460 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$FA,$F7,$FF,$87,$B8,$00,$00,$00,$00,$00,$00,$AA,$7F,$7F,$8F,$EF,$FD,$EF $5480 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$77,$FD,$53,$FE,$FF,$F4,$FE,$F6,$FB,$BF,$DB,$FF,$1F,$FB,$FC,$3F,$EF,$FE,$FF $54A0 DEFB $42,$44,$10,$78,$38,$00,$00,$42,$08,$10,$40,$42,$42,$40,$00,$D5,$F7,$FF,$DF,$ED,$FF,$5F,$FA,$FF,$F3,$FF,$EB,$FF,$BF,$F6,$1F,$00 $54C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$6F,$EA,$BF,$BF,$F7,$51,$7F,$DF,$FD,$BF,$FE,$BF,$F9,$DF,$FD,$DF,$FE,$DF,$F7,$F0,$00 $54E0 DEFB $00,$10,$78,$00,$42,$44,$44,$10,$00,$00,$EE,$EF,$B0,$28,$80,$ED,$FF,$00,$14,$55,$55,$DB,$FB,$FF,$7B,$FF,$BF,$DF,$F7,$E0,$00,$00 $5500 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$7F,$FB,$7F,$B9,$FB,$7F,$E1,$7E,$00,$00,$00,$01,$FA,$7F,$BF $5520 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$9F,$FF,$BF,$FD,$FF,$9E,$F6,$FB,$BB,$F7,$CF,$C0,$00,$0D,$F8,$FF,$7E $5540 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1D,$7B,$DF,$FF,$3F,$F0,$00,$00,$00,$15,$45,$75,$45,$0F,$BF,$DF,$E3,$FB $5560 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$DF,$F9,$6F,$FF,$F8,$47,$BB,$00,$00,$00,$00,$00,$10,$FE,$FF,$73,$EF,$FD,$9F $5580 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$79,$FC,$9C,$7D,$FF,$07,$FE,$FD,$FC,$BF,$E7,$FF,$67,$FB,$FF,$BF,$EF,$FE,$FF $55A0 DEFB $42,$3C,$10,$40,$04,$00,$00,$5A,$08,$20,$42,$42,$44,$40,$00,$CA,$F7,$EF,$DF,$9D,$FE,$DF,$F9,$FF,$F5,$FF,$ED,$FF,$BF,$F7,$E0,$00 $55C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$5F,$EC,$7D,$BF,$F7,$AA,$EF,$DF,$ED,$7F,$FF,$7F,$FD,$DF,$FE,$DF,$FF,$1F,$F7,$C0,$00 $55E0 DEFB $00,$10,$40,$00,$44,$44,$44,$28,$00,$00,$F6,$55,$45,$D5,$55,$5C,$FF,$CA,$82,$AA,$2B,$BB,$FD,$FF,$7D,$FF,$BF,$EF,$F7,$C0,$00,$00 $5600 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$FB,$FF,$7E,$E7,$BF,$1F,$BF,$00,$00,$00,$01,$E7,$BF,$7F $5620 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$FF,$BF,$FE,$FF,$6E,$FA,$FD,$7B,$FE,$2F,$E0,$00,$3D,$E6,$FF,$BD $5640 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7A,$FD,$3F,$FF,$CF,$E8,$00,$00,$00,$0A,$22,$E3,$80,$1F,$9F,$DF,$17,$FB $5660 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$DF,$FC,$EF,$FF,$E7,$FF,$BD,$80,$00,$00,$00,$07,$F9,$FE,$FF,$7C,$6F,$FC,$7F $5680 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$7E,$7D,$5F,$80,$00,$F7,$FE,$F5,$FF,$7F,$F3,$FE,$FB,$FB,$FF,$8F,$EF,$FF,$7F $56A0 DEFB $7C,$04,$0C,$3C,$78,$10,$00,$24,$3E,$7E,$3C,$3C,$78,$7E,$00,$25,$77,$DF,$DF,$7D,$FD,$EF,$F6,$FF,$F6,$FF,$EE,$7F,$BF,$F7,$FF,$00 $56C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$3F,$F6,$EB,$BF,$F7,$D5,$5F,$5F,$DE,$FF,$7F,$3F,$FE,$BF,$FF,$1F,$FF,$EF,$FB,$80,$00 $56E0 DEFB $00,$0C,$3C,$00,$78,$38,$38,$44,$00,$00,$FB,$2A,$AB,$CA,$8A,$AA,$7F,$E5,$51,$55,$17,$5B,$FE,$FE,$FE,$FF,$BF,$F3,$F7,$00,$00,$00 $5700 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FF,$00,$03,$FF,$7F,$5F,$DC,$EF,$DF,$80,$00,$00,$01,$9F,$DE,$FF $5720 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$FF,$DF,$FF,$7F,$75,$FD,$FE,$FD,$C5,$F7,$F0,$00,$3C,$1F,$7F,$BB $5740 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$F9,$FE,$FF,$FF,$F0,$18,$00,$00,$00,$00,$59,$51,$14,$50,$60,$00,$F7,$FB $5760 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$DC,$02,$6F,$FF,$DF,$FF,$7D,$3F,$00,$00,$00,$1F,$FA,$3E,$FF,$7F,$80,$01,$FF $5780 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$FF,$80,$8F,$FD,$FF,$EF,$FE,$C2,$FC,$BF,$ED,$FD,$FC,$FB,$FF,$B3,$EF,$FF,$7E $57A0 DEFB $00,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F2,$B2,$BF,$DC,$FD,$FB,$EF,$EF,$7F,$F7,$7F,$EF,$BF,$DF,$F7,$FF,$00 $57C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7E,$CF,$F9,$57,$B7,$F7,$E8,$BA,$DB,$BC,$FE,$FF,$3F,$FF,$3F,$FF,$DF,$FF,$E0,$FB,$00,$00 $57E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FD,$55,$47,$E5,$55,$57,$3F,$F2,$A8,$AA,$AA,$BB,$FF,$3E,$FF,$7F,$7F,$FD,$F0,$00,$00,$00 $5800 DEFB $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $5820 DEFB $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$07,$07,$07,$07,$07 $5840 DEFB $06,$02,$42,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$42,$02,$02,$02,$02,$02,$02,$02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $5860 DEFB $06,$42,$02,$42,$02,$02,$02,$02,$02,$02,$02,$02,$02,$42,$02,$42,$02,$02,$02,$02,$02,$02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $5880 DEFB $06,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $58A0 DEFB $06,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $58C0 DEFB $06,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$02,$02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07 $58E0 DEFB $06,$02,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$42,$02,$04,$04,$04,$04,$04,$04,$04,$07,$07,$07,$07,$07,$04 $5900 DEFB $06,$07,$07,$07,$42,$07,$42,$07,$42,$07,$42,$02,$42,$02,$42,$02,$42,$06,$06,$04,$04,$04,$04,$04,$04,$44,$04,$04,$07,$07,$07,$04 $5920 DEFB $06,$07,$07,$07,$07,$42,$07,$42,$07,$42,$02,$42,$02,$02,$02,$02,$02,$06,$04,$44,$44,$44,$44,$44,$44,$44,$44,$04,$04,$04,$04,$04 $5940 DEFB $06,$07,$07,$07,$07,$07,$42,$07,$42,$07,$42,$07,$02,$02,$42,$02,$02,$06,$06,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44 $5960 DEFB $06,$02,$02,$02,$02,$02,$02,$42,$02,$42,$02,$42,$42,$42,$42,$42,$42,$02,$06,$06,$04,$04,$44,$44,$44,$04,$04,$44,$44,$44,$44,$44 $5980 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$42,$42,$42,$42,$42,$42,$42,$42,$42,$02,$47,$06,$06,$06,$06,$04,$04,$04,$04,$04,$44,$44,$44,$44 $59A0 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$42,$07,$07,$02,$42,$42,$42,$42,$42,$02,$02,$02,$02,$06,$06,$06,$04,$04,$04,$04,$44,$44,$44 $59C0 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$42,$07,$07,$07,$02,$02,$02,$02,$02,$02,$06,$06,$06,$06,$06,$06,$06,$06,$04,$04,$04,$44 $59E0 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$04,$04,$04,$04,$04,$04,$04,$04,$04,$06,$06,$06,$06,$06,$06,$06,$06,$06,$04,$04,$44 $5A00 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$44,$44,$44,$04,$04,$04,$44,$44,$44,$44,$44,$44,$44,$44,$44,$04,$04,$06,$04,$04,$04 $5A20 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$04,$04,$04,$04,$04,$44,$44,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04 $5A40 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$44,$44,$44,$04,$04,$04,$04,$04,$06,$06,$06,$06,$04,$04,$04,$04,$04,$04,$04,$04 $5A60 DEFB $06,$07,$07,$07,$07,$07,$07,$07,$07,$07,$04,$04,$44,$44,$44,$04,$04,$04,$04,$04,$04,$04,$04,$04,$44,$44,$44,$04,$04,$04,$04,$04 $5A80 DEFB $07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$44,$44,$44,$04,$04,$04,$04,$04,$04,$04,$44,$44,$44,$44,$44,$04,$04,$04,$04,$04,$04,$04 $5AA0 DEFB $38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$38,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04 $5AC0 DEFB $07,$07,$07,$07,$07,$04,$04,$04,$04,$04,$44,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$44 $5AE0 DEFB $03,$03,$03,$03,$03,$03,$03,$03,$03,$04,$44,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$44 ; Data block at 5B00 b$5B00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C00 DEFB $FF,$00,$00,$00,$FF,$00,$23,$0D $5C08 DEFB $0D,$23,$05,$00,$00,$00,$10,$14 $5C10 DEFB $01,$00,$06,$00,$0B,$00,$01,$00 $5C18 DEFB $01,$00,$06,$00,$10,$00,$00,$00 $5C20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C30 DEFB $00,$00,$00,$00,$00,$00,$00,$3C $5C38 DEFB $40,$00,$FF,$CD,$00,$15,$79,$00 $5C40 DEFB $00,$00,$0A,$00,$FF,$28,$00,$01 $5C48 DEFB $38,$00,$00,$26,$5D,$00,$00,$B6 $5C50 DEFB $5C,$BB,$5C,$CB,$5C,$18,$5D,$CA $5C58 DEFB $5C,$27,$5D,$2A,$5D,$17,$5D,$81 $5C60 DEFB $5D,$2C,$5D,$2C,$5D,$2C,$5D,$2D $5C68 DEFB $92,$5C,$00,$02,$00,$00,$00,$00 $5C70 DEFB $00,$00,$00,$00,$B6,$1A,$00,$00 $5C78 DEFB $05,$00,$00,$58,$FF,$00,$00,$21 $5C80 DEFB $00,$5B,$21,$17,$C0,$50,$E0,$50 $5C88 DEFB $21,$02,$21,$17,$03,$38,$00,$38 $5C90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CB0 DEFB $00,$00,$18,$79,$FF,$FF,$F4,$09 $5CB8 DEFB $A8,$10,$4B,$F4,$09,$C4,$15,$53 $5CC0 DEFB $81,$0F,$C4,$15,$52,$F4,$09,$C4 $5CC8 DEFB $15,$50,$80,$00,$0A,$0D,$00,$FD $5CD0 DEFB $33,$31,$30,$30,$30,$0E,$00,$00 $5CD8 DEFB $18,$79,$00,$0D,$00,$14,$05,$00 $5CE0 DEFB $EF,$22,$22,$AA,$0D,$00,$19,$14 $5CE8 DEFB $00,$F5,$AC,$32,$30,$0E,$00,$00 $5CF0 DEFB $14,$00,$00,$2C,$30,$0E,$00,$00 $5CF8 DEFB $00,$00,$00,$3B,$0D,$00,$1E,$05 $5D00 DEFB $00,$EF,$22,$22,$AF,$0D,$00,$28 $5D08 DEFB $0E,$00,$F9,$C0,$33,$32,$30,$30 $5D10 DEFB $30,$0E,$00,$00,$00,$7D,$00,$0D $5D18 DEFB $00,$32,$0A,$00,$EC,$34,$30,$0E $5D20 DEFB $00,$00,$28,$00,$00,$0D,$80,$EF $5D28 DEFB $22,$22,$0D,$80,$00,$00,$00,$7D $5D30 DEFB $00,$20,$20,$20,$20,$20,$20,$00 $5D38 DEFB $00,$00,$00,$00,$00,$03,$57,$49 $5D40 DEFB $5A,$43,$4F,$44,$45,$10,$00,$20 $5D48 DEFB $E8,$86,$00,$7D,$00,$80,$00,$00 $5D50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5ED0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5ED8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6000 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6008 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6010 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6018 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6020 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6028 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6030 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6038 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6040 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6048 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6050 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6058 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6060 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6068 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6070 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6078 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6080 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6088 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6090 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6098 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6100 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6108 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6110 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6118 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6120 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6128 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6130 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6138 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6140 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6148 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6150 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6158 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6160 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6168 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6170 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6178 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6180 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6188 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6190 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6198 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6200 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6208 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6210 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6218 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6220 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6228 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6238 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6240 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6248 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6250 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6258 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6260 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6268 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6270 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6278 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6280 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6288 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6290 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6298 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6300 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6308 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6310 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6318 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6320 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6328 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6330 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6338 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6340 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6348 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6350 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6358 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6360 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6368 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6370 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6378 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6380 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6388 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6390 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6398 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6400 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6408 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6410 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6418 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6420 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6428 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6430 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6438 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6440 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6448 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6450 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6458 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6460 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6468 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6470 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6478 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6480 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6488 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6490 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6498 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6500 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6508 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6510 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6518 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6520 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6528 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6530 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6538 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6540 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6548 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6550 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6558 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6560 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6568 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6570 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6578 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6580 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6588 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6590 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6598 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6600 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6608 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6610 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6618 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6620 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6628 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6630 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6638 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6640 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6648 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6650 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6658 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6660 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6668 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6670 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6678 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6680 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6688 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6690 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6698 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6700 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6708 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6710 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6718 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6720 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6728 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6730 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6738 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6740 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6748 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6750 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6758 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6760 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6768 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6770 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6778 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6780 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6788 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6790 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6798 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6800 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6808 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6810 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6818 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6820 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6828 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6830 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6838 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6840 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6848 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6850 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6858 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6860 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6868 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6870 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6878 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6880 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6888 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6890 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6898 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6900 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6908 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6910 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6918 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6920 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6928 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6930 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6938 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6940 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6948 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6950 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6958 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6960 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6968 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6970 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6978 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6980 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6988 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6990 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6998 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $69F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6A98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6AF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6B98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6BF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6C98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6CF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6D98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6DF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6E98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6ED0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6ED8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6EF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6F98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6FF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7000 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7008 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7010 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7018 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7020 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7028 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7030 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7038 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7040 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7048 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7050 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7058 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7060 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7068 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7070 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7078 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7080 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7088 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7090 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7098 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $70F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7100 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7108 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7110 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7118 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7120 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7128 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7130 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7138 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7140 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7148 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7150 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7158 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7160 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7168 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7170 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7178 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7180 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7188 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7190 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7198 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $71F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7200 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7208 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7210 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7218 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7220 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7228 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7238 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7240 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7248 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7250 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7258 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7260 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7268 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7270 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7278 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7280 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7288 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7290 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7298 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $72F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7300 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7308 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7310 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7318 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7320 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7328 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7330 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7338 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7340 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7348 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7350 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7358 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7360 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7368 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7370 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7378 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7380 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7388 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7390 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7398 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $73F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7400 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7408 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7410 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7418 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7420 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7428 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7430 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7438 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7440 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7448 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7450 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7458 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7460 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7468 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7470 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7478 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7480 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7488 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7490 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7498 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $74F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7500 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7508 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7510 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7518 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7520 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7528 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7530 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7538 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7540 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7548 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7550 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7558 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7560 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7568 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7570 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7578 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7580 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7588 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7590 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7598 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $75F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7600 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7608 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7610 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7618 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7620 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7628 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7630 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7638 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7640 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7648 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7650 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7658 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7660 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7668 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7670 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7678 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7680 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7688 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7690 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7698 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $76F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7700 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7708 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7710 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7718 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7720 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7728 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7730 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7738 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7740 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7748 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7750 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7758 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7760 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7768 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7770 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7778 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7780 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7788 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7790 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7798 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $77F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7800 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7808 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7810 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7818 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7820 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7828 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7830 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7838 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7840 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7848 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7850 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7858 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7860 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7868 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7870 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7878 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7880 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7888 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7890 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7898 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $78E8 DEFB $00,$00,$00,$00,$00,$DB,$02,$DB $78F0 DEFB $02,$4D,$00,$B3,$34,$21,$02,$A3 $78F8 DEFB $2D,$B7,$2D,$2C,$5D,$27,$5D,$00 $7900 DEFB $7D,$2B,$2D,$65,$33,$00,$00,$ED $7908 DEFB $10,$0D,$00,$09,$00,$85,$1C,$10 $7910 DEFB $1C,$52,$1B,$76,$1B,$03,$13,$00 $7918 DEFB $3E,$00,$00,$00,$00,$00,$00,$00 $7920 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7928 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7930 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7938 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7940 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7948 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7950 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7958 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7960 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7968 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7970 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7978 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7980 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7988 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7990 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7998 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $79F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7A98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7AF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7CF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Entrypoint c$7D00 JP $89F9 ; ; Data block at 7D03 b$7D03 DEFB $03 ; Routine at 7D04 ; ; Used by the routine at #R$95B8. c$7D04 LD A,($7D03) ; $7D07 CP $06 ; $7D09 RET M ; $7D0A LD HL,$E01F ; $7D0D LD ($AC12),HL ; $7D10 LD B,$9F ; *$7D12 PUSH BC ; $7D13 LD A,(HL) ; $7D14 CP $02 ; $7D16 JP M,$7D3B ; $7D19 CP $22 ; $7D1B JP P,$7D3B ; $7D1E LD DE,$0281 ; $7D21 ADD HL,DE ; $7D22 LD A,(HL) ; $7D23 SUB $29 ; $7D25 LD HL,$AC0E ; $7D28 CP (HL) ; $7D29 JR Z,$7D3B ; $7D2B LD HL,($AC12) ; $7D2E LD DE,$01E1 ; $7D31 ADD HL,DE ; $7D32 LD A,(HL) ; $7D33 AND $07 ; $7D35 LD HL,$AC0E ; $7D38 CP (HL) ; $7D39 JR Z,$7D52 ; *$7D3B POP BC ; $7D3C LD HL,($AC12) ; $7D3F INC HL ; $7D40 LD ($AC12),HL ; $7D43 DJNZ $7D12 ; $7D45 LD HL,$AC1E ; $7D48 LD D,$00 ; $7D4A LD A,($AC0E) ; $7D4D LD E,A ; $7D4E ADD HL,DE ; $7D4F LD (HL),$14 ; $7D51 RET ; *$7D52 POP BC ; $7D53 LD HL,$AC1E ; $7D56 LD D,$00 ; $7D58 LD A,($AC0E) ; $7D5B LD E,A ; $7D5C ADD HL,DE ; $7D5D LD (HL),$00 ; $7D5F RET ; ; Data block at 7D60 b$7D60 DEFB $5D,$09,$FF,$00,$00,$F1,$99,$02 $7D68 DEFB $08,$03,$01,$12,$75,$99,$03,$08 $7D70 DEFB $03,$FF,$12,$75,$99,$04,$08,$03 $7D78 DEFB $FF,$12,$75,$99,$05,$07,$03,$00 $7D80 DEFB $12,$75,$99,$06,$07,$03,$FF,$12 $7D88 DEFB $75,$99,$07,$05,$03,$01,$12,$75 $7D90 DEFB $99,$08,$06,$03,$02,$12,$75,$99 $7D98 DEFB $09,$09,$03,$FF,$12,$75,$99,$0A $7DA0 DEFB $05,$03,$01,$12,$75,$99,$0B,$06 $7DA8 DEFB $03,$00,$12,$75,$99,$0C,$06,$03 $7DB0 DEFB $FF,$12,$75,$99,$0D,$04,$03,$FF $7DB8 DEFB $12,$75,$99,$0E,$09,$03,$00,$12 $7DC0 DEFB $75,$99,$0F,$03,$03,$01,$12,$75 $7DC8 DEFB $99,$10,$08,$03,$01,$12,$75,$99 $7DD0 DEFB $11,$05,$03,$02,$12,$75,$99,$12 $7DD8 DEFB $06,$03,$01,$12,$75,$99,$13,$05 $7DE0 DEFB $03,$02,$12,$75,$99,$14,$05,$03 $7DE8 DEFB $01,$12,$75,$99,$15,$03,$03,$FF $7DF0 DEFB $12,$75,$99,$16,$07,$03,$FF,$12 $7DF8 DEFB $75,$99,$17,$00,$03,$FF,$12,$75 $7E00 DEFB $99,$18,$00,$03,$FF,$12,$75,$99 $7E08 DEFB $19,$00,$03,$02,$12,$75,$99,$1A $7E10 DEFB $05,$03,$FF,$12,$75,$99,$1B,$06 $7E18 DEFB $03,$01,$12,$75,$99,$1C,$01,$03 $7E20 DEFB $FE,$12,$75,$99,$1D,$04,$03,$FF $7E28 DEFB $12,$75,$99,$1E,$05,$03,$FF,$12 $7E30 DEFB $75,$99,$1F,$04,$03,$FF,$12,$75 $7E38 DEFB $99,$20,$06,$03,$FF,$12,$75,$99 $7E40 DEFB $21,$08,$03,$FF,$12,$75,$99,$61 $7E48 DEFB $08,$0D,$FF,$12,$75,$99,$60,$07 $7E50 DEFB $0D,$FF,$12,$75,$99,$24,$07,$11 $7E58 DEFB $01,$11,$DD,$9A,$25,$03,$11,$FF $7E60 DEFB $12,$DD,$9A,$26,$04,$11,$01,$17 $7E68 DEFB $DD,$9A,$27,$04,$11,$FF,$17,$DD $7E70 DEFB $9A,$28,$07,$0D,$00,$0C,$76,$9B $7E78 DEFB $70,$09,$0D,$00,$12,$59,$9C,$70 $7E80 DEFB $09,$0D,$00,$12,$59,$9C,$62,$09 $7E88 DEFB $09,$00,$12,$59,$9C,$62,$09,$09 $7E90 DEFB $00,$12,$59,$9C,$63,$07,$1E,$FF $7E98 DEFB $0C,$E0,$9D,$65,$07,$1E,$01,$0C $7EA0 DEFB $E0,$9D,$64,$04,$1E,$FE,$0B,$E0 $7EA8 DEFB $9D,$66,$04,$1E,$02,$0B,$E0,$9D $7EB0 DEFB $6B,$06,$00,$01,$17,$04,$84,$6C $7EB8 DEFB $03,$00,$01,$17,$6A,$83,$6D,$03 $7EC0 DEFB $00,$01,$10,$9C,$83,$6E,$06,$00 $7EC8 DEFB $01,$10,$D0,$83,$6F,$04,$00,$01 $7ED0 DEFB $11,$6A,$84,$7B,$04,$00,$00,$0E $7ED8 DEFB $38,$84,$67,$07,$00,$02,$05,$B0 $7EE0 DEFB $84,$68,$05,$00,$04,$06,$B0,$84 $7EE8 DEFB $69,$07,$00,$FE,$05,$B0,$84,$6A $7EF0 DEFB $05,$00,$FC,$06,$B0,$84,$7D,$06 $7EF8 DEFB $00,$00,$12,$C0,$84,$75,$09,$0F $7F00 DEFB $00,$12,$F7,$84,$75,$09,$0F,$00 $7F08 DEFB $12,$F7,$84,$73,$04,$09,$FF,$12 $7F10 DEFB $F6,$85,$73,$04,$09,$FF,$12,$F6 $7F18 DEFB $85,$76,$09,$14,$FF,$11,$EF,$86 $7F20 DEFB $76,$09,$14,$FF,$11,$EF,$86,$FF $7F28 DEFB $80,$80,$87,$8C,$88,$8C,$87,$FF $7F30 DEFB $01,$01,$E1,$31,$11,$01,$E1,$80 $7F38 DEFB $80,$88,$8C,$87,$80,$80,$FF,$31 $7F40 DEFB $11,$11,$31,$E1,$01,$01,$FF,$0F $7F48 DEFB $01,$12,$1C,$12,$00,$12,$17,$12 $7F50 DEFB $3E,$0E,$36,$12,$00,$12,$20,$12 $7F58 DEFB $00,$12,$2B,$12,$0B,$12,$00,$00 $7F60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7F68 DEFB $00,$00,$00,$00,$00,$00,$00,$12 $7F70 DEFB $00,$12,$00,$12,$00,$12,$00,$12 $7F78 DEFB $3C,$12,$1D,$12,$0B,$12,$19,$12 $7F80 DEFB $17,$12,$19,$10,$2C,$10,$34,$10 $7F88 DEFB $34,$0F,$01,$0D,$1F,$0C,$28,$00 $7F90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7F98 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FA0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FB8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7FF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8000 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8008 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8010 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8018 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8020 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8028 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8030 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8038 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8040 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8048 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8050 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8058 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8060 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8068 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8070 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8078 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8080 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $8088 DEFB $12,$02,$00,$05,$00,$1F,$00,$08 $8090 DEFB $00,$1D,$00,$01,$00,$00,$00,$00 $8098 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $80A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $80A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $80B0 DEFB $00,$00,$00,$81,$41,$21,$13,$0F $80B8 DEFB $00,$00,$00,$80,$80,$C0,$C0,$C0 $80C0 DEFB $00,$01,$03,$03,$03,$07,$00,$00 $80C8 DEFB $C0,$C0,$C0,$C0,$E0,$F0,$00,$00 $80D0 DEFB $00,$00,$20,$21,$11,$11,$0F,$03 $80D8 DEFB $00,$00,$00,$80,$80,$C0,$C0,$C0 $80E0 DEFB $00,$01,$03,$03,$03,$07,$00,$00 $80E8 DEFB $C0,$C0,$C0,$C0,$E0,$F0,$00,$00 $80F0 DEFB $08,$08,$08,$09,$09,$0D,$07,$01 $80F8 DEFB $00,$00,$00,$80,$80,$C0,$C0,$C0 $8100 DEFB $00,$01,$03,$03,$03,$07,$00,$00 $8108 DEFB $C0,$C0,$C0,$C0,$E0,$F0,$00,$00 $8110 DEFB $00,$00,$00,$01,$01,$01,$03,$03 $8118 DEFB $00,$00,$00,$80,$80,$C0,$E0,$D0 $8120 DEFB $03,$03,$0F,$03,$03,$07,$00,$00 $8128 DEFB $D0,$D0,$C0,$C0,$E0,$E0,$00,$00 $8130 DEFB $00,$00,$00,$01,$01,$01,$03,$23 $8138 DEFB $00,$00,$00,$80,$80,$C0,$E0,$D0 $8140 DEFB $15,$09,$03,$03,$03,$07,$00,$00 $8148 DEFB $D0,$D0,$C0,$C0,$E0,$E0,$00,$00 $8150 DEFB $00,$00,$00,$01,$01,$41,$23,$1F $8158 DEFB $00,$00,$00,$80,$80,$C0,$E0,$D0 $8160 DEFB $01,$01,$03,$03,$03,$07,$00,$00 $8168 DEFB $D0,$D0,$C0,$C0,$E0,$E0,$00,$00 $8170 DEFB $01,$01,$05,$0E,$07,$0B,$09,$0A $8178 DEFB $80,$80,$A0,$70,$E0,$D0,$90,$50 $8180 DEFB $0B,$07,$06,$06,$0C,$0C,$0C,$00 $8188 DEFB $D0,$E0,$60,$60,$30,$30,$30,$00 $8190 DEFB $00,$00,$00,$01,$01,$01,$03,$05 $8198 DEFB $00,$00,$00,$80,$80,$C0,$B0,$78 $81A0 DEFB $09,$03,$03,$03,$07,$07,$00,$00 $81A8 DEFB $78,$78,$78,$B0,$C0,$F0,$00,$00 $81B0 DEFB $00,$00,$00,$31,$79,$FF,$8F,$05 $81B8 DEFB $00,$00,$00,$8C,$9E,$FF,$F1,$A0 $81C0 DEFB $09,$03,$02,$06,$04,$04,$00,$00 $81C8 DEFB $90,$C0,$40,$60,$20,$20,$00,$00 $81D0 DEFB $00,$00,$00,$01,$01,$0F,$3F,$7D $81D8 DEFB $00,$00,$00,$80,$80,$F0,$FC,$BE $81E0 DEFB $89,$03,$02,$06,$04,$04,$00,$00 $81E8 DEFB $91,$C0,$40,$60,$20,$20,$00,$00 $81F0 DEFB $00,$00,$00,$01,$01,$03,$0F,$1F $81F8 DEFB $00,$00,$00,$80,$80,$C0,$F0,$F8 $8200 DEFB $19,$33,$22,$26,$04,$04,$00,$00 $8208 DEFB $98,$CC,$44,$64,$20,$20,$00,$00 $8210 DEFB $00,$01,$03,$03,$03,$1F,$03,$03 $8218 DEFB $00,$00,$60,$60,$70,$F0,$70,$70 $8220 DEFB $03,$01,$01,$01,$01,$01,$00,$00 $8228 DEFB $70,$F0,$F0,$F0,$F8,$FC,$00,$00 $8230 DEFB $00,$01,$01,$02,$02,$0F,$02,$02 $8238 DEFB $00,$00,$60,$E0,$F0,$F8,$F0,$F0 $8240 DEFB $01,$01,$01,$01,$01,$01,$00,$00 $8248 DEFB $70,$F0,$F0,$F0,$F8,$FC,$00,$00 $8250 DEFB $00,$00,$01,$01,$02,$07,$02,$01 $8258 DEFB $00,$80,$60,$60,$70,$FC,$70,$70 $8260 DEFB $01,$00,$01,$01,$01,$01,$00,$00 $8268 DEFB $70,$F0,$F0,$F0,$F8,$FC,$00,$00 $8270 DEFB $00,$01,$03,$03,$03,$FB,$03,$03 $8278 DEFB $00,$00,$60,$60,$70,$F8,$70,$70 $8280 DEFB $03,$01,$01,$01,$01,$01,$00,$00 $8288 DEFB $70,$F0,$F0,$F0,$F8,$FC,$00,$00 $8290 DEFB $B0,$80,$D0,$80,$F0,$80,$D0,$80 $8298 DEFB $10,$81,$30,$81,$50,$81,$30,$81 $82A0 DEFB $70,$81,$70,$81,$70,$81,$70,$81 $82A8 DEFB $90,$81,$90,$81,$90,$81,$90,$81 $82B0 DEFB $B0,$81,$D0,$81,$F0,$81,$D0,$81 $82B8 DEFB $10,$82,$30,$82,$50,$82,$70,$82 $82C0 DEFB $34,$FD,$34,$FD,$34,$FD,$34,$FD $82C8 DEFB $54,$FD,$54,$FD,$54,$FD,$54,$FD $82D0 DEFB $74,$FD,$74,$FD,$74,$FD,$74,$FD $82D8 DEFB $94,$FD,$94,$FD,$94,$FD,$94,$FD $82E0 DEFB $B4,$FD,$B4,$FD,$B4,$FD,$B4,$FD $82E8 DEFB $D4,$FD,$D4,$FD,$D4,$FD,$D4,$FD $82F0 DEFB $F4,$FD,$F4,$FD,$F4,$FD,$F4,$FD $82F8 DEFB $14,$FE,$14,$FE,$14,$FE,$14,$FE ; Routine at 8300 ; ; Used by the routines at #R$8324, #R$8360, #R$84D3 and #R$8741. c$8300 PUSH HL ; $8301 LD A,($AC0E) ; $8304 LD B,$00 ; $8306 ADD A,$28 ; $8308 SLA A ; $830A LD C,A ; $830B LD HL,$E3E0 ; $830E ADD HL,BC ; $830F LD E,(HL) ; $8310 INC HL ; $8311 LD D,(HL) ; $8312 EX DE,HL ; $8313 LD DE,$0017 ; $8316 LD ($89AA),HL ; $8319 ADD HL,DE ; $831A LD ($8321),HL ; $831D POP HL ; $831E RET ; ; Data block at 831F b$831F DEFB $D0,$82,$A1,$90,$00 ; Routine at 8324 ; ; Used by the routines at #R$8360 and #R$8741. c$8324 CALL $8300 ; $8327 LD B,$04 ; *$8329 PUSH BC ; $832A LD B,$02 ; *$832C PUSH BC ; $832D LD HL,($831F) ; $8330 LD A,(HL) ; $8331 INC HL ; $8332 LD ($831F),HL ; $8335 LD HL,($8321) ; $8338 LD (HL),A ; $8339 INC HL ; $833A LD ($8321),HL ; $833D POP BC ; $833E DJNZ $832C ; $8340 LD HL,($8321) ; $8343 INC HL ; $8344 LD ($8321),HL ; $8347 POP BC ; $8348 DJNZ $8329 ; $834A RET ; ; Routine at 834B ; ; 25th July 2020 Wizard modifiers ; . ; Returns the byte for the current player's modifiers. c$834B LD A,($AC0E) ; $834E LD D,$00 ; $8350 LD E,A ; $8351 LD HL,$AC16 ; $8354 ADD HL,DE ; $8355 LD A,(HL) ; $8356 RET ; ; If player is human, display wizard name, spell being cast, and spell casting ; range. ; ; This is called by spells that the wizard casts on himself. It displays his ; data, updates L/C balance, and displays a twirling effect on his sprite. c$8357 LD A,($AC2E) ; $835A OR A ; $835B JR Z,$8360 ; $835D CALL $967A ; *$8360 CALL $9760 ; Call routine09 to determine if a spell succeeds and then ; updates the global Chaos/Law balance. $8363 CALL $97D1 ; Call routine12 to calculate the coordinates of the ; current player. $8366 CALL $A18A ; Call routine20 to display the twirling effect on the ; target of the spell. $8369 RET ; Return ; Routine at 836A c$836A LD A,($AC2E) ; $836D OR A ; $836E JR Z,$837D ; $8370 CALL $834B ; $8373 AND $80 ; $8375 JR Z,$837D ; $8377 LD A,$00 ; $8379 LD ($975F),A ; $837C RET ; *$837D CALL $8357 ; $8380 LD A,($9167) ; $8383 OR A ; $8384 JR Z,$8395 ; $8386 LD HL,$82A0 ; $8389 LD ($831F),HL ; $838C CALL $8324 ; $838F CALL $834B ; $8392 OR $C0 ; $8394 LD (HL),A ; *$8395 CALL $C0DD ; $8398 CALL $97A3 ; $839B RET ; $839C LD A,($AC2E) ; $839F OR A ; $83A0 JR Z,$83AF ; $83A2 CALL $834B ; $83A5 AND $04 ; $83A7 JR Z,$83AF ; $83A9 LD A,$00 ; $83AB LD ($975F),A ; $83AE RET ; *$83AF CALL $8357 ; $83B2 LD A,($9167) ; $83B5 OR A ; $83B6 JR Z,$83C9 ; $83B8 LD HL,$8290 ; $83BB LD ($831F),HL ; $83BE CALL $8324 ; $83C1 CALL $834B ; $83C4 AND $FC ; $83C6 OR $04 ; $83C8 LD (HL),A ; *$83C9 CALL $C0DD ; $83CC CALL $97A3 ; $83CF RET ; $83D0 LD A,($AC2E) ; $83D3 OR A ; $83D4 JR Z,$83E3 ; $83D6 CALL $834B ; $83D9 AND $07 ; $83DB JR Z,$83E3 ; $83DD LD A,$00 ; $83DF LD ($975F),A ; $83E2 RET ; *$83E3 CALL $8357 ; $83E6 LD A,($9167) ; $83E9 OR A ; $83EA JR Z,$83FD ; $83EC LD HL,$8298 ; $83EF LD ($831F),HL ; $83F2 CALL $8324 ; $83F5 CALL $834B ; $83F8 AND $F8 ; $83FA OR $02 ; $83FC LD (HL),A ; *$83FD CALL $C0DD ; $8400 CALL $97A3 ; $8403 RET ; $8404 LD A,($AC2E) ; $8407 OR A ; $8408 JR Z,$8417 ; $840A CALL $834B ; $840D AND $40 ; $840F JR Z,$8417 ; $8411 LD A,$00 ; $8413 LD ($975F),A ; $8416 RET ; *$8417 CALL $8357 ; $841A LD A,($9167) ; $841D OR A ; $841E JR Z,$8431 ; $8420 LD HL,$82A8 ; $8423 LD ($831F),HL ; $8426 CALL $8324 ; $8429 CALL $834B ; $842C AND $7F ; $842E OR $40 ; $8430 LD (HL),A ; *$8431 CALL $C0DD ; $8434 CALL $97A3 ; $8437 RET ; $8438 LD A,($AC2E) ; $843B OR A ; $843C JR Z,$844B ; $843E CALL $834B ; $8441 AND $20 ; $8443 JR Z,$844B ; $8445 LD A,$00 ; $8447 LD ($975F),A ; $844A RET ; *$844B CALL $8357 ; $844E LD A,($9167) ; $8451 OR A ; $8452 JR Z,$8463 ; $8454 LD HL,$82B0 ; $8457 LD ($831F),HL ; $845A CALL $8324 ; $845D CALL $834B ; $8460 OR $20 ; $8462 LD (HL),A ; *$8463 CALL $C0DD ; $8466 CALL $97A3 ; $8469 RET ; $846A LD A,($AC2E) ; $846D OR A ; $846E JR Z,$8486 ; $8470 CALL $8300 ; $8473 OR A ; $8474 LD HL,($8321) ; $8477 LD DE,$0009 ; $847A SBC HL,DE ; $847C LD A,(HL) ; $847D OR A ; $847E JR Z,$8486 ; $8480 LD A,$00 ; $8482 LD ($975F),A ; $8485 RET ; *$8486 CALL $8357 ; $8489 LD A,($9167) ; $848C OR A ; $848D JR Z,$84A9 ; $848F LD HL,$82B8 ; $8492 LD ($831F),HL ; $8495 CALL $8324 ; $8498 CALL $8300 ; $849B LD DE,$0009 ; $849E OR A ; $849F LD HL,($8321) ; $84A2 SBC HL,DE ; $84A4 LD (HL),$03 ; $84A6 INC HL ; $84A7 LD (HL),$06 ; *$84A9 CALL $C0DD ; $84AC CALL $97A3 ; $84AF RET ; $84B0 LD A,($AC2E) ; $84B3 OR A ; $84B4 JR Z,$84B9 ; $84B6 CALL $967A ; *$84B9 CALL $9760 ; $84BC CALL $97A3 ; $84BF RET ; $84C0 LD A,($AC2E) ; $84C3 OR A ; $84C4 JR Z,$84D3 ; $84C6 CALL $834B ; Get the moodifier byte for the current wizard. $84C9 BIT 3,(HL) ; {If the wizard does not yet have Shadow Form then jump $84CB JR Z,$84D3 ; to #R$84D3.} $84CD LD A,$00 ; {Otherwise set #R$975F to 0. $84CF LD ($975F),A ; } $84D2 RET ; Return. ; Display wizard's data, update L/C balance, and display a twirling effect on ; his sprite. ; ; Used by the routines at #R$8360 and #R$84C6. c$84D3 CALL $8357 ; $84D6 CALL $97A3 ; $84D9 LD A,($9167) ; {Return if the spell failed. $84DC OR A ; $84DD RET Z ; $84DE CALL $8300 ; } $84E1 LD HL,($8321) ; this is how he makes the wizard "flash" - OOER!!! Set up ; pointer to wizard animation first frame. $84E4 LD DE,$0005 ; {Set up offset to second frame. $84E7 ADD HL,DE ; } $84E8 LD (HL),$00 ; Set frame attribute colours to black on black. $84EA LD DE,$0006 ; {Set up offset to fourth frame. $84ED ADD HL,DE ; } $84EE LD (HL),$00 ; Set frame attribute colours to black on black. $84F0 CALL $834B ; {Set the Shadow Form flag on this wizard's modifier $84F3 OR $08 ; byte. $84F5 LD (HL),A ; } $84F6 RET ; {Return. $84F7 LD A,($AC2E) ; $84FA OR A ; $84FB JR NZ,$853B ; $84FD CALL $BED7 ; $8500 LD A,$03 ; $8502 LD ($5C91),A ; } ; This entry point is used by the routine at #R$851B. *$8505 CALL $BC96 ; $8508 CALL $02BF ; $850B CP $53 ; $850D JR Z,$851B ; $850F CP $4B ; $8511 JR NZ,$8505 ; $8513 LD HL,$C2B1 ; $8516 CALL $C2F9 ; $8519 EI ; $851A RET ; } ; Call #R$85EC to load HL with the cursor position. ; ; 25th July 2020 More on the "Subversion" spell c$851B CALL $85EC ; $851E JR NZ,$8505 ; If there was a byte in table 5 then jump back to #R$8505 ; - is this because table 5 holds Wizard IDs and you ; cannot subvert a wizard? $8520 LD HL,($AC12) ; Load HL with the cursor position. $8523 LD A,(HL) ; Load A with the current object. $8524 CP $22 ; {If it is a gooey blob or later object from the object $8526 JP P,$8505 ; table, then jump back to #R$8505 - because you cannot ; take control of these objects either.} $8529 OR A ; {If the map is empty at the cursor, jump back to #R$8505 $852A JR Z,$8505 ; - you cannot control what is not there!} $852C CALL $9786 ; Call routine to see if the target is in range [I think]. $852F JP M,$8505 ; Jump back to #R$8505 if it is not in range [I think]. $8532 CALL $98DB ; Call routine to see if there is line of sight to the ; object - the routine uses 'LOF' which might be 'Line Of ; Fire' ???? $8535 JR NZ,$8505 ; Jump back to #R$8505 if ... if it's not??? $8537 CALL $859C ; All conditions are met so call #R$859C to carry out the ; spell. $853A RET ; Return. ; ... ; ; Used by the routine at #R$84D3. c$853B LD HL,($AC14) ; $853E LD ($C78B),HL ; $8541 CALL $C7BC ; $8544 LD HL,($C78B) ; $8547 LD ($AC14),HL ; $854A LD HL,$D3F2 ; $854D LD ($CD86),HL ; $8550 LD A,($C7BB) ; $8553 INC A ; $8554 CALL $C64C ; ; This entry point is used by the routine at #R$8567. *$8557 CALL $A17E ; {.. $855A CP $FF ; $855C JR NZ,$8567 ; $855E LD A,$00 ; $8560 LD ($975F),A ; } $8563 CALL $96E6 ; Call routine to pause for a while. $8566 RET ; Return. ; Point HL at the map area. ; ; Used by the routine at #R$853B. c$8567 LD HL,$E01F ; $856A LD D,$00 ; {.. $856C LD E,A ; $856D ADD HL,DE ; $856E LD ($AC12),HL ; $8571 CALL $85EC ; $8574 JR NZ,$8557 ; $8576 LD HL,($AC12) ; $8579 LD A,(HL) ; $857A CP $22 ; $857C JP P,$8557 ; $857F OR A ; $8580 JR Z,$8557 ; } $8582 CALL $9786 ; Call #R$9786 to see if target is in range ??? $8585 JP M,$8557 ; {.. $8588 CALL $98DB ; $858B JR NZ,$8557 ; } $858D LD HL,($AC12) ; Load HL with the cursor position. $8590 LD DE,$01E1 ; {Load DE with an offset into table 4. $8593 ADD HL,DE ; } $8594 BIT 5,(HL) ; Test the 'UNDEAD' bit of the corresponding byte. $8596 JR NZ,$8557 ; If the target is an undead creature then jump to ; #R$8557. $8598 CALL $859C ; Otherwise call #R$859C. $859B RET ; Return. ; Load A with the vale of #R$AC2E. ; ; Used by the routines at #R$851B and #R$8567. c$859C LD A,($AC2E) ; $859F OR A ; See if A is set. $85A0 JR Z,$85A5 ; If the current player is not computer-controlled then ; jump to #R$85A5. $85A2 CALL $967A ; Call #R$967A to display wizard name, spell being cast, ; and spell casting range. *$85A5 CALL $A18A ; Call #R$A18A to display a twirling animation at the ; cursor coordinates. $85A8 LD HL,($AC12) ; Load HL with the cursor position. $85AB LD DE,$01E1 ; Load DE with an offset into the 4th map table. $85AE ADD HL,DE ; Point HL at the corresponding byte in the 4th map table. $85AF BIT 4,(HL) ; See if the current creature has been disbelieved [I ; think]. $85B1 JR NZ,$85CA ; If the creature has been marked as disbelieved then the ; spell must fail so jump to #R$85CA. $85B3 LD HL,($AC12) ; Otherwise load HL with the cursor position. $85B6 LD D,(HL) ; Load D with the object at the cursor. $85B7 LD E,$13 ; Load E with 19 which is the offset to a creature's MAGIC ; RESISTANCE. $85B9 CALL $BE0A ; Call routine to load A with the target creature's magic ; resistance. $85BC INC A ; Increment the value. $85BD LD ($A172),A ; Store the increment value in #R$A172. $85C0 CALL $904B ; Call #R$904B to load A with a random number that is 0 ; to 9. $85C3 LD HL,$A172 ; {If the value in A is less than the creature's magic $85C6 CP (HL) ; resistance then the spell succeeded so jump to #R$85D3. $85C7 JP M,$85D3 ; } *$85CA LD A,$00 ; The spell failed so load A with 0. $85CC LD ($9167),A ; Set #R$9167 to 0. $85CF CALL $97A3 ; Call routine to display a message that the spell failed. $85D2 RET ; Return. ; The spell succeeded so load HL with the cursor position. ; ; Used by the routine at #R$859C. c$85D3 LD HL,($AC12) ; $85D6 LD DE,$01E1 ; Load DE with an offset to the 4th table. $85D9 ADD HL,DE ; Point HL at the corresponding byte in the 4th table. $85DA LD A,(HL) ; Load A with the byte from the 4th table. $85DB AND $F8 ; Blank out the owner from the bottom three bits. $85DD LD E,A ; Save the modified byte from A into e. $85DE LD A,($AC0E) ; Load A with the number of the current player. $85E1 ADD A,E ; Add the saved bits onto A from E. $85E2 LD (HL),A ; Save the updated byte back into the 4th table - i.e. we ; have changed the owner of the creature. $85E3 LD A,$01 ; {Set the #R$9167 flag to 1. $85E5 LD ($9167),A ; } $85E8 CALL $97A3 ; Call routine to say that the spell succeeded. $85EB RET ; Return. ; Load DE with an offset of 4 tables. ; ; Used by the routines at #R$851B and #R$8567. c$85EC LD HL,($AC12) ; $85EF LD DE,$0281 ; {Point HL into table 5. $85F2 ADD HL,DE ; } $85F3 LD A,(HL) ; Load A with the corresponding byte from table 5. $85F4 OR A ; Set the zero flag if A is empty. $85F5 RET ; Return. ; If the current player is computer-controlled then jump to #R$8639. ; ; IN PROGRESS 28th July 2020 RaiseDead c$85F6 LD A,($AC2E) ; $85F9 OR A ; $85FA JR NZ,$8639 ; $85FC CALL $BED7 ; Hugh Mann: Clear bottom row of the screen. $85FF LD A,$03 ; {Set P FLAG to 3 so that "OVER 1" is activated for $8601 LD ($5C91),A ; printing.} ; This entry point is used by the routine at #R$861A. *$8604 CALL $BC96 ; Allow user to interact with the objects on the map. $8607 CALL $02BF ; Call KEYBOARD in ROM. $860A CP $53 ; {If they pressed 'S' to select a creature then jump to $860C JR Z,$861A ; #R$861A.} $860E CP $4B ; {If they pressed 'K' to cancel then jump to #R$8604. $8610 JR NZ,$8604 ; } $8612 LD HL,$C2B1 ; {Play #R$C2B1 - the "CANCEL" sound effect. $8615 CALL $C2F9 ; } $8618 EI ; Enable interrupts. $8619 RET ; Return. ; Load A with the object at the cursor. ; ; Used by the routine at #R$85F6. c$861A LD HL,($AC12) ; $861D LD A,(HL) ; $861E OR A ; $861F JR Z,$8604 ; If the monstrous retard has tried to resurrect AN EMPTY ; CELL then jump to #R$8604. $8621 LD DE,$0141 ; {Otherwise cbeck that they haven't been equally stupid $8624 ADD HL,DE ; and tried to RAISE A LIVING CREATURE... $8625 LD A,(HL) ; $8626 CP $04 ; } $8628 JR NZ,$8604 ; Sigh, they did, so jump to #R$8604. $862A CALL $9786 ; This seems a brighter player so call #R$9786 to see if ; the dead creature is in range. $862D JP M,$8604 ; Nope - jump to #R$8604. $8630 CALL $98DB ; It is in range but do we have line of sight to it? [I ; think "???"] $8633 JR NZ,$8604 ; Nope - jump to #R$8604. $8635 CALL $86C3 ; My goodness, conditions met - HOLD ON, LAZARUS, I'M ON ; MY WAY! $8638 RET ; Return. ; Store address of #R$D3F2 in #R$CD86. ; ; Used by the routine at #R$85F6. c$8639 LD HL,$D3F2 ; $863C LD ($CD86),HL ; $863F LD HL,$E01F ; {Store address of #R$E01F in #R$AC12. $8642 LD ($AC12),HL ; } $8645 LD B,$9F ; Set loop counter to map size. *$8647 PUSH BC ; Preserve loop counter. $8648 LD A,(HL) ; Load A with the object code from the map. $8649 LD ($A172),A ; Store it temporarily in #R$A172. $864C LD DE,$0141 ; {Point HL at byte in #R$E160. $864F ADD HL,DE ; } $8650 LD A,(HL) ; Load A with animation frame info. $8651 CP $04 ; {If the object IS NOT DEAD, DAMMIT, jump to #R$8676. $8653 JR NZ,$8676 ; } $8655 LD HL,$C6D4 ; The thing's kicked the bucket so point HL at #R$C6D4 ; "???" $8658 LD D,$00 ; ... "???" $865A LD A,($A172) ; Load A with the object code. $865D SUB $02 ; {.. $865F LD E,A ; $8660 ADD HL,DE ; $8661 LD B,(HL) ; $8662 LD HL,($AC12) ; $8665 LD DE,$E01F ; $8668 OR A ; $8669 SBC HL,DE ; $866B LD A,L ; $866C LD HL,($CD86) ; $866F LD (HL),B ; $8670 INC HL ; $8671 LD (HL),A ; $8672 INC HL ; $8673 LD ($CD86),HL ; *$8676 LD HL,($AC12) ; $8679 INC HL ; $867A LD ($AC12),HL ; } $867D POP BC ; Restore loop counter. $867E DJNZ $8647 ; {Loop back to #R$8647. $8680 LD HL,$D3F2 ; $8683 LD ($CD86),HL ; $8686 LD A,($C7BB) ; $8689 INC A ; $868A CALL $C64C ; } ; This entry point is used by the routine at #R$869A. *$868D CALL $A17E ; $8690 CP $FF ; $8692 JR NZ,$869A ; } $8694 LD A,$00 ; {Set #R$975F to 0. "???" $8696 LD ($975F),A ; } $8699 RET ; Return. ; Load HL with address of #R$E01F. ; ; Used by the routine at #R$8639. c$869A LD HL,$E01F ; $869D LD D,$00 ; {Set up offset to "???" $869F LD E,A ; } $86A0 ADD HL,DE ; {Load HL with the address of "???" $86A1 LD ($AC12),HL ; } $86A4 LD A,(HL) ; {.. $86A5 OR A ; $86A6 JR Z,$868D ; } $86A8 LD DE,$0141 ; {Point HL into #R$E160. $86AB ADD HL,DE ; } $86AC LD A,(HL) ; {If the object is not dead then jump to #R$868D. $86AD CP $04 ; $86AF JR NZ,$868D ; } $86B1 CALL $9786 ; Is the spell's target in range? $86B4 JP M,$868D ; Nope - jump to #R$868D. $86B7 CALL $98DB ; Is ....? $86BA JR NZ,$868D ; Nope - jump to #R$868D. $86BC CALL $967A ; Display information message. $86BF CALL $86C3 ; My goodness, conditions met - HOLD ON, LAZARUS, I'M ON ; MY WAY! $86C2 RET ; Return. ; Call #R$A18A to display turning animation at spell target. ; ; 25th July 2020 RAISDO c$86C3 CALL $A18A ; $86C6 CALL $9760 ; Call #R$9760 to determine if a spell succeeds and then ; update the global Chaos/Law balance. $86C9 LD A,($9167) ; {If the spell failed then return. $86CC OR A ; $86CD RET Z ; } $86CE LD HL,($AC12) ; Otherwise load HL with the cursor position. $86D1 LD DE,$0141 ; Load DE with an offset into table 3 [animation frames]. $86D4 ADD HL,DE ; Point HL into table 3. $86D5 LD (HL),$00 ; Set the corresponding animation frame to 0 - PRAISE ; JESUS! HE IS RAISED FROM THE DEAD! $86D7 LD DE,$00A0 ; Load DE with an offset of 160 bytes. $86DA ADD HL,DE ; Point HL at the corresponding byte in table 4 [owners ; etc.] $86DB LD E,$60 ; Load E with 96 to represent bit5=UNDEAD"???" and ; bit6="???" $86DD LD A,($AC0E) ; Load A with the current player number. $86E0 ADD A,E ; Set the two flags for the resurrected object. $86E1 LD (HL),A ; Store the object's attributes in table 4. $86E2 LD DE,$0140 ; Load DE with an offset into table 6 "???" $86E5 ADD HL,DE ; Point HL into table 6. $86E6 LD (HL),$00 ; Set the byte to 0 because "???" $86E8 CALL $C0DD ; Call #R$C0DD to set empty cells in map 1 from '0' to ; '1'. set map 2 to '1' and draw the border. $86EB CALL $97A3 ; Call #R$97A3 to display whether the spell succeeded or ; failed. $86EE RET ; {Return. $86EF LD A,($AC2E) ; $86F2 OR A ; $86F3 JR NZ,$86F9 ; $86F5 CALL $8741 ; $86F8 RET ; *$86F9 LD HL,($AC14) ; $86FC LD ($C78B),HL ; $86FF CALL $C7BC ; $8702 LD HL,($C78B) ; $8705 LD ($AC14),HL ; $8708 LD HL,$D3F2 ; $870B LD ($CD86),HL ; $870E LD A,($C7BB) ; $8711 INC A ; $8712 CALL $C64C ; $8715 LD A,$00 ; $8717 LD ($A172),A ; *$871A LD HL,($CD86) ; $871D LD A,(HL) ; $871E INC HL ; $871F LD ($CD86),HL ; $8722 OR A ; $8723 JR NZ,$872B ; $8725 LD A,$00 ; $8727 LD ($975F),A ; $872A RET ; *$872B LD HL,($A172) ; $872E ADD A,(HL) ; $872F LD (HL),A ; $8730 CP $1E ; $8732 JP M,$871A ; $8735 CALL $967A ; $8738 CALL $8741 ; $873B RET ; $873C NOP ; $873D NOP ; $873E NOP ; $873F NOP ; $8740 NOP ; } ; Call #R$9760 to determine whether the spell will succeed. ; ; 26th July 2020 TUR_DO ; . ; The Turmoil spell jumbles objects around on the board. Gollop once said there ; is a bug so the spell doesn't work as often as it should! c$8741 CALL $9760 ; $8744 LD A,($9167) ; {If the spell failed then jump to #R$87EB to display $8747 OR A ; message and return. $8748 JP Z,$87EB ; } $874B CALL $A173 ; Call #R$A173 to set all objects as movable. $874E LD HL,$E01F ; Point HL at #R$E01F. $8751 LD ($AC14),HL ; Copy the address of #R$E01F into #R$AC14. $8754 LD B,$9F ; Set loop counter to map size. *$8756 PUSH BC ; Preserve loop counter. $8757 LD A,(HL) ; Load the byte at the current position. $8758 OR A ; {If the map is empty at this position then jump to $8759 JP Z,$87DF ; #R$87DF to move on.} $875C LD DE,$01E1 ; {Point HL at the corresponding byte in table 4. $875F ADD HL,DE ; } $8760 BIT 7,(HL) ; Test bit 7 for the current object to see if it is ; movable in this turn. $8762 JR NZ,$87DF ; If we are not moving this object then jump to #R$87DF to ; move along. $8764 LD HL,($AC14) ; Load HL with address of current map position. $8767 LD ($873C),A ; Store the current object code in #R$873C [CREature 000?] $876A LD DE,$0141 ; Set up offset into table 3. $876D ADD HL,DE ; Point HL into table 3 [animation frame]. $876E LD A,(HL) ; Load the animation byte into A. $876F LD ($8740),A ; Store it in #R$8740. $8772 LD DE,$00A0 ; Set up offset to table 4. $8775 ADD HL,DE ; Point HL into table 4 [owner + flags]. $8776 LD A,(HL) ; Load A with the owner/flags info for the current object. $8777 LD ($873D),A ; Store it in #R$873D. $877A ADD HL,DE ; Point HL into table 5. $877B LD A,(HL) ; {Copy the byte from table 5 into #R$873E, in case a $877C LD ($873E),A ; wizard was mounted on this creature.} $877F ADD HL,DE ; Point HL into table 6 ["???"] $8780 LD A,(HL) ; {Copy the byte from table 6 into #R$873F. $8781 LD ($873F),A ; } *$8784 CALL $904B ; Call #R$904B to put a random number in #R$907A. $8787 LD HL,$907A ; Point HL at #R$907A. $878A ADD A,(HL) ; {If the value in A is greater than or equal to 159, $878B CP $9F ; which would take us off the map, then jump back to $878D JP P,$8784 ; #$8784.} $8790 LD HL,$E01F ; A now has a value that is a position in the map so load ; HL with #R$E01F. $8793 LD D,$00 ; {Set up the random offset in DE. $8795 LD E,A ; } $8796 ADD HL,DE ; {Add the offset to HL and store in #R$AC12. $8797 LD ($AC12),HL ; } $879A LD A,(HL) ; Load the object code for the random position. $879B OR A ; {If the destination is not available then jump to $879C JR NZ,$8784 ; #R$8784.} $879E CALL $980E ; {If the object is in the border then jump to #R$8784. $87A1 JR Z,$8784 ; } $87A3 CALL $A18A ; Call #R$A18A to display the twirling animation over the ; object. $87A6 LD HL,($AC12) ; Load HL with the cursor position, i.e. destination. $87A9 LD A,($873C) ; Load A with the object code. $87AC LD (HL),A ; Store the object in the new position. $87AD LD DE,$0141 ; Set up an offset to table 3 [animation]. $87B0 ADD HL,DE ; Point HL at the animation byte for the new position. $87B1 LD A,($8740) ; {Copy the object's animation data to the new position. $87B4 LD (HL),A ; } $87B5 LD DE,$00A0 ; {Point HL into table 4 [owner/flags]. $87B8 ADD HL,DE ; } $87B9 LD A,($873D) ; Load A with the owner/flag info the current object $87BC OR $80 ; Make sure bit 7 is set to show that the object has been ; moved. $87BE LD (HL),A ; Store the owner/flag information for the current object. $87BF ADD HL,DE ; Point HL into table 5 - IDs of mounted wizards. $87C0 LD A,($873E) ; {Copy the wizard ID [could have been 0 if no wizard was $87C3 LD (HL),A ; mounted on the creature] for this object into table 5, ; indicating that this wizard is now mounted.} $87C4 ADD HL,DE ; Point HL into table 6 which contains ..."???" $87C5 LD A,($873F) ; {Copy the byte that was in the old table 6 position to $87C8 LD (HL),A ; the new position "???"} $87C9 LD HL,($AC14) ; Load HL with the current map pointer. $87CC LD (HL),$00 ; Set the current map slot to empty. $87CE LD DE,$0281 ; {Set the corresponding slot in map 5 to empty. $87D1 ADD HL,DE ; $87D2 LD (HL),$00 ; } $87D4 LD DE,$00A0 ; {Set the corresponding slot in map 6 to empty. $87D7 ADD HL,DE ; $87D8 LD (HL),$00 ; } $87DA CALL $C0DD ; Call #R$C0D8 to set empty cells in map 1 to '1' , and ; draw the border. $87DD HALT ; Wait for an interrupt. $87DE HALT ; Wait for an interrupt. *$87DF LD HL,($AC14) ; Reload current map position into HL. $87E2 INC HL ; Increment map pointer. $87E3 LD ($AC14),HL ; Store it in #R$AC14. $87E6 POP BC ; Restore loop counter. $87E7 DEC B ; Decrement loop counter. $87E8 JP NZ,$8756 ; Loop back. *$87EB CALL $97A3 ; Call #R$97A3 to display whether the spell succeeded or ; failed. $87EE RET ; Return. ; This entry point is used by the routines at #R$89F9 and #R$8F8B. *$87EF PUSH HL ; $87F0 PUSH DE ; $87F1 PUSH BC ; $87F2 LD H,$00 ; $87F4 LD L,A ; $87F5 ADD HL,HL ; $87F6 ADD HL,HL ; $87F7 LD DE,$8809 ; $87FA ADD HL,DE ; $87FB LD E,(HL) ; $87FC INC HL ; $87FD LD D,(HL) ; $87FE INC HL ; $87FF LD C,(HL) ; $8800 EX DE,HL ; $8801 LD E,C ; $8802 POP BC ; $8803 CALL $BAEE ; $8806 POP DE ; $8807 POP HL ; $8808 RET ; ; Data block at 8809 b$8809 DEFB $59,$88,$1C,$00,$75,$88,$10,$00 $8811 DEFB $85,$88,$12,$00,$97,$88,$0F,$00 $8819 DEFB $A6,$88,$07,$00,$AD,$88,$15,$00 $8821 DEFB $C2,$88,$03,$00,$C5,$88,$02,$00 $8829 DEFB $C7,$88,$1B,$00,$E2,$88,$1C,$00 $8831 DEFB $FE,$88,$0E,$00,$0C,$89,$0E,$00 $8839 DEFB $1A,$89,$11,$00,$2B,$89,$18,$00 $8841 DEFB $41,$89,$0E,$00,$4F,$89,$0E,$00 $8849 DEFB $5D,$89,$1C,$00,$79,$89,$0E,$00 $8851 DEFB $87,$89,$10,$00,$97,$89,$10,$00 ; Message at 8859 t$8859 DEFM "CHAOS -THE BATTLE OF WIZARDSBy Julian GollopHow many wizards? (Pr" $889A DEFM "ess 1 to 8) PLAYER Computer controlled? YESNOLevel of computer wi" $88DB DEFM "zards? Enter name (12 letters max.)(Press Y or N)Which colour? Wh" $891C DEFM "ich character? 1 2 3 4 5 6 7 8(Press 2 to 8)NEW SPELL FOR " $895D DEFM "THE CONTEST IS DRAWN BETWEENTHE WINNER IS:" ; Data block at 8987 b$8987 DEFB $5E,$5E,$5E,$5E,$5E,$5E,$5E,$5E $898F DEFB $5E,$5E,$5E,$5E,$5E,$5E,$5E,$5E $8997 DEFB $5E,$20,$20,$20,$20,$20,$20,$20 $899F DEFB $20,$20,$20,$20,$20,$20,$20,$5E $89A7 DEFB $00,$32,$0F,$5C,$EA,$11,$10,$07 $89AF DEFB $0D ; Routine at 89B0 ; ; Used by the routine at #R$89F9. c$89B0 PUSH BC ; *$89B1 CALL $02BF ; $89B4 CP $31 ; $89B6 JP M,$89B1 ; $89B9 CP $39 ; $89BB JP P,$89B1 ; $89BE LD ($89A8),A ; $89C1 LD A,($8323) ; $89C4 OR A ; $89C5 JR Z,$89CF ; $89C7 LD A,($89A8) ; $89CA CP $32 ; $89CC JP M,$89B1 ; *$89CF POP BC ; $89D0 LD A,$47 ; $89D2 LD ($5C8F),A ; $89D5 LD A,($89A8) ; $89D8 CALL $BAD6 ; $89DB LD HL,$89EF ; $89DE CALL $C2F9 ; $89E1 CALL $907B ; $89E4 LD A,$00 ; $89E6 LD ($8323),A ; $89E9 LD A,($89A8) ; $89EC SUB $31 ; $89EE RET ; ; Data block at 89EF b$89EF DEFB $04,$0C,$04,$03,$02,$01,$01,$07 $89F7 DEFB $50,$22 ; Routine at 89F9 ; ; Used by the routine at #R$7D00. c$89F9 XOR A ; $89FA OUT ($FE),A ; $89FC LD ($5C8F),A ; $89FF LD ($5C8D),A ; $8A02 LD A,$FF ; $8A04 LD ($5C8E),A ; $8A07 LD A,$03 ; $8A09 LD ($5C91),A ; $8A0C DI ; $8A0D CALL $C5EE ; $8A10 LD HL,$AC16 ; $8A13 LD DE,$AC17 ; $8A16 LD (HL),$00 ; $8A18 LD BC,$001F ; $8A1B LDIR ; $8A1D LD HL,$7F47 ; $8A20 LD DE,$7F48 ; $8A23 LD (HL),$00 ; $8A25 LD BC,$013F ; $8A28 LDIR ; $8A2A LD HL,$E01F ; $8A2D LD DE,$E020 ; $8A30 LD (HL),$00 ; $8A32 LD BC,$009F ; $8A35 LDIR ; $8A37 LD HL,$E0C0 ; $8A3A LD DE,$E0C1 ; $8A3D LD (HL),$00 ; $8A3F LD BC,$031F ; $8A42 LDIR ; $8A44 LD A,$00 ; $8A46 LD ($C3A4),A ; $8A49 LD A,$5A ; $8A4B LD ($5C8F),A ; $8A4E CALL $BB57 ; $8A51 LD A,$43 ; $8A53 LD ($5C8F),A ; $8A56 LD BC,$0202 ; $8A59 LD A,$00 ; $8A5B CALL $87EF ; $8A5E LD A,$42 ; $8A60 LD ($5C8F),A ; $8A63 LD BC,$0408 ; $8A66 LD A,$01 ; $8A68 CALL $87EF ; $8A6B LD A,$46 ; $8A6D LD ($5C8F),A ; $8A70 LD BC,$0902 ; $8A73 LD A,$02 ; $8A75 CALL $87EF ; $8A78 LD A,$44 ; $8A7A LD ($5C8F),A ; $8A7D LD BC,$0B02 ; $8A80 LD A,$0E ; $8A82 CALL $87EF ; $8A85 LD BC,$0914 ; $8A88 LD A,$01 ; $8A8A LD ($8323),A ; $8A8D CALL $89B0 ; $8A90 INC A ; $8A91 LD ($AC0F),A ; $8A94 LD A,$46 ; $8A96 LD ($5C8F),A ; $8A99 LD BC,$0E02 ; $8A9C LD A,$08 ; $8A9E CALL $87EF ; $8AA1 LD A,$43 ; $8AA3 LD ($5C8F),A ; $8AA6 LD BC,$1002 ; $8AA9 LD A,$03 ; $8AAB CALL $87EF ; $8AAE LD BC,$0E1D ; $8AB1 CALL $89B0 ; $8AB4 LD ($89A7),A ; $8AB7 SLA A ; $8AB9 SLA A ; $8ABB ADD A,$0F ; $8ABD LD ($89A9),A ; $8AC0 LD B,$0A ; *$8AC2 PUSH BC ; $8AC3 CALL $96E6 ; $8AC6 POP BC ; $8AC7 DJNZ $8AC2 ; $8AC9 LD A,$00 ; $8ACB LD ($AC0E),A ; $8ACE LD A,($AC0F) ; $8AD1 LD B,A ; $8AD2 LD HL,$D3F2 ; $8AD5 LD ($CD86),HL ; *$8AD8 PUSH BC ; $8AD9 CALL $C5EE ; $8ADC LD A,$69 ; $8ADE LD ($5C8F),A ; $8AE1 CALL $BB57 ; $8AE4 LD BC,$0202 ; $8AE7 LD A,$46 ; $8AE9 LD ($5C8F),A ; $8AEC LD A,$04 ; $8AEE CALL $87EF ; $8AF1 LD A,($AC0E) ; $8AF4 ADD A,$31 ; $8AF6 CALL $BAD6 ; $8AF9 LD A,$43 ; $8AFB LD ($5C8F),A ; $8AFE LD BC,$0402 ; $8B01 LD A,$09 ; $8B03 CALL $87EF ; $8B06 CALL $8300 ; $8B09 LD A,$00 ; $8B0B LD ($89AE),A ; $8B0E LD HL,$0602 ; $8B11 LD ($89AC),HL ; $8B14 LD A,$45 ; $8B16 LD ($5C8F),A ; *$8B19 CALL $02BF ; $8B1C LD ($89AF),A ; $8B1F CP $0D ; $8B21 JP Z,$8B95 ; $8B24 CP $0C ; $8B26 JR NZ,$8B56 ; $8B28 LD A,($89AE) ; $8B2B OR A ; $8B2C JR Z,$8B19 ; $8B2E LD BC,($89AC) ; $8B32 DEC BC ; $8B33 LD A,$20 ; $8B35 CALL $BAD6 ; $8B38 LD HL,($89AC) ; $8B3B DEC HL ; $8B3C LD ($89AC),HL ; $8B3F LD HL,$89AE ; $8B42 DEC (HL) ; $8B43 LD HL,($89AA) ; $8B46 DEC HL ; $8B47 LD ($89AA),HL ; $8B4A LD HL,$89EF ; $8B4D CALL $C2F9 ; $8B50 CALL $96E6 ; $8B53 JP $8B19 ; *$8B56 LD A,($89AE) ; $8B59 CP $0B ; $8B5B JP Z,$8B19 ; $8B5E LD A,($89AF) ; $8B61 CP $20 ; $8B63 JR Z,$8B6F ; $8B65 CP $41 ; $8B67 JP M,$8B19 ; $8B6A CP $7B ; $8B6C JP P,$8B19 ; *$8B6F LD HL,($89AA) ; $8B72 LD (HL),A ; $8B73 INC HL ; $8B74 LD ($89AA),HL ; $8B77 LD HL,$89AE ; $8B7A INC (HL) ; $8B7B LD BC,($89AC) ; $8B7F CALL $BAD6 ; $8B82 LD HL,($89AC) ; $8B85 INC HL ; $8B86 LD ($89AC),HL ; $8B89 LD HL,$89EF ; $8B8C CALL $C2F9 ; $8B8F CALL $907B ; $8B92 JP $8B19 ; *$8B95 LD A,($89AE) ; $8B98 OR A ; $8B99 JP Z,$8B19 ; $8B9C LD H,$00 ; $8B9E LD A,($AC0E) ; $8BA1 ADD A,$29 ; $8BA3 LD L,A ; $8BA4 ADD HL,HL ; $8BA5 ADD HL,HL ; $8BA6 LD DE,$CDD3 ; $8BA9 ADD HL,DE ; $8BAA INC HL ; $8BAB INC HL ; $8BAC LD A,($89AE) ; $8BAF LD (HL),A ; $8BB0 CALL $907B ; $8BB3 LD BC,$0902 ; $8BB6 LD A,$43 ; $8BB8 LD ($5C8F),A ; $8BBB LD A,$05 ; $8BBD CALL $87EF ; $8BC0 LD A,$46 ; $8BC2 LD ($5C8F),A ; $8BC5 LD A,$00 ; $8BC7 LD ($AC2E),A ; *$8BCA CALL $02BF ; $8BCD CP $59 ; $8BCF JR Z,$8BDF ; $8BD1 CP $4E ; $8BD3 JR NZ,$8BCA ; $8BD5 LD BC,$0917 ; $8BD8 LD A,$07 ; $8BDA CALL $87EF ; $8BDD JR $8BF8 ; *$8BDF LD BC,$0917 ; $8BE2 LD A,$06 ; $8BE4 CALL $87EF ; $8BE7 LD HL,$AC26 ; $8BEA LD D,$00 ; $8BEC LD A,($AC0E) ; $8BEF LD E,A ; $8BF0 ADD HL,DE ; $8BF1 LD (HL),$01 ; $8BF3 LD A,$01 ; $8BF5 LD ($AC2E),A ; *$8BF8 LD HL,$89EF ; $8BFB CALL $C2F9 ; $8BFE CALL $907B ; $8C01 LD BC,$0B02 ; $8C04 LD A,$43 ; $8C06 LD ($5C8F),A ; $8C09 LD A,$0C ; $8C0B CALL $87EF ; $8C0E LD A,$45 ; $8C10 LD ($5C8F),A ; $8C13 LD BC,$0D02 ; $8C16 LD A,$0D ; $8C18 CALL $87EF ; $8C1B LD BC,$0D03 ; $8C1E LD ($89AC),BC ; $8C22 LD A,$00 ; $8C24 LD ($89A8),A ; $8C27 LD B,$08 ; *$8C29 PUSH BC ; $8C2A LD A,($89A8) ; $8C2D LD ($90DF),A ; $8C30 INC A ; $8C31 LD ($89A8),A ; $8C34 CALL $90F0 ; $8C37 LD BC,($89AC) ; $8C3B INC BC ; $8C3C INC BC ; $8C3D INC BC ; $8C3E LD ($89AC),BC ; $8C42 POP BC ; $8C43 DJNZ $8C29 ; $8C45 LD BC,$0B13 ; $8C48 CALL $89B0 ; $8C4B LD ($90DF),A ; $8C4E LD BC,$0B14 ; $8C51 LD ($89AC),BC ; $8C55 CALL $90F0 ; $8C58 LD HL,$82C0 ; $8C5B LD D,$00 ; $8C5D LD A,($90DF) ; $8C60 SLA A ; $8C62 SLA A ; $8C64 SLA A ; $8C66 LD E,A ; $8C67 ADD HL,DE ; $8C68 LD ($831F),HL ; $8C6B CALL $8324 ; $8C6E LD A,$43 ; $8C70 LD ($5C8F),A ; $8C73 LD BC,$1002 ; $8C76 LD A,$0B ; $8C78 CALL $87EF ; $8C7B LD A,$46 ; $8C7D LD ($5C8F),A ; $8C80 LD BC,$1202 ; $8C83 LD A,$0D ; $8C85 CALL $87EF ; $8C88 LD BC,$1203 ; $8C8B LD ($89AC),BC ; $8C8F LD HL,$90D7 ; $8C92 LD ($8321),HL ; $8C95 LD B,$08 ; *$8C97 PUSH BC ; $8C98 LD HL,($8321) ; $8C9B LD A,(HL) ; $8C9C LD ($5C8F),A ; $8C9F INC HL ; $8CA0 LD ($8321),HL ; $8CA3 CALL $90F0 ; $8CA6 LD HL,($89AC) ; $8CA9 LD DE,$0003 ; $8CAC ADD HL,DE ; $8CAD LD ($89AC),HL ; $8CB0 POP BC ; $8CB1 DJNZ $8C97 ; $8CB3 LD BC,$1010 ; $8CB6 CALL $89B0 ; $8CB9 LD HL,$90D7 ; $8CBC LD D,$00 ; $8CBE LD E,A ; $8CBF ADD HL,DE ; $8CC0 LD A,(HL) ; $8CC1 LD ($5C8F),A ; $8CC4 LD BC,$1011 ; $8CC7 LD ($89AC),BC ; $8CCB CALL $90F0 ; $8CCE CALL $8300 ; $8CD1 LD HL,($8321) ; $8CD4 DEC HL ; $8CD5 LD DE,$0003 ; $8CD8 LD A,($5C8F) ; $8CDB LD B,$04 ; *$8CDD ADD HL,DE ; $8CDE LD (HL),A ; $8CDF DJNZ $8CDD ; $8CE1 LD A,$00 ; $8CE3 LD ($9049),A ; $8CE6 LD A,($AC2E) ; $8CE9 OR A ; $8CEA JR Z,$8CF2 ; $8CEC LD A,($89A7) ; $8CEF LD ($9049),A ; *$8CF2 CALL $8300 ; $8CF5 LD HL,($89AA) ; $8CF8 LD D,$00 ; $8CFA LD E,$0D ; $8CFC ADD HL,DE ; $8CFD CALL $904B ; $8D00 SRA A ; $8D02 INC A ; $8D03 LD E,A ; $8D04 LD A,($9049) ; $8D07 SRA A ; $8D09 ADD A,E ; $8D0A LD (HL),A ; $8D0B INC HL ; $8D0C LD (HL),$00 ; $8D0E INC HL ; $8D0F LD (HL),$00 ; $8D11 CALL $904B ; $8D14 SRA A ; $8D16 INC A ; $8D17 LD E,A ; $8D18 LD A,($9049) ; $8D1B SRA A ; $8D1D ADD A,E ; $8D1E INC HL ; $8D1F LD (HL),A ; $8D20 INC HL ; $8D21 LD (HL),$01 ; $8D23 CALL $904B ; $8D26 SRA A ; $8D28 ADD A,$03 ; $8D2A LD E,A ; $8D2B LD A,($9049) ; $8D2E SRA A ; $8D30 SRA A ; $8D32 ADD A,E ; $8D33 INC HL ; $8D34 LD (HL),A ; $8D35 CALL $904B ; $8D38 SRA A ; $8D3A SRA A ; $8D3C ADD A,$06 ; $8D3E INC HL ; $8D3F LD (HL),A ; $8D40 CALL $904B ; $8D43 SRA A ; $8D45 ADD A,$0B ; $8D47 LD E,A ; $8D48 LD A,($9049) ; $8D4B ADD A,E ; $8D4C CP $15 ; $8D4E JP M,$8D53 ; $8D51 LD A,$14 ; *$8D53 INC HL ; $8D54 LD ($904A),A ; $8D57 LD (HL),A ; $8D58 INC HL ; $8D59 LD (HL),$00 ; $8D5B LD A,($9049) ; $8D5E SRA A ; $8D60 LD E,A ; $8D61 LD A,$05 ; $8D63 SUB E ; $8D64 LD ($A172),A ; $8D67 CALL $904B ; $8D6A LD E,A ; $8D6B LD A,($A172) ; $8D6E CP E ; $8D6F JP P,$8D7A ; $8D72 CALL $904B ; $8D75 SRA A ; $8D77 SRA A ; $8D79 LD (HL),A ; *$8D7A CALL $92AA ; $8D7D LD HL,($9154) ; $8D80 DEC HL ; $8D81 LD ($9154),HL ; $8D84 CALL $904B ; $8D87 ADD A,$0C ; $8D89 LD HL,($9154) ; $8D8C LD (HL),A ; $8D8D INC HL ; $8D8E LD (HL),$01 ; $8D90 INC HL ; $8D91 LD ($9154),HL ; $8D94 LD HL,$D3F2 ; $8D97 LD ($CD86),HL ; $8D9A LD A,($904A) ; $8D9D LD B,A ; *$8D9E PUSH BC ; *$8D9F LD A,R ; $8DA1 AND $07 ; $8DA3 LD H,A ; $8DA4 LD A,R ; $8DA6 LD L,A ; $8DA7 LD A,(HL) ; $8DA8 LD HL,($CD86) ; $8DAB ADD A,(HL) ; $8DAC AND $3F ; $8DAE CP $02 ; $8DB0 JP M,$8D9F ; $8DB3 CP $42 ; $8DB5 JP P,$8D9F ; $8DB8 INC HL ; $8DB9 LD ($CD86),HL ; $8DBC LD ($937B),A ; $8DBF CALL $92F9 ; $8DC2 LD A,(IX+$04) ; $8DC5 LD HL,($9154) ; $8DC8 LD (HL),A ; $8DC9 INC HL ; $8DCA LD A,($937B) ; $8DCD LD (HL),A ; $8DCE INC HL ; $8DCF LD ($9154),HL ; $8DD2 POP BC ; $8DD3 DJNZ $8D9E ; $8DD5 LD A,($AC2E) ; $8DD8 OR A ; $8DD9 JR Z,$8E08 ; $8DDB CALL $92AA ; $8DDE LD HL,($9154) ; $8DE1 DEC HL ; $8DE2 LD B,$13 ; *$8DE4 PUSH BC ; $8DE5 PUSH HL ; $8DE6 LD B,$13 ; *$8DE8 PUSH BC ; $8DE9 LD E,(HL) ; $8DEA INC HL ; $8DEB LD D,(HL) ; $8DEC INC HL ; $8DED LD C,(HL) ; $8DEE INC HL ; $8DEF LD B,(HL) ; $8DF0 DEC HL ; $8DF1 LD A,C ; $8DF2 CP E ; $8DF3 JR Z,$8E01 ; $8DF5 JR C,$8E01 ; $8DF7 INC HL ; $8DF8 LD (HL),D ; $8DF9 DEC HL ; $8DFA LD (HL),E ; $8DFB DEC HL ; $8DFC LD (HL),B ; $8DFD DEC HL ; $8DFE LD (HL),C ; $8DFF INC HL ; $8E00 INC HL ; *$8E01 POP BC ; $8E02 DJNZ $8DE8 ; $8E04 POP HL ; $8E05 POP BC ; $8E06 DJNZ $8DE4 ; *$8E08 LD A,($AC0E) ; $8E0B INC A ; $8E0C LD ($AC0E),A ; $8E0F POP BC ; $8E10 DEC B ; $8E11 JP NZ,$8AD8 ; $8E14 LD A,($AC0F) ; $8E17 DEC A ; $8E18 DEC A ; $8E19 SLA A ; $8E1B SLA A ; $8E1D SLA A ; $8E1F LD HL,$909F ; $8E22 LD D,$00 ; $8E24 LD E,A ; $8E25 ADD HL,DE ; $8E26 LD ($8321),HL ; $8E29 LD A,$00 ; $8E2B LD ($AC0E),A ; $8E2E LD A,($AC0F) ; $8E31 LD B,A ; *$8E32 LD HL,($8321) ; $8E35 LD A,(HL) ; $8E36 INC HL ; $8E37 LD ($8321),HL ; $8E3A LD HL,$E01F ; $8E3D LD D,$00 ; $8E3F LD E,A ; $8E40 ADD HL,DE ; $8E41 LD A,($AC0E) ; $8E44 ADD A,$29 ; $8E46 LD (HL),A ; $8E47 LD DE,$01E1 ; $8E4A ADD HL,DE ; $8E4B LD A,($AC0E) ; $8E4E LD (HL),A ; $8E4F INC A ; $8E50 LD ($AC0E),A ; $8E53 DJNZ $8E32 ; $8E55 LD A,$00 ; $8E57 LD ($7D03),A ; $8E5A LD A,($AC0F) ; $8E5D SLA A ; $8E5F ADD A,$0F ; $8E61 LD B,A ; *$8E62 PUSH BC ; $8E63 CALL $9168 ; $8E66 LD A,($AC34) ; $8E69 INC A ; $8E6A LD HL,$AC0F ; $8E6D CP (HL) ; $8E6E JR Z,$8E93 ; $8E70 CALL $9F50 ; $8E73 CALL $8F9A ; $8E76 CALL $A173 ; $8E79 CALL $AC36 ; $8E7C CALL $FE56 ; $8E7F LD B,$0A ; *$8E81 PUSH BC ; $8E82 CALL $96E6 ; $8E85 POP BC ; $8E86 DJNZ $8E81 ; $8E88 CALL $FE60 ; $8E8B LD A,($AC34) ; $8E8E INC A ; $8E8F LD HL,$AC0F ; $8E92 CP (HL) ; *$8E93 POP BC ; $8E94 JR Z,$8F04 ; $8E96 LD HL,$7D03 ; $8E99 INC (HL) ; $8E9A DJNZ $8E62 ; $8E9C CALL $C5EE ; $8E9F LD A,$01 ; $8EA1 LD ($5C8F),A ; *$8EA4 CALL $8F8B ; $8EA7 CALL $BB57 ; $8EAA CALL $8F8B ; $8EAD LD BC,$0202 ; $8EB0 LD A,$10 ; $8EB2 CALL $87EF ; $8EB5 LD HL,$AC16 ; $8EB8 LD BC,$030A ; $8EBB LD ($89AC),BC ; $8EBF LD A,$29 ; $8EC1 LD ($AC0E),A ; $8EC4 LD A,($AC0F) ; $8EC7 LD B,A ; *$8EC8 PUSH BC ; $8EC9 PUSH HL ; $8ECA BIT 4,(HL) ; $8ECC JR NZ,$8EE2 ; $8ECE CALL $8F8B ; $8ED1 LD HL,$AC0E ; $8ED4 LD A,(HL) ; $8ED5 LD BC,($89AC) ; $8ED9 INC B ; $8EDA INC B ; $8EDB LD ($89AC),BC ; $8EDF CALL $BAFB ; *$8EE2 POP HL ; $8EE3 INC HL ; $8EE4 LD A,($AC0E) ; $8EE7 INC A ; $8EE8 LD ($AC0E),A ; $8EEB POP BC ; $8EEC DJNZ $8EC8 ; $8EEE CALL $8F8B ; $8EF1 LD A,$3D ; $8EF3 LD BC,$1600 ; $8EF6 CALL $BAFB ; $8EF9 CALL $96E6 ; $8EFC CALL $028E ; $8EFF LD A,E ; $8F00 INC A ; $8F01 JR Z,$8EA4 ; $8F03 RET ; *$8F04 CALL $C5EE ; $8F07 LD A,$01 ; $8F09 LD ($5C8F),A ; *$8F0C CALL $8F8B ; $8F0F CALL $BB57 ; $8F12 CALL $8F8B ; $8F15 LD BC,$0409 ; $8F18 LD A,$11 ; $8F1A CALL $87EF ; $8F1D CALL $8F8B ; $8F20 LD A,$12 ; $8F22 LD BC,$0808 ; $8F25 CALL $87EF ; $8F28 LD A,$13 ; $8F2A LD BC,$0A08 ; $8F2D CALL $87EF ; $8F30 LD A,$13 ; $8F32 LD BC,$0C08 ; $8F35 CALL $87EF ; $8F38 LD A,$13 ; $8F3A LD BC,$0E08 ; $8F3D CALL $87EF ; $8F40 LD A,$12 ; $8F42 LD BC,$1008 ; $8F45 CALL $87EF ; $8F48 CALL $8F8B ; $8F4B LD HL,$AC16 ; $8F4E LD B,$08 ; *$8F50 BIT 4,(HL) ; $8F52 JR Z,$8F57 ; $8F54 INC HL ; $8F55 DJNZ $8F50 ; *$8F57 LD A,$31 ; $8F59 SUB B ; $8F5A PUSH AF ; $8F5B LD BC,$0C0A ; $8F5E LD H,$00 ; $8F60 LD L,A ; $8F61 ADD HL,HL ; $8F62 ADD HL,HL ; $8F63 LD DE,$CDD3 ; $8F66 ADD HL,DE ; $8F67 INC HL ; $8F68 INC HL ; $8F69 LD A,(HL) ; $8F6A SRA A ; $8F6C LD E,A ; $8F6D LD A,$10 ; $8F6F SUB E ; $8F70 LD C,A ; $8F71 POP AF ; $8F72 CALL $BAFB ; $8F75 CALL $8F8B ; $8F78 LD A,$3D ; $8F7A LD BC,$1600 ; $8F7D CALL $BAFB ; $8F80 CALL $96E6 ; $8F83 CALL $028E ; $8F86 LD A,E ; $8F87 INC E ; $8F88 JR Z,$8F0C ; $8F8A RET ; ; TREPUT: The Magic Wood spell has a random chance of giving a wizard a new ; spell but this only happens if the wizard is *INSIDE* the tree, and then the ; tree dies. So I think that map 1 is for what to display on the screen, and ; map 5 is for wizard locations. Must also be used for mounted creatures so ; will check those next. ; ; Used by the routine at #R$8741. c$8F8B LD A,($5C8F) ; $8F8E INC A ; $8F8F LD ($5C8F),A ; $8F92 CP $08 ; $8F94 RET NZ ; $8F95 LD A,$01 ; $8F97 LD ($5C8F),A ; ; This entry point is used by the routine at #R$89F9. *$8F9A LD HL,$E01F ; $8F9D LD ($AC12),HL ; $8FA0 LD B,$9F ; *$8FA2 PUSH BC ; $8FA3 LD A,(HL) ; $8FA4 CP $24 ; $8FA6 JP NZ,$9031 ; $8FA9 LD DE,$0281 ; $8FAC ADD HL,DE ; $8FAD LD A,(HL) ; $8FAE OR A ; $8FAF JP Z,$9031 ; $8FB2 LD ($A172),A ; $8FB5 CALL $904B ; $8FB8 CP $04 ; $8FBA JP P,$9031 ; $8FBD LD A,($A172) ; $8FC0 SUB $29 ; $8FC2 LD ($AC0E),A ; $8FC5 LD A,$46 ; $8FC7 LD ($5C8F),A ; $8FCA LD A,$0F ; $8FCC LD BC,$1600 ; $8FCF CALL $87EF ; $8FD2 INC C ; $8FD3 LD A,($A172) ; $8FD6 CALL $BAFB ; $8FD9 LD HL,$903E ; $8FDC CALL $C2F9 ; $8FDF EI ; $8FE0 LD B,$0A ; *$8FE2 CALL $96E6 ; $8FE5 DJNZ $8FE2 ; $8FE7 CALL $BED7 ; *$8FEA CALL $904B ; $8FED LD A,($907A) ; $8FF0 CP $02 ; $8FF2 JP M,$8FEA ; $8FF5 CP $41 ; $8FF7 JP P,$8FEA ; $8FFA LD ($937B),A ; $8FFD CALL $92AA ; $9000 LD HL,($9154) ; $9003 INC HL ; $9004 INC HL ; $9005 LD B,$13 ; *$9007 LD A,(HL) ; $9008 OR A ; $9009 JR Z,$900F ; $900B INC HL ; $900C INC HL ; $900D DJNZ $9007 ; *$900F LD A,($937B) ; $9012 LD (HL),A ; $9013 LD A,($A172) ; $9016 LD HL,($AC12) ; $9019 LD (HL),A ; $901A LD DE,$0281 ; $901D ADD HL,DE ; $901E LD (HL),$00 ; $9020 LD HL,($AC12) ; $9023 LD DE,$01E1 ; $9026 ADD HL,DE ; $9027 LD A,($A172) ; $902A SUB $29 ; $902C LD (HL),A ; $902D CALL $C0DD ; $9030 HALT ; *$9031 POP BC ; $9032 LD HL,($AC12) ; $9035 INC HL ; $9036 LD ($AC12),HL ; $9039 DEC B ; $903A JP NZ,$8FA2 ; $903D RET ; ; Data block at 903E b$903E DEFB $14,$06,$02,$07,$14,$03,$FB,$14 $9046 DEFB $00,$00,$00,$00,$0F ; Routine at 904B ; ; Used by the routines at #R$859C, #R$8741, #R$89F9, #R$8F8B and #R$96F3. c$904B PUSH HL ; *$904C LD A,R ; $904E LD HL,$5C76 ; $9051 ADD A,(HL) ; $9052 OR $80 ; $9054 LD B,A ; ; This entry point is used by the routine at #R$AAED. *$9055 PUSH BC ; $9056 LD B,$0F ; *$9058 NOP ; $9059 DJNZ $9058 ; $905B POP BC ; $905C DJNZ $9055 ; $905E LD A,R ; $9060 AND $07 ; $9062 LD H,A ; $9063 LD A,R ; $9065 LD L,A ; $9066 LD A,R ; $9068 ADD A,(HL) ; $9069 ADD A,(HL) ; $906A LD HL,$5C76 ; $906D ADD A,(HL) ; $906E LD ($907A),A ; $9071 AND $0F ; $9073 CP $0A ; $9075 JP P,$904C ; $9078 POP HL ; $9079 RET ; ; Data block at 907A b$907A DEFB $24 ; Routine at 907B ; ; Used by the routines at #R$89B0 and #R$89F9. c$907B PUSH HL ; $907C PUSH DE ; $907D PUSH BC ; *$907E PUSH BC ; $907F CALL $028E ; $9082 POP BC ; $9083 INC C ; $9084 LD A,E ; $9085 INC A ; $9086 JR NZ,$907E ; $9088 LD HL,($CD86) ; $908B LD (HL),C ; $908C SLA C ; $908E INC HL ; $908F LD (HL),C ; $9090 LD A,R ; $9092 INC HL ; $9093 LD (HL),A ; $9094 RLCA ; $9095 INC HL ; $9096 LD (HL),A ; $9097 INC HL ; $9098 LD ($CD86),HL ; $909B POP BC ; $909C POP DE ; $909D POP HL ; $909E RET ; ; Data block at 909F b$909F DEFB $41,$4D,$00,$00,$00,$00,$00,$00 $90A7 DEFB $17,$81,$8D,$00,$00,$00,$00,$00 $90AF DEFB $11,$1D,$81,$8D,$00,$00,$00,$00 $90B7 DEFB $07,$30,$3E,$93,$9B,$00,$00,$00 $90BF DEFB $07,$10,$1E,$80,$97,$8E,$00,$00 $90C7 DEFB $07,$11,$1D,$60,$6E,$94,$9A,$00 $90CF DEFB $00,$07,$0E,$40,$4E,$90,$97,$9E $90D7 DEFB $42,$43,$44,$45,$06,$46,$07,$47 $90DF DEFB $01,$34,$FD,$54,$FD,$74,$FD,$94 $90E7 DEFB $FD,$B4 $90E9 DEFB $FD,$D4,$FD,$F4 $90ED DEFB $FD,$14,$FE ; Routine at 90F0 ; ; Used by the routine at #R$89F9. c$90F0 LD A,($90DF) ; $90F3 LD HL,$90E0 ; $90F6 LD D,$00 ; $90F8 SLA A ; $90FA LD E,A ; $90FB ADD HL,DE ; $90FC LD C,(HL) ; $90FD INC HL ; $90FE LD B,(HL) ; $90FF LD ($DF4A),BC ; $9103 LD HL,($89AC) ; $9106 LD ($DF4C),HL ; $9109 CALL $DF4E ; $910C RET ; ; Data block at 910D b$910D DEFB $04,$03,$0A,$0A,$28,$46,$02,$02 $9115 DEFB $46,$28,$06,$0C,$00,$14,$28,$3C $911D DEFB $02,$06,$0C,$28,$0C,$04,$0A,$0A $9125 DEFB $28,$07,$02,$02,$46,$1E,$01,$01 $912D DEFB $01,$02,$03,$02,$00,$00,$00,$00 $9135 DEFB $0A,$05,$01,$05,$1E,$08,$03,$07 $913D DEFB $FD $913E DEFB $F6,$14,$03,$28,$28,$46,$64,$02 $9146 DEFB $03,$3C,$64,$14,$03,$01,$02,$03 $914E DEFB $04,$01,$01,$01,$01,$08,$76,$7F $9156 DEFB $1B,$00,$00,$00,$00,$00,$00,$00 $915E DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; unknown02 is used as a copy of the byte in the illusion table, to indicate if ; the current spell is an illusion. See #R$9760. b$9166 DEFB $00,$00 ; Routine at 9168 ; ; Used by the routine at #R$8741. c$9168 LD HL,$9156 ; ; This entry point is used by the routine at #R$8F8B. $916B LD (HL),$00 ; $916D LD DE,$9157 ; $9170 LD BC,$000F ; $9173 LDIR ; $9175 LD HL,$7F27 ; $9178 LD ($5C7B),HL ; $917B LD A,($AC0F) ; $917E LD B,A ; $917F LD A,$00 ; $9181 LD ($AC0E),A ; $9184 DI ; *$9185 PUSH BC ; $9186 LD HL,$AC16 ; $9189 LD A,($AC0E) ; $918C LD D,$00 ; $918E LD E,A ; $918F ADD HL,DE ; $9190 BIT 4,(HL) ; $9192 JP NZ,$929E ; $9195 CALL $95B8 ; $9198 OR A ; $9199 JP NZ,$929E ; *$919C LD HL,$C2E3 ; $919F CALL $C2F9 ; $91A2 CALL $BBCC ; $91A5 CALL $C5EE ; $91A8 LD A,$72 ; $91AA LD ($5C8F),A ; $91AD CALL $BB57 ; $91B0 LD A,($C3A4) ; $91B3 OR A ; $91B4 JR Z,$9230 ; $91B6 LD BC,$0707 ; $91B9 JP M,$91F6 ; $91BC LD A,$46 ; $91BE LD ($5C8F),A ; $91C1 LD A,$47 ; $91C3 CALL $BAFB ; $91C6 LD A,($C3A4) ; $91C9 SRA A ; $91CB SRA A ; $91CD OR A ; $91CE JR Z,$91EF ; $91D0 LD ($89AC),BC ; $91D4 LD B,A ; *$91D5 PUSH BC ; $91D6 LD A,$5E ; $91D8 LD BC,($89AC) ; $91DC CALL $BAD6 ; $91DF LD BC,($89AC) ; $91E3 INC C ; $91E4 LD ($89AC),BC ; $91E8 POP BC ; $91E9 DJNZ $91D5 ; $91EB LD BC,($89AC) ; *$91EF LD A,$29 ; $91F1 CALL $BAD6 ; $91F4 JR $9230 ; *$91F6 LD A,$45 ; $91F8 LD ($5C8F),A ; $91FB LD A,$46 ; $91FD CALL $BAFB ; $9200 LD A,($C3A4) ; $9203 LD ($89AC),BC ; $9207 NEG ; $9209 SRA A ; $920B SRA A ; $920D OR A ; $920E JR Z,$922B ; $9210 LD B,A ; *$9211 PUSH BC ; $9212 LD A,$2A ; $9214 LD BC,($89AC) ; $9218 CALL $BAD6 ; $921B LD BC,($89AC) ; $921F INC C ; $9220 LD ($89AC),BC ; $9224 POP BC ; $9225 DJNZ $9211 ; $9227 LD BC,($89AC) ; *$922B LD A,$29 ; $922D CALL $BAD6 ; *$9230 LD A,$46 ; $9232 LD ($5C8F),A ; $9235 LD A,($AC0E) ; $9238 ADD A,$29 ; $923A LD BC,$0507 ; $923D CALL $BAFB ; $9240 LD A,$45 ; $9242 LD ($5C8F),A ; $9245 LD A,$59 ; $9247 LD BC,$0907 ; $924A CALL $BAFB ; $924D LD A,$5A ; $924F LD BC,$0B07 ; $9252 CALL $BAFB ; $9255 LD A,$5B ; $9257 LD BC,$0D07 ; $925A CALL $BAFB ; $925D LD A,$5C ; $925F LD BC,$0F07 ; $9262 CALL $BAFB ; $9265 LD A,$56 ; $9267 LD ($5C8F),A ; $926A LD A,$57 ; $926C LD BC,$1600 ; $926F CALL $BAFB ; $9272 CALL $92AA ; *$9275 CALL $02BF ; $9278 LD HL,$9384 ; $927B LD (HL),$00 ; $927D CP $31 ; $927F JR NZ,$9287 ; $9281 CALL $9385 ; $9284 JP $919C ; *$9287 CP $34 ; $9289 JR Z,$929E ; $928B CP $33 ; $928D JR Z,$92BE ; $928F CP $32 ; $9291 JR NZ,$9275 ; $9293 LD A,$01 ; $9295 LD ($9384),A ; $9298 CALL $9385 ; $929B JP $919C ; *$929E POP BC ; $929F LD HL,$AC0E ; $92A2 INC (HL) ; $92A3 DEC B ; $92A4 JP NZ,$9185 ; $92A7 JP $95C7 ; ; This entry point is used by the routines at #R$8741, #R$8F8B, #R$95B8 and ; #R$96F3. *$92AA LD HL,$7F47 ; $92AD LD A,($AC0E) ; $92B0 LD D,$00 ; $92B2 LD E,A ; $92B3 LD B,$28 ; $92B5 XOR A ; *$92B6 ADD HL,DE ; $92B7 DJNZ $92B6 ; $92B9 INC HL ; $92BA LD ($9154),HL ; $92BD RET ; *$92BE CALL $C5EE ; $92C1 CALL $FE56 ; $92C4 LD A,$00 ; $92C6 LD ($5C8D),A ; $92C9 LD A,$FF ; $92CB LD ($5C8E),A ; $92CE CALL $C0DD ; $92D1 EI ; $92D2 HALT ; $92D3 LD A,$03 ; $92D5 LD ($5C91),A ; $92D8 CALL $BBCC ; *$92DB CALL $BC96 ; $92DE CALL $02BF ; $92E1 CP $30 ; $92E3 JR Z,$92EC ; $92E5 CP $49 ; $92E7 CALL Z,$C3B3 ; $92EA JR $92DB ; *$92EC DI ; $92ED LD HL,$7F27 ; $92F0 LD ($5C7B),HL ; $92F3 CALL $C5EE ; $92F6 JP $919C ; ; This entry point is used by the routines at #R$8741, #R$938B, #R$94A7, ; #R$95B8 and #R$96F3. *$92F9 LD A,($937B) ; $92FC LD IX,$7D60 ; $9300 LD D,$00 ; $9302 DEC A ; $9303 LD E,A ; $9304 LD B,$07 ; *$9306 ADD IX,DE ; $9308 DJNZ $9306 ; $930A LD ($9380),IX ; $930E LD A,(IX+$03) ; $9311 LD ($937F),A ; $9314 LD A,($C3A4) ; $9317 OR A ; $9318 JR NZ,$9324 ; *$931A LD HL,($9380) ; $931D INC HL ; $931E LD A,(HL) ; $931F LD ($9153),A ; $9322 JR $9353 ; *$9324 JP M,$933E ; $9327 LD E,A ; $9328 LD A,($937F) ; $932B OR A ; $932C JR Z,$931A ; $932E JP M,$931A ; $9331 LD A,(IX+$01) ; $9334 SRL E ; $9336 SRL E ; $9338 ADD A,E ; $9339 LD ($9153),A ; $933C JR $9353 ; *$933E NEG ; $9340 LD E,A ; $9341 LD A,($937F) ; $9344 OR A ; $9345 JP P,$931A ; $9348 LD A,(IX+$01) ; $934B SRL E ; $934D SRL E ; $934F ADD A,E ; $9350 LD ($9153),A ; *$9353 LD A,($AC0E) ; $9356 ADD A,$29 ; $9358 LD D,A ; $9359 LD E,$15 ; $935B CALL $BE0A ; $935E LD HL,$9153 ; $9361 ADD A,(HL) ; $9362 LD ($9153),A ; $9365 LD A,($9153) ; $9368 OR A ; $9369 CP $0A ; $936B JP M,$9370 ; $936E LD A,$09 ; *$9370 CP $00 ; $9372 JP P,$9377 ; $9375 LD A,$00 ; *$9377 LD ($9153),A ; $937A RET ; ; This variable holds the number of the spell currently being cast. b$937B DEFB $22 ; ************************************************************************ ; This routine is called from one of two places: ; (1) When the user presses menu option 1 to "EXAMINE SPELLS", and ; (2) When they press 2 to "SELECT SPELL" ; ; Unknown08 is used as a flag for this so that we know whether to call ; the routine to actually cast the spell. See the code at $9293. ; ************************************************************************ ; unknown03: in this routine the display coords are stored here. The first byte ; is for the column and the second byte for the row. b$937C DEFB $00,$0A,$49,$FF,$47,$7E,$70,$7F $9384 DEFB $00 ; Play sound effect 22 and clear the screen. ; ; routine05: Used when casting a spell [#R$9168] to display a list of the ; wizard's spells and choose one to cast. c$9385 LD HL,$C2E3 ; $9388 CALL $C2F9 ; ; Set ATTR T to bright yellow on black. c$938B CALL $C5EE ; $938E LD A,$46 ; $9390 LD ($5C8F),A ; $9393 LD A,($AC0E) ; Load the current player's number into A (value 0 to 7). $9396 ADD A,$29 ; Use it to calculate the offset for the wizard's name in ; game messages table 1 at CDD3. $9398 LD BC,$0000 ; {Display current wizard's name at (0,0). $939B CALL $BAFB ; } $939E LD A,$53 ; {Append the text 'S SPELLS to the wizard's name using $93A0 CALL $BAFB ; the message at $CF1F.} $93A3 LD B,$14 ; Each wizard has a maximum of 20 spells so load this ; value into B. $93A5 LD A,$40 ; {unknown04 is used to keep track of which letter of the $93A7 LD ($937E),A ; alphabet to print before each spell. So, $40 is loaded ; here as it is for the '@' character which immediately ; precedes 'A'.} $93AA LD HL,$0010 ; {unknown03 is being used to store the display $93AD LD ($937C),HL ; coordinates. The first byte is the column and the second ; byte is the row. Here we store the value 16 in unknown03 ; because there are two columns of spells displayed in ; column 0 and column 16.} $93B0 LD HL,($9154) ; {For the current wizard, store the address of HIS SPELL $93B3 LD ($9382),HL ; (HISPEL) in unknown7.} ; This entry point is used by the routine at #R$93FF. *$93B6 PUSH BC ; Preserve display coordinates. $93B7 LD HL,($9382) ; {Load the value of HIS SPELL (HISPEL) into A. $93BA LD A,(HL) ; } $93BB OR A ; {If the spell number is 0 then there is (no longer) a $93BC JR Z,$9419 ; spell at this position so jump to routine05_5 in order ; to proceed to process the next spell in the list.} $93BE LD A,($937C) ; Load the display column value from unknown03 into A. $93C1 LD C,A ; {Alternate the value of unknown03 between 0 and 16 for $93C2 LD A,$10 ; the display column. $93C4 SUB C ; $93C5 LD ($937C),A ; $93C8 OR A ; } $93C9 JR NZ,$93D3 ; If the column value is 16 then jump to routine05_1 to ; display the spell in the second display column. $93CB LD A,($937D) ; {If the column value is 0 then we have displayed both $93CE ADD A,$02 ; spells for the current row so add 2 to the row display $93D0 LD ($937D),A ; coordinate in the second byte of unknown03 in order to ; move down a row.} *$93D3 LD HL,($9382) ; Load the value of unknown07 into HL - i.e. the address ; of the current spell. $93D6 LD A,(HL) ; {Load the spell number from unknown7 into CURSP (i.e. $93D7 LD ($937B),A ; the entry number of the CURRENT SPELL in the spells ; table at $7D60)} $93DA CALL $92F9 ; Calculate the chance of successfully casting this spell ; by calling CHAN_C. $93DD LD A,($9153) ; Store a value in the range 0 to 9 for the chance of ; successfully casting this spell in A. $93E0 INC A ; {Add 1 to the value and halve it: gives a number between $93E1 SRL A ; 0 and 5. This will be used to set the display colour of ; the spell.} $93E3 ADD A,$42 ; {Add the value in A to $42 to represent a colour from $93E5 LD ($5C8F),A ; RED to WHITE and store the colour value in ATTR T.} $93E8 LD A,($937E) ; {Increment the value of unknown4, i.e. the next letter $93EB INC A ; of the alphabet to print before a spell's name. $93EC LD ($937E),A ; } $93EF LD BC,($937C) ; {Load display coordinates from unknown3 and store BC. $93F3 PUSH BC ; } $93F4 CALL $BAD6 ; Display letter of the alphabet before spell name. $93F7 POP BC ; {Restore display coordinates and move to next column. $93F8 INC C ; } $93F9 LD A,($937F) ; {unknown05 is set elsewhere, but its value indicates the $93FC OR A ; alignment of the spell: 0 for Neutral, P flag after OR $93FD JR NZ,$9403 ; for Chaos. This is how to decide which symbol to display ; between the letter of the alphabet and the spell's name. ; } ; Load A with the character code for '-' which is used to indicate a Neutral ; spell. c$93FF LD A,$2D ; $9401 JR $940C ; Jump to routine05_4 to display character before the ; This entry point is used by the routine at #R$938B. *$9403 JP P,$940A ; spell name to indicate its alignment.} $9406 LD A,$2A ; Load A with the character code for '*' to indicate a ; Chaos spell. $9408 JR $940C ; Jump to $940C to display it. *$940A LD A,$5E ; This must be a Law spell so load a with the character ; code of the upwards-pointing arrow. *$940C PUSH BC ; Preserve display coords. $940D CALL $BAD6 ; {Display the */-/Arrow between the spell's letter and $9410 POP BC ; the spell's name to indicate its alignment.} $9411 INC C ; Increment the x-coordinate ready to display the spell's ; name. $9412 LD HL,($9380) ; Load HL with the address of the current spell. $9415 LD A,(HL) ; Load A with the message number of the spell. $9416 CALL $BAFB ; Display the name of the spell. ; This entry point is used by the routine at #R$938B. *$9419 LD HL,($9382) ; {Increment the pointer in unknown07 to point to the $941C INC HL ; wizard's next spell in possessed_spell_table. $941D INC HL ; $941E LD ($9382),HL ; } $9421 POP BC ; Restore loop counter. $9422 DJNZ $93B6 ; Loop back to routine05_0. ; All spells displayed so now set display coordinates to (0,22). c$9424 LD BC,$1600 ; $9427 LD A,$46 ; {Set ATTR T to bright yellow on black. $9429 LD ($5C8F),A ; } $942C LD A,$58 ; Load A with the message number for ; press_0_to_return_string $942E CALL $BAFB ; {Display: PRESS '0' TO RETURN TO MAIN MENU $9431 CALL $BBCC ; } *$9434 CALL $02BF ; Call KEYBOARD in ROM. $9437 CP $30 ; {If '0' was pressed then return, otherwise jump to $9439 JR NZ,$943C ; routine05_7. $943B RET ; } *$943C LD HL,$937E ; Load the address of unknown04 into HL. Remember that ; unknown04 will now hold the character code of the last ; spell's letter (the thing before the alignment ; character). $943F DEC A ; {A holds the code of the key pressed (see $9434) so we $9440 CP (HL) ; decrement it and check to see if it is a letter that is $9441 JP P,$9434 ; later in the alphabet than the last one printed. If so, ; we jump back to routine05_6 to get another keypress.} $9444 SUB $3F ; {Similarly, we now check that they haven't pressed $9446 JP M,$9434 ; anything with a code before $40 for the letter 'A'. If ; they did, then jump back to get another keypress.} $9449 LD B,A ; We now know that they have pressed a letter in the range ; 'A' to 'FINAL SPELL LETTER', and have subtracted $3F, so ; A now holds a value that will help us calculate the ; offset into his table of spells. We store this value in ; B. $944A LD HL,($9154) ; Load the address of his current spell into HL. $944D LD DE,$0002 ; {Set up in DE the HL pointer adjustment value, reset the $9450 AND A ; Carry flag and move the HL pointer back two bytes in $9451 SBC HL,DE ; preparation for the forthcoming loop where we repeatedly ; move it on by two bytes each time.} *$9453 ADD HL,DE ; Point HL at the wizard's next spell. $9454 LD A,(HL) ; {Load the spell number. $9455 OR A ; } $9456 JR Z,$9453 ; {The JR and DJNZ cause us to advance to the end of his $9458 DJNZ $9453 ; set of spells - the JR is for spells with a value of '0' ; and the DJNZ for the ones he has left.} $945A LD ($937B),A ; A is the number that identifies which spell the user ; pressed a letter for, and we store this in CURSP ; (current spell). $945D LD A,($9384) ; {I've just realised that in $9293 that the reason he $9460 OR A ; sets unknown08 to 1 if the user has pressed '2' is $9461 JR NZ,$9469 ; because this is when the user is saying they want to ; actually cast the spell, rather than just view it from ; another menu. *SO*, we'll need to amend the comment for ; that routine but here, he loads unknown08 and jumps ; ahead to routine05_9 to CAST THAT SPELL, BUDDY!} $9463 CALL $94A7 ; Display an information screen about a selected spell. $9466 JP $9385 ; Jump back to the start at $9385 to see what they want to ; do next. *$9469 LD A,($AC0E) ; {Load the current player number into A and use it to $946C LD D,$00 ; create an offset into the table of spells cast. $946E LD E,A ; } $946F LD HL,$9156 ; {Point HL at this wizard's entry in the cast_spells $9472 ADD HL,DE ; table and store the current spell. $9473 LD A,($937B) ; } $9476 LD (HL),A ; {Return if the current spell is outside the interval 2 $9477 CP $02 ; to 22 since only these spells can be an illusion, which $9479 RET M ; we are going to ask them about next. $947A CP $22 ; $947C RET P ; } $947D CALL $BED7 ; {To get here they must be wanting to cast a creature $9480 LD A,$47 ; that could be an illusion so clear the bottom row and $9482 LD ($5C8F),A ; set ATTR T to bright white on black.} $9485 LD A,$5E ; {When the user casts a spell they have they choice of a $9487 LD BC,$1600 ; real or illusionary creature. We now prompt for their $948A CALL $BAFB ; choice by display "ILLUSION? (PRESS Y OR N)" at (0,22).} $948D CALL $BBCC ; Wait for them to press a key. *$9490 CALL $02BF ; Call KEYBOARD in ROM. $9493 CP $4E ; {Return if they pressed 'N' because they want to cast a $9495 RET Z ; real creature.} $9496 CP $59 ; {If they did not press 'Y' then jump back and wait for $9498 JR NZ,$9490 ; them to press either Y or N.} $949A LD HL,$915E ; They want to cast an illusion so point HL at the ; illusion table. $949D LD D,$00 ; {Use their player number to create an offset in DE. $949F LD A,($AC0E) ; $94A2 LD E,A ; } $94A3 ADD HL,DE ; {Set a flag in the illusion table that the current $94A4 LD (HL),$01 ; player is casting an illusion with the current spell.} $94A6 RET ; Return. ; Call CHAN_C to update the value of the casting_chance variable. ; ; routine37: Display information about a spell or an object on the board c$94A7 CALL $92F9 ; $94AA LD A,($937B) ; {Load A with the value/ID of the Current Spell (CURSP). $94AD CP $01 ; } $94AF JR Z,$94E2 ; {For some spells (e.g. DISBELIEVE, SUBVERSION) we can $94B1 CP $22 ; just display their info immediately but if it is a spell $94B3 JP P,$94E2 ; to cast a creature then we will call display_object_info ; instead. Jump to routine37_0 if the spell number is one ; of the first 33 spells in the spells_table at $7D69.} $94B6 LD HL,$E0BE ; Otherwise it's a creature, so we're going to use a trick ; since there might not even be one of these creatures on ; the map yet. Normally, the cursor is over an ; object/creature when we display information about it. ; However, here Gollop has stored the object code in a ; border slot in the map table and set the cursor ; coordinates to point to it so that he can call ; display_object_info in a minute. Sneaky! So, point HL at ; the final byte of map area 1 which is really a border ; graphic. $94B9 LD (HL),A ; Store the value of A (which is for the current spell) in ; $E0BE. $94BA LD ($AC12),HL ; Store the address E0BE in the cursor_position variable ; so that the display routine thinks we are on a real ; object. AS IF! $94BD LD DE,$0281 ; {Advance the HL pointer by 641 bytes to the final byte $94C0 ADD HL,DE ; of the fifth_map_area_table.} $94C1 LD (HL),$00 ; ??? Set that byte to 0. $94C3 LD HL,$C39E ; {Set unknown71 to 3 because if bit 1 is set then $94C6 LD (HL),$03 ; display_object_info knows that the current object is a ; wizard and to display how many spells he has and his ; ability. Also, here bit 0 of unknown71 is set so that ; the display routine knows to print a "casting chance" ; attribute. See the code at $C53F.} $94C8 LD A,($9153) ; {Copy the casting chance of the current spell to $94CB LD ($FFFF),A ; unknown67 so that it can be displayed in ; display_object_info in a minute. NB: maybe we should ; update the comment at $C550 about unknown67 being set ; here.} $94CE CALL $C3B3 ; Display the information about the object at the cursor ; position. $94D1 LD HL,$C39E ; {Reset unknown71 to 0 - this will mean that $94D4 LD (HL),$00 ; display_object_info knows not to print any spell ; properties, or a how many spells a wizard has. Instead, ; just casting chance and range.} $94D6 LD HL,($AC12) ; {Reset the sneaky byte we used in the border to make $94D9 LD (HL),$00 ; display_object_info think we were examining an object.} $94DB LD HL,$E01F ; {Store the address of the map_area_object_table in the $94DE LD ($AC12),HL ; cursor_position variable. $94E1 RET ; } ; Clear the screen because we are about to display all the properties for the ; currently selected spell. ; ; Used by the routine at #R$94A7. c$94E2 CALL $C5EE ; $94E5 LD HL,$C2E3 ; {Play sound effect 22. $94E8 CALL $C2F9 ; } $94EB LD A,$69 ; {Set ATTR T to bright blue on cyan and draw the border. $94ED LD ($5C8F),A ; $94F0 CALL $BB57 ; } $94F3 LD A,$46 ; {Set ATTR T to bright yellow on black. $94F5 LD ($5C8F),A ; } $94F8 LD HL,($9380) ; {Look up the name of the spell and display it at (8,5). $94FB LD A,(HL) ; $94FC LD BC,$0508 ; $94FF CALL $BAFB ; } $9502 LD A,($937F) ; {If the value of unknown05 is 0 then this is a NEUTRAL $9505 OR A ; spell so we don't want to display anything about its $9506 JR Z,$9543 ; effect on the CHAOS/LAW balance, so just jump ahead to ; routine37_2 to display the Casting Chance.} $9508 JP P,$9529 ; If the P flag was set then this spell has a LAWFUL ; effect so jump to routine37_1 to display details. $950B LD A,$43 ; {If we are here then the current spell must have a CHAOS $950D LD ($5C8F),A ; effect so set ATTR T to bright magenta on black} $9510 LD A,$46 ; {Display the chaos_string "(CHAOS " at (8,7) on the main $9512 LD BC,$0708 ; menu $9515 CALL $BAFB ; } $9518 LD A,($937F) ; Load the value of unknown05 into A - it is the Chaos/Law ; effect of the current spell. $951B NEG ; {Negate the loaded value in order to get something that $951D ADD A,$30 ; we can add $30 to in order to be able to print it.} $951F CALL $BAD6 ; Print the Chaos value of the current spell. $9522 LD A,$29 ; {Print a closing bracket and jump ahead to routine37_2 $9524 CALL $BAD6 ; to display this spell's casting chance. $9527 JR $9543 ; } *$9529 LD A,$45 ; {Set ATTR T to bright cyan on black $952B LD ($5C8F),A ; } $952E LD A,$47 ; {Display the chaos_string "(LAW " at (8,7) on the main $9530 LD BC,$0708 ; menu $9533 CALL $BAFB ; } $9536 LD A,($937F) ; {Convert the value in unknown05 into a character that $9539 ADD A,$30 ; represents a bias towards Chaos and display it. $953B CALL $BAD6 ; } $953E LD A,$29 ; {Print a closing bracket. $9540 CALL $BAD6 ; } *$9543 LD A,$44 ; {Set ATTR T to bright green on black. $9545 LD ($5C8F),A ; } $9548 LD A,$4F ; {Print "CASTING CHANCE=" at (8,11). $954A LD BC,$0B08 ; $954D CALL $BAFB ; } $9550 LD A,$46 ; {Set ATTR T to bright yellow on black. $9552 LD ($5C8F),A ; } $9555 LD A,($9153) ; {Load the value of casting_chance for the current spell $9558 INC A ; into A, increment it, and compare with the value 10. NB: $9559 CP $0A ; casting_chance is 0 to 9, which represent 0%, 10%, ..., ; 100% so we will need to convert before we can display.} $955B JR NZ,$9564 ; If it's not 10 (i.e. 100%) then jump to routine 37_3. $955D LD A,$50 ; {The casting_chance is 10 so display ten_string which is $955F CALL $BAFB ; "10" and jump to routine 37_4. $9562 JR $9569 ; } *$9564 ADD A,$30 ; {Otherwise display the value in A which we will append $9566 CALL $BAD6 ; to in a moment.} *$9569 LD A,$30 ; {Now append "0%" to complete the display of the $956B CALL $BAD6 ; casting_chance. $956E LD A,$25 ; $9570 CALL $BAD6 ; } $9573 LD A,$44 ; {Set ATTR T to bright green on black. $9575 LD ($5C8F),A ; } $9578 LD A,$4A ; {Display range_string "RANGE=" at (8, 15). $957A LD BC,$0F08 ; $957D CALL $BAFB ; } $9580 LD A,$46 ; {Set ATTR T to bright yellow on black because we are $9582 LD ($5C8F),A ; about to calculate the value of the casting chance as a ; percentage.} $9585 LD IX,($9380) ; {Look up the range value for the current spell. The $9589 LD A,(IX+$02) ; range is stored *doubled* so we need to halve it. $958C SRL A ; } $958E CP $0A ; {If the range is bigger than 10 then we display a range $9590 JP P,$959A ; value of 20 by jumping to routine37_5. This is used for ; spells like DISBELIEVE that can work anywhere on the ; board.} $9593 ADD A,$30 ; {Otherwise we convert the value in A into a character $9595 CALL $BAD6 ; and display it, and jump ahead to routine37_6. $9598 JR $95A4 ; } *$959A LD A,$32 ; {Display a range value of "20". $959C CALL $BAD6 ; $959F LD A,$30 ; $95A1 CALL $BAD6 ; } *$95A4 LD A,$4D ; {Set ATTR T to bright cyan on blue. $95A6 LD ($5C8F),A ; } $95A9 LD A,$3D ; {Display "PRESS ANY KEY STRING" at (0,22). $95AB LD BC,$1600 ; $95AE CALL $BAFB ; } $95B1 CALL $BBCC ; {Wait for a key to be pressed $95B4 CALL $BBB0 ; } $95B7 RET ; Return. ; Routine at 95B8 ; ; Used by the routine at #R$9168. c$95B8 LD HL,$AC26 ; $95BB LD A,($AC0E) ; $95BE LD D,$00 ; $95C0 LD E,A ; $95C1 ADD HL,DE ; $95C2 LD A,(HL) ; $95C3 LD ($AC2E),A ; $95C6 RET ; ; This entry point is used by the routine at #R$9168. *$95C7 CALL $C5EE ; $95CA CALL $FE56 ; $95CD CALL $C0DD ; $95D0 HALT ; $95D1 HALT ; $95D2 LD A,$00 ; $95D4 LD ($AC0E),A ; *$95D7 LD HL,$AC16 ; $95DA LD A,($AC0E) ; $95DD LD D,$00 ; $95DF LD E,A ; $95E0 ADD HL,DE ; $95E1 LD A,(HL) ; $95E2 BIT 4,(HL) ; $95E4 JP NZ,$9665 ; $95E7 CALL $97D1 ; $95EA CALL $95B8 ; $95ED OR A ; $95EE JP NZ,$96F3 ; $95F1 LD HL,$9156 ; $95F4 LD D,$00 ; $95F6 LD A,($AC0E) ; $95F9 LD E,A ; $95FA ADD HL,DE ; $95FB LD A,(HL) ; $95FC LD ($937B),A ; $95FF OR A ; $9600 JP Z,$9665 ; $9603 CALL $92AA ; $9606 LD B,$13 ; $9608 LD A,($937B) ; $960B CP $01 ; $960D JR Z,$961B ; *$960F LD E,(HL) ; $9610 CP E ; $9611 JR NZ,$9617 ; $9613 LD (HL),$00 ; $9615 JR $961B ; *$9617 INC HL ; $9618 INC HL ; $9619 DJNZ $960F ; *$961B CALL $92F9 ; $961E CALL $967A ; $9621 CALL $BBB0 ; $9624 CALL $BED7 ; $9627 LD HL,$915E ; $962A LD D,$00 ; $962C LD A,($AC0E) ; $962F LD E,A ; $9630 ADD HL,DE ; $9631 LD A,(HL) ; {that line copies the illusion flag/byte from the $9632 LD ($9166),A ; illusion table uinto unknown2 so that we know whether $9635 OR A ; the wizard is trying to cast an illusion or a real $9636 JR NZ,$964C ; creature. $9638 CALL $BE94 ; $963B LD HL,$9153 ; $963E LD E,(HL) ; $963F INC E ; $9640 CP E ; $9641 JP M,$964C ; $9644 LD A,$00 ; $9646 LD ($9167),A ; $9649 JP $9659 ; *$964C LD A,$01 ; $964E LD ($9167),A ; $9651 LD A,($937F) ; $9654 LD HL,$C3A4 ; $9657 ADD A,(HL) ; $9658 LD (HL),A ; *$9659 LD L,(IX+$05) ; $965C LD H,(IX+$06) ; $965F LD ($9663),HL ; $9662 CALL $9975 ; *$9665 CALL $BED7 ; } ; This entry point is used by the routine at #R$96F3. *$9668 LD HL,$A172 ; $966B CALL $7D04 ; $966E LD HL,$AC0E ; $9671 INC (HL) ; $9672 LD A,($AC0F) ; $9675 CP (HL) ; $9676 JP NZ,$95D7 ; $9679 RET ; ; This entry point is used by the routines at #R$8357, #R$8360, #R$859C, ; #R$869A, #R$86C3, #R$99A9, #R$9ABE, #R$9B1C, #R$9BB3, #R$9C0F, #R$D686, ; #R$D7A6 and #R$D82D. *$967A LD A,$46 ; $967C LD ($5C8F),A ; $967F LD A,($AC0E) ; $9682 ADD A,$29 ; $9684 LD BC,$1600 ; $9687 CALL $BAFB ; $968A CALL $96D1 ; $968D LD A,$44 ; $968F LD ($5C8F),A ; $9692 LD A,(IX+$00) ; $9695 CALL $BAFB ; $9698 CALL $96D1 ; $969B LD A,$47 ; $969D LD ($5C8F),A ; $96A0 INC C ; $96A1 LD A,(IX+$02) ; $96A4 SRL A ; $96A6 CP $0A ; $96A8 JP P,$96B2 ; $96AB ADD A,$30 ; $96AD CALL $BAD6 ; $96B0 JR $96BF ; *$96B2 LD A,$32 ; $96B4 PUSH BC ; $96B5 CALL $BAD6 ; $96B8 POP BC ; $96B9 INC C ; $96BA LD A,$30 ; $96BC CALL $BAD6 ; *$96BF CALL $96D1 ; $96C2 LD A,($AC2E) ; $96C5 OR A ; $96C6 RET Z ; $96C7 LD B,$08 ; *$96C9 PUSH BC ; $96CA CALL $96E6 ; $96CD POP BC ; $96CE DJNZ $96C9 ; $96D0 RET ; } ; routine07: A busy wait loop that also plays a sound effect. ; ; Used by the routine at #R$95B8. c$96D1 PUSH BC ; $96D2 LD HL,$9117 ; $96D5 CALL $C2F9 ; $96D8 EI ; $96D9 LD B,$FF ; *$96DB PUSH BC ; $96DC LD B,$3C ; *$96DE DJNZ $96DE ; $96E0 POP BC ; $96E1 DJNZ $96DB ; $96E3 POP BC ; $96E4 INC C ; $96E5 RET ; ; This entry point is used by the routines at #R$853B, #R$8741, #R$8F8B and ; #R$95B8. *$96E6 PUSH BC ; $96E7 LD B,$FF ; *$96E9 PUSH BC ; $96EA LD B,$A0 ; *$96EC DJNZ $96EC ; $96EE POP BC ; $96EF DJNZ $96E9 ; $96F1 POP BC ; $96F2 RET ; ; IN PROGRESS 28th July 2020 routine08 ; ; Used by the routine at #R$95B8. c$96F3 LD HL,$AC16 ; Load HL with the address of #R$AC16 [the modifiers for ; wizards]. $96F6 LD A,($AC0E) ; Load A with the code for the current wizard. $96F9 LD D,$00 ; {Set an offset for the current wizard. $96FB LD E,A ; } $96FC ADD HL,DE ; Point HL at the modifier byte for the current wizard. $96FD BIT 4,(HL) ; {If the wizard HAS BEEN SLAIN then jump to #R$9668. $96FF JP NZ,$9668 ; } $9702 CALL $92AA ; Otherwise, praise be, he prevails still and we get a ; pointer to his TOME OF MIGHTY SPELLS. $9705 CALL $904B ; Get a random number from the bug-infested RANDY. Lie ; down with dogs, wake up with fleas. JUST SAYING. $9708 ADD A,$0C ; {Add to A so that it contains 12 to 21. "???" $970A LD HL,($9154) ; $970D DEC HL ; $970E LD (HL),A ; $970F LD A,$13 ; $9711 CALL $C64C ; $9714 CALL $92AA ; } $9717 LD B,$14 ; Set loop counter to 20 for the wizard's maximum number ; of spells. *$9719 PUSH BC ; Preserve loop counter. $971A LD A,$01 ; {"???" $971C LD ($975F),A ; } $971F LD HL,($9154) ; {Load the wizard's spell into A. $9722 LD A,(HL) ; } $9723 OR A ; {Skip it if it is 0, and jump to #R$9751 to get the next $9724 JR Z,$9751 ; one.} $9726 LD ($937B),A ; {Store the current spell in #R$937B and calculate the $9729 CALL $92F9 ; chance of casting the curret spell.} $972C LD L,(IX+$05) ; {.. $972F LD H,(IX+$06) ; $9732 LD ($9736),HL ; } $9735 CALL $9975 ; ... $9738 CALL $BED7 ; Clear the bottom line of the screen. $973B LD A,($975F) ; {"???" $973E OR A ; $973F JR Z,$9751 ; } $9741 LD A,($937B) ; {.. $9744 CP $01 ; $9746 JR Z,$974D ; $9748 LD HL,($9154) ; $974B LD (HL),$00 ; } *$974D POP BC ; {.. $974E JP $9668 ; } *$9751 POP BC ; {.. $9752 LD HL,($9154) ; $9755 INC HL ; $9756 INC HL ; $9757 LD ($9154),HL ; $975A DJNZ $9719 ; } $975C JP $9668 ; Jump to #R$9668. ; Data block at 975F b$975F DEFB $01 ; Load unknown2 which is set at $9631 as a flag for an illusionary target. ; ; Determines if a spell succeeds and then updates the global Chaos/Law balance. c$9760 LD A,($9166) ; $9763 OR A ; {If they are casting an illusion then jump to $9778 $9764 JR NZ,$9778 ; because illusions ALWAYS succeed. Like budgies.} $9766 CALL $BE94 ; They want to cast a real creature so call get_random to ; see if they suck seed. NB: I think the comments for the ; routine at $BE94 are incorrect, in that I think we are ; returned a number in the range 0-10 and not 11-15. I ; checked this in the debugger. $9769 LD HL,$9153 ; {Load the casting chance value of the current spell into $976C LD E,(HL) ; E and increment the value. $976D INC E ; } $976E CP E ; {Compare the random number with the casting chance in E. $976F JP M,$9778 ; If the random number is less than E then the spell ; failed.} $9772 LD A,$00 ; {Set spell_success_flag to 0. How American. "You didn't $9774 LD ($9167),A ; fail, you just didn't succeed."} $9777 RET ; Return. ; Right - we've got rid of the boys, this is where the MEN hang out! Let's ; start by setting the spell_success_flag to 1 (since that's what SET means, ; after all). ; ; Used by the routine at #R$9760. c$9778 LD A,$01 ; $977A LD ($9167),A ; $977D LD A,($937F) ; Oh FFS, another unknown - biab... Well, looking at ; $930E we are loading the current spell's effect on the ; Chaos/Law balance of our universe. $9780 LD HL,$C3A4 ; {This makes sense - we have just successfully cast the $9783 ADD A,(HL) ; spell so add the current CH_LAW value to the spell's $9784 LD (HL),A ; delta and store back in the global CH_LAW variable.} $9785 RET ; Return. ; Load HL with the address of the current wizard in #R$E01F from #R$AC14. ; ; Sees if a spell's target is in range and sets P flag if so. ; . ; routine10: Sets the P flag is the target of a spell is in range. c$9786 LD HL,($AC14) ; $9789 CALL $C703 ; {Call #R$C703 to calculate his map coordinates and store $978C LD ($BEE9),HL ; in #R$BEE9.} $978F LD HL,($AC12) ; Load HL with the position of the cursor. $9792 CALL $C703 ; {Call #R$C703 to convert the cursor position into map $9795 LD ($BEEB),HL ; coordinates and store in #R$BEEB.} $9798 CALL $BEEF ; Call #R$BEEF to calculate distance to cursor and set ; #R$BEE8. $979B LD HL,$BEE8 ; Load HL with the distance to the cursor. $979E LD A,(IX+$02) ; Load A with the maximum casting distance for the current ; spell. $97A1 CP (HL) ; Compare the two values: if the distance to the target is ; less than or equal to the maximum then P will be set for ; success. $97A2 RET ; Return. ; routine11: Displays whether the spell succeeded or failed. ; ; Used by the routines at #R$8360, #R$84D3, #R$859C, #R$85D3, #R$86C3, #R$8741, ; #R$9856, #R$98D6, #R$99A9, #R$9A21, #R$9B71, #R$9BB3, #R$9C0F, #R$D5CB, ; #R$D5E8, #R$D686, #R$D732 and #R$D82D. c$97A3 CALL $BED7 ; $97A6 LD A,($9167) ; $97A9 OR A ; $97AA JR NZ,$97BB ; $97AC LD A,$43 ; $97AE LD ($5C8F),A ; $97B1 LD A,$54 ; $97B3 LD BC,$1600 ; $97B6 CALL $BAFB ; $97B9 JR $97C8 ; ; routine06: Used when casting a spell [#R$9168] to load wizard modifier, ; determine if the spell will succeed => update L/C balance & cast spell. ; ; Used by the routine at #R$97A3. c$97BB LD A,$47 ; $97BD LD ($5C8F),A ; $97C0 LD BC,$1600 ; $97C3 LD A,$55 ; $97C5 CALL $BAFB ; ; This entry point is used by the routine at #R$97A3. *$97C8 LD B,$64 ; *$97CA HALT ; $97CB DJNZ $97CA ; $97CD RET ; ; This contains the number of attempts for the current spell. b$97CE DEFB $01,$BA,$E0 ; Store the address of the map_area_object_table in unknown12. ; ; The wizard is casting on the spells (such as Magic Armour) on himself. This ; routine finds the current wizard on the map to save the player having to ; navigate and highlight themselves! c$97D1 LD HL,$E01F ; $97D4 LD ($97CF),HL ; $97D7 LD B,$9F ; Set loop counter to 159 so that we can process all 160 ; bytes in the table. *$97D9 LD A,(HL) ; Load the object code for the current position in the ; map. $97DA SUB $29 ; Subtract 41 because our first wizard has code 41. $97DC LD HL,$AC0E ; {Point HL at the byte ID of the current player (a number $97DF CP (HL) ; from 0 to 7) and compare it with the value in A for the ; current object on the map.} $97E0 JR Z,$97FB ; The current object on the map is the current player so ; jump ahead to $97FB. $97E2 LD HL,($97CF) ; Reload HL with the address of the map that we stored at ; the start of this routine. $97E5 LD DE,$0281 ; {Move HL along to the corresponding byte in the 5th map $97E8 ADD HL,DE ; area table.} $97E9 LD A,(HL) ; {Load the byte from the 5th map area and subtract 41 to $97EA SUB $29 ; get an object ID.} $97EC LD HL,$AC0E ; {Compare the object ID with the current player's ID. $97EF CP (HL) ; } $97F0 JR Z,$97FB ; Again, we have found our player that is casting the ; spell on himself so jump to $97FB. $97F2 LD HL,($97CF) ; {Increment the map pointer that is being stored in $97F5 INC HL ; unknown12. $97F6 LD ($97CF),HL ; } $97F9 DJNZ $97D9 ; Loop back to $97D9. *$97FB LD HL,($97CF) ; {Copy the map pointer from HL into D_ADD & $97FE LD ($AC14),HL ; cursor_position & X_ADD. - even though routine53 in a $9801 LD ($AC12),HL ; minute only uses HL, and even copies that into $9804 LD ($C649),HL ; unknown66....!} $9807 CALL $C703 ; Call routine53 to convert a memory address into a set of ; coordinates in HL. $980A LD ($BC94),HL ; Store the coordinates of our newly located wizard who is ; casting something on himself (eew). $980D RET ; Return. ; Preserve HL. ; ; 29th July 2020 OFBORD ; . ; Sets the Z flag if the x-coord of the cursor is in the right-hand border. ; . ; The map slots go from (1,1) to (15,10) c$980E PUSH HL ; $980F LD HL,($AC12) ; Load HL with the address of a map object. $9812 CALL $C703 ; Convert address into map position coordinates. $9815 LD A,L ; {Set Z flag if x-coordinate is 16, i.e. in the border. $9816 CP $10 ; } $9818 POP HL ; Restore HL. $9819 RET ; Return. ; Clear the bottom row of the screen. ; ; From looking at $9AFC & $9B76 it looks like this routine is used to cast a ; Shadow Wood, Walls. I suspect we are choosing where to place spells that have ; multiple attempts. Perhaps other stuff too! c$981A CALL $BED7 ; $981D CALL $97D1 ; Call routine12 to find the coordinates of the current ; player and store them in $BC94 = cursor_coordinates. $9820 CALL $FE56 ; Call routine to set IM2. $9823 LD A,$00 ; {Set ATTR P to black on black. $9825 LD ($5C8D),A ; } $9828 LD A,$FF ; {Set MASK P to 255 so that all attribute bits are taken $982A LD ($5C8E),A ; from screen, not ATTR P.} $982D CALL $C0DD ; Call #R$C0D8. $9830 EI ; Enable interrupts. $9831 HALT ; Wait for one. $9832 LD A,$03 ; {Set P FLAG to 3 to enable "OVER 1". $9834 LD ($5C91),A ; } $9837 CALL $BED7 ; Clear the bottom row of the screen. $983A LD A,($97CE) ; {unknown11 contains the number of attempts for the $983D LD B,A ; current spell so load the value into B.} ; This entry point is used by the routines at #R$9856 and #R$D5CB. *$983E PUSH BC ; Preserve BC. ; Call KEYBOARD in ROM to set LAST K. ; ; Used by the routines at #R$9856 and #R$D588. c$983F CALL $BC96 ; $9842 CALL $02BF ; $9845 CP $53 ; {If the user pressed 'S' to select the current object $9847 JR Z,$9856 ; then jump to $9856.} $9849 CP $4B ; {Else if they pressed 'K' to cancel this operation then $984B JR NZ,$983F ; jump back to $983F.} $984D POP BC ; Restore BC. $984E LD HL,$C2B1 ; {Play sound effect 11. $9851 CALL $C2F9 ; } $9854 EI ; Enable interrupts. $9855 RET ; Return. ; Wait for no key to be pressed. ; ; Used by the routine at #R$983F. c$9856 CALL $BBCC ; $9859 CALL $9786 ; Call $9786 to see if the target is in range. $985C JP P,$9877 ; If the target is in range then jump to #R$9877. $985F CALL $BED7 ; Otherwise clear the bottom row. $9862 LD BC,$1600 ; Set print coordinates to (0,22). $9865 LD A,$45 ; {Set ATTR T to bright cyan on black. $9867 LD ($5C8F),A ; } $986A LD A,$35 ; {Print #R$D03A = "OUT OF RANGE". $986C CALL $BAFB ; } $986F CALL $BBCC ; Wait for no key to be pressed. $9872 CALL $BBB0 ; Wait for a key to be pressed. $9875 JR $983F ; Jump back to #R$983F. ; This entry point is used by the routine at #R$D567. *$9877 LD HL,($AC12) ; {Load the object at the #R$AC12 into A. $987A LD A,(HL) ; } $987B OR A ; {If it is an empty cell then jump to #R$9892. $987C JR Z,$9892 ; } $987E LD A,($937B) ; Otherwise load the current spell into A. $9881 CP $24 ; {If it is >=36, i.e. Magic Wood,Shadow Wood, Magic $9883 JP P,$983F ; Castle, Dark Citadel or Wall, then jump to #R$983F.} $9886 LD HL,($AC12) ; Otherwise load HL with the cursor position. $9889 LD DE,$0141 ; Set up an offset to table 3. $988C ADD HL,DE ; Point HL into the corresponding byte in table 3. $988D LD A,(HL) ; Load the current animation frame number into A. $988E CP $04 ; {If the object is not dead then jump back to #R$983F. $9890 JR NZ,$983F ; } *$9892 CALL $98F1 ; Call #R$98F1 to ... "???". $9895 JR NZ,$983F ; Jump to #R$983F to get another target. $9897 CALL $9C0F ; Call #R$9C0F to ... "???". $989A JR NZ,$983F ; Jump to #R$983F to get another target. $989C CALL $98DB ; Call #R$98DB to ... "???". $989F JR Z,$98BA ; If "???" then jump to #R$98BA to proceed with the spell. $98A1 LD A,$45 ; {Otherwise set ATTR T to bright cyan on black. $98A3 LD ($5C8F),A ; } $98A6 CALL $BED7 ; Clear the bottom row of the screen. $98A9 LD A,$3C ; {Print #R$D280 "MAGIC FIRE" at (0,22). $98AB LD BC,$1600 ; $98AE CALL $BAFB ; } $98B1 CALL $BBCC ; Wait for no key to be pressed. $98B4 CALL $BBB0 ; Wait for a key to be pressed. $98B7 JP $983F ; Jump back to #R$983F. *$98BA CALL $A18A ; Call #R$A18A to display the twirling animation over the ; target. $98BD LD A,($9167) ; {See if the spell succeeded. $98C0 OR A ; } $98C1 JR Z,$98D6 ; If it failed then jump to #R$98D6. $98C3 CALL $9941 ; Otherwise call #R$9941 to update map tables. $98C6 POP BC ; {Restore BC which contains the number of attempts for $98C7 PUSH BC ; this spell - stored at #R$983E.} $98C8 LD A,B ; Load the remaining number of attempts into A. $98C9 CP $01 ; {If more attempts are left to be made then jump to $98CB JR NZ,$98D0 ; #R$98CB.} $98CD CALL $97A3 ; Otherwise call #R$97A3 to display whether the spell ; succeeded or failed. *$98D0 POP BC ; Restore BC. $98D1 DEC B ; Decrement the number of attempts of this spell left to ; be made. $98D2 JP NZ,$983E ; If more attempts remain then jump to #R$983E. $98D5 RET ; Return. ; Restore BC. ; ; Used by the routine at #R$9856. c$98D6 POP BC ; $98D7 CALL $97A3 ; Call #R$97A3 to display whether the spell succeeded or ; failed. $98DA RET ; Return. ; routine14: ; ; Used by the routines at #R$851B, #R$8567, #R$861A, #R$869A, #R$9856, #R$99A9, ; #R$9B1C, #R$9BB3, #R$9C0F, #R$D588, #R$D686 and #R$D82D. c$98DB XOR A ; $98DC LD ($B754),A ; $98DF LD ($B60B),A ; $98E2 CALL $BA77 ; $98E5 CALL $B626 ; $98E8 CALL $C0DD ; $98EB HALT ; $98EC LD A,($B754) ; $98EF OR A ; $98F0 RET ; ; routine15: ; ; Used by the routines at #R$9856, #R$9B1C, #R$D588 and #R$D82D. c$98F1 LD A,$00 ; $98F3 LD ($9940),A ; $98F6 LD A,($937B) ; $98F9 CP $24 ; $98FB JP M,$993B ; $98FE CP $26 ; $9900 JP P,$993B ; $9903 LD HL,$CD2A ; $9906 LD ($CD3A),HL ; $9909 LD HL,($AC14) ; $990C LD ($C78B),HL ; $990F LD B,$08 ; *$9911 PUSH BC ; $9912 LD HL,($AC12) ; $9915 LD ($AC14),HL ; $9918 CALL $CD3C ; $991B LD HL,($AC14) ; $991E LD A,H ; $991F ADD A,L ; $9920 JR Z,$9932 ; $9922 LD A,(HL) ; $9923 CP $24 ; $9925 JP M,$9932 ; $9928 CP $26 ; $992A JP P,$9932 ; $992D LD A,$01 ; $992F LD ($9940),A ; ; This entry point is used by the routine at #R$D602. *$9932 POP BC ; $9933 DJNZ $9911 ; $9935 LD HL,($C78B) ; $9938 LD ($AC14),HL ; ; This entry point is used by the routine at #R$D602. *$993B LD A,($9940) ; $993E OR A ; $993F RET ; ; Data block at 9940 b$9940 DEFB $00 ; Load HL with the cursor position. ; ; Sets information in #R$E0C0, #R$E160, #R$E200 for a new object. c$9941 LD HL,($AC12) ; $9944 LD A,($937B) ; Load A with the code of the current spell being cast. $9947 CP $22 ; {If it is for a gooey blob (7E47) or Magic Fire (7E4E) $9949 JR Z,$9958 ; then jump to #R$9958. $994B CP $23 ; $994D JR Z,$9958 ; } $994F LD A,(HL) ; {Copy the object code at the cursor coordinates to $9950 LD DE,$0321 ; #R$E340. "???" $9953 ADD HL,DE ; $9954 LD (HL),A ; } $9955 LD A,($937B) ; Load A with the code of the current spell. *$9958 LD HL,($AC12) ; Load HL with the cursor position. $995B LD (HL),A ; Load A with the code of the current spell being cast. $995C LD DE,$00A1 ; {Set the animation frame timeout in #R$E0C0 to 1. $995F ADD HL,DE ; $9960 LD (HL),$01 ; } $9962 DEC DE ; {Set the animation frame in #R$E160 to 0. $9963 ADD HL,DE ; $9964 LD (HL),$00 ; } $9966 ADD HL,DE ; {Store the owner number in #R$E200. $9967 LD A,($AC0E) ; $996A LD (HL),A ; } $996B LD A,($9166) ; {Load A with #R$9166 - this is a copy of the byte from $996E OR A ; #R$915E to indicate whether the current spell is an ; illusion.} $996F JR Z,$9973 ; If it is a real object then jump to #R$9973. $9971 SET 4,(HL) ; Otherwise set bit 4 in #R$E200 to indicate the object is ; an illusion. *$9973 HALT ; Wait for an interrupt. $9974 RET ; Return. ; Set #R$97Ce to 1 "???" ; ; IN PROGRESS 29th July 2020 CreatureCast c$9975 LD A,$01 ; $9977 LD ($97CE),A ; $997A LD A,($AC2E) ; {If the current player is computer-controlled then jump $997D OR A ; to #R$9984. $997E JR NZ,$9984 ; } $9980 CALL $981A ; Otherwise call #R$981A. $9983 RET ; {Return. *$9984 CALL $C78D ; $9987 LD A,$03 ; $9989 LD ($AC03),A ; } $998C LD A,($937B) ; {If the current spell is for a movable creature then $998F CP $22 ; jump to #R$9999. $9991 JP M,$9999 ; $9994 LD A,$0D ; $9996 LD ($AC03),A ; } ; Routine at 9999 ; ; Used by the routines at #R$9975 and #R$D686. c$9999 CALL $C955 ; ; Routine at 999C ; ; Used by the routine at #R$99A9. c$999C CALL $C9DC ; $999F CP $4B ; $99A1 JR NZ,$99A9 ; $99A3 LD A,$00 ; $99A5 LD ($975F),A ; $99A8 RET ; Return. ; If HL holds the address of an object in the border then jump to #R$999C. ; ; Used by the routine at #R$999C. c$99A9 CALL $980E ; $99AC JR Z,$999C ; $99AE CALL $98DB ; $99B1 JR NZ,$999C ; $99B3 LD HL,($AC12) ; $99B6 LD A,(HL) ; $99B7 OR A ; $99B8 JR Z,$99C3 ; $99BA LD DE,$0141 ; $99BD ADD HL,DE ; $99BE LD A,(HL) ; $99BF CP $04 ; $99C1 JR NZ,$999C ; *$99C3 CALL $967A ; Display wizard name, spell being cast, and spell casting ; range. $99C6 CALL $A18A ; Display a twirling animation at the target. $99C9 LD A,($937B) ; {If the spell is for a non-movable object then jump to $99CC CP $22 ; #R$99DE. $99CE JP P,$99DE ; } $99D1 CALL $BE94 ; {Otherwise ... $99D4 CP $02 ; $99D6 JP P,$99DE ; } $99D9 LD A,$01 ; {Set #R$9166 to 1 "???" $99DB LD ($9166),A ; } ; This entry point is used by the routine at #R$D686. *$99DE CALL $9760 ; Determine if the spell succeeds and update the global ; Chaos/Law balance. $99E1 LD A,($9167) ; {If the spell succeeded then update map tables etc. $99E4 OR A ; $99E5 CALL NZ,$9941 ; } $99E8 LD A,$00 ; {Set #R$9166 to 0 "???" $99EA LD ($9166),A ; } $99ED CALL $97A3 ; Display whether the spell succeeded or failed. $99F0 RET ; Return. ; Jump to disbelieve_spell_6 if this routine is being called for a ; computer-controlled player. ; ; 20th July 2020 - DISBELIEVE spell c$99F1 LD A,($AC2E) ; $99F4 OR A ; $99F5 JP NZ,$9A95 ; ; This entry point is used by the routine at #R$D702. *$99F8 CALL $BC96 ; Call routine41 to display the board and allow the player ; to interact with objects on-screen. $99FB CALL $02BF ; {Call KEYBOARD in ROM to see if the player has pressed a $99FE CP $53 ; key.} $9A00 JR Z,$9A0E ; We are only checking here to see if they pressed either ; 'S' (Select) or 'K' (Cancel). If the user pressed 'S' to ; select an object to disbelieve then jump to ; disbelieve_spell_1. $9A02 CP $4B ; {If the user didn't press either 'S' or 'K' then jump $9A04 JR NZ,$99F8 ; back to $99F8 to wait for one of these keys.} $9A06 LD HL,$C2B1 ; {The user pressed 'K' to cancel their current choice so $9A09 CALL $C2F9 ; play sound effect 11.} $9A0C EI ; {The user has cancelled the spell so enable interrupts $9A0D RET ; and return.} *$9A0E CALL $BBCC ; Right - let's get cracking with this spell. Er, by ; waiting for them not to be pressing a key. $9A11 LD HL,($AC12) ; {Load the object at the current cursor position into and $9A14 LD A,(HL) ; if the cretin of a player has tried to select an empty $9A15 OR A ; cell then jump back to disbelieve_spell_0 to start $9A16 JR Z,$99F8 ; again.} $9A18 CP $22 ; {Similarly, if they have selected an object that can't $9A1A JP P,$99F8 ; be disbelieved (object code for Gooey Blob onwards) then ; go back to let them choose something else.} $9A1D CALL $9A21 ; They have chosen an object that can be disbelieved (2 ; King Cobra - 33 Zombie) so call disbelieve_spell_2 to ; carry out the spell. $9A20 RET ; Return. ; Call routine20 to display a twirling animation at the cursor to indicate that ; a spell is being cast there. ; ; Used by the routines at #R$99F1, #R$9ABE, #R$D702 and #R$D7A6. c$9A21 CALL $A18A ; $9A24 LD HL,($AC12) ; Now we need to see if the spell is going to succeed or ; fail. Load HL with the address in map_area_object_table ; for the current cursor position. $9A27 LD A,$00 ; {Set spell_success_flag to 0. $9A29 LD ($9167),A ; } $9A2C LD DE,$01E1 ; {Point HL at the entry for the owner $9A2F ADD HL,DE ; number/asleep/undead information in map_area_table_4 ; that corresponds to the cursor position.} $9A30 BIT 4,(HL) ; {If the creature is real then jump to #R$9A45. $9A32 JR Z,$9A45 ; } $9A34 LD DE,$00A0 ; {If the creature is an illusion then we need to see if $9A37 ADD HL,DE ; the wizard has MOUNTED it so set HL to the corresponding ; entry in map_area_table_5} $9A38 LD A,(HL) ; {Copy the byte (a wizard ID) from table 5 to the map $9A39 LD HL,($AC12) ; area. This is because when the spell is cast on a $9A3C LD (HL),A ; mounted wizard, the mount disappears so we are going to ; move the wizard from table 5 to table 1.} $9A3D CALL $9A52 ; Call disbelieve_spell_4 to play sound effect and animate ; an explosion. $9A40 LD A,$01 ; {Set spell_success_flag to 1. $9A42 LD ($9167),A ; } *$9A45 CALL $97A3 ; {Call routine11 to display a message on the bottom line $9A48 LD HL,($AC12) ; as to whether the casting spell of the spell succeeded ; or failed.} $9A4B LD DE,$01E1 ; {Set bit 5 of the object's byte in map_area_table_5 so $9A4E ADD HL,DE ; that the object is marked to be disbelieved at #R$9ABE. $9A4F SET 5,(HL) ; $9A51 RET ; } ; This entry point is used by the routines at #R$9C0F and #R$D732. *$9A52 LD HL,$9121 ; {Play sound effect 3. $9A55 LD ($C2F3),HL ; $9A58 CALL $C2F6 ; } $9A5B LD A,$46 ; {Set ATTR T to bright yellow on black. $9A5D LD ($5C8F),A ; } $9A60 LD HL,$A345 ; {Set explosion_sprite_pointer to the first frame of the $9A63 LD ($A188),HL ; explosion animation.} $9A66 LD HL,($AC12) ; {We need to convert the address of the map object into $9A69 LD ($E005),HL ; coordinates: Store the cursor position in unknown66 $9A6C CALL $E007 ; ready for use in the call to address_to_coordinate.} $9A6F LD ($DF4C),HL ; HL now contains game board coordinates in the form (L,H) ; of where to display the animation so store them in ; LC_POS. $9A72 LD B,$07 ; Set loop counter to 7 for the seven frames of animation ; of the explosion. $9A74 DI ; Disable interrupts. *$9A75 PUSH BC ; Preserve loop counter. $9A76 LD HL,($A188) ; {Print the current animation frame for the explosion. $9A79 LD ($DF4A),HL ; $9A7C CALL $DF4E ; } $9A7F CALL $C301 ; Play sound effect. $9A82 LD DE,$0020 ; {Point HL at the next animation frame - 32 bytes per $9A85 LD HL,($A188) ; frame since we are using 2x2 sprites. $9A88 ADD HL,DE ; $9A89 LD ($A188),HL ; } $9A8C POP BC ; Restore loop counter. $9A8D DJNZ $9A75 ; Loop back round to display the next frame of the ; explosion animation. $9A8F CALL $C0DD ; Call routine49_0 to update the map area data, animation ; frame data and redraw the border. $9A92 EI ; Enable interrupts. $9A93 HALT ; Wait for an interrupt. $9A94 RET ; Return. ; Load HL with the map position of an enemy wizard. ; ; Called for computer-controlled players. c$9A95 LD HL,($AC14) ; $9A98 LD ($C78B),HL ; Store the enemy wizard's address in #R$C78B. $9A9B CALL $C7BC ; {... "???" $9A9E LD HL,($C78B) ; $9AA1 LD ($AC14),HL ; $9AA4 LD HL,$D3F2 ; $9AA7 LD ($CD86),HL ; $9AAA LD A,($C7BB) ; $9AAD INC A ; $9AAE CALL $C64C ; } ; This entry point is used by the routines at #R$9ABE and #R$D7A6. *$9AB1 CALL $A17E ; Call GETPLA to increment HL through the map area and ; load the current object code into A. $9AB4 CP $FF ; {If the current object code is *NOT* FF then jump ahead $9AB6 JR NZ,$9ABE ; to disbelieve_spell_8 to process it (I saw this ; somewhere else, and at the time wondered if he is using ; FF as an 'EOF'-type marker).} $9AB8 LD A,$00 ; {We are at the end of the map so reset unknown10 [I can $9ABA LD ($975F),A ; only ever see this being assigned to, not read...] ???} $9ABD RET ; Return. ; Point HL at the map area object table and load the byte for the current ; position into A (as indicated by the offset DE). ; ; Used by the routine at #R$9A95. c$9ABE LD HL,$E01F ; $9AC1 LD D,$00 ; $9AC3 LD E,A ; $9AC4 ADD HL,DE ; $9AC5 LD ($AC12),HL ; $9AC8 LD A,(HL) ; $9AC9 CP $22 ; {Similarly to earlier at $9A18, if the current object $9ACB JP P,$9AB1 ; cannot be disbelieved then jump back to ; disbelieve_spell7} $9ACE LD DE,$01E1 ; {Point HL to the current object's entry in $9AD1 ADD HL,DE ; map_area_table_4 and test bit 5 to see if the object has $9AD2 BIT 5,(HL) ; been set as 'disbelieved'.} $9AD4 JR NZ,$9AB1 ; If bit 5 is not set then jump back to disbelieve_spell_7 ; to process the next map object, i.e. keep looking for ; the object which is set to be disbelieved. $9AD6 CALL $967A ; We have an object that has been set as disbelieved so ; display a message at the bottom of the screen with the ; wizard's name, spell name, spell range by calling ; display_wizard_spell_range. $9AD9 CALL $9A21 ; Jump to the routine that displays the twirling animation ; / sees if the spell will succeed / play sound effect / ; etc. $9ADC RET ; Return. ; Set unknown11 at $97CE to 8. ; ; Trees&Castles spell ; . ; There are various trees/castles dealt with by this spell. c$9ADD LD A,$08 ; $9ADF LD ($97CE),A ; $9AE2 LD A,($937B) ; Load the code for the current spell into A. $9AE5 CP $26 ; {If it is for the Magic Wood or Shadow Wood then jump to $9AE7 JP M,$9AEF ; $9AEF.} $9AEA LD A,$01 ; {Set unknown11 at $97CE to 1 --> is that so we know we $9AEC LD ($97CE),A ; are looking at a castle instead?} ; This entry point is used by the routine at #R$D7EE. *$9AEF LD A,($AC2E) ; {If the current player is computer-controlled then jump $9AF2 OR A ; to $9B00. $9AF3 JR NZ,$9B00 ; } $9AF5 LD A,($937B) ; This is a human player so load A with the current spell. $9AF8 CP $24 ; {If it is for a Magic Wood then jump to $9B1F. $9AFA JR Z,$9B1F ; } $9AFC CALL $981A ; Otherwise it is for a Shadow Wood so call $981A to ... ; ??? $9AFF RET ; Return ; Routine at 9B00 ; ; Used by the routine at #R$9ADD. c$9B00 LD A,($937B) ; Pointlessly load A with the current spell. $9B03 CP $26 ; {Compare 0 with 38 and always jump to $9B1C?!?? $9B05 JP M,$9B1C ; } $9B08 LD HL,($AC12) ; {Otherwise load the object code at the cursor into A. $9B0B LD A,(HL) ; } $9B0C CP $26 ; Compare it with the code for a Magic Castle. $9B0E JP M,$9B1C ; If it is earlier in the object table (i.e. a wood) then ; jump to $9B1C. $9B11 CP $28 ; {If it is a wizard then reset unknown 10 $975F. $9B13 JP P,$9B1C ; $9B16 LD A,$00 ; $9B18 LD ($975F),A ; } $9B1B RET ; Return. ; Call routine to display wizard's name, spell and range. ; ; Used by the routines at #R$9B00 and #R$D7EE. c$9B1C CALL $967A ; ; This entry point is used by the routine at #R$9ADD. *$9B1F LD HL,($AC14) ; {.. $9B22 LD ($C8B7),HL ; $9B25 LD A,$0D ; $9B27 LD ($AC03),A ; } $9B2A CALL $9760 ; Call routine to see if the spell succeeds and then ; updates the global Chaos/Law balance. $9B2D LD A,($97CE) ; {.. $9B30 LD B,A ; *$9B31 PUSH BC ; $9B32 CALL $C955 ; *$9B35 CALL $C9DC ; $9B38 CP $4B ; $9B3A JR Z,$9B74 ; $9B3C CALL $980E ; $9B3F JR Z,$9B35 ; $9B41 LD HL,($AC12) ; $9B44 LD A,(HL) ; $9B45 OR A ; $9B46 JR NZ,$9B35 ; $9B48 CALL $98F1 ; $9B4B JR NZ,$9B35 ; $9B4D CALL $98DB ; $9B50 JR NZ,$9B35 ; } $9B52 CALL $A18A ; Display a twirling animation at the cursor coordinates ; when the spell is cast. $9B55 LD A,($9167) ; {If the spell failed then jump to $9B71. $9B58 OR A ; $9B59 JR Z,$9B71 ; } $9B5B LD A,($937B) ; {Otherwise load A with the number of the current spell. $9B5E LD HL,($AC12) ; } $9B61 LD (HL),A ; Store the current spell number in the map. $9B62 LD DE,$01E1 ; Set up an offset of 3 tables. $9B65 ADD HL,DE ; Move HL into table 4 [owner numbers etc]. $9B66 LD A,($AC0E) ; {Store the current player number in table 4. $9B69 LD (HL),A ; } $9B6A CALL $C0DD ; Call $C0D8 (???) to update tables and draw border. $9B6D POP BC ; Restore loop counter. $9B6E DJNZ $9B31 ; Loop back to $9B31. $9B70 RET ; Return. ; Display whether spell succeeded or failed. ; ; Used by the routine at #R$9B1C. c$9B71 CALL $97A3 ; ; This entry point is used by the routine at #R$9B1C. *$9B74 POP BC ; ... $9B75 RET ; {Return. $9B76 LD A,$04 ; $9B78 LD ($97CE),A ; $9B7B LD A,($AC2E) ; $9B7E OR A ; $9B7F JR NZ,$9B85 ; $9B81 CALL $981A ; $9B84 RET ; } ; routine17: ; ; Used by the routine at #R$9B71. c$9B85 LD A,$09 ; $9B87 LD ($AC03),A ; $9B8A LD HL,($AC14) ; $9B8D LD ($C78B),HL ; $9B90 CALL $C7BC ; $9B93 LD HL,($C78B) ; $9B96 LD ($AC14),HL ; $9B99 LD HL,$D3F2 ; $9B9C LD ($CD86),HL ; $9B9F LD A,($C7BB) ; $9BA2 INC A ; $9BA3 CALL $C64C ; ; This entry point is used by the routine at #R$9BB3. *$9BA6 CALL $A17E ; $9BA9 CP $FF ; $9BAB JR NZ,$9BB3 ; $9BAD LD A,$00 ; $9BAF LD ($975F),A ; $9BB2 RET ; ; routine18: ; ; Used by the routine at #R$9B85. c$9BB3 LD D,$00 ; $9BB5 LD E,A ; $9BB6 LD HL,$E01F ; $9BB9 ADD HL,DE ; $9BBA LD ($AC12),HL ; $9BBD LD ($C8B7),HL ; $9BC0 LD A,(HL) ; $9BC1 CP $1E ; $9BC3 JP P,$9BCD ; $9BC6 CP $13 ; $9BC8 JP M,$9BCD ; $9BCB JR $9BA6 ; ; This entry point is used by the routine at #R$D887. *$9BCD CALL $9760 ; $9BD0 CALL $967A ; $9BD3 LD B,$04 ; *$9BD5 PUSH BC ; $9BD6 CALL $C955 ; *$9BD9 CALL $C9DC ; $9BDC CP $4B ; $9BDE JR Z,$9C02 ; $9BE0 CALL $980E ; $9BE3 JR Z,$9BD9 ; $9BE5 LD HL,($AC12) ; $9BE8 LD A,(HL) ; $9BE9 OR A ; $9BEA JR NZ,$9BD9 ; $9BEC CALL $9C0F ; $9BEF JR NZ,$9BD9 ; $9BF1 CALL $98DB ; $9BF4 JR NZ,$9BD9 ; $9BF6 CALL $A18A ; $9BF9 LD A,($9167) ; $9BFC OR A ; $9BFD JR Z,$9C09 ; $9BFF CALL $9941 ; *$9C02 POP BC ; $9C03 DJNZ $9BD5 ; $9C05 CALL $97A3 ; $9C08 RET ; *$9C09 CALL $97A3 ; $9C0C POP BC ; $9C0D RET ; ; Data block at 9C0E b$9C0E DEFB $00 ; routine19: ; ; Used by the routines at #R$9856, #R$9BB3 and #R$D588. c$9C0F LD A,$00 ; $9C11 LD ($9C0E),A ; $9C14 LD A,($937B) ; $9C17 CP $28 ; $9C19 JR NZ,$9C54 ; $9C1B LD HL,$CD2A ; $9C1E LD ($CD3A),HL ; $9C21 LD HL,($AC14) ; $9C24 LD ($C78B),HL ; $9C27 LD B,$08 ; *$9C29 PUSH BC ; $9C2A LD HL,($AC12) ; $9C2D LD ($AC14),HL ; $9C30 CALL $CD3C ; $9C33 LD HL,($AC14) ; $9C36 LD A,H ; $9C37 ADD A,L ; $9C38 JR Z,$9C4B ; $9C3A LD A,(HL) ; $9C3B SUB $29 ; $9C3D JP M,$9C4B ; $9C40 LD HL,$AC0E ; $9C43 CP (HL) ; $9C44 JR NZ,$9C4B ; $9C46 LD A,$01 ; $9C48 LD ($9C0E),A ; *$9C4B POP BC ; $9C4C DJNZ $9C29 ; $9C4E LD HL,($C78B) ; $9C51 LD ($AC14),HL ; *$9C54 LD A,($9C0E) ; $9C57 OR A ; $9C58 RET ; $9C59 LD A,($AC2E) ; $9C5C OR A ; $9C5D JP NZ,$9D8A ; *$9C60 CALL $BC96 ; $9C63 CALL $02BF ; $9C66 CP $53 ; $9C68 JR Z,$9C76 ; $9C6A CP $4B ; $9C6C JR NZ,$9C60 ; $9C6E LD HL,$C2B1 ; $9C71 CALL $C2F9 ; $9C74 EI ; $9C75 RET ; *$9C76 LD HL,($AC12) ; $9C79 LD A,(HL) ; $9C7A OR A ; $9C7B JR Z,$9C60 ; $9C7D EX DE,HL ; $9C7E LD HL,($AC14) ; $9C81 XOR A ; $9C82 SBC HL,DE ; $9C84 JR Z,$9C60 ; $9C86 CALL $9786 ; $9C89 JP P,$9CA4 ; $9C8C CALL $BED7 ; $9C8F LD BC,$1600 ; $9C92 LD A,$45 ; $9C94 LD ($5C8F),A ; $9C97 LD A,$35 ; $9C99 CALL $BAFB ; $9C9C CALL $BBCC ; $9C9F CALL $BBB0 ; $9CA2 JR $9C60 ; *$9CA4 CALL $98DB ; $9CA7 JR NZ,$9C60 ; *$9CA9 LD A,$05 ; $9CAB LD ($B60B),A ; $9CAE LD HL,$C275 ; $9CB1 LD ($C2F3),HL ; $9CB4 LD A,($937B) ; $9CB7 CP $2B ; $9CB9 JP M,$9CC7 ; $9CBC LD HL,$912B ; $9CBF LD ($C2F3),HL ; $9CC2 LD A,$06 ; $9CC4 LD ($B60B),A ; *$9CC7 CALL $C2F6 ; $9CCA CALL $B626 ; $9CCD CALL $C0DD ; $9CD0 LD HL,$C29D ; $9CD3 LD ($C2F3),HL ; $9CD6 CALL $C2F6 ; $9CD9 LD HL,($AC12) ; $9CDC LD ($E005),HL ; $9CDF CALL $E007 ; $9CE2 LD ($DF4C),HL ; $9CE5 LD A,$47 ; $9CE7 LD ($5C8F),A ; $9CEA LD HL,$BFB7 ; $9CED LD B,$09 ; $9CEF LD DE,$0020 ; *$9CF2 PUSH BC ; $9CF3 PUSH HL ; $9CF4 PUSH DE ; $9CF5 LD ($DF4A),HL ; $9CF8 CALL $DF4E ; $9CFB CALL $C301 ; $9CFE POP DE ; $9CFF POP HL ; $9D00 POP BC ; $9D01 ADD HL,DE ; $9D02 DJNZ $9CF2 ; $9D04 CALL $C0DD ; $9D07 LD HL,($AC12) ; $9D0A LD A,(HL) ; $9D0B CP $23 ; $9D0D JR Z,$9D7F ; $9D0F CP $28 ; $9D11 JR Z,$9D7F ; $9D13 CP $27 ; $9D15 JR Z,$9D7F ; $9D17 CP $26 ; $9D19 JR Z,$9D7F ; $9D1B LD D,A ; $9D1C LD E,$10 ; $9D1E CALL $BE0A ; $9D21 LD ($A172),A ; $9D24 LD A,(HL) ; $9D25 CP $29 ; $9D27 JP M,$9D41 ; $9D2A SUB $29 ; $9D2C LD HL,$AC16 ; $9D2F LD D,$00 ; $9D31 LD E,A ; $9D32 ADD HL,DE ; $9D33 LD A,(HL) ; $9D34 AND $C0 ; $9D36 OR A ; $9D37 JR Z,$9D41 ; $9D39 RLCA ; $9D3A RLCA ; $9D3B INC A ; $9D3C LD HL,$A172 ; $9D3F ADD A,(HL) ; $9D40 LD (HL),A ; *$9D41 CALL $BE94 ; $9D44 LD HL,$A172 ; $9D47 ADD A,(HL) ; $9D48 LD (HL),A ; $9D49 CALL $BE94 ; $9D4C ADD A,$03 ; $9D4E LD E,A ; $9D4F LD A,($937B) ; $9D52 CP $2B ; $9D54 JP M,$9D5B ; $9D57 LD A,E ; $9D58 ADD A,$03 ; $9D5A LD E,A ; *$9D5B LD A,E ; $9D5C LD HL,$A172 ; $9D5F CP (HL) ; $9D60 JP M,$9D7F ; $9D63 CALL $9A52 ; $9D66 LD HL,($AC12) ; $9D69 LD A,(HL) ; $9D6A CP $29 ; $9D6C JP P,$9D83 ; $9D6F LD (HL),$01 ; $9D71 LD DE,$0281 ; $9D74 ADD HL,DE ; $9D75 LD A,(HL) ; $9D76 OR A ; $9D77 JR Z,$9D7F ; $9D79 LD (HL),$00 ; $9D7B LD HL,($AC12) ; $9D7E LD (HL),A ; *$9D7F CALL $C0DD ; $9D82 RET ; *$9D83 CALL $B3C9 ; $9D86 CALL $C0DD ; $9D89 RET ; *$9D8A LD HL,($AC14) ; $9D8D LD ($C649),HL ; $9D90 LD ($C78B),HL ; $9D93 CALL $CC56 ; $9D96 CALL $9DB2 ; $9D99 CP $FF ; $9D9B JR NZ,$9DA3 ; $9D9D LD A,$00 ; $9D9F LD ($975F),A ; $9DA2 RET ; *$9DA3 CALL $967A ; $9DA6 CALL $9CA9 ; $9DA9 RET ; *$9DAA LD HL,($CD86) ; $9DAD INC HL ; $9DAE INC HL ; $9DAF LD ($CD86),HL ; *$9DB2 LD HL,($CD86) ; $9DB5 LD A,(HL) ; $9DB6 CP $FF ; $9DB8 RET Z ; $9DB9 LD HL,$E01F ; $9DBC LD D,$00 ; $9DBE LD E,A ; $9DBF ADD HL,DE ; $9DC0 LD ($AC12),HL ; $9DC3 LD A,(HL) ; $9DC4 CP $25 ; $9DC6 JR Z,$9DD2 ; $9DC8 CP $29 ; $9DCA JP P,$9DD2 ; $9DCD CP $23 ; $9DCF JP P,$9DAA ; *$9DD2 CALL $9786 ; $9DD5 JP M,$9DAA ; $9DD8 CALL $98DB ; $9DDB JP NZ,$9DAA ; $9DDE XOR A ; $9DDF RET ; $9DE0 LD A,($AC2E) ; $9DE3 OR A ; $9DE4 JP NZ,$9EF9 ; $9DE7 CALL $9760 ; $9DEA LD A,($9167) ; $9DED OR A ; $9DEE JR NZ,$9DF4 ; $9DF0 CALL $97A3 ; $9DF3 RET ; *$9DF4 CALL $BED7 ; $9DF7 LD A,($9167) ; $9DFA OR A ; $9DFB RET Z ; $9DFC LD B,$01 ; $9DFE LD A,($937B) ; $9E01 CP $2F ; $9E03 JP M,$9E08 ; $9E06 LD B,$03 ; *$9E08 PUSH BC ; *$9E09 CALL $BC96 ; $9E0C CALL $02BF ; $9E0F CP $53 ; $9E11 JR Z,$9E20 ; $9E13 CP $4B ; $9E15 JR NZ,$9E09 ; $9E17 LD HL,$C2B1 ; $9E1A CALL $C2F9 ; $9E1D EI ; $9E1E POP BC ; $9E1F RET ; *$9E20 LD HL,($AC12) ; $9E23 LD A,(HL) ; $9E24 OR A ; $9E25 JR Z,$9E09 ; $9E27 CP $29 ; $9E29 JP P,$9E31 ; $9E2C CP $22 ; $9E2E JP P,$9E09 ; *$9E31 CALL $9E38 ; $9E34 POP BC ; $9E35 DJNZ $9E08 ; $9E37 RET ; *$9E38 LD HL,$9135 ; $9E3B LD ($C2F3),HL ; $9E3E CALL $C0DD ; $9E41 HALT ; $9E42 DI ; $9E43 LD HL,$D808 ; $9E46 LD ($5C36),HL ; $9E49 CALL $C2F6 ; $9E4C LD B,$03 ; *$9E4E PUSH BC ; $9E4F LD B,$07 ; *$9E51 PUSH BC ; $9E52 LD A,B ; $9E53 ADD A,$40 ; $9E55 LD ($5C8D),A ; $9E58 LD A,$00 ; $9E5A LD ($5C8E),A ; $9E5D LD HL,($AC12) ; $9E60 CALL $C703 ; $9E63 LD ($BC94),HL ; $9E66 LD A,$02 ; $9E68 CALL $1601 ; $9E6B LD BC,($BC94) ; $9E6F CALL $BC8D ; $9E72 LD A,$16 ; $9E74 RST $10 ; $9E75 LD A,B ; $9E76 RST $10 ; $9E77 LD A,C ; $9E78 RST $10 ; $9E79 LD A,$20 ; $9E7B RST $10 ; $9E7C LD A,$20 ; $9E7E RST $10 ; $9E7F INC B ; $9E80 LD A,$16 ; $9E82 RST $10 ; $9E83 LD A,B ; $9E84 RST $10 ; $9E85 LD A,C ; $9E86 RST $10 ; $9E87 LD A,$20 ; $9E89 RST $10 ; $9E8A LD A,$20 ; $9E8C RST $10 ; $9E8D CALL $C301 ; $9E90 POP BC ; $9E91 DJNZ $9E51 ; $9E93 POP BC ; $9E94 DJNZ $9E4E ; $9E96 CALL $C0DD ; $9E99 HALT ; $9E9A LD A,$FF ; $9E9C LD ($5C8E),A ; $9E9F LD HL,($AC12) ; $9EA2 LD D,(HL) ; $9EA3 LD E,$13 ; $9EA5 CALL $BE0A ; $9EA8 LD E,A ; $9EA9 CALL $BE94 ; $9EAC INC E ; $9EAD CP E ; $9EAE JP P,$9EB6 ; $9EB1 CALL $C0DD ; $9EB4 HALT ; $9EB5 RET ; *$9EB6 LD HL,($AC12) ; $9EB9 LD A,(HL) ; $9EBA CP $29 ; $9EBC JP M,$9ED3 ; $9EBF CALL $9A52 ; $9EC2 LD HL,($AC12) ; $9EC5 LD A,(HL) ; $9EC6 SUB $29 ; $9EC8 LD ($AC00),A ; $9ECB CALL $B4FA ; $9ECE CALL $C0DD ; $9ED1 HALT ; $9ED2 RET ; *$9ED3 LD (HL),$01 ; $9ED5 LD DE,$0281 ; $9ED8 ADD HL,DE ; $9ED9 LD A,(HL) ; $9EDA OR A ; $9EDB JR Z,$9EE5 ; $9EDD LD (HL),$00 ; $9EDF LD HL,($AC12) ; $9EE2 LD (HL),A ; $9EE3 JR $9EF1 ; *$9EE5 LD HL,($AC12) ; $9EE8 LD DE,$0321 ; $9EEB ADD HL,DE ; $9EEC LD A,(HL) ; $9EED LD HL,($AC12) ; $9EF0 LD (HL),A ; *$9EF1 CALL $9A52 ; $9EF4 CALL $C0DD ; $9EF7 HALT ; $9EF8 RET ; *$9EF9 CALL $967A ; $9EFC CALL $9760 ; $9EFF LD A,($9167) ; $9F02 OR A ; $9F03 JR NZ,$9F09 ; $9F05 CALL $97A3 ; $9F08 RET ; *$9F09 LD B,$01 ; $9F0B LD A,($937B) ; $9F0E CP $2F ; $9F10 JP M,$9F15 ; $9F13 LD B,$03 ; *$9F15 PUSH BC ; $9F16 LD HL,($AC14) ; $9F19 LD ($C649),HL ; $9F1C LD ($C78B),HL ; $9F1F CALL $CC56 ; $9F22 LD HL,$D3F2 ; $9F25 LD ($CD86),HL ; *$9F28 CALL $A17E ; $9F2B CP $FF ; $9F2D JR NZ,$9F31 ; $9F2F POP BC ; $9F30 RET ; *$9F31 LD D,$00 ; $9F33 LD E,A ; $9F34 LD HL,$E01F ; $9F37 ADD HL,DE ; $9F38 LD ($AC12),HL ; $9F3B LD A,(HL) ; $9F3C OR A ; $9F3D JR Z,$9F28 ; $9F3F CP $29 ; $9F41 JP P,$9F49 ; $9F44 CP $22 ; $9F46 JP P,$9F28 ; *$9F49 CALL $9E38 ; $9F4C POP BC ; $9F4D DJNZ $9F15 ; $9F4F RET ; ; This entry point is used by the routine at #R$8741. *$9F50 LD HL,$E01F ; Point HL at the beginning of the map table. $9F53 LD ($AC12),HL ; Store this address in $AC12. $9F56 CALL $A173 ; Call routine to reset bit 7 for all entries in the 4th ; map table so that they can be moved. $9F59 LD B,$9F ; Set loop counter for table size. *$9F5B PUSH BC ; Preserve loop counter. $9F5C LD HL,($AC12) ; Load HL with current cursor position in the map. $9F5F LD ($AC14),HL ; Save it temporarily in D_ADD. $9F62 LD DE,$01E1 ; Set offset into table 4 [with the owner numbers + ; properties] $9F65 ADD HL,DE ; Point HL into the corresponding byte in table 4. $9F66 BIT 7,(HL) ; Test bit 7 that indicates whether the object has already ; moved, or been killed, in this turn. $9F68 JP NZ,$A114 ; If bit 7 was set then jump to $A114 to skip this object. $9F6B LD HL,($AC14) ; Otherwise object is alive & movable so get HL back out ; of D_ADD. $9F6E LD A,(HL) ; Load the object from the map into A. $9F6F CP $22 ; {If the object is is not a gooey blob or magic fire then $9F71 JP M,$A114 ; jump to $A114. [NB These two objects spawn themselves $9F74 CP $24 ; randomly.] $9F76 JP P,$A114 ; } $9F79 LD DE,$01E1 ; Load offset into 4th table. $9F7C ADD HL,DE ; Point HL at corresponding byte in 4th table. $9F7D LD A,(HL) ; Load byte into A. $9F7E AND $07 ; Mask off the owner number for this object. $9F80 LD ($AC0E),A ; Save this object's owner number in $AC0E. $9F83 CALL $BE94 ; Get a random number. $9F86 CP $09 ; {If it is >=9 then jump to $A0C6 to ... "???" $9F88 JP P,$A0C6 ; } $9F8B LD HL,($AC14) ; Otherwise load the map address back into HL. $9F8E LD A,(HL) ; Load the current object into A. $9F8F CP $23 ; {If the object code is for Magic Fire then jump to $9F91 JR Z,$9F9B ; $9F9B.} $9F93 CALL $BE94 ; Otherwise we are looking at the Gooey Blob & get another ; random number. $9F96 CP $08 ; {If it is bigger than 8 then jump to $A0C6. $9F98 JP P,$A0C6 ; } *$9F9B CALL $BE94 ; PROCESSING MAGIC FIRE: Generate a random number... $9F9E CP $08 ; ... until it is less than or equal to 8. $9FA0 JP P,$9F9B ; {Point HL at SPATAB at $CD2A. $9FA3 LD HL,$CD2A ; } $9FA6 LD D,$00 ; Reset D as we don't want it in a moment. $9FA8 SLA A ; Double the random number in A - is it a two byte ; pointer? $9FAA LD E,A ; And load it into E. $9FAB ADD HL,DE ; Add the number in E to HL. $9FAC LD ($CD3A),HL ; Store HL in CD3A = SPADAT ?? *not used elsewhere in this ; routine) $9FAF CALL $CD3C ; Call routine ADSPA at $CD3C to ....? [ADD SPACES "???"] $9FB2 LD HL,($AC14) ; Load HL with current cursor position in the map. $9FB5 LD A,H ; Load high byte of address into A. $9FB6 ADD A,L ; And add low byte of address. $9FB7 JP Z,$A114 ; If the total sets the zero flag than jump to $A114 - eh? ; some sort of boundary? $9FBA CALL $9786 ; Call routine $9786 to see if the target is in range. $9FBD LD A,($BEE8) ; Load A with $BEE8. $9FC0 CP $04 ; {If it is greater than 4 then jump to $A114. $9FC2 JP P,$A114 ; } $9FC5 LD HL,($AC14) ; Load HL with current cursor position in the map. $9FC8 LD A,(HL) ; Load A with the current object. $9FC9 OR A ; {If it is 0 for an empty cell then jump to $A09B. $9FCA JP Z,$A09B ; } $9FCD CP $29 ; {If it is wizard1 then jump to $A011. $9FCF JP P,$A011 ; } $9FD2 CP $26 ; {If it is a Dark Citadel, Wall or another wizard then $9FD4 JP P,$A0C6 ; jump to $A0C6.} $9FD7 CP $24 ; {If it is a Magic Wood then jump to $A0C6. $9FD9 JP Z,$A0C6 ; } $9FDC LD DE,$0141 ; Set up an offset of two tables. $9FDF ADD HL,DE ; Point HL into table 3. $9FE0 LD A,(HL) ; Load the current animation data into A. $9FE1 CP $04 ; {It is is frame 4 for a dead object then jump to $A09B. $9FE3 JP Z,$A09B ; } $9FE6 LD DE,$00A0 ; Set up an offset for a single table. $9FE9 ADD HL,DE ; Point HL into table 4. $9FEA LD A,(HL) ; Load A with the byte from table 4 for the owner ; information. $9FEB AND $07 ; Mask off the lower three bits. $9FED LD HL,$AC0E ; Point HL at the current player variable. $9FF0 CP (HL) ; Compare it with the player number in A. $9FF1 JP Z,$A114 ; If they are the same then jump to $A114. $9FF4 LD HL,($AC14) ; Load HL with current cursor position in the map. $9FF7 LD A,(HL) ; {If the current object is a after bat in the creature $9FF8 CP $16 ; table then jump to $A03D. $9FFA JP P,$A03D ; } $9FFD CP $10 ; {If the current object is before a horse in the creature $9FFF JP M,$A03D ; table then jump to $A03D.} $A002 CP $29 ; {If the current object is one of wizards 2-8 then jump $A004 JP P,$A011 ; to $A011.} $A007 LD DE,$0281 ; Set up a four table offset. $A00A ADD HL,DE ; Add to HL to make it point into table 5. $A00B LD A,(HL) ; Load the byte from table 5. $A00C CP $29 ; Compare with 41. $A00E JP M,$A03D ; If it is a creature rather than a wizard then jump to ; $A03D. *$A011 LD HL,$AC0E ; Point HL at the current player variable. $A014 SUB $29 ; Subtract 41 (wizard 1's object code) from A. $A016 CP (HL) ; Compare the result with the current player pointed to by ; HL. $A017 JP Z,$A114 ; If they are the same then jump to $A114. $A01A ADD A,$29 ; Add 41 back onto A to get the object's code back. $A01C LD HL,($AC12) ; Load HL with the cursor pointer. $A01F PUSH HL ; And preserve it on the stack. $A020 LD HL,($AC14) ; Load HL with the cursor pointer. $A023 LD DE,$0281 ; Set up an offset of four tables. $A026 ADD HL,DE ; Point HL into table 5. $A027 LD (HL),$00 ; Set the corresponding byte in table 5 to 0. $A029 LD HL,($AC14) ; Load HL with the cursor pointer. $A02C LD ($AC12),HL ; {Store the cursor pointer in $AC12. $A02F LD (HL),A ; } $A030 CALL $C0DD ; Call routine $C0D8 to ... (update map tables? and drawn ; border) $A033 CALL $B3C9 ; Gonna hazard a guess that a wizard has been killed at ; this point... $A036 POP HL ; Restore HL with the cursor position. $A037 LD ($AC12),HL ; And store it in $AC12. $A03A JP $A09B ; Jump to $A09B. *$A03D LD HL,($AC12) ; Load HL with the cursor pointer. $A040 LD A,(HL) ; Load A with the object's code. $A041 CP $23 ; {Compare it with 35 for Magic Fire. $A043 JR Z,$A075 ; $A045 LD HL,($AC14) ; $A048 LD A,(HL) ; $A049 CP $23 ; } $A04B JP P,$A0C6 ; If the object is after Magic Fire in the table then jump ; to $A0C6. $A04E LD DE,$0141 ; Load DE with an offset. $A051 ADD HL,DE ; Add to HL to make it point into table 3. $A052 LD A,(HL) ; Load A with the current animation frame. $A053 CP $04 ; {If it is frame 4 then jump to $A09B. $A055 JR Z,$A09B ; } $A057 LD HL,($AC14) ; Load HL with the cursor pointer. $A05A LD A,(HL) ; Load A with the object's code. $A05B LD DE,$0281 ; {Point HL into table 5. $A05E ADD HL,DE ; } $A05F LD (HL),A ; Store the object's code in table 5. $A060 LD DE,$00A0 ; {Move HL back to table 4. $A063 SBC HL,DE ; } $A065 LD A,(HL) ; Load the byte into A [owner, asleep, disbelieved, ; moved/killed] $A066 AND $07 ; Mask off the owner bits. $A068 LD DE,$0140 ; {Point HL into table 6. $A06B ADD HL,DE ; } $A06C LD (HL),A ; Save the owner into table 6. $A06D JR $A09B ; Jump to $A09B. $A06F LD HL,$9135 ; {Play sound effect 5. $A072 LD ($C2F3),HL ; } *$A075 LD HL,($AC14) ; Load HL with the cursor pointer. $A078 LD D,(HL) ; Load D with the object code. $A079 LD E,$10 ; Load E with the offset for the "DEFENCE" attribute. $A07B CALL $BE0A ; Call $BE0A to return this objects DEFENCE value. $A07E LD ($A172),A ; Store the value in $A172. $A081 CALL $BE94 ; Generate a random number. $A084 LD HL,$A172 ; Point HL at the stored DEFENCE value. $A087 ADD A,(HL) ; Add the DEFENCE value to the random number. $A088 LD (HL),A ; Store the total in STRENG $A172. $A089 CALL $BE94 ; Generate a random number. $A08C ADD A,$05 ; Add 5 to it. $A08E LD HL,$A172 ; {Compare it with the object's STRENG value. $A091 CP (HL) ; } $A092 JP P,$A0C6 ; If the random value in A is bigger then the STRENG value ; pointed at by HL then jump to $A0C6. $A095 LD HL,$913F ; {Otherwise play sound effect 6. $A098 LD ($C2F3),HL ; } *$A09B LD HL,($AC12) ; Restore the cursor position. $A09E LD A,(HL) ; Restore pointer into map area 1. $A09F LD HL,($AC14) ; Point HL at D_ADD in $AC14 which holds the cursor ; pointer. $A0A2 LD (HL),A ; Load the byte using HL which represents a location in ; map area 1. $A0A3 LD DE,$0141 ; Set up an offset into map area 3 for the current ; animation value. $A0A6 ADD HL,DE ; Point HL at the byte with the current animation value. $A0A7 LD (HL),$00 ; Reset the byte. $A0A9 LD DE,$00A0 ; Set up an offset into table 4. $A0AC ADD HL,DE ; Point HL at the corresponding entry in table 4. $A0AD LD A,($AC0E) ; Load A with the number of the current player (0-7). $A0B0 ADD A,$80 ; Add 128 to 'toggle' bit 7 (why not just set it? Am I ; wrong here?..) - why??? $A0B2 LD (HL),A ; Store the byte in table 4. $A0B3 LD HL,($AC12) ; Load HL with cursor position. $A0B6 ADD HL,DE ; Add the offset so that HL points into table 2. $A0B7 SET 7,(HL) ; Set bit 7 of the corresponding byte to show that the ; object has moved/died? $A0B9 LD HL,($AC12) ; Load HL with the cursor position. $A0BC LD ($AC14),HL ; Store cursor position in $AC14 D_ADD. $A0BF CALL $C0DD ; Call routine to update #R$E01f, #R$E160 & draw border. $A0C2 CALL $C2F6 ; Play a sound effect. $A0C5 EI ; Enable interrupts. *$A0C6 CALL $BE94 ; Generate a random number. $A0C9 CP $02 ; {It if is bigger than 2 then jump to $A114. $A0CB JP P,$A114 ; } $A0CE LD HL,($AC14) ; Load HL with the cursor position. $A0D1 LD A,(HL) ; Load A with the object from the map. $A0D2 CP $23 ; {If the object is Magic Fire then jump to $A0DE. $A0D4 JR Z,$A0DE ; } $A0D6 CALL $BE94 ; Otherwise generate a random number. $A0D9 CP $03 ; {If it is bigger than 3 then jump to $A114. $A0DB JP P,$A114 ; } *$A0DE LD HL,($AC12) ; Otherwise load HL with the cursor position. $A0E1 LD DE,$0281 ; Set up an offset into table 5. $A0E4 ADD HL,DE ; Point HL at the entry in table 5. $A0E5 LD A,(HL) ; Load A with the byte from table 5. $A0E6 OR A ; {If it is 0 then jump to $A0FE. $A0E7 JR Z,$A0FE ; } $A0E9 LD (HL),$00 ; Otherwise store 0 in table 5. $A0EB LD HL,($AC12) ; Point HL at the entry in table 5. $A0EE LD (HL),A ; Load A with the object from the map table. $A0EF LD DE,$0321 ; Set up an offset into table 6. $A0F2 ADD HL,DE ; Add offset to HL. $A0F3 LD A,(HL) ; Load into A the byte from table 6. $A0F4 LD (HL),$00 ; Set the byte in table 6 to 0. $A0F6 LD DE,$0140 ; Set up an offset worth "two tables". $A0F9 SBC HL,DE ; Move HL back so that it points into table 4. $A0FB LD (HL),A ; Store the byte that came from table 6 in table 4. $A0FC JR $A109 ; Jump to $A109. *$A0FE LD HL,($AC12) ; Load HL with the cursor position. $A101 LD (HL),$01 ; Set the byte on the map to '1' which represente ; 'nothing'. $A103 LD DE,$0321 ; Set up an offset worth 5 tables. $A106 ADD HL,DE ; Add to HL so that HL now points into table 6. $A107 LD (HL),$00 ; Set the byte in table 6 to 0. *$A109 CALL $C0DD ; Call routine at $C0DD $A10C LD HL,$9149 ; Point HL at sound effect 7. $A10F CALL $C2F9 ; Play sound effect. $A112 EI ; Enable interrupts. $A113 HALT ; Wait for an interrupt. *$A114 POP BC ; Restore loop counter. $A115 LD HL,($AC12) ; {Move the cursor along one position and store. $A118 INC HL ; $A119 LD ($AC12),HL ; } $A11C DEC B ; Decrement loop counter. $A11D JP NZ,$9F5B ; Loop back if not finished. $A120 LD HL,$E01F ; Otherwise point HL back at the start of the map area. $A123 LD ($AC12),HL ; Set the cursor_position to the same address/value. $A126 LD B,$9F ; Set the loop counter to the size of the map. *$A128 PUSH BC ; Preserve the loop counter. $A129 LD HL,($AC12) ; Load cursor_position into HL. $A12C LD A,(HL) ; Load A with the current object. $A12D CP $26 ; {If it is a "Shadow Wood" or earlier object, jump to $A12F JP M,$A158 ; $A158.} $A132 CP $28 ; {If it is a wizard (object codes which are > 40), jump $A134 JP P,$A158 ; to $A158.} $A137 CALL $BE94 ; We must now be looking at a Magic Castle, a Dark Wood or ; a Wall so we load A with a random number. $A13A CP $02 ; If it's bigger than 2 then jump to $A158 because ... ??? $A13C JP P,$A158 ; {Otherwise load HL with the cursor position. $A13F LD HL,($AC12) ; } $A142 LD DE,$0281 ; Load DE with an offset into the 5th map table. $A145 ADD HL,DE ; Point HL at the byte in the 5th table. $A146 LD A,(HL) ; Load A with the byte. $A147 LD (HL),$00 ; Reset the byte at that location. $A149 OR A ; {If the byte in A is not zero then jump to $A14E. $A14A JR NZ,$A14E ; } $A14C LD A,$01 ; Otherwise set A to 1 to indicate ...? *$A14E LD HL,($AC12) ; {Store the non-zero byte from A in the current entry in $A151 LD (HL),A ; the 5th map.} $A152 CALL $9A52 ; Call $99F1 to display 7 frames of an explosion ; animation. $A155 CALL $C0DD ; Call $C0D8 to set current map byte to 1, amongst other ; things. *$A158 POP BC ; Restore loop counter. $A159 LD HL,($AC12) ; {Increment cursor position. $A15C INC HL ; $A15D LD ($AC12),HL ; } $A160 DJNZ $A128 ; Loop back to $A128. $A162 LD HL,$E076 ; {Set cursor position to the centre of the playing area $A165 LD ($AC12),HL ; ???} $A168 LD ($AC14),HL ; Save cursor position in D_ADD $AC14. $A16B CALL $C703 ; Call $C703 to convert an address into coordinates. $A16E LD ($BC94),HL ; Store cursor position. $A171 RET ; Return. ; Data block at A172 b$A172 DEFB $0C ; Load address of 4th map table which contains owner numbers + other stuff ; ; Used by the routines at #R$8741 and #R$9C0F. c$A173 LD HL,$E200 ; $A176 LD B,$9F ; Set loop counter to cover all bytes in the table. *$A178 RES 7,(HL) ; Reset bit 7 for the current byte in the table. $A17A INC HL ; Point at the next byte. $A17B DJNZ $A178 ; Loop back. $A17D RET ; Return. ; This entry point is used by the routines at #R$853B, #R$8639, #R$9A95, ; #R$9B85, #R$9C0F, #R$D7A6 and #R$D887. *$A17E LD HL,($CD86) ; $A181 INC HL ; $A182 LD A,(HL) ; $A183 INC HL ; $A184 LD ($CD86),HL ; $A187 RET ; } ; Data block at A188 b$A188 DEFB $00,$00 ; Look up the value that represents double the current spell's maximum casting ; distance. ; ; Displays a twirling animation at the target when the spell is cast. c$A18A LD A,(IX+$02) ; $A18D OR A ; {If it is 0 then jump ahead to routine20_0. $A18E JR Z,$A1A5 ; } $A190 LD HL,$912B ; {Otherwise, play sound effect 4. $A193 LD ($C2F3),HL ; $A196 CALL $C2F6 ; } $A199 LD A,$03 ; {Set unknown48 to 3 because C $A199 Set unknown48 to 3 $A19B LD ($B60B),A ; because routine28 expects the caller to set this...} $A19E CALL $B626 ; Call routine to display "lightning bolt" animation from ; the wizard to the target. $A1A1 CALL $C0DD ; Call routine to update map table information and draw ; the border. $A1A4 HALT ; Wait for an interrupt. *$A1A5 DI ; Disable interrupts. $A1A6 LD A,$45 ; {Set ATTR T to bright cyan on black. $A1A8 LD ($5C8F),A ; } $A1AB LD HL,$910D ; {Play sound effect 1. $A1AE LD ($C2F3),HL ; $A1B1 CALL $C2F6 ; } $A1B4 LD HL,$A1E8 ; {The table at $A1E8 is a set of 18 pointers to the ten $A1B7 LD ($A1E6),HL ; possible frames of animation. Here, we set the ; twirl_sprite_pointer variable so that it points to the ; first of these pointers.} $A1BA LD HL,($AC12) ; {Copy cursor position to unknown66. $A1BD LD ($E005),HL ; } $A1C0 CALL $E007 ; {Call routine to convert the cursor coordinates in $A1C3 LD ($DF4C),HL ; unknown66 into game board object into coordinates in HL ; as (L, H) and DE will contain the address of ; map_area_object_table for later use at A1D3.} $A1C6 LD B,$12 ; Set loop counter to 18 for the 18 pointers to frames of ; animation in the twirl sprites table at $A1E8. *$A1C8 PUSH BC ; Preserve loop counter. $A1C9 LD HL,($A1E6) ; Set HL so it contains the address of the next pointer to ; the frame of animation, e.g. on the first pass HL will ; contain A1E8 which is the pointer to twirlsprite0.; $A1CC LD E,(HL) ; {Load the two bytes of the address of the next frame of $A1CD INC HL ; animation into DE, e.g. after the first pass DE will $A1CE LD D,(HL) ; hold the address A20C.} $A1CF INC HL ; DE is pointing at the frame we want to display and HL is ; pointing at the pointer to a frame so we want to save ; that. Save for today and tomorrow will look after ; itself. $A1D0 LD ($A1E6),HL ; Store the address of the pointer to the next animation ; frame in the twirl_sprite_pointer variable. $A1D3 EX DE,HL ; After exchanging registers DE has the pointer to the ; next frame and HL contains the address of the current ; frame to display. $A1D4 LD ($DF4A),HL ; Store the current frame to display in C_DATA. $A1D7 CALL $DF4E ; Display the current frame. $A1DA CALL $C301 ; Play the current sound effect. $A1DD POP BC ; {Restore the loop counter and loop back. $A1DE DJNZ $A1C8 ; } $A1E0 CALL $C0DD ; Call routine to update map table information and draw ; the border. $A1E3 EI ; {Enable interrupts and wait for one. $A1E4 HALT ; } $A1E5 RET ; Return. ; Data block at A1E6 b$A1E6 DEFB $0C,$A2,$0C,$A2,$2C,$A2,$4C,$A2 $A1EE DEFB $6C,$A2,$0C,$A2,$2C,$A2,$4C,$A2 $A1F6 DEFB $6C,$A2,$0C,$A2,$2C,$A2,$4C,$A2 $A1FE DEFB $6C,$A2,$8C,$A2,$AC,$A2,$CD,$A2 $A206 DEFB $E5,$A2,$05,$A3,$25,$A3,$01,$01 $A20E DEFB $01,$01,$01,$01,$00,$FC,$80,$80 $A216 DEFB $80,$80,$80,$80,$00,$3F,$FC,$00 $A21E DEFB $01,$01,$01,$01,$01,$01,$3F,$00 $A226 DEFB $80,$80,$80,$80,$80,$80,$00,$00 $A22E DEFB $00,$60,$F8,$3E,$0C,$00,$10,$18 $A236 DEFB $38,$30,$70,$60,$20,$00,$00,$04 $A23E DEFB $06,$0E,$0C,$1C,$18,$08,$00,$30 $A246 DEFB $7C,$1F,$06,$00,$00,$00,$00,$00 $A24E DEFB $30,$38,$1C,$0E,$06,$00,$00,$00 $A256 DEFB $0C,$1C,$38,$70,$60,$00,$00,$06 $A25E DEFB $0E,$1C,$38,$30,$00,$00,$00,$60 $A266 DEFB $70,$38,$1C,$0C,$00,$00,$08,$18 $A26E DEFB $1C,$0C,$0E,$06,$04,$00,$00,$00 $A276 DEFB $00,$06,$1F,$7C,$30,$00,$00,$0C $A27E DEFB $3E,$F8,$60,$00,$00,$00,$00,$20 $A286 DEFB $60,$70,$30,$38,$18,$10,$01,$01 $A28E DEFB $01,$01,$01,$00,$00,$F8,$80,$80 $A296 DEFB $80,$80,$80,$00,$00,$1F,$F8,$00 $A29E DEFB $00,$01,$01,$01,$01,$01,$1F,$00 $A2A6 DEFB $00,$80,$80,$80,$80,$80,$00,$00 $A2AE DEFB $00,$60,$F8,$38,$00,$00,$10,$18 $A2B6 DEFB $38,$30,$30,$00,$00,$00,$00,$00 $A2BE DEFB $00,$0C,$0C,$1C,$18,$18,$08,$00 $A2C6 DEFB $00,$1C,$1F,$06,$00,$00,$00,$00 $A2CE DEFB $60,$70,$30,$00,$00,$00,$00,$00 $A2D6 DEFB $06,$0E,$0C,$00,$00,$00,$00,$00 $A2DE DEFB $00,$00,$00,$0C,$0E,$06,$00,$08 $A2E6 DEFB $18,$18,$00,$00,$00,$00,$00,$00 $A2EE DEFB $00,$00,$06,$07,$00,$00,$00,$00 $A2F6 DEFB $00,$00,$E0,$60,$00,$00,$00,$00 $A2FE DEFB $00,$00,$00,$00,$18,$18,$10,$01 $A306 DEFB $00,$00,$00,$00,$00,$00,$80,$80 $A30E DEFB $00,$00,$00,$00,$00,$00,$01,$80 $A316 DEFB $00,$00,$00,$00,$00,$00,$01,$01 $A31E DEFB $00,$00,$00,$00,$00,$00,$80,$00 $A326 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A32E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A336 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A33E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A346 DEFB $00,$00,$00,$02,$0A,$07,$0F,$00 $A34E DEFB $00,$00,$00,$A0,$C0,$E0,$C0,$07 $A356 DEFB $0A,$05,$00,$00,$00,$00,$00,$E0 $A35E DEFB $C0,$40,$00,$00,$00,$00,$00,$00 $A366 DEFB $00,$00,$02,$12,$0A,$07,$3D,$00 $A36E DEFB $00,$00,$90,$A0,$C0,$F0,$40,$07 $A376 DEFB $1A,$05,$09,$00,$00,$00,$00,$E0 $A37E DEFB $D0,$40,$40,$00,$00,$00,$00,$00 $A386 DEFB $02,$02,$22,$12,$0B,$06,$7D,$00 $A38E DEFB $00,$48,$90,$A0,$C0,$B8,$40,$06 $A396 DEFB $1B,$25,$09,$11,$01,$00,$00,$E0 $A39E DEFB $D0,$48,$40,$20,$00,$00,$00,$02 $A3A6 DEFB $02,$42,$22,$10,$0B,$06,$F8,$00 $A3AE DEFB $44,$48,$90,$A0,$40,$AC,$40,$06 $A3B6 DEFB $19,$64,$09,$11,$21,$01,$00,$A0 $A3BE DEFB $50,$48,$44,$20,$20,$00,$00,$02 $A3C6 DEFB $82,$42,$22,$00,$0A,$04,$D0,$22 $A3CE DEFB $44,$48,$80,$A0,$00,$AB,$00,$04 $A3D6 DEFB $11,$60,$81,$11,$21,$41,$81,$80 $A3DE DEFB $50,$00,$44,$22,$21,$10,$00,$02 $A3E6 DEFB $82,$00,$20,$12,$00,$00,$A0,$22 $A3EE DEFB $44,$00,$90,$00,$00,$12,$00,$00 $A3F6 DEFB $08,$41,$80,$01,$00,$41,$81,$00 $A3FE DEFB $40,$28,$00,$22,$01,$10,$10,$02 $A406 DEFB $80,$00,$22,$00,$00,$00,$80,$22 $A40E DEFB $00,$48,$00,$00,$00,$09,$00,$00 $A416 DEFB $00,$10,$80,$00,$01,$00,$81,$00 $A41E DEFB $00,$00,$24,$00,$11,$00,$10,$B0 $A426 DEFB $01,$53,$55,$42,$5F,$44,$CF,$9C $A42E DEFB $85,$46,$AC,$4D,$A4,$01,$44,$5F $A436 DEFB $41,$44,$C4,$14,$AC,$1F,$AC,$CB $A43E DEFB $A4,$01,$54,$45,$4D,$41,$44,$C4 $A446 DEFB $8B,$C7,$80,$A5,$54,$AE,$01,$45 $A44E DEFB $4E,$5F,$41,$CE,$BC,$C7,$DB,$A5 $A456 DEFB $30,$A8,$01,$49,$4E,$42,$55,$C6 $A45E DEFB $F2,$D3,$98,$B5,$00,$00,$01,$42 $A466 DEFB $55,$46,$50,$4E,$D4,$86,$CD,$00 $A46E DEFB $00,$23,$A8,$01,$53,$52,$54,$43 $A476 DEFB $4E,$D4,$BB,$C7,$00,$00,$56,$A8 $A47E DEFB $01,$53,$4F,$52,$D4,$4C,$C6,$BE $A486 DEFB $A4,$00,$00,$01,$42,$41,$52,$54 $A48E DEFB $5F,$CC,$57,$85,$D8,$A4,$5E,$AC $A496 DEFB $01,$47,$45,$54,$50,$4C,$C1,$7E $A49E DEFB $A1,$73,$A5,$B1,$A4,$01,$4F,$4B $A4A6 DEFB $5F,$53,$55,$C2,$67,$85,$79,$A9 $A4AE DEFB $F8,$A9,$01,$50,$41,$55,$53,$45 $A4B6 DEFB $D2,$E6,$96,$B7,$A7,$00,$00,$01 $A4BE DEFB $42,$41,$4C,$53,$55,$D0,$A5,$85 $A4C6 DEFB $59,$A5,$8D,$A5,$01,$54,$4F,$46 $A4CE DEFB $41,$49,$CC,$CA,$85,$D5,$AE,$21 $A4D6 DEFB $A9,$01,$47,$45,$54,$43,$48,$D2 $A4DE DEFB $0A,$BE,$00,$00,$00,$00,$01,$53 $A4E6 DEFB $54,$52,$45,$4E,$C7,$72,$A1,$25 $A4EE DEFB $A5,$0B,$A5,$01,$52,$41,$4E,$44 $A4F6 DEFB $D9,$4B,$90,$1E,$AB,$FC,$A7,$01 $A4FE DEFB $59,$45,$53,$53,$55,$C2,$D3,$85 $A506 DEFB $36,$A6,$3F,$A5,$01,$52,$41,$53 $A50E DEFB $41,$52,$D4,$39,$86,$96,$A8,$32 $A516 DEFB $A5,$01,$52,$41,$49,$4C,$4F,$CF $A51E DEFB $04,$86,$00,$00,$EE,$AA,$01,$52 $A526 DEFB $41,$49,$5F,$43,$C8,$1A,$86,$00 $A52E DEFB $00,$00,$00,$01,$52,$41,$49,$53 $A536 DEFB $44,$CF,$C3,$86,$4C,$A5,$16,$A8 $A53E DEFB $01,$52,$41,$53,$4C,$4F,$CF,$47 $A546 DEFB $86,$00,$00,$00,$00,$01,$52,$41 $A54E DEFB $53,$42,$41,$CB,$76,$86,$A5,$AB $A556 DEFB $00,$00,$01,$54,$48,$52,$54,$41 $A55E DEFB $C2,$D4,$C6,$49,$A7,$A7,$A5,$01 $A566 DEFB $4C,$4F,$4F,$52,$41,$D3,$8D,$86 $A56E DEFB $4F,$A6,$00,$00,$01,$4F,$4B,$5F $A576 DEFB $52,$41,$D3,$9A,$86,$05,$AA,$3D $A57E DEFB $A8,$01,$45,$4E,$44,$52,$41,$D3 $A586 DEFB $EB,$86,$EB,$A9,$B7,$A9,$01,$54 $A58E DEFB $55,$52,$41,$52,$D4,$F9,$86,$00 $A596 DEFB $00,$00,$00,$01,$54,$55,$52,$5F $A59E DEFB $44,$CF,$41,$87,$00,$00,$5C,$A6 $A5A6 DEFB $01,$4C,$4F,$4F,$54,$55,$D2,$1A $A5AE DEFB $87,$00,$00,$8F,$AB,$01,$41,$44 $A5B6 DEFB $44,$5F,$4F,$CE,$2B,$87,$79,$A7 $A5BE DEFB $EC,$AC,$01,$43,$52,$45,$30,$30 $A5C6 DEFB $B0,$3C,$87,$5E,$AB,$F5,$A5,$01 $A5CE DEFB $46,$4C,$41,$34,$38,$B1,$3D,$87 $A5D6 DEFB $D1,$A9,$2E,$A9,$01,$48,$49,$44 $A5DE DEFB $36,$34,$B1,$3E,$87,$00,$00,$4F $A5E6 DEFB $B4,$01,$42,$4F,$44,$38,$30,$B1 $A5EE DEFB $3F,$87,$68,$AA,$68,$B2,$01,$46 $A5F6 DEFB $52,$41,$33,$32,$B1,$40,$87,$00 $A5FE DEFB $00,$00,$00,$01,$46,$55,$43,$4B $A606 DEFB $49,$D4,$EB,$87,$12,$AB,$00,$00 $A60E DEFB $01,$57,$41,$4C,$4B,$59,$D3,$73 $A616 DEFB $A1,$29,$A6,$76,$A6,$01,$4D,$4F $A61E DEFB $4C,$4C,$4F,$CF,$56,$87,$C0,$B2 $A626 DEFB $00,$00,$01,$4D,$4F,$4C,$45,$4E $A62E DEFB $C4,$DF,$87,$78,$AC,$43,$A6,$01 $A636 DEFB $52,$41,$4E,$4D,$4F,$CC,$84,$87 $A63E DEFB $00,$00,$00,$00,$01,$52,$41,$4E $A646 DEFB $55,$CD,$7A,$90,$55,$A7,$05,$B2 $A64E DEFB $01,$4F,$46,$42,$4F,$52,$C4,$0E $A656 DEFB $98,$69,$A6,$0E,$B5,$01,$4D,$32 $A65E DEFB $50,$52,$49,$CE,$EF,$87,$50,$AA $A666 DEFB $00,$00,$01,$4D,$32,$45,$53,$41 $A66E DEFB $C7,$09,$88,$43,$AA,$80,$A6,$01 $A676 DEFB $4D,$5F,$B1,$59,$88,$D0,$A6,$8A $A67E DEFB $A6,$01,$4D,$5F,$B2,$75,$88,$3E $A686 DEFB $A7,$94,$A6,$01,$4D,$5F,$B3,$85 $A68E DEFB $88,$00,$00,$9E,$A6,$01,$4D,$5F $A696 DEFB $B4,$97,$88,$00,$00,$A8,$A6,$01 $A69E DEFB $4D,$5F,$B5,$A6,$88,$00,$00,$B2 $A6A6 DEFB $A6,$01,$4D,$5F,$B6,$AD,$88,$00 $A6AE DEFB $00,$BC,$A6,$01,$4D,$5F,$B7,$C2 $A6B6 DEFB $88,$00,$00,$C6,$A6,$01,$4D,$5F $A6BE DEFB $B8,$C5,$88,$00,$00,$AB,$A7,$01 $A6C6 DEFB $4D,$5F,$B9,$C7,$88,$00,$00,$DB $A6CE DEFB $A6,$01,$4D,$5F,$31,$B0,$E2,$88 $A6D6 DEFB $00,$00,$E6,$A6,$01,$4D,$5F,$31 $A6DE DEFB $B1,$FE,$88,$00,$00,$F1,$A6,$01 $A6E6 DEFB $4D,$5F,$31,$B2,$0C,$89,$00,$00 $A6EE DEFB $FC,$A6,$01,$4D,$5F,$31,$B3,$1A $A6F6 DEFB $89,$00,$00,$07,$A7,$01,$4D,$5F $A6FE DEFB $31,$B4,$2B,$89,$00,$00,$12,$A7 $A706 DEFB $01,$4D,$5F,$31,$B5,$41,$89,$00 $A70E DEFB $00,$1D,$A7,$01,$4D,$5F,$31,$B6 $A716 DEFB $4F,$89,$00,$00,$28,$A7,$01,$4D $A71E DEFB $5F,$31,$B7,$5D,$89,$00,$00,$33 $A726 DEFB $A7,$01,$4D,$5F,$31,$B8,$79,$89 $A72E DEFB $00,$00,$00,$00,$01,$4D,$5F,$31 $A736 DEFB $B9,$87,$89,$00,$00,$00,$00,$01 $A73E DEFB $4D,$5F,$32,$B0,$97,$89,$37,$AB $A746 DEFB $12,$AA,$01,$4C,$45,$56,$45,$CC $A74E DEFB $A7,$89,$09,$A8,$82,$AA,$01,$4E $A756 DEFB $55,$CD,$A8,$89,$00,$00,$00,$00 ; Routine at A75E c$A75E LD BC,$4147 ; $A761 LD C,L ; $A762 LD D,H ; $A763 LD D,L ; $A764 ADC A,$A9 ; $A766 ADC A,C ; $A767 LD D,C ; $A768 XOR H ; $A769 INC L ; $A76A XOR H ; $A76B LD BC,$4F50 ; $A76E LD D,E ; $A76F LD D,B ; $A770 LD D,D ; $A771 RET ; ; Data block at A772 b$A772 DEFB $AC,$89,$E0,$A8,$00,$00,$01,$43 $A77A DEFB $4F,$55,$4E,$54,$CC,$AE,$89,$9F $A782 DEFB $A7,$00,$00,$01,$4B,$45,$59,$5F $A78A DEFB $D0,$AF,$89,$5F,$A9,$20,$AE,$01 $A792 DEFB $43,$48,$4F,$4E,$55,$CD,$B0,$89 $A79A DEFB $3B,$A9,$CB,$AF,$01,$4B,$45,$59 $A7A2 DEFB $49,$D4,$B1,$89,$D9,$A7,$FA,$A8 $A7AA DEFB $01,$4E,$4F,$41,$44,$C4,$CF,$89 $A7B2 DEFB $BB,$A8,$E2,$AE,$01,$41,$54,$54 $A7BA DEFB $52,$5F,$D4,$8F,$5C,$00,$00,$CD $A7C2 DEFB $B2,$01,$44,$48,$5F,$D0,$D6,$BA $A7CA DEFB $16,$AC,$8F,$AA,$01,$53,$36,$B0 $A7D2 DEFB $EF,$89,$04,$B4,$14,$A9,$01,$4E $A7DA DEFB $4B,$45,$59,$B2,$7B,$90,$EF,$A7 $A7E2 DEFB $C7,$A8,$01,$43,$4C,$D3,$EE,$C5 $A7EA DEFB $00,$00,$00,$00,$01,$43,$48,$5F $A7F2 DEFB $4C,$41,$D7,$A4,$C3,$62,$A8,$00 $A7FA DEFB $00,$01,$5A,$52,$44,$52,$5F,$D0 $A802 DEFB $57,$BB,$49,$A8,$20,$B6,$01,$4E $A80A DEFB $4F,$5F,$50,$4C,$C1,$0F,$AC,$00 $A812 DEFB $00,$00,$00,$01,$52,$45,$50,$57 $A81A DEFB $41,$D4,$C2,$8A,$18,$B3,$00,$00 $A822 DEFB $01,$53,$54,$41,$4C,$4F,$CF,$D8 $A82A DEFB $8A,$85,$A9,$00,$00,$01,$49,$4E $A832 DEFB $50,$4C,$4F,$CF,$19,$8B,$00,$00 $A83A DEFB $00,$00,$01,$45,$4E,$54,$45,$D2 $A842 DEFB $95,$8B,$7C,$A8,$46,$B3,$01,$4E $A84A DEFB $4F,$5F,$44,$45,$CC,$56,$8B,$00 $A852 DEFB $00,$B2,$AB,$01,$53,$50,$41,$43 $A85A DEFB $C5,$6F,$8B,$6F,$A8,$2B,$AA,$01 $A862 DEFB $59,$5F,$4F,$52,$5F,$CE,$CA,$8B $A86A DEFB $00,$00,$7F,$B5,$01,$59,$45,$53 $A872 DEFB $5F,$43,$C3,$DF,$8B,$BE,$B5,$B7 $A87A DEFB $B4,$01,$4E,$4F,$54,$5F,$43,$C3 $A882 DEFB $F8,$8B,$00,$00,$82,$AB,$01,$57 $A88A DEFB $49,$5A,$43,$4F,$CE,$26,$AC,$44 $A892 DEFB $AB,$00,$00,$01,$50,$5F,$57,$49 $A89A DEFB $5A,$CC,$29,$8C,$48,$A9,$A6,$AA $A8A2 DEFB $01,$52,$4F,$4D,$D0,$DF,$90,$42 $A8AA DEFB $AF,$92,$B6,$01,$50,$52,$5F,$43 $A8B2 DEFB $48,$D2,$F0,$90,$43,$B0,$1E,$AA $A8BA DEFB $01,$41,$54,$54,$41,$C2,$D7,$90 $A8C2 DEFB $00,$00,$10,$AF,$01,$43,$4F,$4C $A8CA DEFB $4F,$CF,$97,$8C,$00,$00,$00,$00 $A8D2 DEFB $01,$50,$55,$54,$41,$54,$CC,$DD $A8DA DEFB $8C,$00,$00,$C6,$AD,$01,$43,$4F $A8E2 DEFB $4D,$50,$41,$D2,$49,$90,$6B,$AC $A8EA DEFB $00,$00,$01,$4D,$41,$4B,$43,$48 $A8F2 DEFB $D2,$F2,$8C,$90,$A9,$D1,$B1,$01 $A8FA DEFB $4E,$4F,$54,$4D,$4F,$D2,$53,$8D $A902 DEFB $00,$00,$85,$AD,$01,$53,$50,$45 $A90A DEFB $4C,$4E,$CF,$4A,$90,$00,$00,$00 $A912 DEFB $00,$01,$4E,$4F,$41,$42,$49,$CC $A91A DEFB $7A,$8D,$00,$00,$84,$AC,$01,$47 $A922 DEFB $45,$54,$48,$49,$D3,$AA,$92,$D6 $A92A DEFB $AA,$92,$AD,$01,$48,$49,$53,$50 $A932 DEFB $45,$CC,$54,$91,$F8,$AE,$DE,$A9 $A93A DEFB $01,$49,$4E,$53,$50,$4C,$CF,$9E $A942 DEFB $8D,$00,$00,$CC,$AC,$01,$52,$49 $A94A DEFB $4E,$C4,$9F,$8D,$00,$00,$2A,$AB $A952 DEFB $01,$43,$55,$52,$53,$D0,$7B,$93 $A95A DEFB $C4,$A9,$ED,$AD,$01,$43,$48,$41 $A962 DEFB $4E,$5F,$C3,$F9,$92,$6D,$B3,$A5 $A96A DEFB $B5,$01,$44,$4F,$4E,$53,$4F,$D2 $A972 DEFB $08,$8E,$00,$00,$C1,$B0,$01,$4F $A97A DEFB $55,$54,$4C,$DF,$E4,$8D,$BF,$AA $A982 DEFB $00,$00,$01,$49,$4E,$4C,$DF,$E8 $A98A DEFB $8D,$8E,$B2,$11,$AD,$01,$4E,$4F $A992 DEFB $42,$49,$47,$C1,$01,$8E,$00,$00 $A99A DEFB $00,$00,$01,$53,$54,$41,$50,$4F $A9A2 DEFB $D3,$9F,$90,$00,$00,$00,$00,$01 $A9AA DEFB $50,$55,$54,$49,$42,$CF,$32,$8E $A9B2 DEFB $00,$00,$00,$00,$01,$54,$55,$52 $A9BA DEFB $4C,$4F,$CF,$62,$8E,$78,$AD,$00 $A9C2 DEFB $00,$01,$43,$41,$53,$54,$5F,$D3 $A9CA DEFB $68,$91,$00,$00,$5C,$AA,$01,$47 $A9D2 DEFB $4F,$5F,$45,$4E,$C4,$93,$8E,$00 $A9DA DEFB $00,$9C,$B0,$01,$49,$4E,$54,$45 $A9E2 DEFB $52,$CF,$50,$9F,$E1,$AA,$75,$AA $A9EA DEFB $01,$54,$52,$45,$50,$55,$D4,$9A $A9F2 DEFB $8F,$00,$00,$FA,$AA,$01,$50,$41 $A9FA DEFB $55,$53,$5F,$CC,$81,$8E,$5D,$B0 $AA02 DEFB $82,$B0,$01,$45,$4E,$44,$47,$41 $AA0A DEFB $CD,$04,$8F,$99,$AB,$00,$00,$01 $AA12 DEFB $4C,$4F,$4F,$50,$D9,$A4,$8E,$00 $AA1A DEFB $00,$00,$00,$01,$41,$54,$54,$52 $AA22 DEFB $44,$CF,$8B,$8F,$00,$00,$00,$00 $AA2A DEFB $01,$5A,$41,$50,$45,$CD,$C8,$8E $AA32 DEFB $00,$00,$00,$00,$01,$44,$45,$44 $AA3A DEFB $45,$C4,$E2,$8E,$00,$00,$00,$00 $AA42 DEFB $01,$4D,$50,$52,$49,$4E,$D4,$FB $AA4A DEFB $BA,$00,$00,$CC,$AA,$01,$4C,$4F $AA52 DEFB $50,$59,$B2,$0C,$8F,$00,$00,$00 $AA5A DEFB $00,$01,$47,$52,$4F,$4E,$CB,$50 $AA62 DEFB $8F,$F0,$AB,$69,$B4,$01,$46,$4F $AA6A DEFB $55,$44,$49,$CD,$57,$8F,$DE,$B1 $AA72 DEFB $51,$B2,$01,$54,$52,$46,$49,$4C $AA7A DEFB $CF,$A2,$8F,$5D,$B1,$68,$AF,$01 $AA82 DEFB $4E,$5F,$48,$45,$52,$C5,$31,$90 $AA8A DEFB $00,$00,$00,$00,$01,$53,$36,$B1 $AA92 DEFB $3E,$90,$EB,$B1,$D1,$B4,$01,$57 $AA9A DEFB $41,$59,$4C,$4F,$CF,$E2,$8F,$00 $AAA2 DEFB $00,$00,$00,$01,$52,$55,$4E,$44 $AAAA DEFB $D9,$EA,$8F,$00,$00,$00,$00,$01 $AAB2 DEFB $50,$52,$49,$4C,$4F,$CF,$07,$90 $AABA DEFB $F7,$AC,$8F,$AF,$01,$49,$4E,$49 $AAC2 DEFB $54,$47,$CF,$0F,$90,$00,$00,$CE $AACA DEFB $B0,$01,$4C,$4F,$D7,$46,$90,$00 $AAD2 DEFB $00,$00,$00,$01,$48,$49,$47,$C8 $AADA DEFB $47,$90,$53,$B6,$00,$00,$01,$54 $AAE2 DEFB $4F,$5F,$56,$41,$CC,$48,$90,$00 $AAEA DEFB $00,$00,$00 ; Routine at AAED c$AAED LD BC,$4152 ; $AAF0 LD C,(HL) ; $AAF1 LD B,H ; $AAF2 RST $08 ; $AAF3 LD C,H ; $AAF4 SUB B ; $AAF5 LD B,$AB ; $AAF7 INC H ; $AAF8 OR E ; $AAF9 LD BC,$4F50 ; $AAFC LD B,H ; $AAFD LD B,L ; $AAFE JP NC,$9055 ; $AB01 XOR H ; $AB02 XOR L ; $AB03 NOP ; $AB04 NOP ; $AB05 LD BC,$4F50 ; $AB08 LD B,H ; $AB09 LD B,L ; $AB0A RET ; ; Data block at AB0B b$AB0B DEFB $58,$90,$20,$B0,$04,$AD,$01,$57 $AB13 DEFB $41,$49,$54,$B1,$7E,$90,$75,$AB $AB1B DEFB $D8,$AB,$01,$57,$5F,$54,$41,$C2 $AB23 DEFB $E0,$90,$00,$00,$C8,$AE,$01,$43 $AB2B DEFB $5F,$44,$41,$54,$C1,$4A,$DF,$07 $AB33 DEFB $AE,$FA,$AF,$01,$4C,$43,$5F,$50 $AB3B DEFB $4F,$D3,$4C,$DF,$07,$B0,$00,$00 $AB43 DEFB $01,$50,$5F,$43,$48,$41,$D2,$4E $AB4B DEFB $DF,$77,$B1,$00,$00,$01,$47,$45 $AB53 DEFB $54,$5F,$4C,$C3,$8D,$BC,$E0,$AD $AB5B DEFB $00,$00,$01,$46,$49,$52,$45,$4F $AB63 DEFB $CE,$56,$CC,$00,$00,$00,$00,$01 $AB6B DEFB $53,$31,$B0,$9D,$C2,$00,$00,$0C $AB73 DEFB $B3,$01,$57,$4F,$4F,$50,$5F,$C4 $AB7B DEFB $B7,$BF,$00,$00,$00,$00,$01,$57 $AB83 DEFB $49,$5A,$4B,$49,$CC,$C9,$B3,$CC $AB8B DEFB $AB,$37,$B2,$01,$41,$49,$CD,$B7 $AB93 DEFB $C8,$1D,$AF,$2B,$B0,$01,$4C,$4F $AB9B DEFB $46,$5F,$C4,$54,$B7,$00,$00,$35 $ABA3 DEFB $AF,$01,$54,$45,$4D,$50,$5F,$C3 $ABAB DEFB $77,$BA,$BF,$AB,$00,$00,$01,$53 $ABB3 DEFB $50,$41,$54,$41,$C2,$2A,$CD,$00 $ABBB DEFB $00,$00,$00,$01,$53,$50,$41,$44 $ABC3 DEFB $41,$D4,$3A,$CD,$00,$00,$00,$00 $ABCB DEFB $01,$41,$44,$53,$50,$C1,$3C,$CD $ABD3 DEFB $00,$00,$00,$00,$01,$58,$5F,$41 $ABDB DEFB $44,$C4,$49,$C6,$00,$3E,$41,$32 $ABE3 DEFB $8F,$5C,$3A,$FF,$FF,$32,$0F,$AC $ABEB DEFB $21,$F7,$FF,$11,$26,$AC,$01,$08 $ABF3 DEFB $00,$ED,$B0,$CD,$57,$BB,$C3,$36 $ABFB DEFB $AC,$00,$BE,$E0,$01,$00,$3E,$02 $AC03 DEFB $00,$07,$06,$01,$00,$00,$00,$0F $AC0B DEFB $0A,$00,$00,$01 ; This variable store the number of players in the current game. b$AC0F DEFB $02 ; Bit 3 is used to indicate whether the current object is ASLEEP. Bits 0-2 for ; the owner/wizard. b$AC10 DEFB $01,$00,$BE,$E0,$BD,$E0 ; Each byte in this table represents the modifiers for each wizard. Bits ; 0,1=Magic Bow; Bit 1=Magic Knife; Bit 2=Magic Sword; Bit 3=Shadow Form; Bit ; 5=Magic Wings; Bit 6=Magic Shield; Bits 6,7=Magic Armour. b$AC16 DEFB $10,$00,$00,$00,$00,$00,$00,$00 $AC1E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $AC26 DEFB $00,$01,$00,$00,$00,$00,$00,$00 $AC2E DEFB $01,$00,$00,$01,$57,$00,$01,$00 ; routine21: Displays the name of the current wizard and highlights their ; creations. ; ; Used by the routine at #R$8741. c$AC36 LD A,($AC0F) ; $AC39 LD B,A ; *$AC3A PUSH BC ; $AC3B LD A,($AC0F) ; $AC3E SUB B ; $AC3F LD ($AC0E),A ; $AC42 LD ($D391),A ; $AC45 LD HL,$AC16 ; $AC48 LD D,$00 ; $AC4A LD E,A ; $AC4B ADD HL,DE ; $AC4C LD A,(HL) ; $AC4D BIT 4,A ; $AC4F JR NZ,$ACB9 ; $AC51 LD HL,$AC2E ; $AC54 LD (HL),$00 ; $AC56 LD A,($AC0E) ; $AC59 LD HL,$AC26 ; $AC5C LD D,$00 ; $AC5E LD E,A ; $AC5F ADD HL,DE ; $AC60 LD A,(HL) ; $AC61 OR A ; $AC62 JR Z,$AC69 ; $AC64 LD A,$01 ; $AC66 LD ($AC2E),A ; *$AC69 LD A,$46 ; $AC6B LD ($5C8F),A ; $AC6E CALL $BED7 ; $AC71 LD A,($AC0E) ; $AC74 ADD A,$29 ; $AC76 LD BC,$1600 ; $AC79 CALL $BAFB ; $AC7C LD A,$37 ; $AC7E CALL $BAFB ; $AC81 CALL $C0DD ; $AC84 HALT ; $AC85 HALT ; $AC86 LD A,($AC0E) ; $AC89 LD ($D391),A ; $AC8C CALL $D392 ; $AC8F LD B,$FF ; *$AC91 PUSH BC ; $AC92 LD B,$FF ; *$AC94 DJNZ $AC94 ; $AC96 POP BC ; $AC97 DJNZ $AC91 ; $AC99 CALL $C0DD ; $AC9C CALL $BBB0 ; $AC9F LD A,($AC2E) ; $ACA2 OR A ; $ACA3 JR Z,$ACB0 ; $ACA5 LD B,$3C ; *$ACA7 HALT ; $ACA8 DJNZ $ACA7 ; $ACAA CALL $BED7 ; $ACAD JP $C710 ; *$ACB0 CALL $BED7 ; $ACB3 CALL $ACC6 ; $ACB6 CALL $BBCC ; ; This entry point is used by the routine at #R$C710. *$ACB9 POP BC ; $ACBA DEC B ; $ACBB JP NZ,$AC3A ; $ACBE LD HL,$AC33 ; $ACC1 LD (HL),$00 ; $ACC3 IM 1 ; $ACC5 RET ; ; routine22: Displays cursor and processes key presses [S to select, 0 to exit ; map] ; ; Used by the routine at #R$AC36. c$ACC6 LD HL,$C33D ; $ACC9 LD ($5C7B),HL ; $ACCC CALL $BC96 ; $ACCF PUSH BC ; $ACD0 CALL $02BF ; $ACD3 CP $53 ; $ACD5 POP BC ; $ACD6 CALL Z,$ACED ; $ACD9 CP $30 ; $ACDB JR NZ,$ACC6 ; $ACDD CALL $C0DD ; $ACE0 HALT ; $ACE1 HALT ; $ACE2 CALL $BED7 ; $ACE5 LD HL,$C27F ; $ACE8 CALL $C2F9 ; $ACEB EI ; $ACEC RET ; ; Set up temporary variables. ; ; 25th July 2020 Object movement; uses GETCHR, BIT, ... ; . ; [IN PROGRESS] Selects the object under the cursor. c$ACED CALL $BDE7 ; $ACF0 XOR A ; {Set a bunch of unknowns to 0. $ACF1 LD ($AC11),A ; $ACF4 LD ($B165),A ; $ACF7 LD ($AC03),A ; $ACFA LD ($AC07),A ; $ACFD LD ($AC0D),A ; $AD00 LD ($ABFC),A ; } $AD03 LD A,($AC0C) ; Load unknown25 into A - the object at the cursor. $AD06 LD D,A ; {We want characteristic 17 (Movement Allowance). $AD07 LD E,$11 ; } $AD09 CALL $BE0A ; Load characteristic 17 (Movement Allowance) for the ; object into A. $AD0C SLA A ; {Double it and store in unknown17. $AD0E LD ($AC01),A ; } $AD11 LD A,D ; {If the current object cannot fly then jump to #R$AD23. $AD12 CP $13 ; $AD14 JP M,$AD23 ; $AD17 CP $1E ; $AD19 JP P,$AD23 ; } $AD1C LD A,($AC01) ; {We now know we are looking at a FLYING OBJECT so $AD1F INC A ; unknown18=unknown17 + 1 "???" $AD20 LD ($AC03),A ; } *$AD23 LD A,($AC0C) ; Load A with the current object number. $AD26 SUB $29 ; Subtract 41 to see if it is not a wizard. $AD28 JP M,$AD4A ; If the object is not a wizard then jump to #R$AD4A. $AD2B LD HL,$AC16 ; {The current object is a wizard so point HL at #R$AC16 - $AD2E LD E,A ; the table of wizard modifiers. $AD2F LD D,$00 ; $AD31 ADD HL,DE ; } $AD32 LD A,(HL) ; Load the current wizard modifier into A. $AD33 BIT 5,A ; See if "Magic Wings" is activated. $AD35 JR Z,$AD3E ; If so then jump to #R$AD3E. $AD37 LD A,$0D ; {.. $AD39 LD ($AC03),A ; $AD3C JR $AD4A ; } *$AD3E BIT 3,A ; {If "Shadow Form" then jump to #R$AD4A. $AD40 JR Z,$AD4A ; } $AD42 LD A,$06 ; {.. $AD44 LD ($AC01),A ; $AD47 LD ($AC35),A ; } *$AD4A LD A,($AC10) ; {.. $AD4D BIT 7,A ; $AD4F RET NZ ; } $AD50 LD A,($AC0C) ; {If the object code is 0 "Nothing" then return. $AD53 OR A ; $AD54 RET Z ; } $AD55 SUB $29 ; {If the object is not a wizard then jump to #R$AD68. $AD57 JP M,$AD68 ; } $AD5A LD HL,($AC0E) ; We have a wizard, so load HL with the player number. $AD5D CP L ; {Return if this player number is not the same as the $AD5E RET NZ ; current object.} $AD5F LD A,($AC0C) ; {Copy the current object number from #R$AC0C into $AD62 LD ($AC0D),A ; #R$AC0D.} $AD65 JP $ADD2 ; Jump to #R$ADD2. *$AD68 LD A,($AC09) ; Load A with the byte from table 5. $AD6B SUB $29 ; Subtract 41 to see if the object is before a wizard in ; the table. $AD6D JP M,$ADB3 ; If it is not a wizard then jump to #R$ADB3. $AD70 LD HL,($AC0E) ; We are looking at a wizard so load HL with the number of ; the current player. $AD73 CP L ; See if the byte from table 5 is the current player. $AD74 RET NZ ; Return if they are not the same. $AD75 LD A,($AC09) ; {We are looking at the same wizard so copy the byte from $AD78 LD ($AC0D),A ; table 5 to #R$AC0D.} $AD7B LD A,($AC0C) ; {If the current object is a "Magic Wood" or higher then $AD7E CP $24 ; jump to #R$ADD2. $AD80 JP P,$ADD2 ; } $AD83 LD A,$46 ; {Set ATTR T to bright yellow on black. $AD85 LD ($5C8F),A ; } $AD88 LD A,($AC2E) ; {If the current player is computer-controlled then jump $AD8B OR A ; to #R$ADA1. $AD8C JR NZ,$ADA1 ; } $AD8E LD A,$33 ; Load A message #R$CFFA - "DISMOUNT WIZARD? (Y OR N) " $AD90 LD BC,$1600 ; {Set print coords to (0,22) and print message. $AD93 CALL $BAFB ; } *$AD96 CALL $02BF ; Call KEYBOARD in ROM. $AD99 CP $59 ; {If they pressed 'Y' then jump to #R$ADA7. $AD9B JR Z,$ADA7 ; } $AD9D CP $4E ; {If they did not press 'N' either, then jump back to $AD9F JR NZ,$AD96 ; #R$AD96 to get another key.} *$ADA1 XOR A ; {They pressed 'N' so set unknown26 to 0 "???" and jump $ADA2 LD ($AC0D),A ; to #R$ADB3. $ADA5 JR $ADB3 ; } *$ADA7 XOR A ; {They want to dismount to set unknown18 to 0. "???" $ADA8 LD ($AC03),A ; } $ADAB LD A,$01 ; {Set unknown17 to 1. $ADAD LD ($AC01),A ; } $ADB0 JP $ADD2 ; Jump to #R$ADD2. *$ADB3 LD A,($AC0C) ; {If the object code is 37 "Shadow Wood" then jump to $ADB6 CP $25 ; #R$ADBD. $ADB8 JR Z,$ADBD ; } $ADBA CP $22 ; {If it is 34 "Gooey Blob" or a higher object code then $ADBC RET P ; return.} *$ADBD LD A,($AC10) ; {.. $ADC0 AND $07 ; $ADC2 LD HL,($AC0E) ; $ADC5 CP L ; $ADC6 RET NZ ; } $ADC7 LD HL,($AC12) ; Load HL with the cursor position. $ADCA LD DE,$0141 ; Set up an offset into table 3 for animations. $ADCD ADD HL,DE ; Point HL at the animation byte for the current object. $ADCE LD A,(HL) ; {If the current object is dead then return. $ADCF CP $04 ; $ADD1 RET Z ; } *$ADD2 CALL $BE21 ; ... $ADD5 LD A,($AC06) ; {.. $ADD8 OR A ; $ADD9 JR Z,$ADF4 ; } $ADDB LD A,($AC09) ; {If the byte from table 5 is not 0 then jump to #R$ADF4. $ADDE OR A ; "???" $ADDF JR NZ,$ADF4 ; } $ADE1 LD A,($AC0C) ; Load A with object code from #R$AC0C. $ADE4 LD D,A ; Call #R$BE0A to get characteristic 18 (Manoeuvre ; Rating). $ADE5 LD E,$12 ; {Copy it into E. $ADE7 CALL $BE0A ; $ADEA LD E,A ; } $ADEB CALL $BE94 ; Call #R$BE94 to load A with a random number. $ADEE INC A ; {Add 2 to it. $ADEF INC A ; } $ADF0 CP E ; Compare the Manoeuvre Rating in A with it. $ADF1 CALL P,$BEB2 ; If the random number is greater than or equal to the ; Manoeuvre Rating then we are ENGAGED TO THE ENEMY so ; call #R$BEB2. *$ADF4 LD A,($AC33) ; {.. $ADF7 OR A ; $ADF8 CALL NZ,$BEB2 ; $ADFB LD A,($AC07) ; $ADFE OR A ; $ADFF JR NZ,$AE50 ; } $AE01 CALL $BED7 ; Clear the bottom line of the screen. $AE04 LD A,$44 ; {Set ATTR T to bright green on black. $AE06 LD ($5C8F),A ; } $AE09 LD A,$3A ; {Display message #R$D09E: "MOVEMENT RANGE=" $AE0B LD BC,$1600 ; $AE0E CALL $BAFB ; } $AE11 LD A,$46 ; {Set ATTR T to bright yellow on black. $AE13 LD ($5C8F),A ; } $AE16 LD A,($AC0D) ; {.. $AE19 OR A ; $AE1A JR NZ,$AE1F ; } $AE1C LD A,($AC0C) ; Load the object number from #R$AC0C into A. *$AE1F LD D,A ; We need to display how far the current object can move ; so load object code into D. $AE20 LD E,$11 ; We want characteristic 17 (Movement Allowance). $AE22 CALL $BE0A ; Load characteristic 17 (Movement Allowance) for the ; object into A. $AE25 LD E,A ; Copy it into E. $AE26 LD A,($AC03) ; {.. $AE29 OR A ; $AE2A JR Z,$AE2F ; $AE2C SRL A ; $AE2E LD E,A ; } *$AE2F LD A,E ; Load A with the movement points available for the ; current object from E. $AE30 ADD A,$30 ; Add $30 to get a character code thaT can be displayed. $AE32 CALL $BAD6 ; Appened the movement points to the "MOVEMENT RANGE=" ; string from #R$AE09. $AE35 LD HL,$C2CF ; {Play #R$C2CF. $AE38 CALL $C2F9 ; } $AE3B EI ; Enable interrupts. $AE3C LD A,($AC2E) ; {If the current player is human then jump to #R$AE50. $AE3F OR A ; $AE40 JR Z,$AE50 ; } $AE42 LD A,($AC31) ; {.. $AE45 OR A ; $AE46 JR NZ,$AE4D ; } $AE48 CALL $CA92 ; ... $AE4B JR $AE50 ; {Jump to #R$AE50. *$AE4D CALL $C78D ; } ; This entry point is used by the routine at #R$B168. *$AE50 LD BC,($BC94) ; Load the current cursor coordinates into BC. $AE54 LD A,($AC03) ; {.. $AE57 OR A ; $AE58 JP NZ,$B0A8 ; } $AE5B LD A,($AC2E) ; {If the current player is human then jump to #R$AE77 $AE5E OR A ; $AE5F JR Z,$AE77 ; } $AE61 LD A,($AC31) ; {... $AE64 OR A ; $AE65 JR NZ,$AE70 ; $AE67 LD A,($AC30) ; $AE6A OR A ; $AE6B CALL Z,$CA92 ; $AE6E JR $AE77 ; *$AE70 LD A,($AC30) ; $AE73 OR A ; $AE74 CALL Z,$C8C7 ; } *$AE77 CALL $BBE7 ; Call #R$BBE7 to deal with cursor movement. ; This entry point is used by the routine at #R$AF03. *$AE7A LD ($AC0A),BC ; Save map coordinates in #R$AC0A. $AE7E CALL $BDD1 ; Convert them into cursor coordinates. $AE81 LD ($AC12),HL ; Save them in #R$AC12. $AE84 CALL $BDED ; {Set up temporary variables. $AE87 LD A,($AC32) ; } $AE8A CP $49 ; ... $AE8C CALL Z,$C3B3 ; {Call #R$C3B3 to display information about object at the $AE8F CP $4B ; cursor. $AE91 JR NZ,$AE9D ; } $AE93 LD HL,$C2B1 ; {Play #R$C2B1. $AE96 CALL $C2F9 ; } $AE99 EI ; Enable interrupts. $AE9A JP $B06F ; Jump to #R$B06F. *$AE9D LD HL,($AC12) ; {If the cursor has not moved yet then jump back to $AEA0 LD DE,($AC14) ; #R$AE50. $AEA4 XOR A ; $AEA5 SBC HL,DE ; $AEA7 JR Z,$AE50 ; } $AEA9 LD A,($AC0C) ; {If the object at the cursor position is empty then jump $AEAC OR A ; to #R$AF50. $AEAD JP Z,$AF50 ; } $AEB0 LD HL,($AC12) ; Load HL with the cursor position. $AEB3 LD DE,$0141 ; {Point HL into table with the animation values. $AEB6 ADD HL,DE ; } $AEB7 LD A,(HL) ; Load A with the current animation information. $AEB8 CP $04 ; {If the current object is dead then jump to #R$AECC. $AEBA JP Z,$AF50 ; } $AEBD LD A,($AC0C) ; Load A with current object. $AEC0 CP $24 ; {If it is not object 36 "Magic Wood" then jump to $AEC2 JR NZ,$AED5 ; #R$AECC. $AEC4 LD A,($AC0D) ; } $AEC7 LD L,$0B ; $AEC9 OR A ; $AECA JR Z,$AEE9 ; $AECC LD A,($AC09) ; $AECF OR A ; $AED0 JR NZ,$AEE9 ; $AED2 JP $AF50 ; *$AED5 LD A,($AC0C) ; $AED8 CP $25 ; $AEDA JR Z,$AEE1 ; $AEDC CP $23 ; $AEDE JP P,$AF0D ; *$AEE1 LD A,($AC10) ; $AEE4 AND $07 ; $AEE6 LD HL,($AC0E) ; *$AEE9 CP L ; $AEEA JP NZ,$B168 ; $AEED LD A,($AC0D) ; $AEF0 OR A ; $AEF1 JP Z,$AE50 ; $AEF4 LD A,($AC0C) ; $AEF7 CP $10 ; $AEF9 JP M,$AE50 ; $AEFC CP $16 ; $AEFE JP P,$AE50 ; $AF01 JR $AF50 ; ; Routine at AF03 c$AF03 CP $24 ; $AF05 JR NZ,$AF0D ; $AF07 LD A,($AC0D) ; $AF0A OR A ; $AF0B JR NZ,$AF50 ; ; This entry point is used by the routine at #R$ACED. *$AF0D LD A,($AC0C) ; $AF10 CP $26 ; $AF12 JP M,$AF2B ; $AF15 CP $28 ; $AF17 JP P,$AF2B ; $AF1A LD A,($AC0D) ; $AF1D OR A ; $AF1E JR Z,$AF2B ; $AF20 LD A,($AC10) ; $AF23 AND $07 ; $AF25 LD HL,($AC0E) ; $AF28 CP L ; $AF29 JR Z,$AF50 ; *$AF2B LD A,($AC0C) ; $AF2E CP $29 ; $AF30 JP M,$AE50 ; $AF33 LD HL,($AC14) ; $AF36 LD A,(HL) ; $AF37 CP $29 ; $AF39 JP P,$B168 ; $AF3C LD DE,$01E1 ; $AF3F ADD HL,DE ; $AF40 LD A,(HL) ; $AF41 AND $07 ; $AF43 LD E,A ; $AF44 LD A,($AC0C) ; $AF47 SUB $29 ; $AF49 CP E ; $AF4A JP NZ,$B168 ; $AF4D JP $AE50 ; ; This entry point is used by the routine at #R$B168. *$AF50 LD A,($AC07) ; $AF53 OR A ; $AF54 JP NZ,$AE50 ; $AF57 LD A,$00 ; $AF59 LD ($AC30),A ; $AF5C LD BC,($AC0A) ; $AF60 LD ($BC94),BC ; $AF64 LD HL,($AC14) ; $AF67 LD A,(HL) ; $AF68 CP $25 ; $AF6A JP Z,$B06F ; $AF6D LD ($AC0C),A ; $AF70 LD E,A ; $AF71 LD A,($AC0D) ; $AF74 CP E ; $AF75 JR Z,$AF88 ; $AF77 OR A ; $AF78 JR Z,$AF88 ; $AF7A LD ($AC0C),A ; $AF7D LD HL,($AC14) ; $AF80 LD DE,$0281 ; $AF83 XOR A ; $AF84 ADD HL,DE ; $AF85 LD (HL),A ; $AF86 JR $AFA3 ; *$AF88 LD HL,($AC14) ; $AF8B LD DE,$0321 ; $AF8E ADD HL,DE ; $AF8F LD A,(HL) ; $AF90 OR A ; $AF91 JR Z,$AFBA ; $AF93 LD HL,($AC14) ; $AF96 LD (HL),A ; $AF97 LD DE,$00A1 ; $AF9A ADD HL,DE ; $AF9B LD A,$01 ; $AF9D LD (HL),A ; $AF9E DEC E ; $AF9F ADD HL,DE ; $AFA0 LD A,$04 ; $AFA2 LD (HL),A ; *$AFA3 LD HL,($AC14) ; $AFA6 LD DE,$01E1 ; $AFA9 ADD HL,DE ; $AFAA LD A,(HL) ; $AFAB LD ($AC10),A ; $AFAE LD DE,$00A0 ; $AFB1 ADD HL,DE ; $AFB2 LD A,(HL) ; $AFB3 LD ($AC09),A ; $AFB6 XOR A ; $AFB7 LD (HL),A ; $AFB8 JR $AFC7 ; *$AFBA LD HL,($AC14) ; $AFBD LD A,$01 ; $AFBF LD (HL),A ; $AFC0 LD DE,$00A1 ; $AFC3 ADD HL,DE ; $AFC4 LD (HL),A ; $AFC5 JR $AFA3 ; *$AFC7 LD HL,($AC12) ; $AFCA LD A,(HL) ; $AFCB OR A ; $AFCC JR Z,$AFDF ; $AFCE LD DE,$0141 ; $AFD1 ADD HL,DE ; $AFD2 LD A,(HL) ; $AFD3 CP $04 ; $AFD5 JR Z,$AFDF ; $AFD7 DEC E ; $AFD8 LD A,($AC0D) ; $AFDB ADD HL,DE ; $AFDC LD (HL),A ; $AFDD JR $B007 ; *$AFDF LD HL,($AC12) ; $AFE2 LD A,(HL) ; $AFE3 PUSH AF ; $AFE4 LD A,($AC0C) ; $AFE7 LD (HL),A ; $AFE8 POP AF ; $AFE9 LD DE,$0321 ; $AFEC ADD HL,DE ; $AFED LD (HL),A ; $AFEE LD DE,$0280 ; $AFF1 SBC HL,DE ; $AFF3 LD A,$01 ; $AFF5 LD (HL),A ; $AFF6 LD DE,$00A0 ; $AFF9 ADD HL,DE ; $AFFA LD A,$00 ; $AFFC LD (HL),A ; $AFFD ADD HL,DE ; $AFFE LD A,($AC10) ; $B001 LD (HL),A ; $B002 ADD HL,DE ; $B003 LD A,($AC09) ; $B006 LD (HL),A ; *$B007 LD HL,$C261 ; $B00A CALL $C2F9 ; $B00D EI ; $B00E LD HL,($AC12) ; $B011 LD ($AC14),HL ; $B014 LD A,($B165) ; $B017 OR A ; $B018 JR NZ,$B06F ; $B01A LD A,(HL) ; $B01B CP $24 ; $B01D JR Z,$B039 ; $B01F CALL $BE21 ; $B022 LD A,($AC06) ; $B025 OR A ; $B026 CALL NZ,$BEB2 ; $B029 CALL $BBCC ; $B02C LD A,($AC07) ; $B02F OR A ; $B030 JP NZ,$AE50 ; $B033 LD A,($AC03) ; $B036 OR A ; $B037 JR NZ,$B06F ; *$B039 CALL $BBCC ; $B03C LD A,($AC02) ; $B03F LD E,A ; $B040 LD A,($AC01) ; $B043 SUB E ; $B044 JP M,$B06F ; $B047 JR Z,$B06F ; $B049 LD ($AC01),A ; $B04C CALL $BED7 ; $B04F LD A,$44 ; $B051 LD ($5C8F),A ; $B054 LD BC,$1600 ; $B057 LD A,$38 ; $B059 CALL $BAFB ; $B05C LD A,$46 ; $B05E LD ($5C8F),A ; $B061 LD A,($AC01) ; $B064 INC A ; $B065 SRA A ; $B067 ADD A,$30 ; $B069 CALL $BAD6 ; $B06C JP $AE50 ; ; This entry point is used by the routine at #R$B168. *$B06F LD HL,($AC14) ; $B072 LD DE,$01E1 ; $B075 ADD HL,DE ; $B076 SET 7,(HL) ; $B078 CALL $BED7 ; $B07B LD HL,($AC14) ; $B07E LD A,(HL) ; $B07F CP $25 ; $B081 RET Z ; $B082 LD A,$01 ; $B084 LD ($AC31),A ; $B087 XOR A ; $B088 LD ($AC35),A ; $B08B LD ($AC30),A ; $B08E LD ($B165),A ; $B091 LD HL,($AC14) ; $B094 LD A,(HL) ; $B095 OR A ; $B096 RET Z ; $B097 LD D,(HL) ; $B098 LD E,$0F ; $B09A CALL $BE0A ; $B09D OR A ; $B09E RET Z ; $B09F LD ($ABFC),A ; $B0A2 CALL $BBCC ; $B0A5 JP $B8DD ; } ; This entry point is used by the routine at #R$ACED. *$B0A8 LD A,($AC11) ; Load A with ... "???" $B0AB PUSH BC ; Preserve map coordinates. $B0AC OR A ; {.. $B0AD JR NZ,$B0CB ; } $B0AF LD A,$45 ; {Set ATTR T to bright cyan on black. $B0B1 LD ($5C8F),A ; } $B0B4 LD A,$36 ; {Display #R$D05A "(FLYING)" at (11,16) $B0B6 LD BC,$1611 ; $B0B9 CALL $BAFB ; } $B0BC CALL $BBCC ; Wait for no key to be pressed. $B0BF CALL $BBB0 ; Wait for a key to be pressed. $B0C2 LD A,($AC2E) ; {If the current player is human then jump to #R$B0CB. $B0C5 OR A ; $B0C6 JR Z,$B0CB ; } $B0C8 CALL $C955 ; Otherwise call #R$C955. *$B0CB CALL $BED7 ; Clear the bottom row of the screen. $B0CE POP BC ; Restore map coordinates. $B0CF LD ($AC04),BC ; Save map coordinates in #R$AC04. $B0D3 LD A,($AC07) ; {Dunno ... "???" $B0D6 OR A ; $B0D7 JR Z,$B0DE ; $B0D9 LD A,$03 ; $B0DB LD ($AC03),A ; } *$B0DE LD A,($AC2E) ; {If the current player is human then jump to #R$B0E9. $B0E1 OR A ; $B0E2 JR Z,$B0E9 ; } $B0E4 CALL $C9DC ; {Otherwise call #R$C9DC to ... "???" and jump to $B0E7 JR $B0F8 ; #R$B0F8.} *$B0E9 LD HL,$C35D ; {Set UDG system variable to #R$C35D for winged sprite. $B0EC LD ($5C7B),HL ; } $B0EF CALL $BC96 ; Call #R$BC96 to handles keyboard and display information ; about objects on screen. $B0F2 CALL $02BF ; Call KEYBOARD in ROM. $B0F5 LD ($AC32),A ; Store the key in #R$AC32. *$B0F8 LD A,($AC32) ; Load the pressed key code into A. $B0FB CP $49 ; {If they pressed 'I' for information then call #R$C3B3. $B0FD CALL Z,$C3B3 ; } $B100 CP $4B ; {If they did NOT press 'K' to cancel then jump to $B102 JR NZ,$B114 ; #R$B114.} $B104 LD HL,$C2B1 ; {Otherwise play #R$C2B1. $B107 CALL $C2F9 ; } $B10A EI ; Enable interrupts. $B10B LD HL,($AC14) ; {.. $B10E LD ($AC12),HL ; $B111 JP $B06F ; *$B114 CP $53 ; $B116 JR NZ,$B0DE ; $B118 LD BC,($AC04) ; $B11C LD ($BEE9),BC ; $B120 LD BC,($BC94) ; $B124 LD ($BEEB),BC ; $B128 LD A,($AC03) ; $B12B CALL $BEEF ; $B12E JP P,$B148 ; } $B131 LD A,$46 ; {Set ATTR T to bright yellow on black. $B133 LD ($5C8F),A ; } $B136 LD A,$35 ; {Print #R$D03A "OUT OF RANGE STRING" at (0,22). $B138 LD BC,$1600 ; $B13B CALL $BAFB ; } $B13E LD B,$14 ; Set busy wait loop counter. *$B140 HALT ; Wait for an interrupt. $B141 DJNZ $B140 ; Loop back to #R$B140. $B143 CALL $BBB0 ; Wait for a key to be pressed. $B146 JR $B0DE ; Jump to #R$B0DE. *$B148 LD HL,$C2BB ; {Play #R$C2BB. $B14B CALL $C2F9 ; } $B14E EI ; Enable interrupts. $B14F LD HL,($AC04) ; {.. $B152 LD BC,($BC94) ; $B156 LD ($BC94),HL ; $B159 LD A,$01 ; $B15B LD ($AC11),A ; } $B15E JP $AE7A ; Jump to #R$AE7A. ; Data block at B161 b$B161 DEFB $00,$00,$00,$00,$00,$00,$00 ; routine25: ; ; Used by the routines at #R$ACED and #R$B8DD. c$B168 CALL $BED7 ; $B16B LD HL,($AC12) ; $B16E LD DE,$0321 ; $B171 ADD HL,DE ; $B172 LD A,(HL) ; $B173 LD ($B374),A ; $B176 XOR A ; $B177 LD ($B161),A ; $B17A LD ($B162),A ; $B17D LD ($B163),A ; $B180 LD ($B164),A ; $B183 LD HL,($AC14) ; $B186 LD A,(HL) ; $B187 LD ($AC0C),A ; $B18A LD ($B165),A ; $B18D CP $1C ; $B18F JP M,$B19A ; $B192 CP $22 ; $B194 JP P,$B19A ; $B197 LD ($B163),A ; *$B19A LD HL,($AC14) ; $B19D LD DE,$01E1 ; $B1A0 ADD HL,DE ; $B1A1 LD A,(HL) ; $B1A2 BIT 6,A ; $B1A4 JR Z,$B1A9 ; $B1A6 LD ($B163),A ; *$B1A9 LD A,($AC0C) ; $B1AC SUB $29 ; $B1AE JP M,$B1F8 ; $B1B1 LD HL,$AC16 ; $B1B4 LD D,$00 ; $B1B6 LD E,A ; $B1B7 ADD HL,DE ; $B1B8 RES 3,(HL) ; $B1BA PUSH HL ; $B1BB LD HL,$E3E0 ; $B1BE LD A,($AC0C) ; $B1C1 DEC A ; $B1C2 SLA A ; $B1C4 LD D,$00 ; $B1C6 LD E,A ; $B1C7 ADD HL,DE ; $B1C8 LD C,(HL) ; $B1C9 INC HL ; $B1CA LD B,(HL) ; $B1CB LD ($B166),BC ; $B1CF LD IX,($B166) ; $B1D3 LD A,(IX+$19) ; $B1D6 LD (IX+$1C),A ; $B1D9 LD (IX+$22),A ; $B1DC POP HL ; $B1DD LD A,(HL) ; $B1DE AND $07 ; $B1E0 OR A ; $B1E1 JR Z,$B1E9 ; $B1E3 LD ($B163),A ; $B1E6 LD ($B161),A ; *$B1E9 LD A,($AC0C) ; $B1EC LD D,A ; $B1ED LD E,$0E ; $B1EF CALL $BE0A ; $B1F2 OR A ; $B1F3 JR Z,$B1F8 ; $B1F5 LD ($B163),A ; *$B1F8 LD HL,($AC12) ; $B1FB LD A,(HL) ; $B1FC CP $1C ; $B1FE JP M,$B209 ; $B201 CP $22 ; $B203 JP P,$B209 ; $B206 LD ($B164),A ; *$B209 LD DE,$01E1 ; $B20C ADD HL,DE ; $B20D LD A,(HL) ; $B20E BIT 6,A ; $B210 JR Z,$B215 ; $B212 LD ($B164),A ; *$B215 LD HL,($AC12) ; $B218 LD A,(HL) ; $B219 SUB $29 ; $B21B JP M,$B23D ; $B21E LD HL,$AC16 ; $B221 LD D,$00 ; $B223 LD E,A ; $B224 ADD HL,DE ; $B225 XOR A ; $B226 LD A,(HL) ; $B227 AND $C0 ; $B229 RLCA ; $B22A RLCA ; $B22B OR A ; $B22C JR Z,$B22F ; $B22E INC A ; *$B22F LD ($B162),A ; $B232 BIT 3,(HL) ; $B234 JR Z,$B23D ; $B236 LD HL,$B162 ; $B239 LD A,$03 ; $B23B ADD A,(HL) ; $B23C LD (HL),A ; *$B23D LD A,($B164) ; $B240 OR A ; $B241 JR Z,$B26E ; $B243 LD A,($B163) ; $B246 OR A ; $B247 JR NZ,$B26E ; $B249 LD A,$45 ; $B24B LD ($5C8F),A ; $B24E LD BC,$1600 ; $B251 LD A,$39 ; $B253 CALL $BAFB ; $B256 LD HL,$C2D9 ; $B259 CALL $C2F9 ; $B25C EI ; $B25D CALL $BBCC ; $B260 CALL $BBB0 ; $B263 CALL $BED7 ; $B266 LD A,($ABFC) ; $B269 OR A ; $B26A RET NZ ; $B26B JP $AE50 ; *$B26E LD A,($AC0C) ; $B271 LD D,A ; $B272 LD E,$0D ; $B274 LD A,($ABFC) ; $B277 OR A ; $B278 JR Z,$B27C ; $B27A LD E,$0E ; *$B27C CALL $BE0A ; $B27F LD HL,$B161 ; $B282 ADD A,(HL) ; $B283 LD E,A ; $B284 CALL $BE94 ; $B287 ADD A,E ; $B288 LD C,A ; $B289 PUSH BC ; $B28A LD HL,($AC12) ; $B28D LD A,(HL) ; $B28E LD D,A ; $B28F LD E,$10 ; $B291 CALL $BE0A ; $B294 LD HL,$B162 ; $B297 ADD A,(HL) ; $B298 LD E,A ; $B299 CALL $BBCC ; $B29C CALL $BE94 ; $B29F ADD A,E ; $B2A0 POP BC ; $B2A1 SUB C ; $B2A2 PUSH AF ; $B2A3 LD A,($ABFC) ; $B2A6 OR A ; $B2A7 JR NZ,$B2AC ; $B2A9 CALL $B375 ; *$B2AC POP AF ; $B2AD JP P,$B302 ; $B2B0 LD HL,($AC12) ; $B2B3 LD DE,$0281 ; $B2B6 ADD HL,DE ; $B2B7 LD A,(HL) ; $B2B8 OR A ; $B2B9 JR NZ,$B2E0 ; $B2BB LD HL,($AC12) ; $B2BE LD A,(HL) ; $B2BF CP $29 ; $B2C1 CALL P,$B3C9 ; $B2C4 CP $1C ; $B2C6 JP P,$B310 ; $B2C9 LD DE,$01E1 ; $B2CC ADD HL,DE ; $B2CD LD A,(HL) ; $B2CE BIT 4,A ; $B2D0 JP NZ,$B310 ; $B2D3 BIT 6,A ; $B2D5 JP NZ,$B310 ; $B2D8 LD A,$FF ; $B2DA LD ($B165),A ; $B2DD JP $B310 ; *$B2E0 LD E,$00 ; $B2E2 LD (HL),E ; $B2E3 LD HL,($AC12) ; $B2E6 PUSH AF ; $B2E7 LD A,(HL) ; $B2E8 CP $22 ; $B2EA JR NZ,$B2F7 ; $B2EC LD DE,$0321 ; $B2EF ADD HL,DE ; $B2F0 LD A,(HL) ; $B2F1 LD DE,$0140 ; $B2F4 SBC HL,DE ; $B2F6 LD (HL),A ; *$B2F7 LD HL,($AC12) ; $B2FA POP AF ; $B2FB LD (HL),A ; $B2FC LD DE,$0321 ; $B2FF ADD HL,DE ; $B300 LD (HL),$00 ; *$B302 LD HL,($AC14) ; $B305 LD ($AC12),HL ; $B308 LD A,($ABFC) ; $B30B OR A ; $B30C RET NZ ; $B30D JP $B06F ; *$B310 XOR A ; $B311 LD ($AC07),A ; $B314 LD ($AC01),A ; $B317 LD ($AC0D),A ; $B31A LD HL,($AC12) ; $B31D LD A,($B165) ; $B320 CP $FF ; $B322 JR NZ,$B347 ; $B324 LD DE,$00A1 ; $B327 ADD HL,DE ; $B328 LD (HL),$01 ; $B32A LD DE,$00A0 ; $B32D ADD HL,DE ; $B32E LD (HL),$04 ; $B330 HALT ; $B331 LD HL,$C293 ; $B334 CALL $C2F9 ; $B337 EI ; $B338 LD A,($AC0C) ; $B33B CP $25 ; $B33D JR Z,$B302 ; $B33F LD A,($ABFC) ; $B342 OR A ; $B343 RET NZ ; $B344 JP $AF50 ; *$B347 LD A,($B374) ; $B34A OR A ; $B34B JR NZ,$B35A ; $B34D LD HL,($AC12) ; $B350 LD (HL),$01 ; $B352 LD DE,$00A1 ; $B355 ADD HL,DE ; $B356 LD (HL),$01 ; $B358 JR $B364 ; *$B35A LD HL,($AC12) ; $B35D LD (HL),A ; $B35E LD DE,$0141 ; $B361 ADD HL,DE ; $B362 LD (HL),$04 ; *$B364 HALT ; $B365 LD A,($AC0C) ; $B368 CP $25 ; $B36A JR Z,$B302 ; $B36C LD A,($ABFC) ; $B36F OR A ; $B370 RET NZ ; $B371 JP $AF50 ; ; Data block at B374 b$B374 DEFB $00 ; routine26: [looks like an attack routine] ; ; Used by the routine at #R$B168. c$B375 LD HL,$C24D ; $B378 CALL $C2F9 ; $B37B LD HL,($AC12) ; $B37E LD DE,$00A1 ; $B381 ADD HL,DE ; $B382 LD A,$32 ; $B384 LD (HL),A ; $B385 LD A,$46 ; $B387 LD ($5C8F),A ; $B38A LD B,$05 ; *$B38C PUSH BC ; $B38D LD B,$04 ; $B38F LD HL,$BF37 ; $B392 LD DE,$0020 ; *$B395 PUSH BC ; $B396 PUSH HL ; $B397 PUSH DE ; $B398 DI ; $B399 LD ($DF4A),HL ; $B39C LD HL,($AC12) ; $B39F LD ($E005),HL ; $B3A2 CALL $E007 ; $B3A5 LD ($DF4C),HL ; $B3A8 CALL $DF4E ; $B3AB CALL $C301 ; $B3AE POP DE ; $B3AF POP HL ; $B3B0 ADD HL,DE ; $B3B1 POP BC ; $B3B2 DJNZ $B395 ; $B3B4 POP BC ; $B3B5 DJNZ $B38C ; $B3B7 LD HL,($AC12) ; $B3BA LD DE,$00A1 ; $B3BD ADD HL,DE ; $B3BE LD (HL),$01 ; $B3C0 EI ; $B3C1 HALT ; $B3C2 RET ; ; Data block at B3C3 b$B3C3 DEFB $01,$13,$01,$1D,$0D,$09 ; Disable interrupts. ; ; 28th July 2020 WIZKIL ; . ; Display the coloured "starburst" when a wizard dies. c$B3C9 DI ; $B3CA LD HL,$AC34 ; {Increment the number of dead wizards. $B3CD INC (HL) ; } $B3CE LD HL,$C2A7 ; {Play #R$C2A7. $B3D1 CALL $C2F9 ; } $B3D4 LD HL,($AC12) ; Load HL with map address of dead wizard. $B3D7 LD C,(HL) ; Load C with the wizard code for the newly deceased ; wielder of nature's forces. $B3D8 DEC C ; {We want to get the "dead sprite" so first calculate an $B3D9 LD B,$00 ; offset for the #R$E3E0. $B3DB SLA C ; } $B3DD LD HL,$E3E0 ; Load HL with the address for the blank sprite at ; #R$E440. $B3E0 ADD HL,BC ; Add the offset so that HL contains the correct dead ; wizard pointer, #R$E430 to #R$E43E. $B3E1 LD E,(HL) ; {Load DE with the address of our splattered wizard in $B3E2 INC HL ; the wizard data table. $B3E3 LD D,(HL) ; } $B3E4 LD HL,$0017 ; {Now load HL with the address of that wizard's sprite. $B3E7 ADD HL,DE ; } $B3E8 LD E,(HL) ; {Load DE with the address of the sprite data for the $B3E9 INC HL ; current (& sadly no longer with us) wizard. $B3EA LD D,(HL) ; } $B3EB EX DE,HL ; Exchange so that HL is the address of the sprite data ; for the wizard (e.g. FD34) and DE has the address of the ; data block for the current wizard (e.g. #R$EA39) $B3EC LD ($DF4A),HL ; Copy the address of the wizard's sprite data into ; #R$DF4A. $B3EF LD B,$08 ; Set loop counter for display colour. *$B3F1 PUSH BC ; Preserve loop counter. $B3F2 LD HL,($AC12) ; Load HL with map address of the dead wizard. $B3F5 LD ($E005),HL ; Copy the address of the dead wizard to #R$E005 and ; convert into screen coordinates in HL as (L, H). $B3F8 CALL $E007 ; {Store the coordinates in #R$B3C7. $B3FB LD ($B3C7),HL ; } $B3FE LD A,H ; {Copy the row coordinate into #R$B3C3 and #R$B3C4. $B3FF LD ($B3C3),A ; $B402 LD ($B3C4),A ; } $B405 LD A,L ; {Copy the column coordinate into #R$B3C3 and #R$B3C4. $B406 LD ($B3C5),A ; $B409 LD ($B3C6),A ; } $B40C DEC B ; Decrement the colour [so that the first colour used is ; white=7]. $B40D LD A,$40 ; {Set up the colour attribute value in ATTR-T [bright $B40F ADD A,B ; colour on a black background] $B410 LD ($5C8F),A ; } $B413 LD B,$1D ; Set B with the number of columns in the map "???" *$B415 PUSH BC ; Preserve counter. $B416 LD A,($B3C3) ; Load A with the row coordinate of the dead wizard. $B419 DEC A ; Decrement the row coordinate. $B41A JR Z,$B42A ; If we are at the top of the map then jump to #R$B42A. $B41C LD ($B3C3),A ; Otherwise copy the decremented row coord into #R$B3C3 so ; that we can print a sprite "north" of the corpse. $B41F LD H,A ; {Set HL up with the old column and new row. $B420 LD A,($B3C7) ; $B423 LD L,A ; } $B424 LD ($DF4C),HL ; {Store the updated coordinates in #R$DF4C and print the $B427 CALL $DF4E ; dead wizard's sprite there.} *$B42A LD A,($B3C4) ; Load A with the old row coordinate. $B42D INC A ; Increment it. $B42E CP $14 ; {If we are at the bottom of the map then jump to $B430 JR Z,$B440 ; #R$B440.} $B432 LD ($B3C4),A ; Otherwise store the new row coordinate in #R$B3C4. $B435 LD H,A ; {Set HL up with the new row and old column. $B436 LD A,($B3C7) ; $B439 LD L,A ; } $B43A LD ($DF4C),HL ; {Store the updated coordinates in #R$DF4C and print the $B43D CALL $DF4E ; dead wizard's sprite "south" of the corpse.} *$B440 LD A,($B3C5) ; Load A with the old column coordinate. $B443 DEC A ; Decrement it. $B444 JR Z,$B454 ; If we are at the left of the screen then jump to ; #R$B454. $B446 LD ($B3C5),A ; Otherwise store the new column number in #R$B3C5. $B449 LD L,A ; {Set HL up with the old row and new column. $B44A LD A,($B3C8) ; $B44D LD H,A ; } $B44E LD ($DF4C),HL ; {Store the updated coordinates in #R$DF4C and print the $B451 CALL $DF4E ; dead wizard's sprite "west" of the body.} *$B454 LD A,($B3C6) ; Load A with the old column coordinate. $B457 INC A ; Increment it. $B458 CP $1E ; {If we are at the right of the screen then jump to $B45A JR Z,$B46A ; #R$B46A.} $B45C LD ($B3C6),A ; Otherwise store the new column number in #R$B3C6. $B45F LD L,A ; {Set HL up with the old row and new column. $B460 LD A,($B3C8) ; $B463 LD H,A ; } $B464 LD ($DF4C),HL ; {Store the updated coordinates in #R$DF4C and print the $B467 CALL $DF4E ; dead wizard's sprite "east" of the swelling flesh.} *$B46A LD A,($B3C3) ; Load A with the old row coordinate. $B46D CP $01 ; {If we are at the top or left of the map then jump to $B46F JR Z,$B480 ; #R$B480. $B471 LD H,A ; $B472 LD A,($B3C5) ; $B475 CP $01 ; $B477 JR Z,$B480 ; } $B479 LD L,A ; {Otherwise print a sprite "north-west" of the dead $B47A LD ($DF4C),HL ; wizard and the gathering flies. $B47D CALL $DF4E ; } *$B480 LD A,($B3C3) ; {If we are at the top or right of the map then jump to $B483 CP $01 ; #R$B496. $B485 JR Z,$B496 ; $B487 LD H,A ; $B488 LD A,($B3C6) ; $B48B CP $1D ; $B48D JR Z,$B496 ; } $B48F LD L,A ; {Otherwise print a sprite "north-east" of the dead $B490 LD ($DF4C),HL ; wizard and his noxious fumes. $B493 CALL $DF4E ; } *$B496 LD A,($B3C4) ; {If we are at the bottom or left of the map then jump to $B499 CP $13 ; #R$B4AC. $B49B JR Z,$B4AC ; $B49D LD H,A ; $B49E LD A,($B3C5) ; $B4A1 CP $01 ; $B4A3 JR Z,$B4AC ; } $B4A5 LD L,A ; {Otherwise print a sprite "south-west" of the dead $B4A6 LD ($DF4C),HL ; wizard. $B4A9 CALL $DF4E ; } *$B4AC LD A,($B3C4) ; {If we are at the bottom or right of the map then jump $B4AF CP $13 ; to #R$B4C2. $B4B1 JR Z,$B4C2 ; $B4B3 LD H,A ; $B4B4 LD A,($B3C6) ; $B4B7 CP $1D ; $B4B9 JR Z,$B4C2 ; } $B4BB LD L,A ; {Otherwise print a sprite "south-east" of the dead $B4BC LD ($DF4C),HL ; wizard and his leaking fluids. $B4BF CALL $DF4E ; } *$B4C2 CALL $C301 ; Play sound effect. $B4C5 POP BC ; {Restore colour counter and decrement. $B4C6 DEC B ; } $B4C7 JP NZ,$B415 ; {If we haven't displayed in blue yet then jump to $B4CA POP BC ; #R$B3C9. $B4CB DEC B ; $B4CC JP NZ,$B3F1 ; } $B4CF LD HL,($AC12) ; IN PROGRESS 28th July 2020 WIZKIL. Point HL at cursor ; position of the KILLED WIZARD!!!! $B4D2 LD A,(HL) ; {Subtract 41 to get player number associated with the $B4D3 SUB $29 ; BUTCHERED VICTIM and store in #R$AC00 $B4D5 LD ($AC00),A ; } $B4D8 LD (HL),$00 ; Set object code to 0 - GANDALF, NOOOOOO!!!! $B4DA LD HL,$AC16 ; {Load HL with the address of the modifier for this $B4DD LD D,$00 ; wizard. $B4DF LD E,A ; $B4E0 ADD HL,DE ; } $B4E1 SET 4,(HL) ; Set bit 4 to show this wizard, sadly, is NO MORE.... $B4E3 LD HL,($AC12) ; {Point HL into #R$E340. $B4E6 LD DE,$0321 ; $B4E9 ADD HL,DE ; } $B4EA LD A,(HL) ; {Copy the byte from the #R$E340 to #R$E01F. BECAUSE THE $B4EB LD HL,($AC12) ; WIZARD COULD HAVE BEEN TRAPPED AT THE TIME"???" $B4EE LD (HL),A ; } $B4EF CALL $C0DD ; Update map 1's empty slots, animation frames & draw ; border. $B4F2 HALT ; Wait for an intterupt. $B4F3 DI ; Disable interrupts. $B4F4 LD HL,$C2C5 ; {Play #R$C2C5. $B4F7 CALL $C2F9 ; } ; This entry point is used by the routine at #R$9C0F. *$B4FA LD B,$09 ; Set B to 9 for the 9 frames of animation of #R$BF37. $B4FC LD HL,$BFB7 ; {Set sprite pointer to #R$BFB7. $B4FF LD ($DF4A),HL ; } $B502 LD A,$46 ; {Set ATTR-T to $46 (bright yellow on black) $B504 LD ($5C8F),A ; } ; This entry point is used by the routine at #R$B599. *$B507 PUSH BC ; {Preserve animation frame loop counter and copy to $B508 LD A,B ; #R$ABFF $B509 LD ($ABFF),A ; } $B50C LD B,$9F ; Set loop counter 2 = map size. $B50E LD HL,$E01F ; {Copy the address of the map to #R$ABFD. $B511 LD ($ABFD),HL ; } ; This entry point is used by the routine at #R$B599. *$B514 PUSH BC ; Preseve map loop counter. $B515 LD HL,($ABFD) ; {If the current map slot is empty or a wizard then jump $B518 LD A,(HL) ; to #R$B5E8. $B519 OR A ; $B51A JP Z,$B5E8 ; $B51D CP $29 ; $B51F JP P,$B5E8 ; } $B522 LD DE,$0141 ; {If the current map slot contains a dead creature then $B525 ADD HL,DE ; jump to #R$B535. $B526 LD A,(HL) ; $B527 CP $04 ; $B529 JR NZ,$B535 ; } $B52B LD DE,$00A0 ; {If the current map slot contains an "asleep" creature $B52E ADD HL,DE ; then jump to #R$B5E8. [not sure this is actually in the $B52F LD A,(HL) ; game] $B530 BIT 3,A ; $B532 JP Z,$B5E8 ; } *$B535 LD HL,($ABFD) ; {If the current creature belongs to the dead wizard then $B538 LD DE,$01E1 ; jump to #R$B563. $B53B ADD HL,DE ; $B53C LD A,(HL) ; $B53D AND $07 ; $B53F LD HL,($AC00) ; $B542 CP L ; $B543 JR Z,$B563 ; } $B545 LD HL,($ABFD) ; {If the current creature is not a Gooey Blob then jump $B548 LD A,(HL) ; to #R$B5E8. $B549 CP $22 ; $B54B JP NZ,$B5E8 ; } $B54E LD DE,$0281 ; {If there is no wizard stuck in the blob then jump to $B551 ADD HL,DE ; #R$B5E8. $B552 LD A,(HL) ; $B553 OR A ; $B554 JP Z,$B5E8 ; } $B557 LD DE,$00A0 ; {If the dead wizard code is NOT equal to the wizard ID $B55A ADD HL,DE ; in table 6 "???" then jump to #R$B5E8. $B55B LD A,(HL) ; $B55C LD HL,($AC00) ; $B55F CP L ; $B560 JP NZ,$B5E8 ; } *$B563 LD HL,($ABFD) ; {Convert the current map address into coordinates and $B566 LD ($E005),HL ; store in #R$B56C. $B569 CALL $E007 ; $B56C LD ($DF4C),HL ; } $B56F CALL $DF4E ; Print the "WOOP" sprite at the current position. $B572 LD A,($ABFF) ; {Load 'animation frame loop counter' into A and $B575 DEC A ; decrement} $B576 JR NZ,$B5E8 ; If there are WOOP animation frames remaining "???" then ; jump to #R$B5E8. $B578 LD HL,($ABFD) ; {Load HL with the address of the object's properties. $B57B LD DE,$01E1 ; $B57E ADD HL,DE ; $B57F LD A,(HL) ; } $B580 AND $07 ; {If the object belongs to the dead wizard then jump to $B582 LD HL,($AC00) ; #R$B599. $B585 CP L ; $B586 JR Z,$B599 ; } $B588 LD HL,($ABFD) ; {Set the bytes in #R$E2A0 and #R$E340 to 0. $B58B LD DE,$0281 ; $B58E ADD HL,DE ; $B58F LD (HL),$00 ; $B591 LD DE,$00A0 ; $B594 ADD HL,DE ; $B595 LD (HL),$00 ; } $B597 JR $B5E8 ; Jump to #R$B5E8. ; If the current map object is not a Gooey Blob then jump to #R$B5BE. ; ; Used by the routine at #R$B3C9. c$B599 LD HL,($ABFD) ; $B59C LD A,(HL) ; $B59D CP $22 ; $B59F JR NZ,$B5BE ; $B5A1 LD DE,$0281 ; {If a wizard is not mounted on this creature, or a $B5A4 ADD HL,DE ; creature trapped, then jump to #R$B5BE. $B5A5 LD A,(HL) ; $B5A6 OR A ; $B5A7 JR Z,$B5BE ; } $B5A9 LD (HL),$00 ; {Otherwise the creature has gone so set the wizard ID in $B5AB LD HL,($ABFD) ; #R$E2A0 to 0 and copy his wizard ID into #R$E01F. [e.g. $B5AE LD (HL),A ; an enemy wizard was trapped in a Gooey Blob]} $B5AF LD DE,$0321 ; {Load the byte from #R$E340 into A. - " *** BY GOLLOP, $B5B2 ADD HL,DE ; is this table to store object codes for trapped $B5B3 LD A,(HL) ; creatures?!? I can't remember if a gooey blob outlives ; its wizard - if so, what happens? *** "} $B5B4 LD (HL),$00 ; {Set the byte in #R$E340 to 0. $B5B6 LD DE,$0140 ; $B5B9 SBC HL,DE ; } $B5BB LD (HL),A ; Copy the byte that was in #R$E340 to #R$E200. $B5BC JR $B5E8 ; Jump to #R$B5E8. *$B5BE LD HL,($ABFD) ; {If there is no wizard ID in #R$E2A0 then nobody was $B5C1 LD DE,$0281 ; mounted so jump to #R$B5D1. $B5C4 ADD HL,DE ; $B5C5 LD A,(HL) ; $B5C6 LD (HL),$00 ; $B5C8 OR A ; $B5C9 JR Z,$B5D1 ; } $B5CB LD HL,($ABFD) ; {The wizard is no longer mounted so copy the wizard ID $B5CE LD (HL),A ; from #R$E2A0 into #R$E01F and jump to #R$B5E8. $B5CF JR $B5E8 ; } *$B5D1 LD HL,($ABFD) ; {Copy the object code from #R$E340 into #R$E01F. $B5D4 LD DE,$0321 ; $B5D7 ADD HL,DE ; $B5D8 LD A,(HL) ; $B5D9 LD HL,($ABFD) ; $B5DC LD (HL),A ; } $B5DD OR A ; {If the map position was empty then jump to #R$B5E8. $B5DE JR Z,$B5E8 ; } $B5E0 LD DE,$0141 ; {Set the animation frame for the current object to 4 $B5E3 ADD HL,DE ; (DEAD!) $B5E4 LD A,$04 ; $B5E6 LD (HL),$04 ; } ; This entry point is used by the routine at #R$B3C9. *$B5E8 POP BC ; Restore map loop counter. $B5E9 LD HL,($ABFD) ; {Increment the map pointer in #R$ABFD. $B5EC INC HL ; $B5ED LD ($ABFD),HL ; } $B5F0 DEC B ; Decrement the map loop counter. $B5F1 JP NZ,$B514 ; Loop back to #R$B514. $B5F4 CALL $C301 ; Play sound effect. $B5F7 POP BC ; Restore loop counter for animation frame. $B5F8 LD HL,($DF4A) ; {Update #R$DF4A with the address of the next frame of $B5FB LD DE,$0020 ; animation. $B5FE ADD HL,DE ; $B5FF LD ($DF4A),HL ; } $B602 DEC B ; Decrement the number of frames left to display. $B603 JP NZ,$B507 ; Loop back to #R$B507 8 times. $B606 CALL $C0DD ; Update maps and draw the border. $B609 HALT ; Wait for an interrupt. $B60A RET ; Return. ; Data block at B60B b$B60B DEFB $02,$28 ; routine27: ; ; Used by the routine at #R$B626. c$B60D LD DE,$E01F ; $B610 XOR A ; $B611 SBC HL,DE ; $B613 LD A,L ; $B614 AND $0F ; $B616 INC A ; $B617 RLCA ; $B618 RLCA ; $B619 RLCA ; $B61A RLCA ; $B61B LD E,A ; $B61C LD A,L ; $B61D AND $F0 ; $B61F LD L,A ; $B620 LD A,$A0 ; $B622 SUB L ; $B623 LD D,A ; $B624 EX DE,HL ; $B625 RET ; ; Reset system variables: P FLAG and MASK T. ; ; This is the routine that draws the "bolt" from the wizard to the target - it ; might do more. It seems to draw a line from the wizard to the target square. ; After that, the line is erased, the creature appears. In which case, is the ; value in unknown48 a colour for the animation? c$B626 XOR A ; $B627 LD ($5C90),A ; $B62A LD ($5C91),A ; $B62D LD ($B60C),A ; Reset unknown49. $B630 LD A,($B60B) ; Load the value of unknown48 that is set by the calling ; routine / spell. $B633 OR A ; {If unknown48 == 0 then jump to routine28_5. ?????? $B634 JR Z,$B6AB ; } $B636 CP $01 ; {If unknown48 == 1 then jump to routine28_0. ?????? $B638 JR NZ,$B647 ; } $B63A LD ($B844),A ; Copy the value of unknown48 into unknown54. ?????? $B63D LD A,$2A ; {Set unknown50 to 42 because .... ???????? $B63F LD ($B769),A ; } $B642 LD A,$47 ; {Set ATTR T to bright white on black. $B644 LD ($5C8F),A ; } *$B647 LD A,($B60B) ; {If unknown48 does not contain the value 2 then jump to $B64A CP $02 ; routine28_1. $B64C JR NZ,$B65B ; } $B64E LD ($B844),A ; Otherwise set unknown54 = unknown48 = 2. $B651 LD A,$0E ; {Store the value 15 in unknown50. ???????? $B653 LD ($B769),A ; } $B656 LD A,$46 ; {Set ATTR T to bright yellow on black. $B658 LD ($5C8F),A ; } *$B65B LD A,($B60B) ; {.. $B65E CP $03 ; $B660 JR NZ,$B66F ; $B662 LD ($B844),A ; $B665 LD A,$3C ; $B667 LD ($B769),A ; } $B66A LD A,$45 ; {Set ATTR T to bright cyan on black. $B66C LD ($5C8F),A ; } *$B66F LD A,($B60B) ; {.. $B672 CP $04 ; $B674 JR NZ,$B685 ; $B676 LD A,$03 ; $B678 LD ($B844),A ; } $B67B LD A,$46 ; {Set ATTR T to bright yellow on black. $B67D LD ($5C8F),A ; } $B680 LD A,$64 ; {.. $B682 LD ($B769),A ; *$B685 CP $05 ; $B687 JR NZ,$B698 ; $B689 LD A,$03 ; $B68B LD ($B844),A ; } $B68E LD A,$46 ; {Set ATTR T to bright yellow on black. $B690 LD ($5C8F),A ; } $B693 LD A,$08 ; {.. $B695 LD ($B769),A ; *$B698 CP $06 ; $B69A JR NZ,$B6AB ; $B69C LD A,$03 ; $B69E LD ($B844),A ; } $B6A1 LD A,$47 ; {Set ATTR T to bright white on black. $B6A3 LD ($5C8F),A ; } $B6A6 LD A,$64 ; {.. $B6A8 LD ($B769),A ; } *$B6AB DI ; Disable interrupts. $B6AC XOR A ; {Reset unknown51 to 0. $B6AD LD ($B76A),A ; $B6B0 EXX ; $B6B1 PUSH HL ; $B6B2 EXX ; $B6B3 LD HL,($AC14) ; $B6B6 CALL $B60D ; $B6B9 LD ($5C7D),HL ; $B6BC LD HL,($AC12) ; $B6BF CALL $B60D ; $B6C2 LD ($B76B),HL ; $B6C5 EX DE,HL ; $B6C6 LD HL,($5C7D) ; $B6C9 LD A,H ; $B6CA CP D ; $B6CB JR C,$B6D3 ; $B6CD SUB D ; $B6CE LD B,A ; $B6CF LD D,$FF ; $B6D1 JR $B6D8 ; *$B6D3 LD A,D ; $B6D4 SUB H ; $B6D5 LD B,A ; $B6D6 LD D,$01 ; *$B6D8 LD A,L ; $B6D9 CP E ; $B6DA JR C,$B6E2 ; $B6DC SUB E ; $B6DD LD C,A ; $B6DE LD E,$FF ; $B6E0 JR $B6E7 ; *$B6E2 LD A,E ; $B6E3 SUB L ; $B6E4 LD C,A ; $B6E5 LD E,$01 ; *$B6E7 LD A,C ; $B6E8 CP B ; $B6E9 JR NC,$B6F1 ; $B6EB LD L,C ; $B6EC PUSH DE ; $B6ED XOR A ; $B6EE LD E,A ; $B6EF JR $B6F9 ; *$B6F1 OR B ; $B6F2 JR Z,$B722 ; $B6F4 LD L,B ; $B6F5 LD B,C ; $B6F6 PUSH DE ; $B6F7 LD D,$00 ; *$B6F9 LD H,B ; $B6FA LD A,B ; $B6FB RRA ; *$B6FC ADD A,L ; $B6FD JR C,$B702 ; $B6FF CP H ; $B700 JR C,$B709 ; *$B702 SUB H ; $B703 LD C,A ; $B704 EXX ; $B705 POP BC ; $B706 PUSH BC ; $B707 JR $B70D ; *$B709 LD C,A ; $B70A PUSH DE ; $B70B EXX ; $B70C POP BC ; *$B70D LD HL,($5C7D) ; $B710 LD A,B ; $B711 ADD A,H ; $B712 LD B,A ; $B713 LD A,C ; $B714 INC A ; $B715 ADD A,L ; $B716 JR C,$B731 ; } ; This entry point is used by the routine at #R$B731. *$B718 DEC A ; $B719 LD C,A ; $B71A CALL $B746 ; $B71D EXX ; $B71E LD A,C ; $B71F DJNZ $B6FC ; $B721 POP DE ; *$B722 EXX ; $B723 POP HL ; $B724 EXX ; } $B725 EI ; Enable interrupts. $B726 LD A,$03 ; {Set P FLAG to 3 so that "OVER 1" is activated for $B728 LD ($5C91),A ; printing.} $B72B LD A,$FF ; {Set MASK T to 255 so that all attribute bits are taken $B72D LD ($5C90),A ; from what is already on-screen and not from ATTR P.} $B730 RET ; Return. ; If the zero flag is not set then jump to B718. ?????? ; ; Used by the routine at #R$B626. c$B731 JR Z,$B718 ; ; This entry point is used by the routine at #R$B7D3. *$B733 LD ($5C7D),BC ; Store the two bytes (C=x then B=y) for the last ; coordinates plotted in COORDS $B737 CALL $22AA ; Call PIXEL-ADD in ROM: HL will hold the address of the ; display file byte and A holds the position of the pixel ; within the byte. $B73A LD B,A ; {Copy the position of the pixel into B and increment it. $B73B INC B ; } $B73C LD A,$FE ; {Load A with 254 because ..... ?????? *$B73E RRCA ; $B73F DJNZ $B73E ; $B741 LD B,A ; $B742 LD A,(HL) ; $B743 AND B ; $B744 LD (HL),A ; } $B745 RET ; Return. ; routine29: Used by #R$B626 to ... ; ; Used by the routine at #R$B626. c$B746 LD A,($B60B) ; $B749 OR A ; $B74A JR Z,$B750 ; $B74C CALL $B7D3 ; $B74F RET ; *$B750 CALL $B755 ; $B753 RET ; ; Data block at B754 b$B754 DEFB $00 ; Routine at B755 ; ; Used by the routine at #R$B746. c$B755 LD ($5C7D),BC ; $B759 CALL $22AA ; $B75C LD B,A ; $B75D INC B ; $B75E LD A,(HL) ; *$B75F RLCA ; $B760 DJNZ $B75F ; $B762 AND $01 ; $B764 RET Z ; $B765 LD ($B754),A ; $B768 RET ; ; Data block at B769 b$B769 DEFB $0E,$0E,$70,$60,$70,$60,$70,$5F $B771 DEFB $70,$5E,$70,$5D,$70,$5C,$70,$5B $B779 DEFB $70,$5A,$70,$59,$70,$58,$70,$57 $B781 DEFB $70,$56,$70,$55,$70,$54,$70,$53 $B789 DEFB $70,$52,$70,$51,$B1,$20,$B2,$20 $B791 DEFB $B3,$20,$B4,$20,$B5,$20,$B6,$20 $B799 DEFB $B7,$20,$B8,$20,$B9,$20,$BA,$20 $B7A1 DEFB $BB,$20,$BC,$20,$BD,$20,$BE,$20 $B7A9 DEFB $BF,$20,$C0,$20,$C1,$20,$C2,$20 $B7B1 DEFB $C3,$20,$C4,$20,$C5,$20,$C6,$20 $B7B9 DEFB $C7,$20,$C8,$20,$C9,$20,$CA,$20 $B7C1 DEFB $CB,$20,$CC,$20,$CD,$20,$CE,$20 $B7C9 DEFB $CF,$20,$D0,$20,$D1,$20,$D2,$20 $B7D1 DEFB $D3,$20 ; routine30: Used by #R$B746 to ... ; ; Used by the routine at #R$B746. c$B7D3 PUSH HL ; $B7D4 LD ($B76D),BC ; $B7D8 PUSH BC ; $B7D9 CALL $B84D ; $B7DC POP BC ; $B7DD LD HL,($B76B) ; $B7E0 SBC HL,BC ; $B7E2 JR Z,$B81C ; $B7E4 LD HL,$B7D0 ; $B7E7 LD DE,$B7D2 ; $B7EA LD BC,$0064 ; $B7ED LDDR ; $B7EF LD HL,($B769) ; $B7F2 LD A,($B76A) ; $B7F5 CP L ; $B7F6 JR Z,$B7FD ; $B7F8 ADD A,$02 ; $B7FA LD ($B76A),A ; *$B7FD LD D,$00 ; $B7FF LD A,($B76A) ; $B802 LD E,A ; $B803 LD HL,$B76D ; $B806 ADD HL,DE ; $B807 LD C,(HL) ; $B808 INC HL ; $B809 LD B,(HL) ; $B80A CALL $B845 ; $B80D LD HL,($B76D) ; $B810 LD ($5C7D),HL ; $B813 PUSH DE ; $B814 PUSH BC ; $B815 CALL $C301 ; $B818 POP BC ; $B819 POP DE ; $B81A POP HL ; $B81B RET ; *$B81C LD A,($B76A) ; $B81F LD D,$00 ; $B821 LD E,A ; $B822 SRL A ; $B824 ADD A,$02 ; $B826 LD B,A ; $B827 LD HL,$B76D ; $B82A ADD HL,DE ; $B82B LD DE,$0002 ; *$B82E PUSH HL ; $B82F PUSH BC ; $B830 LD C,(HL) ; $B831 INC HL ; $B832 LD B,(HL) ; $B833 CALL $B845 ; $B836 PUSH DE ; $B837 CALL $C301 ; $B83A POP DE ; $B83B POP BC ; $B83C POP HL ; $B83D XOR A ; $B83E SBC HL,DE ; $B840 DJNZ $B82E ; $B842 POP HL ; $B843 RET ; ; Data block at B844 b$B844 DEFB $02 ; Routine at B845 ; ; Used by the routine at #R$B7D3. c$B845 LD A,($B844) ; $B848 OR $80 ; $B84A LD ($B844),A ; ; This entry point is used by the routine at #R$B7D3. *$B84D PUSH DE ; $B84E PUSH BC ; $B84F LD A,($B844) ; $B852 AND $7F ; $B854 CP $03 ; $B856 JR Z,$B85D ; $B858 CALL $B8BD ; $B85B JR $B8AA ; *$B85D CALL $B8BD ; $B860 INC B ; $B861 CALL $B8BD ; $B864 DEC B ; $B865 DEC B ; $B866 CALL $B8BD ; $B869 INC B ; $B86A INC C ; $B86B CALL $B8BD ; $B86E DEC C ; $B86F DEC C ; $B870 CALL $B8BD ; $B873 LD A,($B60B) ; $B876 AND $04 ; $B878 JR Z,$B8AA ; $B87A INC B ; $B87B INC B ; $B87C DEC C ; $B87D CALL $B8BD ; $B880 INC C ; $B881 INC C ; $B882 INC B ; $B883 CALL $B8BD ; $B886 DEC B ; $B887 INC C ; $B888 INC C ; $B889 CALL $B8BD ; $B88C DEC B ; $B88D DEC B ; $B88E INC C ; $B88F CALL $B8BD ; $B892 DEC C ; $B893 DEC B ; $B894 DEC B ; $B895 CALL $B8BD ; $B898 DEC C ; $B899 DEC C ; $B89A DEC B ; $B89B CALL $B8BD ; $B89E INC B ; $B89F DEC C ; $B8A0 DEC C ; $B8A1 CALL $B8BD ; $B8A4 INC B ; $B8A5 INC B ; $B8A6 DEC C ; $B8A7 CALL $B8BD ; *$B8AA POP BC ; $B8AB LD ($5C7D),BC ; $B8AF POP DE ; $B8B0 LD A,($B844) ; $B8B3 AND $7F ; $B8B5 LD ($B844),A ; $B8B8 LD HL,$B60C ; $B8BB INC (HL) ; $B8BC RET ; *$B8BD PUSH BC ; Preserve BC - what is in it??? $B8BE LD A,($B844) ; {If unknown54==128 then jump to $B8CA to ...??? $B8C1 AND $80 ; $B8C3 JR Z,$B8CA ; } $B8C5 CALL $B733 ; {Otherwise call routine28_19 to ... then restore BC and $B8C8 JR $B8DB ; return. ???} *$B8CA LD A,($B60B) ; {If unknown48==4 then jump to $B8D8 to call PLOT-SUB in $B8CD AND $04 ; ROM / restore BC / return. ??? $B8CF JR Z,$B8D8 ; } $B8D1 LD A,($B60C) ; {If unknown49 is in the range 1-7 then jump to $B8D8 to $B8D4 AND $07 ; restore BC / return. $B8D6 JR NZ,$B8DB ; } *$B8D8 CALL $22E5 ; Call PLOT-SUB in ROM to plot the pixel whose coordinates ; are on the calculator stack. *$B8DB POP BC ; Restore BC. $B8DC RET ; Return. ; Set ATTR T to bright magenta on black. ; ; Deals with ranged attacks. c$B8DD LD A,$43 ; $B8DF LD ($5C8F),A ; $B8E2 CALL $BB57 ; Draw the border in "attack mode" colours. $B8E5 LD A,$44 ; {Set ATTR T to bright green on black. $B8E7 LD ($5C8F),A ; } $B8EA LD BC,$1600 ; Set display coordinates to (0,22). $B8ED LD A,$3B ; {Display #R$CEBF "RANGED COMBAT,RANGE=". $B8EF CALL $BAFB ; } $B8F2 LD A,$46 ; {Set ATTR T to bright yellow on black. $B8F4 LD ($5C8F),A ; } $B8F7 LD A,($ABFC) ; Load A with #R$ABFC which is the range of the attack, ; set by the caller. $B8FA ADD A,$30 ; Add $30 to get a character code. $B8FC CALL $BAD6 ; Display the ranged attack distance. $B8FF LD BC,($BC94) ; {Store the cursor coordinates in #R$AC04. $B903 LD ($AC04),BC ; } $B907 LD HL,$C257 ; {Play #R$C257. $B90A CALL $C2F9 ; } $B90D EI ; Enable interrupts. $B90E LD A,($AC2E) ; {If the current player is human then jump to #R$B92E. $B911 OR A ; $B912 JR Z,$B917 ; } $B914 CALL $CC56 ; Otherwise call #R$CC56 - "???" is this the AI routine to ; decide on a target "???" *$B917 CALL $BBCC ; Wait for no key. $B91A CALL $BBB0 ; Wait for a key. $B91D LD HL,$C37D ; {Set UDG to point to the targettting cursor. $B920 LD ($5C7B),HL ; } *$B923 LD A,($AC2E) ; {If the current player is human then jump to #R$B92E. $B926 OR A ; $B927 JR Z,$B92E ; } $B929 CALL $CCCB ; Otherwise call #R$CCCB to ... "???" $B92C JR $B934 ; And then jump to #R$B934. *$B92E CALL $BC96 ; Human player so call #R$BC96 to handle keyboard and ; displaying information about objects on screen. $B931 CALL $02BF ; Call KEYBOARD in ROM. *$B934 CP $4B ; {If they did NOT 'K' to cancel then jump to #R$B94B. $B936 JR NZ,$B94B ; Otherwise they want to cancel so set ATTR T to bright $B938 LD A,$41 ; blue on black. $B93A LD ($5C8F),A ; } $B93D CALL $BB57 ; Call #R$BB57 to draw the border. $B940 CALL $BED7 ; Clear the bottom row of the screen. $B943 LD HL,$C2B1 ; {Play #R$C2B1. $B946 CALL $C2F9 ; } $B949 EI ; Enable interrupts. $B94A RET ; Return. *$B94B CP $53 ; {If they did NOT press 'S' to select a target then jump $B94D JR NZ,$B923 ; back to #R$B923.} $B94F XOR A ; {.. $B950 LD HL,($AC04) ; $B953 LD BC,($BC94) ; $B957 SBC HL,BC ; $B959 JR Z,$B923 ; $B95B LD BC,($AC04) ; $B95F LD ($BEE9),BC ; $B963 LD BC,($BC94) ; $B967 LD ($BEEB),BC ; $B96B LD A,($ABFC) ; $B96E SLA A ; $B970 CALL $BEEF ; $B973 JP P,$B98B ; } $B976 LD A,$45 ; {Set ATTR T to bright cyan on black. $B978 LD ($5C8F),A ; } $B97B LD A,$35 ; {Display #R$D03A at (0,22) - "OUT OF RANGE " $B97D LD BC,$1600 ; $B980 CALL $BAFB ; } $B983 CALL $BBCC ; Wait for no key. $B986 CALL $BBB0 ; Wait for a key. $B989 JR $B923 ; Jump to #R$B923. *$B98B XOR A ; {Reset #R$B754 and #R$B60B - "???" Something to do with $B98C LD ($B754),A ; the line of fire? "???" $B98F LD ($B60B),A ; } $B992 CALL $BA77 ; {.. $B995 CALL $B626 ; $B998 CALL $C0D8 ; $B99B HALT ; $B99C LD A,($B754) ; $B99F OR A ; $B9A0 JR Z,$B9BB ; } $B9A2 LD A,$45 ; {Set Attr T to bright cyan on black. $B9A4 LD ($5C8F),A ; } $B9A7 CALL $BED7 ; Clear the bottom row of the screen. $B9AA LD A,$3C ; {Display #R$D0C1 at (0,22) - "NO LINE OF SIGHT" $B9AC LD BC,$1600 ; $B9AF CALL $BAFB ; } $B9B2 CALL $BBCC ; Wait for no key. $B9B5 CALL $BBB0 ; Wait for a key. $B9B8 JP $B923 ; Jump to #R$B923. *$B9BB LD HL,$C275 ; {Play #R$C275. $B9BE LD ($C2F3),HL ; } $B9C1 LD HL,($AC14) ; $B9C4 LD A,(HL) ; $B9C5 CP $17 ; $B9C7 JP M,$B9D9 ; $B9CA CP $1A ; $B9CC JP P,$B9D9 ; $B9CF LD A,$04 ; $B9D1 LD HL,$C26B ; {Play sound effect #R$C26B. $B9D4 LD ($C2F3),HL ; } $B9D7 JR $B9E4 ; *$B9D9 LD A,(HL) ; $B9DA CP $15 ; $B9DC JR NZ,$B9E2 ; $B9DE LD A,$02 ; $B9E0 JR $B9E4 ; *$B9E2 LD A,$01 ; *$B9E4 LD ($B60B),A ; $B9E7 CALL $C2F6 ; $B9EA CALL $B626 ; $B9ED CALL $C0DD ; $B9F0 HALT ; Wait for an interrupt. $B9F1 DI ; Disable interrupts. $B9F2 LD HL,$C29D ; $B9F5 LD ($C2F3),HL ; $B9F8 LD HL,($AC12) ; $B9FB LD ($E005),HL ; $B9FE CALL $E007 ; $BA01 LD ($DF4C),HL ; $BA04 LD HL,$BFB7 ; Point HL at the #R$BFB7 animation for when an object is ; destroyed. $BA07 LD A,$47 ; {Set ATTR T to bright white on black. $BA09 LD ($5C8F),A ; } $BA0C LD A,($B60B) ; $BA0F CP $04 ; $BA11 JR NZ,$BA21 ; $BA13 LD HL,$C243 ; {Play #R$C243. $BA16 LD ($C2F3),HL ; } $BA19 LD HL,$C123 ; Point HL at #R$C123. $BA1C LD A,$46 ; {Set ATTR T to bright yellow on black. $BA1E LD ($5C8F),A ; *$BA21 PUSH HL ; $BA22 CALL $C2F6 ; $BA25 POP HL ; $BA26 LD DE,$0020 ; $BA29 LD B,$09 ; *$BA2B PUSH BC ; $BA2C PUSH HL ; $BA2D PUSH DE ; $BA2E LD ($DF4A),HL ; $BA31 CALL $DF4E ; $BA34 CALL $C301 ; $BA37 POP DE ; $BA38 POP HL ; $BA39 POP BC ; $BA3A ADD HL,DE ; $BA3B DJNZ $BA2B ; $BA3D LD BC,($AC04) ; $BA41 LD ($BC94),BC ; $BA45 EI ; $BA46 LD HL,($AC12) ; $BA49 LD A,(HL) ; $BA4A OR A ; $BA4B RET Z ; $BA4C LD DE,$00A1 ; $BA4F ADD HL,DE ; $BA50 LD (HL),$01 ; $BA52 LD DE,$00A0 ; $BA55 ADD HL,DE ; $BA56 LD A,(HL) ; $BA57 CP $04 ; $BA59 JR NZ,$BA5E ; $BA5B BIT 3,A ; $BA5D RET Z ; *$BA5E LD HL,($AC12) ; $BA61 LD A,(HL) ; $BA62 CP $24 ; $BA64 JR Z,$BA72 ; $BA66 CP $25 ; $BA68 JR Z,$BA72 ; $BA6A CP $29 ; $BA6C JP P,$BA72 ; $BA6F CP $23 ; $BA71 RET P ; *$BA72 JP $B168 ; } ; Data block at BA75 b$BA75 DEFB $BD,$E0 ; Routine at BA77 ; ; Used by the routines at #R$98DB, #R$B8DD and #R$D5EC. c$BA77 DI ; $BA78 LD HL,$E01F ; $BA7B LD B,$9F ; *$BA7D PUSH BC ; $BA7E LD ($BA75),HL ; $BA81 LD A,(HL) ; $BA82 CP $23 ; $BA84 CALL Z,$BABE ; $BA87 CP $1D ; $BA89 CALL Z,$BABE ; $BA8C CP $1F ; $BA8E CALL Z,$BABE ; $BA91 LD DE,$0141 ; $BA94 ADD HL,DE ; $BA95 LD A,(HL) ; $BA96 CP $04 ; $BA98 CALL Z,$BABE ; $BA9B XOR A ; $BA9C LD HL,($BA75) ; $BA9F LD DE,($AC12) ; $BAA3 SBC HL,DE ; $BAA5 CALL Z,$BABE ; $BAA8 XOR A ; $BAA9 LD HL,($BA75) ; $BAAC LD DE,($AC14) ; $BAB0 SBC HL,DE ; $BAB2 CALL Z,$BABE ; $BAB5 LD HL,($BA75) ; $BAB8 INC HL ; $BAB9 POP BC ; $BABA DJNZ $BA7D ; $BABC EI ; $BABD RET ; *$BABE PUSH AF ; {routine36: Deletes a sprite at the position given by $BABF LD HL,($BA75) ; #R$E005. $BAC2 LD ($E005),HL ; $BAC5 CALL $E007 ; $BAC8 LD ($DF4C),HL ; $BACB LD HL,$EB51 ; $BACE LD ($DF4A),HL ; $BAD1 CALL $DF4E ; $BAD4 POP AF ; $BAD5 RET ; } ; This entry point is used by the routines at #R$8741, #R$9168, #R$938B, ; #R$93FF, #R$94E2, #R$95B8, #R$ACED, #R$BBE7 and #R$C3B3. *$BAD6 LD HL,$D808 ; $BAD9 LD ($5C36),HL ; $BADC PUSH AF ; $BADD CALL $DF0F ; $BAE0 POP AF ; $BAE1 INC B ; $BAE2 LD HL,$DB08 ; $BAE5 LD ($5C36),HL ; $BAE8 CALL $DF0F ; $BAEB DEC B ; $BAEC INC C ; $BAED RET ; ; This entry point is used by the routine at #R$8741. *$BAEE LD A,(HL) ; $BAEF PUSH HL ; $BAF0 PUSH DE ; $BAF1 CALL $BAD6 ; $BAF4 POP DE ; $BAF5 POP HL ; $BAF6 DEC E ; $BAF7 INC HL ; $BAF8 JR NZ,$BAEE ; $BAFA RET ; ; This entry point is used by the routines at #R$8741, #R$8F8B, #R$9168, ; #R$938B, #R$93FF, #R$9424, #R$94E2, #R$95B8, #R$97A3, #R$97BB, #R$9856, ; #R$9C0F, #R$AC36, #R$ACED, #R$B168, #R$BBE7, #R$BEB2, #R$C3B3, #R$D567 and ; #R$D588. *$BAFB PUSH HL ; $BAFC PUSH DE ; $BAFD PUSH BC ; $BAFE LD H,$00 ; $BB00 LD L,A ; $BB01 ADD HL,HL ; $BB02 ADD HL,HL ; $BB03 LD DE,$CDD3 ; $BB06 ADD HL,DE ; $BB07 LD E,(HL) ; $BB08 INC HL ; $BB09 LD D,(HL) ; $BB0A INC HL ; $BB0B LD C,(HL) ; $BB0C EX DE,HL ; $BB0D LD E,C ; $BB0E POP BC ; $BB0F CALL $BAEE ; $BB12 POP DE ; $BB13 POP HL ; $BB14 RET ; } ; Data block at BB15 b$BB15 DEFB $D0,$E4,$D0,$EA,$D0,$E4,$D0,$EA $BB1D DEFB $57,$0B,$27,$0B,$57,$0B,$27,$0B $BB25 DEFB $FF,$FF,$AA,$55,$88,$22,$88,$00 $BB2D DEFB $00,$11,$44,$11,$AA,$55,$FF,$FF $BB35 DEFB $FF,$FF,$EA,$F5,$D0,$E4,$D0,$EA $BB3D DEFB $FF,$FF,$AF,$5B,$87,$2B,$87,$0B $BB45 DEFB $D0,$E1,$D4,$E1,$DA,$F5,$FF,$FF $BB4D DEFB $57,$0B,$27,$0B,$AF,$57,$FF,$FF $BB55 DEFB $15,$BB ; Routine at BB57 ; ; Used by the routines at #R$8741, #R$9168, #R$94E2, #R$B8DD, #R$C0D8 and ; #R$C3B3. c$BB57 PUSH BC ; $BB58 PUSH DE ; $BB59 PUSH HL ; $BB5A PUSH AF ; $BB5B LD HL,($BB55) ; $BB5E LD ($5C36),HL ; $BB61 LD E,$14 ; *$BB63 LD A,$00 ; $BB65 LD C,$00 ; $BB67 LD B,E ; $BB68 PUSH DE ; $BB69 CALL $DF0F ; $BB6C LD C,$1F ; $BB6E LD A,$01 ; $BB70 CALL $DF0F ; $BB73 POP DE ; $BB74 DEC E ; $BB75 JR NZ,$BB63 ; $BB77 LD E,$1E ; *$BB79 LD A,$02 ; $BB7B LD B,$00 ; $BB7D LD C,E ; $BB7E PUSH DE ; $BB7F CALL $DF0F ; $BB82 LD B,$15 ; $BB84 LD A,$03 ; $BB86 CALL $DF0F ; $BB89 POP DE ; $BB8A DEC E ; $BB8B JR NZ,$BB79 ; $BB8D LD A,$04 ; $BB8F LD BC,$0000 ; $BB92 CALL $DF0F ; $BB95 LD A,$05 ; $BB97 LD C,$1F ; $BB99 CALL $DF0F ; $BB9C LD A,$06 ; $BB9E LD BC,$1500 ; $BBA1 CALL $DF0F ; $BBA4 LD C,$1F ; $BBA6 LD A,$07 ; $BBA8 CALL $DF0F ; $BBAB POP AF ; $BBAC POP HL ; $BBAD POP DE ; $BBAE POP BC ; $BBAF RET ; ; Routine at BBB0 ; ; Used by the routines at #R$94E2, #R$95B8, #R$9856, #R$9C0F, #R$AC36, #R$ACED, ; #R$B168, #R$B8DD, #R$C3B3, #R$D567 and #R$D588. c$BBB0 PUSH HL ; $BBB1 PUSH DE ; $BBB2 PUSH BC ; $BBB3 LD A,($AC2E) ; $BBB6 OR A ; $BBB7 JR NZ,$BBC8 ; *$BBB9 PUSH BC ; $BBBA CALL $028E ; $BBBD POP BC ; $BBBE INC C ; $BBBF LD A,E ; $BBC0 INC A ; $BBC1 OR A ; $BBC2 JR Z,$BBB9 ; $BBC4 LD A,C ; $BBC5 LD ($5C76),A ; *$BBC8 POP BC ; $BBC9 POP DE ; $BBCA POP HL ; $BBCB RET ; ; Routine at BBCC ; ; Used by the routines at #R$9168, #R$9424, #R$94E2, #R$9856, #R$99F1, #R$9C0F, ; #R$AC36, #R$ACED, #R$B168, #R$B8DD, #R$C3B3, #R$D567, #R$D588 and #R$D702. c$BBCC PUSH HL ; $BBCD PUSH DE ; $BBCE PUSH BC ; $BBCF LD A,($AC2E) ; $BBD2 OR A ; $BBD3 JR NZ,$BBE3 ; *$BBD5 PUSH BC ; $BBD6 CALL $028E ; $BBD9 POP BC ; $BBDA INC C ; $BBDB LD A,E ; $BBDC INC A ; $BBDD JR NZ,$BBD5 ; $BBDF LD A,C ; $BBE0 LD ($5C76),A ; *$BBE3 POP BC ; $BBE4 POP DE ; $BBE5 POP HL ; $BBE6 RET ; ; Routine at BBE7 ; ; Used by the routine at #R$ACED. c$BBE7 PUSH HL ; $BBE8 PUSH DE ; $BBE9 LD A,$08 ; $BBEB LD ($5C6A),A ; $BBEE PUSH BC ; $BBEF LD A,($AC2E) ; $BBF2 OR A ; $BBF3 JP NZ,$CDC0 ; $BBF6 CALL $02BF ; ; This entry point is used by the routine at #R$CDC0. *$BBF9 POP BC ; $BBFA LD ($AC32),A ; $BBFD CP $57 ; $BBFF JR NZ,$BC09 ; $BC01 LD A,$02 ; $BC03 LD ($AC02),A ; $BC06 CALL $BC6C ; *$BC09 CP $58 ; $BC0B JR NZ,$BC15 ; $BC0D LD A,$02 ; $BC0F LD ($AC02),A ; $BC12 CALL $BC72 ; *$BC15 CP $41 ; $BC17 JR NZ,$BC21 ; $BC19 LD A,$02 ; $BC1B LD ($AC02),A ; $BC1E CALL $BC7D ; *$BC21 CP $44 ; $BC23 JR NZ,$BC2D ; $BC25 LD A,$02 ; $BC27 LD ($AC02),A ; $BC2A CALL $BC83 ; *$BC2D CP $51 ; $BC2F JR NZ,$BC3C ; $BC31 LD A,$03 ; $BC33 LD ($AC02),A ; $BC36 CALL $BC7D ; $BC39 CALL $BC6C ; *$BC3C CP $45 ; $BC3E JR NZ,$BC4B ; $BC40 LD A,$03 ; $BC42 LD ($AC02),A ; $BC45 CALL $BC83 ; $BC48 CALL $BC6C ; *$BC4B CP $5A ; $BC4D JR NZ,$BC5A ; $BC4F LD A,$03 ; $BC51 LD ($AC02),A ; $BC54 CALL $BC72 ; $BC57 CALL $BC7D ; *$BC5A CP $43 ; $BC5C JR NZ,$BC69 ; $BC5E LD A,$03 ; $BC60 LD ($AC02),A ; $BC63 CALL $BC83 ; $BC66 CALL $BC72 ; *$BC69 POP DE ; $BC6A POP HL ; $BC6B RET ; *$BC6C DEC B ; $BC6D JR NZ,$BC70 ; $BC6F INC B ; *$BC70 JR $BC8C ; *$BC72 INC B ; $BC73 PUSH AF ; $BC74 LD A,B ; $BC75 CP $0B ; $BC77 JR NZ,$BC7A ; $BC79 DEC B ; *$BC7A POP AF ; $BC7B JR $BC8C ; *$BC7D DEC C ; $BC7E JR NZ,$BC81 ; $BC80 INC C ; *$BC81 JR $BC8C ; *$BC83 INC C ; $BC84 PUSH AF ; $BC85 LD A,C ; $BC86 CP $10 ; $BC88 JR NZ,$BC8B ; $BC8A DEC C ; *$BC8B POP AF ; *$BC8C RET ; ; This entry point is used by the routines at #R$9C0F and #R$BDA5. *$BC8D SLA B ; $BC8F DEC B ; $BC90 SLA C ; $BC92 DEC C ; $BC93 RET ; ; Data block at BC94 b$BC94 DEFB $0F,$0A ; Call KEYBOARD in ROM. ; ; Used by the routines at #R$84D3, #R$85F6, #R$9168, #R$983F, #R$99F1, #R$9C0F, ; #R$ACC6, #R$AF03, #R$B8DD, #R$D52E and #R$D702. c$BC96 CALL $02BF ; $BC99 CP $49 ; {If decoded key is not 'I' then jump to #R$BCA3 to see $BC9B JR NZ,$BCA3 ; if the player is holding down a wizard number.} $BC9D CALL $C3B3 ; Call #R$C3B3 to display the information screen for the ; object under the cursor. $BCA0 HALT ; {Wait for an interrupt and then jump to #R$BCE5 to check $BCA1 JR $BCE5 ; for cursor being moved.} *$BCA3 CALL $02BF ; Call KEYBOARD in ROM to get the current key being ; pressed. $BCA6 CP $39 ; {We only want to deal with keys 1-8 so if decoded key is $BCA8 JP P,$BCE5 ; greater than '8' or less than '1' then jump to #R$BCE5 $BCAB CP $31 ; to deal with cursor being moved instead. $BCAD JP M,$BCE5 ; } $BCB0 SUB $31 ; Subtract $31 to convert keycode into player number. $BCB2 LD HL,$AC0F ; {If value is greater than or equal to the number of $BCB5 CP (HL) ; players in the current game then jump to #R$BCE5 to deal $BCB6 JP P,$BCE5 ; with cursor movement instead.} $BCB9 LD ($D391),A ; Store the number being pressed by the user to select a ; player in #R$D391 (previously 'unknown68'). $BCBC CALL $C0DD ; Call #R$C0D8 to draw the blue border and reset frame ; animation value for empty cells in map area table 3. $BCBF HALT ; Wait for an interrupt. *$BCC0 CALL $D392 ; Call #R$D392 to make the currently selected wizard and ; his creations flash. $BCC3 LD A,($D391) ; {Set A up to "point" to the currently selected player's $BCC6 ADD A,$29 ; name by loading the currently selected player number ; back into A and add $29 as offset to wizards in game ; messages table 1.} $BCC8 LD BC,$1600 ; {Set BC to coordinates (0,22) and set ATTR-T to $46 $BCCB LD HL,$5C8F ; (bright yellow on black). $BCCE LD (HL),$46 ; } $BCD0 CALL $BAFB ; Print the currently selected wizard's name. $BCD3 LD A,$5F ; {Now append "'s creations" to the wizard's name. $BCD5 CALL $BAFB ; } $BCD8 CALL $028E ; Call KEY_SCAN routine in ROM. $BCDB INC E ; {If E is not $FF jump back to routine41_1. This prints $BCDC JR NZ,$BCC0 ; messages and flashes the wizard and his creatures again ; while key is held down.} $BCDE CALL $BED7 ; Clear the bottom row of the display, e.g. delete ; "GANDALF'S CREATIONS" $BCE1 CALL $C0DD ; Call #R$C0D8 to draw the blue border and reset frame ; animation value for empty cells in map area table 3. $BCE4 HALT ; {Wait for next interrupt. *$BCE5 LD BC,($BC94) ; $BCE9 PUSH BC ; $BCEA CALL $BBE7 ; $BCED POP HL ; $BCEE PUSH BC ; } $BCEF XOR A ; Reset Carry flag and subtract BC from HL - why??? $BCF0 SBC HL,BC ; {Clear the bottom row of the display if the cursor is $BCF2 CALL NZ,$BED7 ; not on an object ???} $BCF5 POP BC ; {Store cursor coordinates in LBC94. $BCF6 LD ($BC94),BC ; } $BCFA CALL $BDA5 ; Call routine42 to display UDG at cursor coordinates. $BCFD CALL $BDD1 ; {Look up in map area table 4 the wizard number for the $BD00 LD ($AC12),HL ; current object and store in unknown27. $BD03 LD HL,($AC12) ; $BD06 LD DE,$01E1 ; $BD09 ADD HL,DE ; } $BD0A LD A,(HL) ; {Copy entry into unknown27. $BD0B LD ($AC10),A ; $BD0E LD HL,($AC12) ; } $BD11 LD A,$45 ; {Set ATTR T to bright cyan on black. $BD13 LD ($5C8F),A ; } $BD16 LD A,(HL) ; {Load object ID and jump to routine41_7 if there is no $BD17 OR A ; object at the current map coordinates. $BD18 JR Z,$BD88 ; } $BD1A LD BC,$1600 ; {Display the current object name at (0,22). $BD1D CALL $BAFB ; } $BD20 LD A,$44 ; {Set ATTR T to bright green on black. $BD22 LD ($5C8F),A ; } $BD25 LD A,($AC10) ; {Test bit 3 of unknown27 to see if is ASLEEP. Jump to $BD28 BIT 3,A ; #R$BD33 if not ASLEEP. $BD2A JR Z,$BD33 ; } $BD2C LD A,$31 ; {Print ASLEEP string. $BD2E CALL $BAFB ; } $BD31 JR Z,$BD88 ; ??? *$BD33 LD DE,$0141 ; {See if the current animation value in map area table 3 $BD36 ADD HL,DE ; is '4' to represent 'DEAD'. $BD37 LD A,(HL) ; $BD38 CP $04 ; } $BD3A JR NZ,$BD43 ; {If object is not dead then jump to routine41_4, $BD3C LD A,$32 ; otherwise display "DEAD" string. $BD3E CALL $BAFB ; $BD41 JR $BD88 ; } *$BD43 LD DE,$0140 ; {Point into map area table 3 [Ed: he means table 5] $BD46 ADD HL,DE ; which contains the animation value.} $BD47 LD A,$47 ; {Set ATTR T to bright white on black (usually for $BD49 LD ($5C8F),A ; NEUTRAL).} $BD4C LD A,(HL) ; {If the current object's animation frame is not zero $BD4D OR A ; then jump to routine41_5. $BD4E JR NZ,$BD5D ; } $BD50 LD DE,$00A0 ; {Otherwise look up the owner wizard number and if it is $BD53 ADD HL,DE ; not 0 then set ATTR T to bright cyan on black (usually $BD54 LD A,(HL) ; for CHAOS). $BD55 OR A ; $BD56 JR Z,$BD62 ; $BD58 LD A,$43 ; $BD5A LD ($5C8F),A ; } *$BD5D LD A,$23 ; {Display '#' character. $BD5F CALL $BAD6 ; } *$BD62 LD HL,($AC12) ; {If the object under the cursor is one of the other $BD65 LD A,(HL) ; wizards then jump to #R$BD88. $BD66 CP $29 ; $BD68 JP P,$BD88 ; } $BD6B LD DE,$01E1 ; {Otherwise point HL into corresponding slot in map area $BD6E ADD HL,DE ; table 4 which contains owner numbers.} $BD6F LD A,$46 ; {We want to display the wizard's name in brackets after $BD71 LD ($5C8F),A ; the creature name so set ATTR T to bright yellow on ; black.} $BD74 LD A,$28 ; {Preserve HL, and print '(', and restore HL. $BD76 PUSH HL ; $BD77 CALL $BAD6 ; $BD7A POP HL ; } $BD7B LD A,(HL) ; {Display wizard name and print ')'. $BD7C AND $07 ; $BD7E ADD A,$29 ; $BD80 CALL $BAFB ; $BD83 LD A,$29 ; $BD85 CALL $BAD6 ; } *$BD88 LD B,$3C ; {Delay loop. *$BD8A PUSH BC ; $BD8B LD B,$F8 ; *$BD8D DJNZ $BD8D ; $BD8F POP BC ; $BD90 DJNZ $BD8A ; } $BD92 CALL $BDA5 ; {Call routine42 to display current UDG at the cursor. $BD95 LD HL,($AC12) ; } $BD98 LD A,(HL) ; {Return if there is no object at the cursor. $BD99 OR A ; $BD9A RET Z ; } $BD9B HALT ; {Otherwise halt for a bit and set the corresponding $BD9C HALT ; entry in second map table to '1' to indicate ...? $BD9D HALT ; $BD9E LD DE,$00A1 ; $BDA1 ADD HL,DE ; $BDA2 LD (HL),$01 ; } $BDA4 RET ; Return. ; routine42: Displays a 2x2 sprite [used by #R$BC96]. ; ; Used by the routine at #R$BBE7. c$BDA5 LD A,$02 ; $BDA7 CALL $1601 ; $BDAA LD BC,($BC94) ; $BDAE CALL $BC8D ; $BDB1 LD A,$16 ; $BDB3 RST $10 ; $BDB4 LD A,B ; $BDB5 RST $10 ; $BDB6 LD A,C ; $BDB7 RST $10 ; $BDB8 LD A,$90 ; $BDBA RST $10 ; $BDBB LD A,$91 ; $BDBD RST $10 ; $BDBE INC B ; $BDBF LD A,$16 ; $BDC1 RST $10 ; $BDC2 LD A,B ; $BDC3 RST $10 ; $BDC4 LD A,C ; $BDC5 RST $10 ; $BDC6 LD A,$92 ; $BDC8 RST $10 ; $BDC9 LD A,$93 ; $BDCB RST $10 ; $BDCC LD BC,($BC94) ; $BDD0 RET ; ; This entry point is used by the routines at #R$ACED, #R$BBE7 and #R$BE52. *$BDD1 PUSH BC ; Preserve coordinates of 'S' cursor on game board $BDD2 DEC B ; {Decrement each coordinate since we will be calculating $BDD3 DEC C ; an offset into #R$E01F} $BDD4 SLA B ; {LET C += 16*B then LET B=0 in order to calculate the $BDD6 SLA B ; offset. NB: even though the playing area is 15 columns $BDD8 SLA B ; by 10 rows, it seems to me that Gollop has used 1 16x10 $BDDA SLA B ; map area, perhaps to simplify the maths a little?} $BDDC LD A,B ; {Store the offset in BC $BDDD ADD A,C ; $BDDE LD C,A ; $BDDF LD B,$00 ; } $BDE1 LD HL,$E01F ; {Point HL at #R$E01F and add the offset from BC $BDE4 ADD HL,BC ; } $BDE5 POP BC ; Restore the cursor's coordinates into BC $BDE6 RET ; Return with HL pointing at the selected entry in #R$E01F ; Load HL with the current cursor position. ; ; routine44: Sets up temporary variables with values for tables 4,5,6. c$BDE7 LD HL,($AC12) ; $BDEA LD ($AC14),HL ; Copy to #R$AC14. ; This entry point is used by the routine at #R$ACED. *$BDED LD HL,($AC12) ; {Load A with the object at the cursor. $BDF0 LD A,(HL) ; } $BDF1 LD ($AC0C),A ; Save to #R$AC0C. $BDF4 LD DE,$01E1 ; {Load A with the object properties from table 4. $BDF7 ADD HL,DE ; $BDF8 LD A,(HL) ; } $BDF9 LD ($AC10),A ; Save in #R$AC10. $BDFC LD DE,$00A0 ; {Load A with the mounted wizard/trapped creature from $BDFF ADD HL,DE ; table 5. $BE00 LD A,(HL) ; } $BE01 LD ($AC09),A ; Save in #R$AC09. $BE04 ADD HL,DE ; {Load A with the corresponding byte from table 6. [owner $BE05 LD A,(HL) ; ID of creature in Table 5 "???"]} $BE06 LD ($AC08),A ; Save in #R$AC08. $BE09 RET ; Return. ; I think this label means GET CHARACTERISTIC - i.e. return the value of a ; particular object attribute. ; ; Used by the routines at #R$859C, #R$9168, #R$9C0F, #R$ACED, #R$B168, #R$C3B3 ; and #R$CBB9. c$BE0A PUSH HL ; $BE0B PUSH BC ; $BE0C LD HL,$E3E0 ; $BE0F LD B,$00 ; $BE11 LD C,D ; $BE12 DEC C ; $BE13 SLA C ; $BE15 ADD HL,BC ; $BE16 LD C,(HL) ; $BE17 INC HL ; $BE18 LD B,(HL) ; $BE19 LD H,$00 ; $BE1B LD L,E ; $BE1C ADD HL,BC ; $BE1D LD A,(HL) ; $BE1E POP BC ; $BE1F POP HL ; $BE20 RET ; ; routine45: ; ; Used by the routine at #R$ACED. c$BE21 PUSH AF ; $BE22 XOR A ; $BE23 LD ($AC06),A ; $BE26 PUSH HL ; $BE27 PUSH DE ; $BE28 PUSH BC ; $BE29 LD BC,($BC94) ; $BE2D DEC C ; $BE2E CALL $BE52 ; $BE31 DEC B ; $BE32 CALL $BE52 ; $BE35 INC C ; $BE36 CALL $BE52 ; $BE39 INC C ; $BE3A CALL $BE52 ; $BE3D INC B ; $BE3E CALL $BE52 ; $BE41 INC B ; $BE42 CALL $BE52 ; $BE45 DEC C ; $BE46 CALL $BE52 ; $BE49 DEC C ; $BE4A CALL $BE52 ; $BE4D POP BC ; $BE4E POP DE ; $BE4F POP HL ; $BE50 POP AF ; $BE51 RET ; ; routine46: ; ; Used by the routine at #R$BE21. c$BE52 LD A,B ; $BE53 OR A ; $BE54 RET Z ; $BE55 LD A,C ; $BE56 OR A ; $BE57 RET Z ; $BE58 LD A,$0F ; $BE5A CP C ; $BE5B RET M ; $BE5C LD A,$0A ; $BE5E CP B ; $BE5F RET M ; $BE60 CALL $BDD1 ; $BE63 LD A,(HL) ; $BE64 OR A ; $BE65 RET Z ; $BE66 PUSH HL ; $BE67 LD DE,$0141 ; $BE6A ADD HL,DE ; $BE6B LD A,(HL) ; $BE6C CP $04 ; $BE6E POP HL ; $BE6F RET Z ; $BE70 LD A,(HL) ; $BE71 CP $22 ; $BE73 JP P,$BE86 ; $BE76 LD DE,$01E1 ; $BE79 ADD HL,DE ; $BE7A LD A,(HL) ; $BE7B AND $07 ; $BE7D INC A ; $BE7E LD HL,($AC0E) ; $BE81 INC L ; $BE82 CP L ; $BE83 RET Z ; $BE84 JR $BE90 ; *$BE86 SUB $29 ; $BE88 RET M ; $BE89 INC A ; $BE8A LD HL,($AC0E) ; $BE8D INC L ; $BE8E CP L ; $BE8F RET Z ; *$BE90 LD ($AC06),A ; $BE93 RET ; ; This entry point is used by the routines at #R$95B8, #R$9760, #R$99A9, ; #R$9C0F, #R$ACED, #R$B168 and #R$D686. *$BE94 PUSH HL ; $BE95 PUSH DE ; *$BE96 LD A,R ; $BE98 LD E,A ; $BE99 LD HL,$E0B5 ; $BE9C LD D,$00 ; $BE9E ADD HL,DE ; $BE9F LD A,(HL) ; $BEA0 LD E,A ; $BEA1 LD A,R ; $BEA3 ADD A,E ; $BEA4 LD HL,$5C76 ; $BEA7 ADD A,(HL) ; $BEA8 AND $0F ; $BEAA CP $0A ; $BEAC JP P,$BE96 ; $BEAF POP DE ; $BEB0 POP HL ; $BEB1 RET ; ; routine47: Displays the "ENGAGED TO ENEMY" message. ; ; Used by the routine at #R$ACED. c$BEB2 PUSH AF ; $BEB3 PUSH BC ; $BEB4 XOR A ; $BEB5 LD ($AC03),A ; $BEB8 LD A,$01 ; $BEBA LD ($AC07),A ; $BEBD LD A,$46 ; $BEBF LD ($5C8F),A ; $BEC2 LD A,$34 ; $BEC4 LD BC,$1600 ; $BEC7 CALL $BED7 ; $BECA CALL $BAFB ; $BECD LD HL,$C289 ; $BED0 CALL $C2F9 ; $BED3 EI ; $BED4 POP BC ; $BED5 POP AF ; $BED6 RET ; ; This entry point is used by the routines at #R$84D3, #R$85F6, #R$8F8B, ; #R$9424, #R$95B8, #R$96F3, #R$97A3, #R$981A, #R$9856, #R$9C0F, #R$AC36, ; #R$ACC6, #R$ACED, #R$B168, #R$B8DD, #R$BBE7, #R$D52E, #R$D567 and #R$D588. *$BED7 PUSH AF ; $BED8 PUSH DE ; $BED9 PUSH HL ; $BEDA PUSH BC ; $BEDB LD A,$01 ; $BEDD LD BC,$1600 ; $BEE0 CALL $BAFB ; $BEE3 POP BC ; $BEE4 POP HL ; $BEE5 POP DE ; $BEE6 POP AF ; $BEE7 RET ; ; Data block at BEE8 b$BEE8 DEFB $02,$07,$06,$07,$05,$00,$01 ; Preserve registers. ; ; Calculates the distance between two map positions - NB if a spell has a ; maximum casting distance of 1, then the spell actually stores 3. Hence the ; "double and add 1" algorithm below. ; . ; unknown74=return value: the distance between the two positions. ; . ; unknown75=wizard coord's ; . ; unknown76=cursor coord's ; . ; unknown77= difference between x-coord's ; . ; unknown78=difference between y-coord's c$BEEF PUSH BC ; $BEF0 PUSH HL ; $BEF1 PUSH DE ; $BEF2 PUSH AF ; $BEF3 XOR A ; Load A with 0 - pointless? $BEF4 LD HL,($BEE9) ; Load HL with the map coordinates of the wizard. $BEF7 LD DE,($BEEB) ; Load DE with the map coordinates of the cursor. $BEFB LD A,D ; Load A with the y-coord of the cursor. $BEFC CP H ; Compare it with the wizard's y-coord. $BEFD JP M,$BF06 ; If the cursor's y-coord is smaller than the wizard's ; then jump to #R$BF06. $BF00 SUB H ; {Otherwise store the difference between the y-coord's in $BF01 LD ($BEEE),A ; #R$BEEE and jump to #R$BF0B. $BF04 JR $BF0B ; } *$BF06 LD A,H ; {We want a positive difference so instead let's load A $BF07 SUB D ; with y-coord of wizard and subtract y-coord of cursor.} $BF08 LD ($BEEE),A ; Store the difference between y-coord's in #R$BEEE. *$BF0B LD A,E ; Load A with the cursor's x-coord $BF0C CP L ; Compare it with the wizard's x-coord. $BF0D JP M,$BF16 ; If that'd be negative then jump to #R$BF16. $BF10 SUB L ; {Calculate the difference in x-coord's and store in $BF11 LD ($BEED),A ; #R$BEED.} $BF14 JR $BF1B ; Jump to #R$BF1B. *$BF16 LD A,L ; {Subtract the x-coord's the other way round and store in $BF17 SUB E ; #R$BEED. $BF18 LD ($BEED),A ; } *$BF1B LD HL,($BEED) ; Load H with delta y and L with delta x. $BF1E LD A,H ; Load A with the difference in y-coord's $BF1F CP L ; {Jump to #R$BF29 if delta y is smaller than delta x. $BF20 JP M,$BF29 ; } $BF23 SLA H ; {Double the difference in y-coord's and store in A. $BF25 LD A,H ; } $BF26 ADD A,L ; Add the difference in x-coord's. $BF27 JR $BF2D ; Jump to #R$BF2D. *$BF29 SLA L ; Double the delta x value in L and load result into A. $BF2B LD A,L ; {Add delta y. $BF2C ADD A,H ; } *$BF2D LD E,A ; Load total into E. $BF2E LD ($BEE8),A ; Store total in #R$BEE8 - the distance between the pairs ; of coordinates $BF31 POP AF ; Restore A which contained ... a maximum distance set by ; some callers "???" $BF32 CP E ; Compare the maximum distance as set by some callers ; "???" and set P flag for return. $BF33 POP DE ; {Restore registers. $BF34 POP HL ; $BF35 POP BC ; } $BF36 RET ; Return. ; Data block at BF37 b$BF37 DEFB $01,$40,$00,$00,$01,$05,$03,$8F $BF3F DEFB $00,$04,$00,$00,$00,$40,$80,$E2 $BF47 DEFB $03,$05,$01,$00,$00,$40,$01,$00 $BF4F DEFB $80,$40,$00,$00,$00,$04,$00,$00 $BF57 DEFB $00,$00,$00,$01,$09,$05,$00,$1C $BF5F DEFB $00,$00,$00,$00,$20,$40,$00,$70 $BF67 DEFB $00,$05,$09,$01,$00,$00,$00,$00 $BF6F DEFB $00,$40,$20,$00,$00,$00,$00,$00 $BF77 DEFB $00,$00,$01,$11,$08,$00,$00,$30 $BF7F DEFB $00,$00,$00,$10,$20,$00,$00,$18 $BF87 DEFB $00,$00,$08,$11,$01,$00,$00,$00 $BF8F DEFB $00,$00,$20,$10,$00,$00,$00,$00 $BF97 DEFB $00,$01,$21,$10,$00,$00,$00,$61 $BF9F DEFB $00,$00,$08,$10,$00,$00,$00,$0C $BFA7 DEFB $00,$00,$00,$10,$21,$01,$00,$00 $BFAF DEFB $00,$00,$00,$10,$08,$00,$00,$00 $BFB7 DEFB $00,$00,$00,$00,$00,$00,$00,$01 $BFBF DEFB $00,$00,$00,$00,$00,$00,$00,$80 $BFC7 DEFB $01,$00,$00,$00,$00,$00,$00,$00 $BFCF DEFB $80,$00,$00,$00,$00,$00,$00,$00 $BFD7 DEFB $00,$00,$00,$00,$00,$01,$03,$07 $BFDF DEFB $00,$00,$00,$00,$00,$80,$C0,$E0 $BFE7 DEFB $07,$03,$01,$00,$00,$00,$00,$00 $BFEF DEFB $E0,$C0,$80,$00,$00,$00,$00,$00 $BFF7 DEFB $00,$00,$00,$03,$0F,$0F,$1F,$1F $BFFF DEFB $00,$00,$00,$C0,$F0,$F0,$F8,$F8 $C007 DEFB $1F,$1F,$0F,$0F,$03,$00,$00,$00 $C00F DEFB $F8,$F8,$F0,$F0,$C0,$00,$00,$00 $C017 DEFB $00,$07,$1F,$3F,$3F,$7F,$7F,$7F $C01F DEFB $00,$E0,$F8,$FC,$FC,$FE,$FE,$FE $C027 DEFB $7F,$7F,$7F,$3F,$3F,$1F,$07,$00 $C02F DEFB $FE,$FE,$FE,$FC,$FC,$F8,$E0,$00 $C037 DEFB $07,$1F,$3F,$7F,$7F,$FF,$FF,$FE $C03F DEFB $E0,$F8,$FC,$FE,$FE,$FF,$FF,$7F $C047 DEFB $FE,$FF,$FF,$7F,$7F,$3F,$1F,$07 $C04F DEFB $7F,$FF,$FF,$FE,$FE,$FC,$F8,$E0 $C057 DEFB $07,$1F,$3F,$7F,$7F,$FC,$F8,$F8 $C05F DEFB $E0,$F8,$FC,$FE,$FE,$3F,$1F,$1F $C067 DEFB $F8,$F8,$FC,$7F,$7F,$3F,$1F,$07 $C06F DEFB $1F,$1F,$3F,$FE,$FE,$FC,$F8,$E0 $C077 DEFB $07,$1F,$3F,$7C,$70,$F0,$E0,$E0 $C07F DEFB $E0,$F8,$FC,$3E,$0E,$0F,$07,$07 $C087 DEFB $E0,$E0,$F0,$70,$7C,$3F,$1F,$07 $C08F DEFB $07,$07,$0F,$0E,$3E,$FC,$F8,$E0 $C097 DEFB $07,$18,$20,$40,$40,$80,$80,$80 $C09F DEFB $E0,$18,$04,$02,$02,$01,$01,$01 $C0A7 DEFB $80,$80,$80,$40,$40,$20,$18,$07 $C0AF DEFB $01,$01,$01,$02,$02,$04,$18,$E0 ; Data block at C0B7 b$C0B7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C0BF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C0C7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C0CF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C0D7 DEFB $00 ; Initialise "border drawn" flag to 1. ; ; routine49: Sets empty slots in #R$E01F to '1', animation frames to 0 in map3 ; and draws the border. c$C0D8 LD A,$01 ; $C0DA LD ($C0D7),A ; ; This entry point is used by the routines at #R$8360, #R$86C3, #R$8741, ; #R$8F8B, #R$9168, #R$95B8, #R$981A, #R$98DB, #R$9A21, #R$9B1C, #R$9C0F, ; #R$A18A, #R$AC36, #R$ACC6, #R$B3C9, #R$B599, #R$B8DD, #R$BBE7, #R$C3B3, ; #R$C710, #R$D52E, #R$D5EC, #R$D763 and #R$D82D. *$C0DD DI ; Disable interrupts. $C0DE LD B,$A0 ; Set loop counter to map size. $C0E0 LD HL,$E01F ; Point HL at #R$E01F. *$C0E3 LD A,(HL) ; {Load the object code at the current map position and if $C0E4 OR A ; there is an object then jump to #R$C0FF to start next $C0E5 JR NZ,$C0FF ; loop iteration.} $C0E7 PUSH HL ; Preserve map pointer. $C0E8 LD DE,$E01F ; {Calculate offset into map table and store in A. $C0EB SBC HL,DE ; $C0ED LD A,L ; } $C0EE INC A ; Increment A for the next position in the row. $C0EF AND $0F ; Compare A with 15 to skip past the unused byte in the ; table. $C0F1 POP HL ; {Restore map pointer and jump to #R$C0FF if we are in $C0F2 JR Z,$C0FF ; the rightmost column of a row.} $C0F4 LD A,$01 ; {Set current map position to '1' - NB Looks like he uses $C0F6 LD (HL),A ; both 0 and 1 as codes to indicate no object at the ; current position.} $C0F7 LD DE,$0141 ; {We have no object so set animation frame for current $C0FA ADD HL,DE ; object to 0 in #R$E160. $C0FB XOR A ; $C0FC LD (HL),A ; } $C0FD SBC HL,DE ; Set map pointer back to current object in #R$E01F. *$C0FF INC HL ; Increment map pointer. $C100 DJNZ $C0E3 ; Loop back to #R$C0E3. $C102 LD HL,$E0C0 ; {Set every value in second map table to '1' to indicate $C105 LD DE,$E0C1 ; slot processed, no object. $C108 LD BC,$009F ; $C10B LD (HL),$01 ; $C10D LDIR ; } $C10F LD A,($C0D7) ; {Jump to #R$C11D if #R$C0D7 is set as a flag to indicate $C112 OR A ; border drawn. $C113 JR NZ,$C11D ; } $C115 LD A,$41 ; {Otherwise set ATTR T to bright blue on black and draw $C117 LD ($5C8F),A ; border. $C11A CALL $BB57 ; } *$C11D XOR A ; {Reset #R$C0D7 - used as a flag to indicate border $C11E LD ($C0D7),A ; drawn.} $C121 EI ; {Enable interrupts and return. $C122 RET ; } ; Data block at C123 b$C123 DEFB $00,$00,$00,$00,$00,$00,$04,$03 $C12B DEFB $00,$00,$00,$00,$00,$00,$80,$80 $C133 DEFB $01,$02,$00,$00,$00,$00,$00,$00 $C13B DEFB $C0,$00,$00,$00,$00,$00,$00,$00 $C143 DEFB $00,$00,$00,$00,$00,$04,$06,$03 $C14B DEFB $00,$00,$00,$00,$00,$40,$80,$C0 $C153 DEFB $05,$02,$04,$00,$00,$00,$00,$00 $C15B DEFB $F0,$A0,$00,$00,$00,$00,$00,$00 $C163 DEFB $00,$00,$04,$08,$0A,$0C,$06,$03 $C16B DEFB $00,$00,$00,$80,$60,$C0,$80,$90 $C173 DEFB $0B,$06,$00,$08,$00,$00,$00,$00 $C17B DEFB $E0,$50,$00,$00,$00,$00,$00,$00 $C183 DEFB $00,$02,$24,$08,$0A,$02,$0B,$27 $C18B DEFB $00,$40,$20,$60,$40,$20,$C4,$E8 $C193 DEFB $13,$0D,$00,$08,$00,$00,$00,$00 $C19B DEFB $B0,$40,$44,$00,$00,$00,$00,$00 $C1A3 DEFB $00,$02,$04,$01,$02,$0A,$4A,$47 $C1AB DEFB $40,$20,$44,$42,$0A,$B2,$C4,$F0 $C1B3 DEFB $23,$19,$00,$00,$00,$40,$00,$00 $C1BB DEFB $A0,$40,$00,$02,$20,$00,$00,$00 $C1C3 DEFB $02,$00,$09,$0A,$42,$46,$04,$42 $C1CB DEFB $40,$44,$02,$0A,$90,$80,$08,$10 $C1D3 DEFB $10,$00,$01,$00,$00,$00,$00,$00 $C1DB DEFB $10,$00,$20,$00,$00,$20,$00,$00 $C1E3 DEFB $01,$09,$0A,$20,$44,$04,$40,$00 $C1EB DEFB $44,$04,$02,$88,$80,$00,$08,$10 $C1F3 DEFB $00,$00,$00,$01,$00,$00,$00,$00 $C1FB DEFB $00,$00,$00,$10,$00,$00,$20,$00 $C203 DEFB $09,$00,$20,$04,$00,$00,$00,$00 $C20B DEFB $04,$00,$88,$00,$00,$08,$00,$00 $C213 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C21B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C223 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C22B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C233 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C23B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C243 DEFB $32,$01,$0A,$1E,$32,$46,$14,$32 $C24B DEFB $50,$8C,$05,$04,$0A,$14,$1E,$28 $C253 DEFB $0A,$14,$1E,$28,$F0,$02,$14,$2E $C25B DEFB $39,$50,$FF,$FE,$FD,$FC,$14,$02 $C263 DEFB $28,$28,$46,$64,$02,$03,$3C,$64 $C26B DEFB $01,$01,$0A,$0A,$28,$46,$02,$02 $C273 DEFB $46,$28,$01,$04,$01,$02,$03,$04 $C27B DEFB $01,$01,$01,$01,$FF,$01,$FF,$FF $C283 DEFB $FF,$FF,$FC,$FC,$FC,$FC,$20,$04 $C28B DEFB $FF,$FF,$1E,$3C,$FA,$FA,$28,$50 $C293 DEFB $3F,$04,$01,$01,$28,$43,$04,$04 $C29B DEFB $E2,$B0,$06,$03,$01,$01,$14,$1E $C2A3 DEFB $04,$04,$11,$17,$01,$01,$FF,$FF $C2AB DEFB $FF,$FF,$FF,$FF,$FF,$FF,$32,$01 $C2B3 DEFB $01,$01,$FF,$FF,$32,$32,$CE,$CE $C2BB DEFB $7F,$01,$01,$01,$0F,$12,$05,$05 $C2C3 DEFB $17,$25,$14,$03,$FF,$FF,$FF,$FF $C2CB DEFB $FF,$FF,$F9,$E9,$5A,$01,$FF,$FF $C2D3 DEFB $FF,$FF,$00,$FF,$FF,$FE,$18,$0C $C2DB DEFB $0C,$2E,$50,$A0,$18,$2F,$65,$9A $C2E3 DEFB $14,$04,$17,$2D,$38,$3F,$04,$FD $C2EB DEFB $FD,$C6,$93,$04,$04,$E2,$B0,$30 $C2F3 DEFB $9D,$C2,$00 ; This sound is played when the user cancels a spell (and perhaps at other ; times too). ; ; Used by the routines at #R$9A21, #R$9C0F, #R$A18A, #R$B8DD and #R$D763. c$C2F6 LD HL,($C2F3) ; ; This entry point is used by the routines at #R$84D3, #R$85F6, #R$8741, ; #R$8F8B, #R$9168, #R$9385, #R$94E2, #R$96D1, #R$983F, #R$99F1, #R$9C0F, ; #R$ACC6, #R$ACED, #R$B168, #R$B375, #R$B3C9, #R$B8DD, #R$BEB2, #R$C3B3, ; #R$D52E and #R$D702. *$C2F9 LD DE,$C2E8 ; $C2FC LD BC,$000A ; $C2FF LDIR ; ; This entry point is used by the routines at #R$9A21, #R$9C0F, #R$A18A, ; #R$B375, #R$B3C9, #R$B599, #R$B7D3, #R$B8DD and #R$D763. *$C301 DI ; $C302 LD HL,$C2E8 ; $C305 LD B,(HL) ; *$C306 PUSH BC ; $C307 LD HL,$C2E9 ; $C30A LD B,(HL) ; *$C30B PUSH BC ; $C30C LD B,$04 ; $C30E LD HL,$C2EA ; *$C311 PUSH BC ; $C312 PUSH HL ; $C313 LD B,(HL) ; $C314 CALL $C33A ; $C317 LD A,($C2F2) ; $C31A XOR $30 ; $C31C LD ($C2F2),A ; $C31F OUT ($FE),A ; $C321 POP HL ; $C322 INC HL ; $C323 POP BC ; $C324 DJNZ $C311 ; $C326 POP BC ; $C327 DJNZ $C30B ; $C329 LD B,$04 ; $C32B EX DE,HL ; $C32C LD HL,$C2EA ; *$C32F LD A,(DE) ; $C330 ADD A,(HL) ; $C331 LD (HL),A ; $C332 INC DE ; $C333 INC HL ; $C334 DJNZ $C32F ; $C336 POP BC ; $C337 DJNZ $C306 ; $C339 RET ; *$C33A DJNZ $C33A ; $C33C RET ; ; Data block at C33D b$C33D DEFB $FF,$FF,$C0,$C0,$C0,$C0,$C0,$C0 $C345 DEFB $FF,$FF,$03,$03,$03,$03,$03,$03 $C34D DEFB $C0,$C0,$C0,$C0,$C0,$C0,$FF,$FF $C355 DEFB $03,$03,$03,$03,$03,$03,$FF,$FF $C35D DEFB $C0,$E0,$70,$30,$00,$00,$1C,$3E $C365 DEFB $03,$07,$0E,$0C,$00,$00,$38,$7C $C36D DEFB $63,$01,$01,$02,$30,$70,$E0,$C0 $C375 DEFB $C6,$80,$80,$40,$0C,$0E,$07,$03 $C37D DEFB $F8,$E0,$F0,$B8,$98,$00,$00,$00 $C385 DEFB $1F,$07,$0F,$1D,$19,$00,$00,$00 $C38D DEFB $00,$00,$00,$98,$B8,$F0,$E0,$F8 $C395 DEFB $00,$00,$00,$19,$1D,$0F,$07,$3F $C39D DEFB $00,$00,$00,$00,$00,$00,$00,$03 $C3A5 DEFB $04,$06,$04,$08,$15,$08,$04,$0A $C3AD DEFB $04,$0C,$04,$0E,$04,$10 ; Disable interrupts and preserve registers. ; ; Displays information about the current wizard/creature/object. c$C3B3 DI ; $C3B4 PUSH HL ; $C3B5 PUSH DE ; $C3B6 PUSH BC ; $C3B7 PUSH AF ; $C3B8 LD HL,($AC12) ; {If the user is inspecting a blank cell then jump to $C3BB LD A,(HL) ; #R$C5E8 to clean up and return. $C3BC OR A ; $C3BD JP Z,$C5E8 ; } $C3C0 LD ($C39F),A ; Store code for current object in #R$C39F. $C3C3 LD HL,$C39E ; {Bit 1 of unknown71 is set if the current object is a $C3C6 RES 1,(HL) ; wizard. $C3C8 CP $29 ; $C3CA JP M,$C3CF ; $C3CD SET 1,(HL) ; } *$C3CF LD DE,$0281 ; {Look up corresponding byte in fifth_map_area_table and $C3D2 LD HL,($AC12) ; jump to routine50_1 if it is 0 ??? $C3D5 ADD HL,DE ; $C3D6 LD A,(HL) ; $C3D7 OR A ; $C3D8 JR Z,$C3E2 ; } $C3DA LD ($C39D),A ; {Otherwise store in unknown70 and set bit 2 of unknown71 $C3DD LD HL,$C39E ; Not called for equipped wizard...??? $C3E0 SET 2,(HL) ; } *$C3E2 CALL $C5EE ; {Clear the screen and play sound effect 22. $C3E5 LD HL,$C2E3 ; $C3E8 CALL $C2F9 ; } $C3EB LD A,$44 ; {Set ATTR T to bright green on black and draw the $C3ED LD ($5C8F),A ; border. $C3F0 CALL $BB57 ; } $C3F3 LD A,$60 ; {Set ATTR T to black on bright green and display "PRESS $C3F5 LD ($5C8F),A ; ANY KEY" at (0,16). $C3F8 LD A,$3D ; $C3FA LD BC,$1600 ; $C3FD CALL $BAFB ; } $C400 LD A,$46 ; {Set ATTR T to bright yellow on black and display $C402 LD ($5C8F),A ; creature's name at (4,2). $C405 LD BC,$0204 ; $C408 LD A,($C39F) ; $C40B CALL $BAFB ; } $C40E XOR A ; {Clear 'display comma flag' and if we are looking at a $C40F LD ($C3A0),A ; wizard then skip ahead to routine50_7. $C412 LD HL,$C39E ; $C415 BIT 1,(HL) ; $C417 JR Z,$C479 ; } $C419 LD BC,$0404 ; {Not a wizard so we need to display properties for $C41C LD A,($C39F) ; creatures and objects. $C41F SUB $29 ; $C421 LD HL,$AC16 ; $C424 LD D,$00 ; $C426 LD E,A ; $C427 ADD HL,DE ; $C428 LD A,(HL) ; } $C429 LD ($C3A1),A ; {Display 'KNIFE' property? $C42C BIT 1,A ; $C42E JR Z,$C435 ; $C430 LD A,$3E ; $C432 CALL $C5FC ; } *$C435 LD HL,$C3A1 ; {Display 'SWORD' property? $C438 BIT 2,(HL) ; $C43A JR Z,$C441 ; $C43C LD A,$3F ; $C43E CALL $C5FC ; } *$C441 LD A,($C3A1) ; {Display 'ARMOUR' property? $C444 AND $C0 ; $C446 CP $C0 ; $C448 JR NZ,$C44F ; $C44A LD A,$40 ; $C44C CALL $C5FC ; } *$C44F LD A,($C3A1) ; {Display 'SHIELD' property? $C452 AND $C0 ; $C454 CP $40 ; $C456 JR NZ,$C45D ; $C458 LD A,$41 ; $C45A CALL $C5FC ; } *$C45D LD A,($C3A1) ; {Display 'FLYING' property? $C460 BIT 5,A ; $C462 JR Z,$C469 ; $C464 LD A,$42 ; $C466 CALL $C5FC ; } *$C469 LD A,($C3A1) ; {Display 'SHADOW' property? $C46C BIT 3,A ; $C46E JP Z,$C51B ; $C471 LD A,$43 ; $C473 CALL $C5FC ; } $C476 JP $C51B ; Properties have been displayed for creatures/objects so ; jump to routine50_14. *$C479 INC C ; {Get LAW/CHAOS attribute of current object. Skip to $C47A LD A,($C39F) ; routine50_9 if it is 0, or routine50_8 if negative for $C47D LD D,A ; CHAOS. $C47E LD E,$15 ; $C480 CALL $BE0A ; $C483 OR A ; $C484 JR Z,$C4B8 ; } $C486 PUSH AF ; {Preserve LAW value. $C487 JP M,$C4A1 ; } $C48A LD A,$45 ; {Set ATTR T to bright cyan on black and print "(LAW". $C48C LD ($5C8F),A ; $C48F LD A,$47 ; $C491 CALL $BAFB ; } $C494 POP AF ; {Restore LAW value and display, then close bracket. $C495 ADD A,$30 ; $C497 CALL $BAD6 ; $C49A LD A,$29 ; $C49C CALL $BAD6 ; } $C49F JR $C4B8 ; Jump to routine50_9. *$C4A1 LD A,$43 ; {Set ATTR T to bright magenta on black and display $C4A3 LD ($5C8F),A ; "(CHAOS". $C4A6 LD A,$46 ; $C4A8 CALL $BAFB ; } $C4AB POP AF ; {Restore LAW/CHAOS value and negate it. $C4AC NEG ; } $C4AE ADD A,$30 ; {Display CHAOS value and close bracket. $C4B0 CALL $BAD6 ; $C4B3 LD A,$29 ; $C4B5 CALL $BAD6 ; } *$C4B8 LD A,$44 ; {Set ATTR T to bright green on black and display coord's $C4BA LD ($5C8F),A ; to (4,4). $C4BD LD BC,$0404 ; } $C4C0 LD A,($C39F) ; {Don't display spell properties for MOUNTable creatures $C4C3 CP $10 ; --> skip to routine50_10. $C4C5 JP M,$C4D2 ; $C4C8 CP $16 ; $C4CA JP P,$C4D2 ; } $C4CD LD A,$44 ; {Print "MOUNT". $C4CF CALL $C5FC ; } *$C4D2 LD A,($C39D) ; {Jump to routine50_11 if unknown71 is zero... ARE WE $C4D5 OR A ; CHECKING IF A DIRTY WIZARD HAS MOUNTED THE HORSE?! $C4D6 JR Z,$C4EC ; } $C4D8 PUSH AF ; {Preserve value of unknown70, print "(", Wizard's name, $C4D9 LD A,$28 ; ")". $C4DB CALL $BAD6 ; $C4DE POP AF ; $C4DF CALL $BAFB ; $C4E2 LD A,$29 ; $C4E4 CALL $BAD6 ; } $C4E7 LD A,$01 ; {Set the comma flag in case there are more properties to $C4E9 LD ($C3A0),A ; display.} *$C4EC LD A,($C39F) ; {Only display "FLYING" for valid creatures. $C4EF CP $13 ; $C4F1 JP M,$C4FE ; $C4F4 CP $1E ; $C4F6 JP P,$C4FE ; $C4F9 LD A,$42 ; $C4FB CALL $C5FC ; } *$C4FE LD HL,($AC12) ; {Only display "UNDEAD" for valid creatures and as long $C501 LD DE,$01E1 ; as bit 6 in map area 4 is set. $C504 ADD HL,DE ; $C505 BIT 6,(HL) ; $C507 JR NZ,$C516 ; $C509 LD A,($C39F) ; $C50C CP $1C ; $C50E JP M,$C51B ; $C511 CP $22 ; $C513 JP P,$C51B ; *$C516 LD A,$45 ; $C518 CALL $C5FC ; } *$C51B LD A,$45 ; {Set ATTR T to bright cyan on black. $C51D LD ($5C8F),A ; } $C520 LD A,$48 ; {Store message number and offset into object data. $C522 LD ($C3A3),A ; $C525 LD A,$0D ; $C527 LD ($C3A2),A ; } $C52A LD HL,$C3A5 ; Point HL at the data block containing display coord's ; for attributes. $C52D LD B,$07 ; Set loop counter to 7 for the 7 attributes. *$C52F PUSH BC ; {Preserve loop counter and load coord's for next $C530 LD C,(HL) ; attribute into (B, C), incrementing HL after each. $C531 INC HL ; $C532 LD B,(HL) ; $C533 INC HL ; } $C534 PUSH HL ; Preserve pointer to coord's. $C535 CALL $C612 ; Display the current attribute name and numerical value. $C538 POP HL ; Restore pointer to display coord's. $C539 POP BC ; {Restore loop counter and loop. $C53A DJNZ $C52F ; } $C53C LD A,($C39E) ; {If bit 0 of unknown71 is set then we have a wizard and $C53F BIT 0,A ; need to jump to routine50_18 to display his spells. $C541 JR Z,$C56E ; } $C543 LD A,$45 ; {Set ATTR T to bright cyan on black. $C545 LD ($5C8F),A ; } $C548 LD A,$4F ; {Display "CASTING CHANCE=" at (4,18) $C54A LD BC,$1204 ; $C54D CALL $BAFB ; } $C550 LD A,($FFFF) ; {Load A with the value of unknown67 (which is $C553 INC A ; initialised to 2) and increment A.} $C554 CP $0A ; {If A=10 then jump to routine50_16 $C556 JR NZ,$C55F ; } $C558 LD A,$50 ; Spell is guaranteed to succeed so display "10" and jump ; to routine50_17 to add the "0%". $C55A CALL $BAFB ; Print the message "10". $C55D JR $C564 ; Jump to routine50_17 to append "0%". *$C55F ADD A,$30 ; {Print "0" $C561 CALL $BAD6 ; } *$C564 LD A,$30 ; {Print "0%" as two separate characters. $C566 CALL $BAD6 ; $C569 LD A,$25 ; $C56B CALL $BAD6 ; } *$C56E LD A,($C39E) ; {Only display spells and abilities for wizards. Jump to $C571 BIT 1,A ; routine50_21 otherwise. $C573 JR Z,$C5C1 ; } $C575 LD A,$46 ; Set ATTR T to bright yellow on black, ready to print ; SPELLS=... and ABILITY=... $C577 LD ($5C8F),A ; {Display "SPELLS=" $C57A LD A,$51 ; $C57C LD BC,$1204 ; $C57F CALL $BAFB ; } $C582 LD A,($C39F) ; {Get the value for the current object, i.e. number of $C585 LD D,A ; spells. $C586 LD E,$14 ; $C588 CALL $BE0A ; } $C58B CP $0A ; {If it is less than 10 then jump to routine50_20. $C58D JP M,$C5A6 ; } $C590 CP $14 ; {If it is not 20 then jump to routine50_19. $C592 JR NZ,$C59D ; } $C594 LD A,$32 ; {The number of spells is in the range 10-19 so print a $C596 CALL $BAD6 ; leading '1' digit.} $C599 LD A,$00 ; {Load A with 0 and jump to routine50_20. $C59B JR $C5A6 ; } *$C59D SUB $0A ; {Print the second digit of the number of spells. $C59F PUSH AF ; $C5A0 LD A,$31 ; $C5A2 CALL $BAD6 ; $C5A5 POP AF ; } *$C5A6 ADD A,$30 ; {Print the single digit for the number of spells. $C5A8 CALL $BAD6 ; } $C5AB LD BC,$120E ; {Print "ABILITY=" at (14,12). $C5AE LD A,$52 ; $C5B0 CALL $BAFB ; } $C5B3 LD A,($C39F) ; {Display the current creature's ABILITY as a digit. $C5B6 LD D,A ; $C5B7 LD E,$15 ; $C5B9 CALL $BE0A ; $C5BC ADD A,$30 ; $C5BE CALL $BAD6 ; } *$C5C1 LD A,($C39D) ; {Jump to routine50_22 if a wizard is not selected. $C5C4 OR A ; $C5C5 JR Z,$C5DC ; } $C5C7 LD HL,$C39E ; {Reset flag (?) in unknown71 and reset unknown70. $C5CA RES 1,(HL) ; $C5CC LD ($C39F),A ; $C5CF XOR A ; $C5D0 LD ($C39D),A ; } $C5D3 CALL $BBCC ; {Call routines to randomise the seed. $C5D6 CALL $BBB0 ; } $C5D9 JP $C3E2 ; Jump back to routine50_1 because if the wizard had ; MOUNTED a creature then we now need to display ITS ; properties. *$C5DC CALL $BBCC ; {Randomise seed and clear screen. $C5DF CALL $BBB0 ; $C5E2 CALL $C5EE ; } $C5E5 CALL $C0DD ; Call routine49_0 to ... (we don't know yet). *$C5E8 POP HL ; {Restore registers, enable interrupts and return. $C5E9 POP DE ; $C5EA POP BC ; $C5EB POP AF ; $C5EC EI ; $C5ED RET ; } ; This entry point is used by the routines at #R$8741, #R$9168, #R$938B, ; #R$94E2 and #R$95B8. *$C5EE LD HL,$4000 ; $C5F1 LD DE,$4001 ; $C5F4 LD BC,$1AFF ; $C5F7 LD (HL),$00 ; $C5F9 LDIR ; $C5FB RET ; *$C5FC PUSH AF ; $C5FD LD A,($C3A0) ; $C600 OR A ; $C601 JR Z,$C608 ; $C603 LD A,$2C ; $C605 CALL $BAD6 ; *$C608 POP AF ; $C609 CALL $BAFB ; $C60C LD A,$01 ; $C60E LD ($C3A0),A ; $C611 RET ; *$C612 LD A,($C3A3) ; $C615 PUSH AF ; $C616 CALL $BAFB ; $C619 POP AF ; $C61A INC A ; $C61B LD ($C3A3),A ; $C61E LD A,$47 ; $C620 LD ($5C8F),A ; $C623 LD A,($C39F) ; $C626 LD D,A ; $C627 LD A,($C3A2) ; $C62A LD E,A ; $C62B INC A ; $C62C LD ($C3A2),A ; $C62F CALL $BE0A ; $C632 ADD A,$30 ; $C634 CALL $BAD6 ; $C637 LD A,$45 ; $C639 LD ($5C8F),A ; $C63C RET ; } ; routine51: ; ; Used by the routine at #R$C9D4. c$C63D PUSH HL ; $C63E LD HL,($AC12) ; $C641 CALL $C703 ; $C644 LD A,L ; $C645 CP $10 ; $C647 POP HL ; $C648 RET ; ; Data block at C649 b$C649 DEFB $BD,$E0,$0B ; Routine at C64C ; ; Used by the routines at #R$853B, #R$8639, #R$86C3, #R$96F3, #R$9A95, #R$9B85, ; #R$C78D, #R$C8C7, #R$C955, #R$CA19, #R$CA92, #R$CBCC, #R$CC56, #R$D7A6 and ; #R$D887. c$C64C PUSH DE ; $C64D LD ($C64B),A ; $C650 LD B,A ; *$C651 PUSH BC ; $C652 PUSH HL ; $C653 LD A,($C64B) ; $C656 LD B,A ; *$C657 PUSH BC ; $C658 LD E,(HL) ; $C659 INC HL ; $C65A LD D,(HL) ; $C65B INC HL ; $C65C LD C,(HL) ; $C65D INC HL ; $C65E LD B,(HL) ; $C65F DEC HL ; $C660 LD A,C ; $C661 CP E ; $C662 JR Z,$C670 ; $C664 JR C,$C670 ; $C666 INC HL ; $C667 LD (HL),D ; $C668 DEC HL ; $C669 LD (HL),E ; $C66A DEC HL ; $C66B LD (HL),B ; $C66C DEC HL ; $C66D LD (HL),C ; $C66E INC HL ; $C66F INC HL ; *$C670 POP BC ; $C671 DJNZ $C657 ; $C673 POP HL ; $C674 POP BC ; $C675 DJNZ $C651 ; $C677 POP DE ; $C678 RET ; ; Data block at C679 b$C679 DEFB $12 ; Load HL with the address of a position in #R$E01F. ; ; This routine ignores objects that belong to the current wizard, the current ; wizard, empty slots, dead creatures, ... ; . ; My current best guess is that this is returning some sort of threat level ; based on distance from the current wizard. c$C67A LD HL,($AC12) ; $C67D LD A,(HL) ; {If the map position is empty then jump to #R$CD62 to $C67E OR A ; return with A holding 0. $C67F JR Z,$C6D2 ; } $C681 LD DE,$0141 ; {Point HL at the corresponding byte in #R$E160 $C684 ADD HL,DE ; [animation frame]} $C685 LD A,(HL) ; Load the animation byte. $C686 CP $04 ; {If the object is "dead" then jump to #R$C6D2 and return $C688 JR Z,$C6D2 ; with A holding 0.} $C68A LD HL,($AC12) ; Point HL into #R$E200. $C68D LD DE,$01E1 ; {Add offset into #R$E200 [object properties] $C690 ADD HL,DE ; } $C691 LD A,(HL) ; {Load the byte from #R$E200 and mask off the owner bits. $C692 AND $07 ; } $C694 LD HL,($AC0E) ; {If the object belongs to the current wizard then jump $C697 CP L ; to #R$C6D2 to return with A holding 0.. $C698 JR Z,$C6D2 ; } $C69A LD HL,($AC12) ; We *finally* have a potential target/enemy so load HL ; again with the address of a position in #R$E01F. $C69D LD A,(HL) ; {Load the object's code from the map and copy into E. $C69E LD E,A ; } $C69F DEC E ; {Subtract 2 from E because object IDs start at 2 so that $C6A0 DEC E ; we get an offset into #R$C6D4. $C6A1 LD D,$00 ; } $C6A3 LD HL,$C6D4 ; Load HL with the address of #R$C6D4. $C6A6 ADD HL,DE ; Add offset to HL based on object ID. $C6A7 LD A,(HL) ; {Copy entry from #R$C6D4 to #R$C679 - the "THREAT" from $C6A8 LD ($C679),A ; the current object "???"} $C6AB LD HL,($AC12) ; Load HL again with the address of a position in #R$E01F ; - i.e. an enemy or his creature. $C6AE CALL $C703 ; Convert display coordinates of the enemy or his creature ; into map position coordinates. $C6B1 LD ($BEE9),HL ; Store their coordinates in #R$BEE9. $C6B4 LD HL,($AC14) ; Load memory address of current wizard into HL. $C6B7 CALL $C703 ; {Convert display coordinates of current wizard into map $C6BA LD ($BEEB),HL ; position coordinates and store in #R$BEEB.} $C6BD CALL $BEEF ; Calculate the distance between the current wizard and ; the enemy target. $C6C0 LD A,($BEE8) ; Load A with the distance between points. $C6C3 LD E,A ; Also load it into E. $C6C4 LD A,($C679) ; {Add 4 to the value loaded earlier from #R$C6D4 "???" $C6C7 ADD A,$04 ; } $C6C9 LD HL,$CC55 ; {And add "???" to it. $C6CC ADD A,(HL) ; } $C6CD SUB E ; Subtract the distance to the target. $C6CE JP M,$C6D2 ; If the distance is greater than the threat "???" then ; jump to #R$C6D2 to return 0. $C6D1 RET ; Return. ; Reset A. ; ; Used by the routine at #R$C67A. c$C6D2 XOR A ; $C6D3 RET ; Return. ; Data block at C6D4 b$C6D4 DEFB $08,$0B,$07,$09,$09,$0F,$0E,$06 $C6DC DEFB $0E,$0B,$0A,$0D,$09,$10,$0B,$0F $C6E4 DEFB $0F,$0F,$10,$15,$0F,$19,$19,$1B $C6EC DEFB $11,$12,$13,$0D,$09,$0B,$07,$04 $C6F4 DEFB $04,$00,$00,$00,$00,$00,$00,$09 $C6FC DEFB $09,$09,$09,$09,$09,$09,$09 ; Store current wizard position in #R$E005. ; ; Converts display coordinates into map position coordinates. c$C703 LD ($E005),HL ; $C706 CALL $E007 ; {Call #R$E007 to convert cursor position into $C709 SRL H ; coordinates (L, H). $C70B INC H ; $C70C SRL L ; $C70E INC L ; } $C70F RET ; Return. ; routine54: ; ; Used by the routine at #R$AC36. c$C710 LD HL,$AC1E ; $C713 LD A,($AC0E) ; $C716 LD D,$00 ; $C718 LD E,A ; $C719 ADD HL,DE ; $C71A LD A,(HL) ; $C71B OR A ; $C71C JP NZ,$C74E ; $C71F CALL $CA92 ; $C722 LD HL,($C649) ; $C725 LD A,(HL) ; $C726 CP $24 ; $C728 JR Z,$C77A ; $C72A CP $26 ; $C72C JR Z,$C77A ; $C72E CP $27 ; $C730 JR Z,$C77A ; $C732 LD A,$00 ; $C734 LD ($AC31),A ; $C737 LD A,$01 ; $C739 LD ($AC30),A ; $C73C LD ($AC14),HL ; $C73F LD ($AC12),HL ; $C742 CALL $C703 ; $C745 LD ($BC94),HL ; $C748 LD ($AC0A),HL ; $C74B CALL $ACED ; *$C74E CALL $C0DD ; $C751 LD A,$01 ; $C753 LD ($AC31),A ; $C756 HALT ; $C757 HALT ; $C758 HALT ; $C759 LD HL,$E01F ; $C75C LD B,$9F ; *$C75E PUSH BC ; $C75F PUSH HL ; $C760 LD ($AC12),HL ; $C763 LD ($AC14),HL ; $C766 CALL $C703 ; $C769 LD ($BC94),HL ; $C76C LD ($AC0A),HL ; $C76F CALL $ACED ; $C772 POP HL ; $C773 INC HL ; $C774 POP BC ; $C775 DJNZ $C75E ; $C777 JP $ACB9 ; *$C77A LD A,$01 ; $C77C LD ($AC31),A ; $C77F LD HL,($C649) ; $C782 LD DE,$01E1 ; $C785 ADD HL,DE ; $C786 SET 7,(HL) ; $C788 JP $C74E ; ; Data block at C78B b$C78B DEFB $75,$E0 ; routine55: ; ; Used by the routines at #R$9975, #R$ACED and #R$D686. c$C78D LD HL,($AC14) ; $C790 LD ($C78B),HL ; $C793 LD HL,$AC1E ; $C796 LD A,($AC0E) ; $C799 LD D,$00 ; $C79B LD E,A ; $C79C ADD HL,DE ; $C79D LD A,(HL) ; $C79E CP $0A ; $C7A0 JP M,$CA19 ; ; This entry point is used by the routine at #R$CA19. *$C7A3 CALL $C825 ; $C7A6 LD HL,$D3F2 ; $C7A9 LD A,$07 ; $C7AB CALL $C64C ; $C7AE CALL $C8B9 ; ; This entry point is used by the routine at #R$CA19. *$C7B1 LD HL,($C78B) ; $C7B4 LD ($AC14),HL ; $C7B7 CALL $C8C7 ; $C7BA RET ; ; Data block at C7BB b$C7BB DEFB $0B ; Routine at C7BC ; ; Used by the routines at #R$853B, #R$86C3, #R$9A95, #R$9B85, #R$CA19, #R$D7A6 ; and #R$D887. c$C7BC LD HL,($C649) ; $C7BF LD ($AC14),HL ; $C7C2 LD HL,$D3F2 ; $C7C5 LD ($CD86),HL ; $C7C8 CALL $CDAA ; $C7CB LD HL,$E01F ; $C7CE LD ($AC12),HL ; $C7D1 LD A,$00 ; $C7D3 LD ($C7BB),A ; $C7D6 LD B,$9F ; *$C7D8 PUSH BC ; $C7D9 CALL $C67A ; $C7DC OR A ; $C7DD JR Z,$C81A ; $C7DF LD HL,$C7BB ; $C7E2 INC (HL) ; $C7E3 ADD A,$14 ; $C7E5 PUSH AF ; $C7E6 LD HL,($C78B) ; $C7E9 CALL $C703 ; $C7EC LD ($BEE9),HL ; $C7EF LD HL,($AC12) ; $C7F2 CALL $C703 ; $C7F5 LD ($BEEB),HL ; $C7F8 CALL $BEEF ; $C7FB LD A,($BEE8) ; $C7FE SRL A ; $C800 LD E,A ; $C801 POP AF ; $C802 SUB E ; $C803 LD HL,($CD86) ; $C806 LD (HL),A ; $C807 LD HL,($AC12) ; $C80A LD DE,$E01F ; $C80D XOR A ; $C80E SBC HL,DE ; $C810 LD A,L ; $C811 LD HL,($CD86) ; $C814 INC HL ; $C815 LD (HL),A ; $C816 INC HL ; $C817 LD ($CD86),HL ; *$C81A LD HL,($AC12) ; $C81D INC HL ; $C81E LD ($AC12),HL ; $C821 POP BC ; $C822 DJNZ $C7D8 ; $C824 RET ; ; Initialise the contents of #R$D3F2 to $FF00 etc. ; ; Used by the routines at #R$C78D and #R$CBC7. c$C825 LD HL,$D3F2 ; $C828 LD ($CD86),HL ; $C82B CALL $CDAA ; $C82E LD HL,$E01F ; {Point #R$AC12 at #R$E01F. $C831 LD ($AC12),HL ; } $C834 LD B,$9F ; Set loop counter to map size. *$C836 PUSH BC ; Preserve loop counter. $C837 LD HL,($AC12) ; {Load the current object code from the map. $C83A LD A,(HL) ; } $C83B CP $29 ; {If it is a wizard then call #R$C859 to ... "???" $C83D CALL P,$C859 ; } $C840 LD HL,($AC12) ; Load HL with the address of the current position in the ; map. $C843 LD DE,$0281 ; {Load A with the corresponding byte from #R$E2A0 $C846 ADD HL,DE ; [mounted wizards] $C847 LD A,(HL) ; $C848 CP $29 ; } $C84A CALL P,$C859 ; If the wizard is mounted then call #R$C859 to ... "???" $C84D LD HL,($AC12) ; {Increment the map pointer. $C850 INC HL ; $C851 LD ($AC12),HL ; } $C854 POP BC ; {Loop back. $C855 DJNZ $C836 ; } $C857 RET ; Return. ; Data block at C858 b$C858 DEFB $01 ; Subtract 41 from the wizard object code in A. ; ; Called by routine56 with an object code for a wizard in A. c$C859 SUB $29 ; $C85B LD ($C858),A ; Store the result in unknown60 - i.e. a player number 0 ; to 7. $C85E LD HL,$AC0E ; Point HL at the "current player" variable. $C861 CP (HL) ; Compare A with this variable. $C862 RET Z ; If they are the same value then return. $C863 LD HL,($AC12) ; Load HL with the address that the cursor relates to. $C866 LD DE,$E01F ; Load DE with the address of the map area object table. $C869 XOR A ; Reset the carry flag. $C86A SBC HL,DE ; Calculate the offset between the start of the map and ; the cursor. $C86C LD A,L ; Load it into A. $C86D LD HL,($CD86) ; {Increment the value in BUFPNT. $C870 INC HL ; } $C871 LD (HL),A ; Store the offset at the location pointed to by BUFPNT - ; the offset between the target wizard and the current ; computer-controlled player. $C872 LD HL,$E01F ; Point HL at the map area object table. $C875 LD B,$9F ; Set loop counter for map length. *$C877 PUSH BC ; Preserve loop counter. $C878 PUSH HL ; Preserve map pointer. $C879 LD A,(HL) ; Load the byte from the current map location. $C87A LD C,A ; Load it into C. $C87B OR A ; See if the map slot is empty. $C87C JR Z,$C8A1 ; If it is then jump to routine57_1 $C8A1. $C87E CP $26 ; Compare with the code for a Magic Castle. $C880 JP P,$C8A1 ; If it is later in the object table (Dark Citadel, Wall, ; Wizard) then jump to routine57_1 $C8A1. $C883 LD DE,$01E1 ; {Otherwise the object has a code 2-38 so we point HL $C886 ADD HL,DE ; into table 4.} $C887 LD A,(HL) ; Load the owner information into A. $C888 AND $07 ; Mask off the owner number. $C88A LD E,A ; Store the result in E. $C88B LD A,($C858) ; Load A with the player number 0-7 that was stored ; earlier at #R$C85B. $C88E CP E ; Compare the two values. $C88F JR NZ,$C8A1 ; If they are not the same then jump to routine57_1 $C8A1. $C891 LD HL,$C6D4 ; Otherwise point HL at THRTAB. $C894 LD B,$00 ; {Load A with the object code from the current map $C896 ADD HL,BC ; location - see #R$C87A. $C897 LD A,(HL) ; } $C898 SRL A ; {Divide it by 4. "???" $C89A SRL A ; } $C89C LD HL,($CD86) ; {And add the entry pointed at by BUFPNT "???" $C89F ADD A,(HL) ; $C8A0 LD (HL),A ; } *$C8A1 POP HL ; Restore map pointer. $C8A2 INC HL ; Increment map pointer. $C8A3 POP BC ; Restore loop counter. $C8A4 DJNZ $C877 ; Decrement loop counter and loop back. $C8A6 LD HL,($CD86) ; Once the loop is finished, load HL with the value of ; #R$CD86. $C8A9 LD A,($CC55) ; Load A with the value of #R$CC55 "???" $C8AC ADD A,(HL) ; Add the value from #R$CD86. "???" $C8AD LD (HL),A ; ... $C8AE LD HL,($CD86) ; {Advance #R$CD86. $C8B1 INC HL ; $C8B2 INC HL ; $C8B3 LD ($CD86),HL ; } $C8B6 RET ; Return. ; Data block at C8B7 b$C8B7 DEFB $76,$E0 ; Load E with the 2nd byte from #R$D3F2. This value is the code of an enemy ; wizard in whose direction a spell will be cast. ; ; Sets the value of #R$C8B7 to be the map address of the target wizard. The ; spell will later be attempted to be cast in the slot next to the casting ; wizard which is in the direction of the target wizard. c$C8B9 LD HL,$D3F3 ; $C8BC LD E,(HL) ; $C8BD LD HL,$E01F ; Point HL at the map. $C8C0 LD D,$00 ; {Add the map offset from E. $C8C2 ADD HL,DE ; } $C8C3 LD ($C8B7),HL ; Store the map address of the target in #R$C8B7 so that ; the spell can be cast in an adjacent map slot in the ; direction of the target wizard. $C8C6 RET ; Return. ; Initialise #R$D3F2 and store address in #R$CD86. ; ; Used by the routines at #R$ACED and #R$C78D. c$C8C7 CALL $CDAA ; $C8CA LD HL,$D3F2 ; $C8CD LD ($CD86),HL ; $C8D0 LD HL,$CD2A ; {Store address of #R$CD2A in #R$CD3A. $C8D3 LD ($CD3A),HL ; } $C8D6 LD HL,$CD88 ; {Store address of #R$CD88 in #R$CD90. $C8D9 LD ($CD90),HL ; } $C8DC LD HL,($AC14) ; {Copy map address of the moving object into #R$C78B. $C8DF LD ($C78B),HL ; } $C8E2 LD B,$08 ; Set loop counter to 8. *$C8E4 PUSH BC ; Preserve loop counter. $C8E5 CALL $CD3C ; {Calculate address of a space "???" on the map and store $C8E8 LD A,($AC14) ; address in #R$AC14. $C8EB OR A ; } $C8EC JR Z,$C913 ; If a map location could not be found then jump to ; #R$C913. $C8EE LD HL,($C8B7) ; Otherwise load HL with the display coord's of the wizard ; we are aiming at. $C8F1 CALL $C703 ; {Convert display coord's into map coord's and store in $C8F4 LD ($BEE9),HL ; #R$BEE9.} $C8F7 LD HL,($AC14) ; {Convert the display coord's of the blank space into map $C8FA CALL $C703 ; coord's and store in #R$BEEB. $C8FD LD ($BEEB),HL ; } $C900 CALL $BEEF ; {Store the distance between the two places on the board $C903 LD A,($BEE8) ; in the next slot in #R$D3F2. $C906 LD HL,($CD86) ; $C909 LD (HL),A ; } $C90A LD HL,($CD90) ; {Load A with the next byte/character from #R$CD88. $C90D LD A,(HL) ; } $C90E LD HL,($CD86) ; {Increment the pointer into #R$D3F2. $C911 INC HL ; } $C912 LD (HL),A ; Store the byte/character from #R$CD88 in #R$D3F2. *$C913 LD HL,($CD90) ; {Increment #R$CD90 's pointer into #R$CD88. $C916 INC HL ; $C917 LD ($CD90),HL ; } $C91A LD HL,($CD86) ; {Increment twice the pointer into #R$D3F2 and store in $C91D INC HL ; #R$CD86. "???" $C91E INC HL ; $C91F LD ($CD86),HL ; } $C922 LD HL,($C78B) ; {Copy the map address of the moving object into #R$AC14. $C925 LD ($AC14),HL ; } $C928 POP BC ; Restore loop counter. $C929 DJNZ $C8E4 ; Loop back. $C92B LD HL,$D3F2 ; {Sort the contents of #R$D3F2 into ascending order [I $C92E LD A,$07 ; think "???"]. $C930 CALL $C64C ; } $C933 LD A,$01 ; {Set #R$AC30 to 1. $C935 LD ($AC30),A ; } $C938 LD HL,($C78B) ; {Copy the map address of the moving object into #R$AC14 $C93B LD ($AC14),HL ; and #R$AC12. $C93E LD ($AC12),HL ; } $C941 CALL $C703 ; Convert display coord's into map coord's. $C944 LD ($BC94),HL ; {Store the result in #R$BC94 and #R$AC0A. $C947 LD ($AC0A),HL ; } $C94A LD HL,$D401 ; {Set #R$CD86 to point at "???" in #R$D3F2. $C94D LD ($CD86),HL ; } $C950 LD BC,($BC94) ; Load BC with the map coord's of the moving object. $C954 RET ; Return. ; routine60: ; ; Used by the routines at #R$9999, #R$9B1C, #R$9BB3, #R$ACED, #R$D686 and ; #R$D82D. c$C955 LD HL,$E01F ; $C958 LD ($AC12),HL ; $C95B LD HL,$D3F2 ; $C95E LD ($CD86),HL ; $C961 CALL $CDAA ; $C964 LD HL,($AC14) ; $C967 LD ($C78B),HL ; $C96A LD A,$01 ; $C96C LD ($C7BB),A ; $C96F LD B,$9F ; *$C971 PUSH BC ; $C972 LD HL,($AC12) ; $C975 CALL $CA7C ; $C978 LD A,($AC03) ; $C97B LD HL,$BEE8 ; $C97E CP (HL) ; $C97F JP M,$C9B5 ; $C982 LD HL,($C8B7) ; $C985 CALL $C703 ; $C988 LD ($BEE9),HL ; $C98B LD HL,($AC12) ; $C98E CALL $C703 ; $C991 LD ($BEEB),HL ; $C994 CALL $BEEF ; $C997 LD A,($BEE8) ; $C99A LD HL,($CD86) ; $C99D LD (HL),A ; $C99E LD HL,($AC12) ; $C9A1 LD DE,$E01F ; $C9A4 XOR A ; $C9A5 SBC HL,DE ; $C9A7 LD A,L ; $C9A8 LD HL,($CD86) ; $C9AB INC HL ; $C9AC LD (HL),A ; $C9AD INC HL ; $C9AE LD ($CD86),HL ; $C9B1 LD HL,$C7BB ; $C9B4 INC (HL) ; *$C9B5 LD HL,($AC12) ; $C9B8 INC HL ; $C9B9 LD ($AC12),HL ; $C9BC POP BC ; $C9BD DJNZ $C971 ; $C9BF LD HL,$D3F2 ; $C9C2 LD A,($C7BB) ; $C9C5 CALL $C64C ; $C9C8 LD A,$01 ; $C9CA LD ($AC30),A ; $C9CD LD HL,$D4E5 ; $C9D0 LD ($CD86),HL ; $C9D3 RET ; ; routine61: c$C9D4 LD HL,($CD86) ; $C9D7 DEC HL ; $C9D8 DEC HL ; $C9D9 LD ($CD86),HL ; ; This entry point is used by the routines at #R$999C, #R$9B1C, #R$9BB3, ; #R$ACED, #R$D686 and #R$D82D. *$C9DC LD HL,($CD86) ; $C9DF DEC HL ; $C9E0 LD A,(HL) ; $C9E1 CP $FE ; $C9E3 JR NZ,$C9EB ; $C9E5 LD A,$4B ; $C9E7 LD ($AC32),A ; $C9EA RET ; *$C9EB LD HL,($CD86) ; $C9EE LD A,(HL) ; $C9EF CP $FF ; $C9F1 JR Z,$C9D4 ; $C9F3 LD HL,$E01F ; $C9F6 LD D,$00 ; $C9F8 LD E,A ; $C9F9 ADD HL,DE ; $C9FA LD ($AC12),HL ; $C9FD CALL $C63D ; $CA00 JR Z,$C9D4 ; $CA02 CALL $C703 ; $CA05 LD ($BC94),HL ; $CA08 LD HL,($CD86) ; $CA0B DEC HL ; $CA0C DEC HL ; $CA0D LD ($CD86),HL ; $CA10 LD A,$53 ; $CA12 LD ($AC32),A ; $CA15 RET ; ; Data block at CA16 b$CA16 DEFB $65,$E0,$0F ; routine62: ; ; Used by the routine at #R$C78D. c$CA19 CALL $C7BC ; $CA1C LD HL,($C78B) ; $CA1F LD ($AC14),HL ; $CA22 LD HL,$D3F2 ; $CA25 LD A,(HL) ; $CA26 OR A ; $CA27 JP Z,$C7A3 ; $CA2A LD A,($C7BB) ; $CA2D INC A ; $CA2E CALL $C64C ; $CA31 CALL $C8B9 ; $CA34 LD DE,$01E1 ; $CA37 ADD HL,DE ; $CA38 LD A,(HL) ; $CA39 AND $07 ; $CA3B LD E,A ; $CA3C LD HL,$E01F ; $CA3F LD B,$9F ; *$CA41 PUSH BC ; $CA42 PUSH HL ; $CA43 LD A,(HL) ; $CA44 SUB $29 ; $CA46 CP E ; $CA47 JR Z,$CA5B ; $CA49 LD BC,$0281 ; $CA4C ADD HL,BC ; $CA4D LD A,(HL) ; $CA4E SUB $29 ; $CA50 CP E ; $CA51 JR Z,$CA5B ; $CA53 POP HL ; $CA54 INC HL ; $CA55 POP BC ; $CA56 DJNZ $CA41 ; $CA58 JP $C7A3 ; *$CA5B POP HL ; $CA5C POP BC ; $CA5D LD ($CA16),HL ; $CA60 CALL $CA7C ; $CA63 LD ($CA18),A ; $CA66 LD HL,($C8B7) ; $CA69 CALL $CA7C ; $CA6C LD HL,$CA18 ; $CA6F CP (HL) ; $CA70 JP M,$CA79 ; $CA73 LD HL,($CA16) ; $CA76 LD ($C8B7),HL ; *$CA79 JP $C7B1 ; ; routine63: ; ; Used by the routines at #R$C955 and #R$CA19. c$CA7C CALL $C703 ; $CA7F LD ($BEE9),HL ; $CA82 LD HL,($C78B) ; $CA85 CALL $C703 ; $CA88 LD ($BEEB),HL ; $CA8B CALL $BEEF ; $CA8E LD A,($BEE8) ; $CA91 RET ; ; routine64: ; ; Used by the routines at #R$ACED and #R$C710. c$CA92 CALL $CDAA ; $CA95 LD HL,$E01F ; $CA98 LD B,$9F ; *$CA9A PUSH BC ; $CA9B PUSH HL ; $CA9C LD DE,$0281 ; $CA9F ADD HL,DE ; $CAA0 LD A,(HL) ; $CAA1 POP HL ; $CAA2 SUB $29 ; $CAA4 JP P,$CAAD ; $CAA7 LD A,(HL) ; $CAA8 SUB $29 ; $CAAA JP M,$CAB7 ; *$CAAD LD E,A ; $CAAE LD A,($AC0E) ; $CAB1 CP E ; $CAB2 JR NZ,$CAB7 ; $CAB4 LD ($AC14),HL ; *$CAB7 INC HL ; $CAB8 POP BC ; $CAB9 DJNZ $CA9A ; $CABB LD HL,$CD2A ; $CABE LD ($CD3A),HL ; $CAC1 LD HL,$D3F2 ; $CAC4 LD ($CD86),HL ; $CAC7 LD HL,$CD88 ; $CACA LD ($CD90),HL ; $CACD LD HL,($AC14) ; $CAD0 LD ($C649),HL ; $CAD3 LD A,(HL) ; $CAD4 CP $13 ; $CAD6 JP M,$CAE9 ; $CAD9 CP $16 ; $CADB JP P,$CAE9 ; $CADE CALL $CBB9 ; $CAE1 LD A,$01 ; $CAE3 LD ($AC31),A ; $CAE6 JP $CBA2 ; *$CAE9 CP $29 ; $CAEB JP M,$CB06 ; $CAEE SUB $29 ; $CAF0 LD HL,$AC16 ; $CAF3 LD D,$00 ; $CAF5 LD E,A ; $CAF6 ADD HL,DE ; $CAF7 BIT 5,(HL) ; $CAF9 JR Z,$CB06 ; $CAFB CALL $CBC7 ; $CAFE LD A,$01 ; $CB00 LD ($AC31),A ; $CB03 JP $CBA2 ; *$CB06 LD B,$08 ; *$CB08 PUSH BC ; $CB09 CALL $CD3C ; $CB0C LD A,($AC14) ; $CB0F OR A ; $CB10 JR Z,$CB79 ; $CB12 LD HL,($AC14) ; $CB15 LD A,(HL) ; $CB16 CP $26 ; $CB18 JP M,$CB27 ; $CB1B CP $28 ; $CB1D JP P,$CB27 ; $CB20 LD HL,($CD86) ; $CB23 LD (HL),$00 ; $CB25 JR $CB6C ; *$CB27 LD HL,($AC14) ; $CB2A LD A,(HL) ; $CB2B CP $24 ; $CB2D JR NZ,$CB36 ; $CB2F LD HL,($CD86) ; $CB32 LD (HL),$01 ; $CB34 JR $CB6C ; *$CB36 LD HL,($AC14) ; $CB39 LD A,(HL) ; $CB3A CP $10 ; $CB3C JP M,$CB63 ; $CB3F CP $16 ; $CB41 JP P,$CB63 ; $CB44 LD DE,$01E1 ; $CB47 ADD HL,DE ; $CB48 LD A,(HL) ; $CB49 AND $07 ; $CB4B LD HL,($AC0E) ; $CB4E CP L ; $CB4F JR NZ,$CB63 ; $CB51 LD HL,($AC14) ; $CB54 LD DE,$0281 ; $CB57 ADD HL,DE ; $CB58 LD A,(HL) ; $CB59 OR A ; $CB5A JR NZ,$CB63 ; $CB5C LD HL,($CD86) ; $CB5F LD (HL),$02 ; $CB61 JR $CB6C ; *$CB63 CALL $CD92 ; $CB66 LD HL,($CD86) ; $CB69 INC (HL) ; $CB6A INC (HL) ; $CB6B INC (HL) ; *$CB6C LD HL,($CD90) ; $CB6F LD A,(HL) ; $CB70 LD HL,($CD86) ; $CB73 INC HL ; $CB74 LD (HL),A ; $CB75 INC HL ; $CB76 LD ($CD86),HL ; *$CB79 LD HL,($C649) ; $CB7C LD ($AC14),HL ; $CB7F LD HL,($CD90) ; $CB82 INC HL ; $CB83 LD ($CD90),HL ; $CB86 POP BC ; $CB87 DEC B ; $CB88 JP NZ,$CB08 ; $CB8B LD HL,$D3F2 ; $CB8E LD A,$07 ; $CB90 CALL $C64C ; $CB93 LD HL,($C649) ; $CB96 LD ($AC12),HL ; $CB99 LD ($AC14),HL ; $CB9C LD HL,$D401 ; $CB9F LD ($CD86),HL ; *$CBA2 LD HL,($C649) ; $CBA5 CALL $C703 ; $CBA8 LD ($BC94),HL ; $CBAB LD ($AC0A),HL ; $CBAE LD A,$01 ; $CBB0 LD ($AC30),A ; $CBB3 LD BC,($BC94) ; $CBB7 RET ; ; Data block at CBB8 b$CBB8 DEFB $00 ; routine65: ; ; Used by the routine at #R$CA92. c$CBB9 LD D,A ; $CBBA LD E,$11 ; $CBBC CALL $BE0A ; $CBBF SLA A ; $CBC1 INC A ; $CBC2 LD ($CBB8),A ; $CBC5 JR $CBCC ; ; routine66: ; ; Used by the routine at #R$CA92. c$CBC7 LD A,$0D ; $CBC9 LD ($CBB8),A ; ; Routine at CBCC ; ; Used by the routine at #R$CBB9. c$CBCC CALL $CDAA ; $CBCF LD A,$01 ; $CBD1 LD ($C7BB),A ; $CBD4 LD HL,$D3F2 ; $CBD7 LD ($CD86),HL ; $CBDA LD HL,($AC14) ; $CBDD LD ($C78B),HL ; $CBE0 LD HL,$E01F ; $CBE3 LD ($AC14),HL ; $CBE6 LD B,$9E ; *$CBE8 PUSH BC ; $CBE9 LD HL,($AC14) ; $CBEC CALL $C703 ; $CBEF LD A,L ; $CBF0 CP $10 ; $CBF2 JR Z,$CC27 ; $CBF4 LD ($BEE9),HL ; $CBF7 LD HL,($C78B) ; $CBFA CALL $C703 ; $CBFD LD ($BEEB),HL ; $CC00 CALL $BEEF ; $CC03 LD HL,$BEE8 ; $CC06 LD A,($CBB8) ; $CC09 CP (HL) ; $CC0A JP M,$CC27 ; $CC0D CALL $CD92 ; $CC10 LD HL,($AC14) ; $CC13 LD DE,$E01F ; $CC16 AND A ; $CC17 SBC HL,DE ; $CC19 LD A,L ; $CC1A LD HL,($CD86) ; $CC1D INC HL ; $CC1E LD (HL),A ; $CC1F INC HL ; $CC20 LD ($CD86),HL ; $CC23 LD HL,$C7BB ; $CC26 INC (HL) ; *$CC27 LD HL,($AC14) ; $CC2A INC HL ; $CC2B LD ($AC14),HL ; $CC2E POP BC ; $CC2F DJNZ $CBE8 ; $CC31 LD A,($C7BB) ; $CC34 LD HL,$D3F2 ; $CC37 CALL $C64C ; $CC3A LD HL,$D493 ; *$CC3D DEC HL ; $CC3E DEC HL ; $CC3F LD A,(HL) ; $CC40 CP $FF ; $CC42 JR Z,$CC3D ; $CC44 LD HL,$E01F ; $CC47 LD D,$00 ; $CC49 LD E,A ; $CC4A ADD HL,DE ; $CC4B LD ($C8B7),HL ; $CC4E LD HL,($C78B) ; $CC51 LD ($AC14),HL ; $CC54 RET ; ; Data block at CC55 b$CC55 DEFB $00 ; Routine at CC56 ; ; Used by the routines at #R$9C0F and #R$B8DD. c$CC56 LD HL,($AC14) ; $CC59 LD ($C78B),HL ; $CC5C LD A,$3C ; $CC5E LD ($CC55),A ; $CC61 CALL $C825 ; $CC64 LD A,$20 ; $CC66 LD ($CC55),A ; $CC69 LD HL,($C649) ; $CC6C LD ($AC14),HL ; $CC6F LD HL,$E01F ; $CC72 LD ($AC12),HL ; $CC75 LD A,$09 ; $CC77 LD ($C7BB),A ; $CC7A LD B,$9E ; *$CC7C PUSH BC ; $CC7D CALL $C67A ; $CC80 OR A ; $CC81 JR Z,$CC9E ; $CC83 LD HL,($CD86) ; $CC86 LD (HL),A ; $CC87 LD HL,($AC12) ; $CC8A AND A ; $CC8B LD DE,$E01F ; $CC8E SBC HL,DE ; $CC90 LD A,L ; $CC91 LD HL,($CD86) ; $CC94 INC HL ; $CC95 LD (HL),A ; $CC96 INC HL ; $CC97 LD ($CD86),HL ; $CC9A LD HL,$C7BB ; $CC9D INC (HL) ; *$CC9E LD HL,($AC12) ; $CCA1 INC HL ; $CCA2 LD ($AC12),HL ; $CCA5 POP BC ; $CCA6 DJNZ $CC7C ; $CCA8 LD HL,$D3F2 ; $CCAB LD A,($C7BB) ; $CCAE CALL $C64C ; $CCB1 LD HL,$D3F3 ; $CCB4 LD ($CD86),HL ; $CCB7 LD HL,($C78B) ; $CCBA LD ($AC14),HL ; $CCBD LD A,$00 ; $CCBF LD ($CC55),A ; $CCC2 RET ; ; routine67: c$CCC3 LD HL,($CD86) ; $CCC6 INC HL ; $CCC7 INC HL ; $CCC8 LD ($CD86),HL ; ; This entry point is used by the routine at #R$B8DD. *$CCCB LD HL,($CD86) ; $CCCE LD A,(HL) ; $CCCF CP $FF ; $CCD1 JR NZ,$CCD6 ; $CCD3 LD A,$4B ; $CCD5 RET ; *$CCD6 LD HL,$E01F ; $CCD9 LD D,$00 ; $CCDB LD E,A ; $CCDC ADD HL,DE ; $CCDD LD ($AC12),HL ; $CCE0 LD A,(HL) ; $CCE1 CP $29 ; $CCE3 JP P,$CCFD ; $CCE6 CP $24 ; $CCE8 JR NZ,$CCF4 ; $CCEA LD DE,$0281 ; $CCED ADD HL,DE ; $CCEE LD A,(HL) ; $CCEF OR A ; $CCF0 JR NZ,$CCFD ; $CCF2 JR $CCC3 ; *$CCF4 CP $25 ; $CCF6 JR Z,$CCFD ; $CCF8 CP $23 ; $CCFA JP P,$CCC3 ; *$CCFD LD HL,($AC14) ; $CD00 LD A,(HL) ; $CD01 CP $29 ; $CD03 JP P,$CD16 ; $CD06 LD HL,($AC12) ; $CD09 LD A,(HL) ; $CD0A CP $1C ; $CD0C JP M,$CD16 ; $CD0F CP $22 ; $CD11 JP P,$CD16 ; $CD14 JR $CCC3 ; *$CD16 LD HL,($AC12) ; $CD19 CALL $C703 ; $CD1C LD ($BC94),HL ; $CD1F LD A,$53 ; $CD21 LD HL,($CD86) ; $CD24 INC HL ; $CD25 INC HL ; $CD26 LD ($CD86),HL ; $CD29 RET ; ; Data block at CD2A b$CD2A DEFB $FF,$FF,$FF,$00,$FF,$01,$00,$01 $CD32 DEFB $01,$01,$01,$00,$01,$FF,$00,$FF $CD3A DEFB $3A,$CD ; Routine at CD3C ; ; Used by the routines at #R$98F1, #R$9C0F, #R$C8C7, #R$CA92 and #R$D602. c$CD3C PUSH HL ; $CD3D PUSH DE ; $CD3E PUSH BC ; $CD3F PUSH AF ; $CD40 LD HL,($AC14) ; $CD43 CALL $C703 ; $CD46 EX DE,HL ; $CD47 LD HL,($CD3A) ; $CD4A LD A,(HL) ; $CD4B ADD A,D ; $CD4C JR Z,$CD7E ; $CD4E CP $0B ; $CD50 JR Z,$CD7E ; $CD52 LD D,A ; $CD53 INC HL ; $CD54 LD A,(HL) ; $CD55 ADD A,E ; $CD56 JR Z,$CD7E ; $CD58 CP $10 ; $CD5A JR Z,$CD7E ; $CD5C DEC A ; $CD5D DEC D ; $CD5E SLA D ; $CD60 SLA D ; $CD62 SLA D ; $CD64 SLA D ; $CD66 ADD A,D ; $CD67 LD B,$00 ; $CD69 LD C,A ; $CD6A LD HL,$E01F ; $CD6D ADD HL,BC ; $CD6E LD ($AC14),HL ; ; This entry point is used by the routine at #R$CD7E. *$CD71 LD HL,($CD3A) ; $CD74 INC HL ; $CD75 INC HL ; $CD76 LD ($CD3A),HL ; $CD79 POP HL ; $CD7A POP DE ; $CD7B POP BC ; $CD7C POP AF ; $CD7D RET ; ; Routine at CD7E ; ; Used by the routine at #R$CCC3. c$CD7E LD HL,$0000 ; $CD81 LD ($AC14),HL ; $CD84 JR $CD71 ; ; Data block at CD86 b$CD86 DEFB $F5,$D3,$51,$57,$45,$44,$43,$58 $CD8E DEFB $5A,$41,$90,$CD ; Routine at CD92 ; ; Used by the routines at #R$CA92 and #R$CBCC. c$CD92 LD HL,$E01F ; $CD95 LD B,$9E ; *$CD97 PUSH BC ; $CD98 PUSH HL ; $CD99 LD ($AC12),HL ; $CD9C CALL $C67A ; $CD9F LD HL,($CD86) ; $CDA2 ADD A,(HL) ; $CDA3 LD (HL),A ; $CDA4 POP HL ; $CDA5 INC HL ; $CDA6 POP BC ; $CDA7 DJNZ $CD97 ; $CDA9 RET ; ; Routine at CDAA ; ; Used by the routines at #R$C78D, #R$C825, #R$C8C7, #R$C955, #R$CA92 and ; #R$CBC7. c$CDAA LD HL,$D3F2 ; $CDAD LD B,$9E ; *$CDAF LD (HL),$00 ; $CDB1 INC HL ; $CDB2 LD (HL),$FF ; $CDB4 INC HL ; $CDB5 DJNZ $CDAF ; $CDB7 RET ; ; routine69: ; ; Used by the routine at #R$CDC0. c$CDB8 LD HL,($CD86) ; $CDBB DEC HL ; $CDBC DEC HL ; $CDBD LD ($CD86),HL ; ; routine70: ; ; Used by the routine at #R$BBE7. c$CDC0 LD HL,($CD86) ; $CDC3 LD A,(HL) ; $CDC4 INC A ; $CDC5 JR Z,$CDB8 ; $CDC7 DEC A ; $CDC8 LD HL,($CD86) ; $CDCB DEC HL ; $CDCC DEC HL ; $CDCD LD ($CD86),HL ; $CDD0 JP $BBF9 ; ; Data block at CDD3 b$CDD3 DEFB $CB,$CF,$20,$00,$CB,$CF,$20,$00 $CDDB DEFB $63,$E4,$0A,$00,$D5,$E4,$09,$00 $CDE3 DEFB $21,$E5,$06,$00,$47,$E5,$09,$00 $CDEB DEFB $B9,$E5,$04,$00,$DF,$E5,$04,$00 $CDF3 DEFB $2B,$E6,$03,$00,$77,$E6,$03,$00 $CDFB DEFB $9F,$E7,$04,$00,$C5,$E7,$07,$00 $CE03 DEFB $0E,$E8,$04,$00,$C9,$E8,$05,$00 $CE0B DEFB $EF,$E8,$09,$00,$3B,$E9,$05,$00 $CE13 DEFB $51,$E6,$05,$00,$33,$E7,$07,$00 $CE1B DEFB $15,$E9,$07,$00,$7D,$E8,$07,$00 $CE23 DEFB $05,$E6,$07,$00,$E6,$E6,$09,$00 $CE2B DEFB $89,$E4,$03,$00,$6D,$E5,$0C,$00 $CE33 DEFB $9D,$E6,$0A,$00,$61,$E9,$0D,$00 $CE3B DEFB $57,$E8,$05,$00,$A3,$E8,$05,$00 $CE43 DEFB $93,$E5,$07,$00,$59,$E7,$05,$00 $CE4B DEFB $FB,$E4,$07,$00,$7C,$E7,$06,$00 $CE53 DEFB $EB,$E7,$08,$00,$34,$E8,$06,$00 $CE5B DEFB $AF,$E4,$04,$00,$C3,$E6,$04,$00 $CE63 DEFB $F3,$E9,$0A,$00,$D0,$E9,$0B,$00 $CE6B DEFB $AD,$E9,$0C,$00,$87,$E9,$0C,$00 $CE73 DEFB $16,$EA,$04,$00,$39,$EA,$06,$00 $CE7B DEFB $5C,$EA,$07,$00,$7F,$EA,$0A,$00 $CE83 DEFB $A2,$EA,$08,$00,$C5,$EA,$05,$00 $CE8B DEFB $E8,$EA,$06,$00,$0B,$EB,$0A,$00 $CE93 DEFB $2E,$EB,$0C,$00,$EA,$CF,$09,$00 $CE9B DEFB $F3,$CF,$07,$00,$FA,$CF,$20,$00 $CEA3 DEFB $1A,$D0,$20,$00,$3A,$D0,$20,$00 $CEAB DEFB $5A,$D0,$0E,$00,$68,$D0,$07,$00 $CEB3 DEFB $6F,$D0,$15,$00,$84,$D0,$19,$00 $CEBB DEFB $9E,$D0,$0F,$00,$AD,$D0,$14,$00 $CEC3 DEFB $C1,$D0,$10,$00,$D1,$D0,$20,$00 $CECB DEFB $F1,$D0,$05,$00,$F6,$D0,$05,$00 $CED3 DEFB $FB,$D0,$06,$00,$01,$D1,$06,$00 $CEDB DEFB $07,$D1,$06,$00,$0D,$D1,$06,$00 $CEE3 DEFB $13,$D1,$05,$00,$18,$D1,$06,$00 $CEEB DEFB $1E,$D1,$07,$00,$25,$D1,$05,$00 $CEF3 DEFB $2A,$D1,$07,$00,$31,$D1,$0E,$00 $CEFB DEFB $3F,$D1,$06,$00,$45,$D1,$08,$00 $CF03 DEFB $4D,$D1,$13,$00,$60,$D1,$11,$00 $CF0B DEFB $71,$D1,$11,$00,$82,$D1,$0F,$00 $CF13 DEFB $91,$D1,$02,$00,$93,$D1,$07,$00 $CF1B DEFB $9A,$D1,$08,$00,$A2,$D1,$09,$00 $CF23 DEFB $AB,$D1,$0B,$00,$B6,$D1,$0E,$00 $CF2B DEFB $C4,$D1,$0D,$00,$D1,$D1,$20,$00 $CF33 DEFB $F1,$D1,$20,$00,$11,$D2,$10,$00 $CF3B DEFB $21,$D2,$0E,$00,$2F,$D2,$0F,$00 $CF43 DEFB $3E,$D2,$14,$00,$52,$D2,$0A,$00 $CF4B DEFB $5C,$D2,$18,$00,$74,$D2,$0C,$00 $CF53 DEFB $80,$D2,$0A,$00,$8A,$D2,$0A,$00 $CF5B DEFB $94,$D2,$09,$00,$9D,$D2,$09,$00 $CF63 DEFB $A6,$D2,$0A,$00,$B0,$D2,$06,$00 $CF6B DEFB $B6,$D2,$07,$00,$BD,$D2,$05,$00 $CF73 DEFB $C2,$D2,$05,$00,$C7,$D2,$07,$00 $CF7B DEFB $CE,$D2,$07,$00,$D5,$D2,$0C,$00 $CF83 DEFB $E1,$D2,$0C,$00,$ED,$D2,$0B,$00 $CF8B DEFB $F8,$D2,$0B,$00,$03,$D3,$09,$00 $CF93 DEFB $11,$D3,$0A,$00,$0C,$D3,$05,$00 $CF9B DEFB $1B,$D3,$07,$00,$22,$D3,$0A,$00 $CFA3 DEFB $2C,$D3,$08,$00,$34,$D3,$0A,$00 $CFAB DEFB $3E,$D3,$07,$00,$45,$D3,$0C,$00 $CFB3 DEFB $51,$D3,$0C,$00,$5D,$D3,$06,$00 $CFBB DEFB $63,$D3,$0D,$00,$70,$D3,$0B,$00 $CFC3 DEFB $7B,$D3,$0B,$00,$86,$D3,$0B,$00 ; Message at CFCB t$CFCB DEFM " (ASLEEP) (DEAD)DISMOUNT WIZARD? (" $D00C DEFM "Y OR N) ENGAGED TO ENEMY OUT OF RANGE " $D04D DEFM " (FLYING) 'S TURNMOVEMENT POINTS LEFT=UNDEAD-CAN" $D08E DEFM "NOT BE ATTACKED MOVEMENT RANGE=RANGED COMBAT,RANGE=NO LINE OF SIG" $D0CF DEFM "HT PRESS ANY KEY KNIFESWORDARMOURSHIELDFLYINGSHA" $D110 DEFM "DOWMOUNTUNDEAD(CHAOS (LAW COMBAT=RANGED COMBAT=RANGE=DEFENCE=MOVE" $D151 DEFM "MENT ALLOWANCE=MANOEUVRE RATING=MAGIC RESISTANCE=CASTING CHANCE=1" $D192 DEFM "0SPELLS=ABILITY='S SPELLSSPELL FAILSSPELL SUCCEEDSIS THE WINNER " $D1D3 DEFM " PRESS KEYS 1 TO 4 PRESS '0' TO RETURN TO MAIN MENU1.E" $D214 DEFM "XAMINE SPELLS2.SELECT SPELL3.EXAMINE BOARD4.CONTINUE WITH GAMEDIS" $D255 DEFM "BELIEVEILLUSION? (PRESS Y OR N)'S CREATIONSMAGIC FIREGOOEY BLOBLI" $D296 DEFM "GHTNINGVENGEANCEDARK POWERDECREEJUSTICELAW-1LAW-2CHAOS-1CHAOS-2MA" $D2D7 DEFM "GIC SHIELDMAGIC ARMOURMAGIC SWORDMAGIC KNIFEMAGIC BOWBLINDMAGIC B" $D318 DEFM "OLTTEMPESTRAISE DEADTELEPORTSUBVERSIONTURMOILDEAD REVENGECONSECRA" $D359 DEFM "TIONDISPELCOUNTER SPELLMAGIC WINGSMAGIC SLEEPSHADOW FORM" ; This variable is used in #R$BCA3 to store the number of the currently ; selected player. b$D391 DEFB $01 ; Disable interrupts and preserve registers. ; ; This routine makes the currently selected wizard and his creations flash. The ; player number is stored in #R$D391. c$D392 DI ; $D393 PUSH AF ; $D394 PUSH BC ; $D395 PUSH DE ; $D396 PUSH HL ; $D397 LD HL,$E01F ; Point HL at #R$E01F. $D39A LD B,$9F ; Set loop counter to 159 to cover all 160 bytes in the ; map. *$D39C PUSH HL ; {Preserve pointer to current map location and loop $D39D PUSH BC ; counter.} $D39E LD A,(HL) ; Load byte for current map location into A. $D39F OR A ; {If it contains 0 then jump to #R$D3BE in order to $D3A0 JR Z,$D3BE ; process the next location in the map.} $D3A2 LD DE,$0141 ; {Load A with the corresponding byte from #R$E160. $D3A5 ADD HL,DE ; $D3A6 LD A,(HL) ; } $D3A7 CP $04 ; {See if A holds the value 4 which represents ??? which $D3A9 JR Z,$D3BE ; we ignore and move onto the next location by calling ; #R$D3BE.} $D3AB LD DE,$00A0 ; {Find the wizard associated with the current object by $D3AE ADD HL,DE ; loading A with the corresponding byte from #R$E200. $D3AF LD A,(HL) ; } $D3B0 LD DE,$01E1 ; {Point HL back at the selected object on the game board $D3B3 SBC HL,DE ; by selecting the corresponding byte in #R$E01F.} $D3B5 AND $07 ; {Load E with lowest three bits of A. $D3B7 LD E,A ; } $D3B8 LD A,($D391) ; Load A with player number from #R$D391. $D3BB CP E ; {If the player number matches the value of E from $D3BC JR Z,$D3C8 ; #R$E200 then jump to #R$D3C8 to be a FLASHER!!!} *$D3BE POP BC ; {Restore loop counter and pointer to current location in $D3BF POP HL ; the map.} $D3C0 INC HL ; Increment map location pointer. $D3C1 DJNZ $D39C ; Loop back to #R$D39C to process the next map location. $D3C3 POP HL ; {All map locations processed so restore registers and $D3C4 POP DE ; return. $D3C5 POP BC ; $D3C6 POP AF ; $D3C7 RET ; } *$D3C8 LD ($E005),HL ; {Store HL in #R$E005 - formerly 'unknown66'. $D3CB LD A,$02 ; } $D3CD CALL $1601 ; Call the CHAN-OPEN routine in ROM to open upper screen ; for writing to. $D3D0 CALL $E007 ; Call #R$E007 to ... convert HL pointer into coordinates ; for printing??? $D3D3 LD A,$16 ; {Print a filled-in square at the coord's in HL, i.e. (L, $D3D5 RST $10 ; H) - i.e. top-left of flashing square $D3D6 LD A,H ; $D3D7 RST $10 ; $D3D8 LD A,L ; $D3D9 RST $10 ; $D3DA LD A,$8F ; $D3DC RST $10 ; } $D3DD LD A,$8F ; {Print another filled-in square for the top-right of the $D3DF RST $10 ; flashing square.} $D3E0 LD A,$16 ; {Move down a row and print the bottom-left of the $D3E2 RST $10 ; flasing square. $D3E3 LD A,H ; $D3E4 INC A ; $D3E5 RST $10 ; $D3E6 LD A,L ; $D3E7 RST $10 ; } $D3E8 LD A,$8F ; {Print bottom-right of the flashing square. $D3EA RST $10 ; $D3EB LD A,$8F ; $D3ED RST $10 ; } $D3EE JR $D3BE ; {Jump to #R$D3BE to restore registers and return. $D3F0 CP $4B ; $D3F2 CCF ; $D3F3 LD B,(HL) ; $D3F4 DEC L ; $D3F5 ADC A,D ; $D3F6 JR $D43E ; } ; Data block at D3F8 b$D3F8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D400 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D408 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D410 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D418 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D420 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D428 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D430 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D438 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D440 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D448 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D450 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D458 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D460 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D468 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D470 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D478 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D480 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D488 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D490 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D498 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4A0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4A8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4B0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4B8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4C0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4C8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4D0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4D8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4E0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4E8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4F0 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D4F8 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D500 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D508 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D510 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D518 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D520 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF $D528 DEFB $00,$FF,$00,$FF,$00,$FF ; Call #R$97D1 to find the coordinates of the current player. ; ; Selects the target of a spell. c$D52E CALL $97D1 ; $D531 CALL $FE56 ; Set IM2. $D534 LD A,$00 ; {Set ATTR P to black on black. $D536 LD ($5C8D),A ; } $D539 LD A,$FF ; {Set MASK P to $FF so that all attributes are taken from $D53B LD ($5C8E),A ; the screen.} $D53E CALL $C0DD ; Call #R$C0DD to update the maps and draw the border. $D541 EI ; Enable interrupts. $D542 HALT ; Wait for an interrupt. $D543 LD A,$03 ; {Set P FLAG to 3 for "OVER 1" printing. $D545 LD ($5C91),A ; } $D548 CALL $BED7 ; Clear the bottom row of the screen. $D54B LD A,($97CE) ; {Load B with the number of attempts for this spell. $D54E LD B,A ; } $D54F PUSH BC ; Preserve this value. ; This entry point is used by the routines at #R$D567 and #R$D588. *$D550 CALL $BC96 ; Call #R$BC96 to handle keyboard input on the map. $D553 CALL $02BF ; Call KEYBOARD in ROM. $D556 CP $53 ; {If they pressed 'S' to select an object then jump to $D558 JR Z,$D567 ; #R$D567.} $D55A CP $4B ; {If they pressed 'K' to cancel then jump to #R$D550 to $D55C JR NZ,$D550 ; get another key.} $D55E POP BC ; Restore the number of attempts for this spell. $D55F LD HL,$C2B1 ; {Play #R$C2B1. $D562 CALL $C2F9 ; } $D565 EI ; Enable interrupts. $D566 RET ; Return. ; Wait for no key to be pressed. ; ; Used by the routine at #R$D52E. c$D567 CALL $BBCC ; $D56A CALL $9786 ; Call #R$9786 to see if the target is in range. $D56D JP P,$9877 ; If the object is in range then jump to #R$9877 to ; process the spell. $D570 CALL $BED7 ; Otherwise clear the bottom row of the screen. $D573 LD BC,$1600 ; Set print coordinates to (0,22). $D576 LD A,$45 ; {Set ATTR T to bright cyan on black. $D578 LD ($5C8F),A ; } $D57B LD A,$35 ; {Display #R$CEA7 because the target is out of range. $D57D CALL $BAFB ; } $D580 CALL $BBCC ; Wait for no key to be pressed. $D583 CALL $BBB0 ; Wait for a key to be pressed. $D586 JR $D550 ; Jump back to #R$D550. ; Load A with an object code from the map. c$D588 LD HL,($AC12) ; $D58B LD A,(HL) ; $D58C OR A ; {If the map position is empty then jump to #R$D5A3. $D58D JR Z,$D5A3 ; } $D58F LD A,($937B) ; {Otherwise if the current spell is greater than or equal $D592 CP $24 ; to Magic Wood then jump to #R$D5CB. $D594 JP P,$983F ; } $D597 LD HL,($AC12) ; {If the current object is not dead then jump to #R$D52E $D59A LD DE,$0141 ; to apply a spell to a target. $D59D ADD HL,DE ; $D59E LD A,(HL) ; $D59F CP $04 ; $D5A1 JR NZ,$D550 ; } *$D5A3 CALL $98F1 ; {Otherwise "???" $D5A6 JR NZ,$D550 ; } $D5A8 CALL $9C0F ; {#R$9C0F is called for a WALL spell "???" $D5AB JR NZ,$D550 ; } $D5AD CALL $98DB ; {"???" $D5B0 JR Z,$D5CB ; } $D5B2 LD A,$45 ; {We cannot cast the spell so set ATTR-T to $45 (bright $D5B4 LD ($5C8F),A ; cyan on black).} $D5B7 CALL $BED7 ; Clear the bottom row of the screen. $D5BA LD A,$3C ; {Print message #R$CEC3 - "NO LINE OF SIGHT STRING" $D5BC LD BC,$1600 ; $D5BF CALL $BAFB ; } $D5C2 CALL $BBCC ; Wait for no key. $D5C5 CALL $BBB0 ; Wait for a key. $D5C8 JP $983F ; Jump to #R$983F. ; Display a twirling animation over the spell's target. ; ; Used by the routine at #R$D588. c$D5CB CALL $A18A ; $D5CE LD A,($9167) ; {If the spell failed then jump to #R$D5E7. $D5D1 OR A ; $D5D2 JR Z,$D5E7 ; } $D5D4 CALL $9941 ; {Update map tables. $D5D7 POP BC ; $D5D8 PUSH BC ; $D5D9 LD A,B ; $D5DA CP $01 ; $D5DC JR NZ,$D5E1 ; } $D5DE CALL $97A3 ; {Display whether the spell succeeded or failed. *$D5E1 POP BC ; $D5E2 DEC B ; $D5E3 JP NZ,$983E ; } $D5E6 RET ; {Return. *$D5E7 POP BC ; } ; Display whether the spell succeeded or failed. c$D5E8 CALL $97A3 ; $D5EB RET ; Return. ; routine74: c$D5EC XOR A ; $D5ED LD ($B754),A ; $D5F0 LD ($B60B),A ; $D5F3 CALL $BA77 ; $D5F6 CALL $B626 ; $D5F9 CALL $C0DD ; $D5FC HALT ; $D5FD LD A,($B754) ; $D600 OR A ; $D601 RET ; ; routine75: c$D602 LD A,$00 ; $D604 LD ($9940),A ; $D607 LD A,($937B) ; $D60A CP $24 ; $D60C JP M,$993B ; $D60F CP $26 ; $D611 JP P,$993B ; $D614 LD HL,$CD2A ; $D617 LD ($CD3A),HL ; $D61A LD HL,($AC14) ; $D61D LD ($C78B),HL ; $D620 LD B,$08 ; *$D622 PUSH BC ; $D623 LD HL,($AC12) ; $D626 LD ($AC14),HL ; $D629 CALL $CD3C ; $D62C LD HL,($AC14) ; $D62F LD A,H ; $D630 ADD A,L ; $D631 JR Z,$D643 ; $D633 LD A,(HL) ; $D634 CP $24 ; $D636 JP M,$9932 ; $D639 CP $26 ; $D63B JP P,$9932 ; $D63E LD A,$01 ; $D640 LD ($9940),A ; *$D643 POP BC ; $D644 DJNZ $D622 ; $D646 LD HL,($C78B) ; $D649 LD ($AC14),HL ; $D64C LD A,($9940) ; $D64F OR A ; $D650 RET ; $D651 NOP ; ; Load HL with the address of the cursor. ; ; Add Gooey Blob or Magic Fire to the map? DOES THIS ROUTINE EVER GET CALLED ; "???" c$D652 LD HL,($AC12) ; $D655 LD A,($937B) ; {If the current spell is for Gooey Blob or Magic Fire $D658 CP $22 ; then jump to #R$D669. $D65A JR Z,$D669 ; $D65C CP $23 ; $D65E JR Z,$D669 ; } $D660 LD A,(HL) ; {Otherwise store the object code in #R$E340. $D661 LD DE,$0321 ; $D664 ADD HL,DE ; $D665 LD (HL),A ; } $D666 LD A,($937B) ; Load the current spell into A. *$D669 LD HL,($AC12) ; {Copy the current spell into the map at the cursor $D66C LD (HL),A ; position.} $D66D LD DE,$00A1 ; {Set the animation timeout to 1. $D670 ADD HL,DE ; $D671 LD (HL),$01 ; } $D673 DEC DE ; {Set the animation frame to 0. $D674 ADD HL,DE ; $D675 LD (HL),$00 ; } $D677 ADD HL,DE ; {Set the owner to the current player. $D678 LD A,($AC0E) ; $D67B LD (HL),A ; } $D67C LD A,($9166) ; {Set Z based on value of #R$9166 "???" $D67F OR A ; $D680 JR Z,$D684 ; } $D682 SET 4,(HL) ; Set illusion bit "???" *$D684 HALT ; Wait for an interrupt. $D685 RET ; Return. ; routine77: c$D686 LD A,$01 ; $D688 LD ($97CE),A ; $D68B LD A,($AC2E) ; $D68E OR A ; $D68F JR NZ,$D695 ; $D691 CALL $981A ; $D694 RET ; *$D695 CALL $C78D ; $D698 LD A,$03 ; $D69A LD ($AC03),A ; $D69D LD A,($937B) ; $D6A0 CP $22 ; $D6A2 JP M,$9999 ; $D6A5 LD A,$0D ; $D6A7 LD ($AC03),A ; $D6AA CALL $C955 ; *$D6AD CALL $C9DC ; $D6B0 CP $4B ; $D6B2 JR NZ,$D6BA ; $D6B4 LD A,$00 ; $D6B6 LD ($975F),A ; $D6B9 RET ; *$D6BA CALL $980E ; $D6BD JR Z,$D6AD ; $D6BF CALL $98DB ; $D6C2 JR NZ,$D6AD ; $D6C4 LD HL,($AC12) ; $D6C7 LD A,(HL) ; $D6C8 OR A ; $D6C9 JR Z,$D6D4 ; $D6CB LD DE,$0141 ; $D6CE ADD HL,DE ; $D6CF LD A,(HL) ; $D6D0 CP $04 ; $D6D2 JR NZ,$D6AD ; *$D6D4 CALL $967A ; $D6D7 CALL $A18A ; $D6DA LD A,($937B) ; $D6DD CP $22 ; $D6DF JP P,$99DE ; $D6E2 CALL $BE94 ; $D6E5 CP $02 ; $D6E7 JP P,$99DE ; $D6EA LD A,$01 ; $D6EC LD ($9166),A ; $D6EF CALL $9760 ; $D6F2 LD A,($9167) ; $D6F5 OR A ; $D6F6 CALL NZ,$9941 ; $D6F9 LD A,$00 ; $D6FB LD ($9166),A ; $D6FE CALL $97A3 ; $D701 RET ; ; Load A with the value of #R$AC2E. ; ; routine78: Subroutines of #R$99F1 to select a target for the spell. c$D702 LD A,($AC2E) ; $D705 OR A ; {If the player is computer-controlled then jump to $D706 JP NZ,$9A95 ; #R$9A95.} *$D709 CALL $BC96 ; Call #R$BC96 to handle the keyboard and enable ; displaying information about objects on screen. $D70C CALL $02BF ; Call KEYBOARD in ROM. $D70F CP $53 ; {If 'S' was pressed to select an object then jump to $D711 JR Z,$D71F ; #R$D71F.} $D713 CP $4B ; {Otherwise if anything other than 'K' was pressed jump $D715 JR NZ,$D709 ; back to #R$D709 to get another key.} $D717 LD HL,$C2B1 ; {'K' was pressed to cancel the current operation so play $D71A CALL $C2F9 ; #R$C2B1.} $D71D EI ; Enable interrupts. $D71E RET ; Return. *$D71F CALL $BBCC ; Wait for no key to be pressed. $D722 LD HL,($AC12) ; Load HL with the cursor position. $D725 LD A,(HL) ; Load A with the current object. $D726 OR A ; {If there is nothing there then jump to #R$D709 to keep $D727 JR Z,$D709 ; going.} $D729 CP $22 ; {If the object code is greater than or equal to 34 $D72B JP P,$99F8 ; (Gooey blob onwards) then jump to #R$99F1 as these ; cannot be disbelieved.} $D72E CALL $9A21 ; Otherwise jump to #R$99F1 to cast the disbelieve spell ; on the target. $D731 RET ; Return. ; routine79: Deals with a successful #R$99F1. c$D732 CALL $A18A ; $D735 LD HL,($AC12) ; $D738 LD A,$00 ; $D73A LD ($9167),A ; $D73D LD DE,$01E1 ; $D740 ADD HL,DE ; $D741 BIT 4,(HL) ; $D743 JR Z,$D756 ; $D745 LD DE,$00A0 ; $D748 ADD HL,DE ; $D749 LD A,(HL) ; $D74A LD HL,($AC12) ; $D74D LD (HL),A ; $D74E CALL $9A52 ; $D751 LD A,$01 ; $D753 LD ($9167),A ; *$D756 CALL $97A3 ; $D759 LD HL,($AC12) ; $D75C LD DE,$01E1 ; $D75F ADD HL,DE ; $D760 SET 5,(HL) ; $D762 RET ; ; Play #R$9121. ; ; 25th July 2020 routine80 - Displays explosion animation and sound effect. ; . ; Displays explosion animation and sound effect. c$D763 LD HL,$9121 ; $D766 LD ($C2F3),HL ; $D769 CALL $C2F6 ; $D76C LD A,$46 ; {Set ATTR T to bright yellow on black. $D76E LD ($5C8F),A ; } $D771 LD HL,$A345 ; {Set pointer for explosion animation. $D774 LD ($A188),HL ; } $D777 LD HL,($AC12) ; Load HL with cursor coordinates. $D77A LD ($E005),HL ; Store a copy in #R$E005. $D77D CALL $E007 ; Call #R$E007 to get game board object into coordinates ; in HL. $D780 LD ($DF4C),HL ; Store them in #R$DF4C. $D783 LD B,$07 ; {Set loop counter to 7. $D785 DI ; } *$D786 PUSH BC ; Disable interrupts. $D787 LD HL,($A188) ; Load HL with the explosion animation pointer. $D78A LD ($DF4A),HL ; Copy to #R$DF4A. $D78D CALL $DF4E ; Print the current explosion animation frame. $D790 CALL $C301 ; Play sound effect. $D793 LD DE,$0020 ; {Set HL to point to the next animation frame. $D796 LD HL,($A188) ; $D799 ADD HL,DE ; } $D79A LD ($A188),HL ; Store pointer to next animation frame in #R$A188. $D79D POP BC ; Restore loop counter. $D79E DJNZ $D786 ; Decrement and loop. $D7A0 CALL $C0DD ; Call #R$C0D8. $D7A3 EI ; Enable interrupts. $D7A4 HALT ; Wait for an interrupt. $D7A5 RET ; Return. ; routine81: c$D7A6 LD HL,($AC14) ; $D7A9 LD ($C78B),HL ; $D7AC CALL $C7BC ; $D7AF LD HL,($C78B) ; $D7B2 LD ($AC14),HL ; $D7B5 LD HL,$D3F2 ; $D7B8 LD ($CD86),HL ; $D7BB LD A,($C7BB) ; $D7BE INC A ; $D7BF CALL $C64C ; *$D7C2 CALL $A17E ; $D7C5 CP $FF ; $D7C7 JR NZ,$D7CF ; $D7C9 LD A,$00 ; $D7CB LD ($975F),A ; $D7CE RET ; *$D7CF LD HL,$E01F ; $D7D2 LD D,$00 ; $D7D4 LD E,A ; $D7D5 ADD HL,DE ; $D7D6 LD ($AC12),HL ; $D7D9 LD A,(HL) ; $D7DA CP $22 ; $D7DC JP P,$9AB1 ; $D7DF LD DE,$01E1 ; $D7E2 ADD HL,DE ; $D7E3 BIT 5,(HL) ; $D7E5 JR NZ,$D7C2 ; $D7E7 CALL $967A ; $D7EA CALL $9A21 ; $D7ED RET ; ; Set the number of attempts for this spell to a max value of 8. c$D7EE LD A,$08 ; $D7F0 LD ($97CE),A ; $D7F3 LD A,($937B) ; {If the current spell is Magic Wood or Shadow Wood then $D7F6 CP $26 ; jump to #R$9AEF. $D7F8 JP M,$9AEF ; } $D7FB LD A,$01 ; {Otherwise set the number of spell attempts to 1 [for a $D7FD LD ($97CE),A ; castle or citadel].} $D800 LD A,($AC2E) ; {If the current player is computer-controlled then jump $D803 OR A ; to #R$D811. $D804 JR NZ,$D811 ; } $D806 LD A,($937B) ; {If the current spell is for a Magic Wood then jump to $D809 CP $24 ; #R$D830. [but there is no path to here "???" $D80B JR Z,$D830 ; } $D80D CALL $981A ; Interact with the user to place and cast the current ; spell. $D810 RET ; Return. *$D811 LD A,($937B) ; {If the current spell is a Magic Castle or earlier then $D814 CP $26 ; jump to #R$9B1C. $D816 JP M,$9B1C ; } $D819 LD HL,($AC12) ; {Otherwise if the object at the cursor is a Wood or a $D81C LD A,(HL) ; Wall then jump to #R$9B1C. $D81D CP $26 ; $D81F JP M,$9B1C ; $D822 CP $28 ; $D824 JP P,$9B1C ; } $D827 LD A,$00 ; {Set #R$975F to 0 "???" $D829 LD ($975F),A ; } $D82C RET ; Return. ; routine83: c$D82D CALL $967A ; ; This entry point is used by the routine at #R$D7EE. *$D830 LD HL,($AC14) ; $D833 LD ($C8B7),HL ; $D836 LD A,$0D ; $D838 LD ($AC03),A ; $D83B CALL $9760 ; $D83E LD A,($97CE) ; $D841 LD B,A ; *$D842 PUSH BC ; $D843 CALL $C955 ; *$D846 CALL $C9DC ; $D849 CP $4B ; $D84B JR Z,$D885 ; $D84D CALL $980E ; $D850 JR Z,$D846 ; $D852 LD HL,($AC12) ; $D855 LD A,(HL) ; $D856 OR A ; $D857 JR NZ,$D846 ; $D859 CALL $98F1 ; $D85C JR NZ,$D846 ; $D85E CALL $98DB ; $D861 JR NZ,$D846 ; $D863 CALL $A18A ; $D866 LD A,($9167) ; $D869 OR A ; $D86A JR Z,$D882 ; $D86C LD A,($937B) ; $D86F LD HL,($AC12) ; $D872 LD (HL),A ; $D873 LD DE,$01E1 ; $D876 ADD HL,DE ; $D877 LD A,($AC0E) ; $D87A LD (HL),A ; $D87B CALL $C0DD ; $D87E POP BC ; $D87F DJNZ $D842 ; $D881 RET ; *$D882 CALL $97A3 ; *$D885 POP BC ; $D886 RET ; ; routine84: c$D887 LD A,$04 ; $D889 LD ($97CE),A ; $D88C LD A,($AC2E) ; $D88F OR A ; $D890 JR NZ,$D896 ; $D892 CALL $981A ; $D895 RET ; *$D896 LD A,$09 ; $D898 LD ($AC03),A ; $D89B LD HL,($AC14) ; $D89E LD ($C78B),HL ; $D8A1 CALL $C7BC ; $D8A4 LD HL,($C78B) ; $D8A7 LD ($AC14),HL ; $D8AA LD HL,$D3F2 ; $D8AD LD ($CD86),HL ; $D8B0 LD A,($C7BB) ; $D8B3 INC A ; $D8B4 CALL $C64C ; *$D8B7 CALL $A17E ; $D8BA CP $FF ; $D8BC JR NZ,$D8C4 ; $D8BE LD A,$00 ; $D8C0 LD ($975F),A ; $D8C3 RET ; *$D8C4 LD D,$00 ; $D8C6 LD E,A ; $D8C7 LD HL,$E01F ; $D8CA ADD HL,DE ; $D8CB LD ($AC12),HL ; $D8CE LD ($C8B7),HL ; $D8D1 LD A,(HL) ; $D8D2 CP $1E ; $D8D4 JP P,$9BCD ; $D8D7 CP $13 ; $D8D9 JP M,$9BCD ; $D8DC JR $D8B7 ; ; Data block at D8DE b$D8DE DEFB $CD,$60,$97,$CD,$7A,$96,$06,$04 $D8E6 DEFB $C5,$CD,$55,$C9,$CD,$DC,$C9,$FE $D8EE DEFB $4B,$28,$22,$CD,$0E,$98,$28,$F4 $D8F6 DEFB $2A,$12,$AC,$7E,$B7,$20,$ED,$CD $D8FE DEFB $0F,$9C,$20,$E8,$CD,$DB,$98,$20 $D906 DEFB $E3,$CD,$00,$00,$00,$00,$00,$00 $D90E DEFB $00,$00,$30,$30,$30,$30,$30,$30 $D916 DEFB $30,$00,$66,$66,$22,$44,$00,$00 $D91E DEFB $00,$00,$6C,$6C,$FE,$FE,$6C,$6C $D926 DEFB $6C,$FE,$10,$7C,$FE,$D6,$D0,$FC $D92E DEFB $7E,$16,$46,$A4,$AC,$48,$18,$10 $D936 DEFB $30,$24,$30,$48,$48,$78,$30,$72 $D93E DEFB $DA,$CC,$18,$18,$08,$10,$00,$00 $D946 DEFB $00,$00,$0C,$18,$18,$30,$30,$30 $D94E DEFB $30,$30,$60,$30,$30,$18,$18,$18 $D956 DEFB $18,$18,$00,$00,$10,$92,$54,$38 $D95E DEFB $10,$38,$00,$00,$18,$18,$18,$7E $D966 DEFB $7E,$18,$00,$00,$00,$00,$00,$00 $D96E DEFB $00,$00,$00,$00,$00,$00,$00,$FE $D976 DEFB $FE,$00,$00,$00,$00,$00,$00,$00 $D97E DEFB $00,$00,$06,$04,$0C,$08,$18,$10 $D986 DEFB $30,$20,$38,$7C,$EE,$C6,$CE,$D6 $D98E DEFB $E6,$C6,$18,$38,$78,$18,$18,$18 $D996 DEFB $18,$18,$38,$7C,$CE,$06,$0E,$3C $D99E DEFB $78,$E0,$38,$7C,$CE,$06,$06,$1C $D9A6 DEFB $06,$06,$06,$0E,$1E,$36,$66,$C6 $D9AE DEFB $FE,$FE,$FE,$FE,$C0,$F8,$FC,$CE $D9B6 DEFB $06,$06,$38,$7C,$E6,$C0,$F8,$FC $D9BE DEFB $EE,$C6,$FE,$FE,$06,$06,$0C,$0C $D9C6 DEFB $18,$18,$38,$7C,$EE,$C6,$EE,$7C $D9CE DEFB $EE,$C6,$38,$7C,$EE,$C6,$EE,$7E $D9D6 DEFB $3E,$06,$00,$00,$00,$00,$18,$18 $D9DE DEFB $00,$00,$00,$00,$00,$00,$18,$18 $D9E6 DEFB $00,$00,$00,$00,$04,$0C,$18,$30 $D9EE DEFB $60,$30,$00,$00,$00,$FE,$FE,$00 $D9F6 DEFB $00,$FE,$00,$00,$40,$60,$30,$18 $D9FE DEFB $0C,$18,$38,$7C,$CE,$06,$0E,$1C $DA06 DEFB $18,$18,$38,$7C,$C6,$92,$AA,$AA $DA0E DEFB $AA,$94,$38,$7C,$EE,$C6,$C6,$FE $DA16 DEFB $FE,$C6,$FC,$FE,$C6,$C6,$FC,$FE $DA1E DEFB $C6,$C6,$38,$7C,$E6,$C0,$C0,$C0 $DA26 DEFB $C0,$C0,$F8,$FC,$CE,$C6,$C6,$C6 $DA2E DEFB $C6,$C6,$FE,$FE,$C0,$C0,$F8,$F8 $DA36 DEFB $C0,$C0,$FE,$FE,$C0,$C0,$F8,$F8 $DA3E DEFB $C0,$C0,$38,$7C,$E6,$C0,$C0,$C0 $DA46 DEFB $C0,$C6,$C6,$C6,$C6,$C6,$FE,$FE $DA4E DEFB $C6,$C6,$FC,$FC,$30,$30,$30,$30 $DA56 DEFB $30,$30,$FE,$FE,$18,$18,$18,$18 $DA5E DEFB $18,$18,$C2,$C6,$CC,$D8,$F0,$E0 $DA66 DEFB $F0,$D8,$C0,$C0,$C0,$C0,$C0,$C0 $DA6E DEFB $C0,$C0,$C6,$C6,$EE,$FE,$FE,$D6 $DA76 DEFB $C6,$C6,$C6,$C6,$E6,$E6,$F6,$D6 $DA7E DEFB $DE,$CE,$38,$7C,$EE,$C6,$C6,$C6 $DA86 DEFB $C6,$C6,$F8,$FC,$CE,$C6,$C6,$CE $DA8E DEFB $FC,$F8,$38,$7C,$EE,$C6,$C6,$C6 $DA96 DEFB $C6,$C6,$FC,$FE,$C6,$C6,$FE,$FC $DA9E DEFB $CE,$C6,$7C,$FE,$C6,$C0,$F8,$7C $DAA6 DEFB $0E,$06,$FE,$FE,$18,$18,$18,$18 $DAAE DEFB $18,$18,$C6,$C6,$C6,$C6,$C6,$C6 $DAB6 DEFB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$6C $DABE DEFB $6C,$38,$C6,$C6,$C6,$C6,$C6,$D6 $DAC6 DEFB $FE,$FE,$C6,$C6,$6C,$6C,$38,$38 $DACE DEFB $38,$6C,$CC,$CC,$CC,$CC,$CC,$FC $DAD6 DEFB $78,$30,$FE,$FE,$06,$0E,$1C,$38 $DADE DEFB $70,$E0,$7E,$7E,$60,$60,$60,$60 $DAE6 DEFB $60,$60,$C0,$40,$60,$20,$30,$10 $DAEE DEFB $18,$08,$7C,$7C,$0C,$0C,$0C,$0C $DAF6 DEFB $0C,$0C,$10,$10,$38,$38,$7C,$54 $DAFE DEFB $10,$10,$00,$00,$00,$00,$00,$00 $DB06 DEFB $00,$00,$38,$7C,$E6,$C0,$C0,$FC $DB0E DEFB $7C,$60,$00,$00,$00,$00,$3E,$7E $DB16 DEFB $E6,$C6,$C0,$C0,$C0,$C0,$F8,$FC $DB1E DEFB $CE,$C6,$00,$00,$00,$00,$3E,$7E $DB26 DEFB $E0,$C0,$06,$06,$06,$06,$3E,$7E $DB2E DEFB $E6,$C6,$00,$00,$00,$00,$38,$7C $DB36 DEFB $E6,$FE,$38,$7C,$E6,$C0,$F8,$F8 $DB3E DEFB $C0,$C0,$00,$00,$00,$00,$3E,$7E $DB46 DEFB $E6,$C6,$C0,$C0,$C0,$C0,$F8,$FC $DB4E DEFB $CE,$C6,$30,$30,$00,$00,$30,$30 $DB56 DEFB $30,$30,$06,$06,$00,$00,$06,$06 $DB5E DEFB $06,$06,$C0,$C0,$C0,$C0,$C6,$DE $DB66 DEFB $F8,$E0,$30,$30,$30,$30,$30,$30 $DB6E DEFB $30,$30,$00,$00,$00,$00,$EC,$FE $DB76 DEFB $FE,$D6,$00,$00,$00,$00,$F8,$FC $DB7E DEFB $CE,$C6,$00,$00,$00,$00,$38,$7C $DB86 DEFB $EE,$C6,$00,$00,$00,$00,$F8,$FC $DB8E DEFB $CE,$C6,$00,$00,$00,$00,$3E,$7E $DB96 DEFB $E6,$C6,$00,$00,$00,$00,$38,$7C $DB9E DEFB $E6,$C0,$00,$00,$00,$00,$7E,$FE $DBA6 DEFB $C0,$7C,$C0,$C0,$C0,$C0,$FC,$FC $DBAE DEFB $C0,$C0,$00,$00,$00,$00,$C6,$C6 $DBB6 DEFB $C6,$C6,$00,$00,$00,$00,$C6,$C6 $DBBE DEFB $6C,$6C,$00,$00,$00,$00,$C6,$C6 $DBC6 DEFB $C6,$D6,$00,$00,$00,$00,$C6,$EE $DBCE DEFB $7C,$38,$00,$00,$00,$00,$C6,$C6 $DBD6 DEFB $C6,$C6,$00,$00,$00,$00,$FE,$FE $DBDE DEFB $0C,$18,$0C,$18,$18,$18,$30,$E0 $DBE6 DEFB $30,$18,$18,$18,$18,$18,$18,$18 $DBEE DEFB $18,$18,$E0,$30,$30,$30,$18,$0E $DBF6 DEFB $18,$30,$00,$32,$7E,$4C,$00,$00 $DBFE DEFB $00,$00,$38,$7C,$C6,$92,$AA,$A2 $DC06 DEFB $AA,$92,$00,$00,$00,$00,$00,$00 $DC0E DEFB $00,$00,$00,$30,$30,$00,$00,$00 $DC16 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC1E DEFB $00,$00,$FE,$6C,$6C,$00,$00,$00 $DC26 DEFB $00,$00,$D6,$FE,$7C,$10,$00,$00 $DC2E DEFB $00,$00,$6A,$4A,$C4,$00,$00,$00 $DC36 DEFB $00,$00,$CE,$FA,$72,$00,$00,$00 $DC3E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC46 DEFB $00,$00,$18,$18,$0C,$00,$00,$00 $DC4E DEFB $00,$00,$30,$30,$60,$00,$00,$00 $DC56 DEFB $00,$00,$54,$92,$10,$00,$00,$00 $DC5E DEFB $00,$00,$18,$18,$00,$00,$00,$00 $DC66 DEFB $00,$00,$18,$18,$08,$10,$00,$00 $DC6E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC76 DEFB $00,$00,$00,$18,$18,$00,$00,$00 $DC7E DEFB $00,$00,$60,$40,$C0,$00,$00,$00 $DC86 DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DC8E DEFB $00,$00,$18,$7E,$7E,$00,$00,$00 $DC96 DEFB $00,$00,$C0,$FE,$FE,$00,$00,$00 $DC9E DEFB $00,$00,$CE,$7C,$38,$00,$00,$00 $DCA6 DEFB $00,$00,$06,$06,$06,$00,$00,$00 $DCAE DEFB $00,$00,$CE,$7C,$38,$00,$00,$00 $DCB6 DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DCBE DEFB $00,$00,$30,$30,$30,$00,$00,$00 $DCC6 DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DCCE DEFB $00,$00,$CE,$7C,$38,$00,$00,$00 $DCD6 DEFB $00,$00,$00,$18,$18,$00,$00,$00 $DCDE DEFB $00,$00,$00,$18,$18,$08,$10,$00 $DCE6 DEFB $00,$00,$18,$0C,$04,$00,$00,$00 $DCEE DEFB $00,$00,$FE,$00,$00,$00,$00,$00 $DCF6 DEFB $00,$00,$30,$60,$40,$00,$00,$00 $DCFE DEFB $00,$00,$00,$18,$18,$00,$00,$00 $DD06 DEFB $00,$00,$C0,$7E,$3C,$00,$00,$00 $DD0E DEFB $00,$00,$C6,$C6,$C6,$00,$00,$00 $DD16 DEFB $00,$00,$C6,$FE,$FC,$00,$00,$00 $DD1E DEFB $00,$00,$E6,$7C,$38,$00,$00,$00 $DD26 DEFB $00,$00,$CE,$FC,$F8,$00,$00,$00 $DD2E DEFB $00,$00,$C0,$FE,$FE,$00,$00,$00 $DD36 DEFB $00,$00,$C0,$C0,$C0,$00,$00,$00 $DD3E DEFB $00,$00,$E6,$7E,$3E,$00,$00,$00 $DD46 DEFB $00,$00,$C6,$C6,$C6,$00,$00,$00 $DD4E DEFB $00,$00,$30,$FC,$FC,$00,$00,$00 $DD56 DEFB $00,$00,$38,$F0,$E0,$00,$00,$00 $DD5E DEFB $00,$00,$CC,$C6,$C2,$00,$00,$00 $DD66 DEFB $00,$00,$C0,$FE,$FE,$00,$00,$00 $DD6E DEFB $00,$00,$C6,$C6,$C6,$00,$00,$00 $DD76 DEFB $00,$00,$CE,$C6,$C6,$00,$00,$00 $DD7E DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DD86 DEFB $00,$00,$C0,$C0,$C0,$00,$00,$00 $DD8E DEFB $00,$00,$EE,$7C,$38,$0E,$00,$00 $DD96 DEFB $00,$00,$C6,$C6,$C6,$00,$00,$00 $DD9E DEFB $00,$00,$C6,$FE,$7C,$00,$00,$00 $DDA6 DEFB $00,$00,$18,$18,$18,$00,$00,$00 $DDAE DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DDB6 DEFB $00,$00,$38,$10,$10,$00,$00,$00 $DDBE DEFB $00,$00,$EE,$C6,$C6,$00,$00,$00 $DDC6 DEFB $00,$00,$6C,$C6,$C6,$00,$00,$00 $DDCE DEFB $00,$00,$30,$30,$30,$00,$00,$00 $DDD6 DEFB $00,$00,$C0,$FE,$FE,$00,$00,$00 $DDDE DEFB $00,$00,$60,$7E,$7E,$00,$00,$00 $DDE6 DEFB $00,$00,$0C,$04,$06,$00,$00,$00 $DDEE DEFB $00,$00,$0C,$7C,$7C,$00,$00,$00 $DDF6 DEFB $00,$00,$38,$38,$28,$00,$00,$00 $DDFE DEFB $00,$00,$00,$00,$00,$00,$FF,$FF $DE06 DEFB $00,$00,$60,$FE,$FE,$00,$00,$00 $DE0E DEFB $00,$00,$E6,$7E,$3E,$00,$00,$00 $DE16 DEFB $00,$00,$CE,$FC,$F8,$00,$00,$00 $DE1E DEFB $00,$00,$E0,$7E,$3E,$00,$00,$00 $DE26 DEFB $00,$00,$E6,$7E,$3E,$00,$00,$00 $DE2E DEFB $00,$00,$E0,$7E,$3C,$00,$00,$00 $DE36 DEFB $00,$00,$C0,$C0,$C0,$00,$00,$00 $DE3E DEFB $00,$00,$E6,$7E,$3E,$06,$CE,$7C $DE46 DEFB $38,$00,$C6,$C6,$C6,$00,$00,$00 $DE4E DEFB $00,$00,$30,$FC,$FC,$00,$00,$00 $DE56 DEFB $00,$00,$06,$06,$06,$06,$CE,$7C $DE5E DEFB $38,$00,$F8,$DE,$C6,$00,$00,$00 $DE66 DEFB $00,$00,$30,$30,$18,$00,$00,$00 $DE6E DEFB $00,$00,$D6,$C6,$C6,$00,$00,$00 $DE76 DEFB $00,$00,$C6,$C6,$C6,$00,$00,$00 $DE7E DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DE86 DEFB $00,$00,$CE,$FC,$F8,$C0,$C0,$C0 $DE8E DEFB $C0,$00,$E6,$7E,$3E,$06,$06,$06 $DE96 DEFB $06,$00,$C0,$C0,$C0,$00,$00,$00 $DE9E DEFB $00,$00,$06,$FE,$FC,$00,$00,$00 $DEA6 DEFB $00,$00,$E6,$7C,$38,$00,$00,$00 $DEAE DEFB $00,$00,$EE,$7C,$38,$00,$00,$00 $DEB6 DEFB $00,$00,$38,$38,$10,$00,$00,$00 $DEBE DEFB $00,$00,$D6,$FE,$6C,$00,$00,$00 $DEC6 DEFB $00,$00,$7C,$EE,$C6,$00,$00,$00 $DECE DEFB $00,$00,$E6,$7E,$3E,$06,$CE,$7C $DED6 DEFB $38,$00,$30,$FE,$FE,$00,$00,$00 $DEDE DEFB $00,$00,$18,$18,$0C,$00,$00,$00 $DEE6 DEFB $00,$00,$18,$18,$18,$00,$00,$00 $DEEE DEFB $00,$00,$30,$30,$E0,$00,$00,$00 $DEF6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DEFE DEFB $00,$00,$C6,$7C,$38,$00,$00,$00 $DF06 DEFB $00,$00,$00,$00,$00,$00 ; Routine at DF0C ; ; Used by the routine at #R$FE69. c$DF0C JP $DF72 ; ; Routine at DF0F ; ; Used by the routines at #R$B8DD, #R$BB57 and #R$DF4E. c$DF0F PUSH BC ; $DF10 PUSH AF ; $DF11 LD A,B ; $DF12 AND $18 ; $DF14 OR $40 ; $DF16 LD H,A ; $DF17 LD A,B ; $DF18 AND $07 ; $DF1A RRCA ; $DF1B RRCA ; $DF1C RRCA ; $DF1D ADD A,C ; $DF1E LD L,A ; $DF1F POP AF ; $DF20 PUSH HL ; $DF21 LD BC,($5C36) ; $DF25 LD L,A ; $DF26 LD H,$00 ; $DF28 ADD HL,HL ; $DF29 ADD HL,HL ; $DF2A ADD HL,HL ; $DF2B ADD HL,BC ; $DF2C POP DE ; $DF2D PUSH DE ; $DF2E LD B,$08 ; *$DF30 LD A,(HL) ; $DF31 LD (DE),A ; $DF32 INC D ; $DF33 INC HL ; $DF34 DJNZ $DF30 ; $DF36 POP HL ; $DF37 LD A,H ; $DF38 RRCA ; $DF39 RRCA ; $DF3A RRCA ; $DF3B AND $03 ; $DF3D OR $58 ; $DF3F LD H,A ; $DF40 LD DE,($5C8F) ; $DF44 LD (HL),E ; $DF45 POP BC ; $DF46 RET ; ; Data block at DF47 b$DF47 DEFB $00,$00,$00 ; Data block at DF4A b$DF4A DEFB $14,$FB,$1D,$11 ; Routine at DF4E ; ; Used by the routines at #R$8F8B, #R$9A21, #R$9C0F, #R$A18A, #R$B375, #R$B3C9, ; #R$B8DD, #R$D763 and #R$DF72. c$DF4E LD HL,($DF4A) ; $DF51 DEC H ; $DF52 LD ($5C36),HL ; $DF55 LD BC,($DF4C) ; $DF59 LD A,$20 ; $DF5B CALL $DF0F ; $DF5E INC C ; $DF5F LD A,$21 ; $DF61 CALL $DF0F ; $DF64 DEC C ; $DF65 INC B ; $DF66 LD A,$22 ; $DF68 CALL $DF0F ; $DF6B INC C ; $DF6C LD A,$23 ; $DF6E CALL $DF0F ; $DF71 RET ; ; Preserve registers, ATTR T, CHARS, pointer to map_area_object_table. ; ; This is called by the ISR at #R$FE69 in order to animate the sprites. c$DF72 PUSH HL ; $DF73 PUSH BC ; $DF74 PUSH DE ; $DF75 PUSH AF ; $DF76 LD A,($5C8F) ; $DF79 PUSH AF ; $DF7A LD HL,($5C36) ; $DF7D PUSH HL ; $DF7E LD HL,$E01F ; $DF81 PUSH HL ; $DF82 CALL $028E ; Call KEY-SCAN in ROM. $DF85 POP HL ; Restore HL to point at map_area_object_table. $DF86 LD A,D ; {??? I need to come back to this bit as it seems to me $DF87 CP $28 ; that he is testing for CAPS SHIFT (see p.5 of the ROM $DF89 JR Z,$DF9D ; Disassembly book) and jumping to routine87_3 if so.} *$DF8B LD A,(HL) ; {Load byte from map area and jump to routine87_3 if it $DF8C CP $FF ; is 255 / -1 (????) to clean up and return because...??? $DF8E JR Z,$DF9D ; I need to check but maybe he puts FF at the very end of ; the playing area as a signal to stop.} $DF90 OR A ; {If the byte is not zero then jump to routine87_4 to $DF91 JR NZ,$DFAA ; process the current sprite.} *$DF93 LD A,(HL) ; {See if he has used a '1' again to represent no object - $DF94 CP $01 ; in which case we will set it back to 0.} $DF96 JR NZ,$DF9A ; If there is something on the map then jump to ; routine87_2. [this section is a bit of a rat's nest but ; I think I've convinced myself that either a '0' or a '1' ; on the map causes a '0' to be stored in the map before ; moving on] $DF98 XOR A ; {Reset the item on the map (remember: he uses 1 to mean $DF99 LD (HL),A ; nothing there, not just 0).} *$DF9A INC HL ; {Increment map pointer and jump back to routine87_0. $DF9B JR $DF8B ; } *$DF9D POP HL ; {CLEAN UP: Pop HL (map pointer); restore CHARS, ATTR T, $DF9E LD ($5C36),HL ; registers and return. $DFA1 POP AF ; $DFA2 LD ($5C8F),A ; $DFA5 POP AF ; $DFA6 POP DE ; $DFA7 POP BC ; $DFA8 POP HL ; $DFA9 RET ; } *$DFAA PUSH HL ; {CHECK WHETHER TO ANIMATE: Now we get to process a $DFAB PUSH AF ; sprite so preserve map pointer and current object. We ; know there is an object on the game board but it might ; be dead, or a wall, so we might not want to animate ; it... Let's check.} $DFAC LD DE,$00A1 ; {Look in map area table 2 - he seems to use this in $DFAF ADD HL,DE ; order to determine what to set as the animation frame in $DFB0 LD A,(HL) ; map area table 3. If map 2's byte is set to 1 then jump $DFB1 DEC A ; to routine87_5. Table 2 is starting to sound like a set $DFB2 JR Z,$DFB9 ; of flags for which objects to animate...} $DFB4 LD (HL),A ; Otherwise store the decremented byte in map 2 - until ; he stored the decremented value back in table 2, I was ; beginning to wonder if table 2 contains 0/1 as a flag to ; show whether a sprite is to be animated, and if so then ; table 3 contains the number of the animation frame. More ; work needed to figure out Table 2... But it looks like ; we only animate a sprite if there is a 1 in Table 2. I ; suspect this deals with dead creatures, and things like ; walls, being ignored. Make sense to ME, Big Boy! Hang on ; - or is it some kind of delay from the object's final ; (and UNKNOWN) attribute - where we only animate when we ; decrement it to 1?!!! $DFB5 POP AF ; {Restore current object and map area 1 pointer. $DFB6 POP HL ; } $DFB7 JR $DF93 ; NOT ANIMATING: Jump back to routine87_0 to process the ; next byte. *$DFB9 POP AF ; {WE *ARE* ANIMATING *NOW* THOUGH, BOSS! Restore $DFBA PUSH HL ; current object and map area 2 pointer.} $DFBB LD HL,$E3E0 ; Load HL with the address of the "nothing" object. $DFBE DEC A ; {We want to get a pointer into the object table for the $DFBF ADD A,A ; current object. Each pointer is a word, so calculate the $DFC0 LD B,$00 ; offset from pointer to the "nothing" object and load HL $DFC2 LD C,A ; with the pointer to our object that is under the game $DFC3 ADD HL,BC ; cursor. [Offset = 2 * (object number in A - 1)].} $DFC4 LD C,(HL) ; {HL now points at the correct place so load the two byte $DFC5 INC HL ; address of the current object into BC. $DFC6 LD B,(HL) ; } $DFC7 LD HL,$0016 ; {Add 22 to the pointer so that is now points to the $DFCA ADD HL,BC ; final attribute byte which is IRRITATINGLY UNKNOWN ; unlike the rest of them, e.g. look at the cobra at ; $E463. *** Except I now think it is the individual ; animation delay...} $DFCB LD A,(HL) ; Load the unknown object attribute into A from its ; pointer which is in HL - but could be an animation delay ; (see in a minute). OMG - I think we are resetting the ; animation delay!!! $DFCC EX DE,HL ; Save the contents of HL into DE. $DFCD POP HL ; {Restore the map area 2 pointer into HL and copy the $DFCE LD (HL),A ; unknown attribute value into map area 2. GREAT SCOTT! ; If we are only animating a sprite when its value is one, ; then could this final attribute of each object be ; contributing to how often we switch its frame? Some sort ; of individual delay?!!! In which case we've just ; stored the delay in Map 2.} $DFCF LD BC,$00A0 ; {Move the map area 2 pointer along into the $DFD2 ADD HL,BC ; corresponding byte of map area 3.} $DFD3 LD A,(HL) ; Load the byte from map area table 3 - this is the ; animation frame, I think. $DFD4 INC A ; Each sprite has a block of four frames. Increment A and ; compare with 4 to see if we have completed an animation ; cycle. $DFD5 CP $04 ; {If the unknown attribute has value of 4 then reset its $DFD7 JR NZ,$DFDA ; value in A --> back to frame 0. $DFD9 XOR A ; } *$DFDA CP $05 ; {... but if its value is 5 then decrement its value in A $DFDC JR NZ,$DFDF ; - back to '4' for the dead sprite image. $DFDE DEC A ; } *$DFDF LD (HL),A ; Store the new animation delay in map area table 2. ; (CONFIDENCE!) $DFE0 EX DE,HL ; {Reload the pointer to the corresponding byte in map $DFE1 INC HL ; area table 2, increment the pointer to look at the next ; map position.} $DFE2 LD B,$00 ; {Load the animation frame count into BC $DFE4 LD C,A ; } $DFE5 ADD HL,BC ; {Set HL to point to the correct pointer to the frame. $DFE6 ADD HL,BC ; $DFE7 ADD HL,BC ; } $DFE8 LD C,(HL) ; {Load the address of the next frame into BC. $DFE9 INC HL ; $DFEA LD B,(HL) ; } $DFEB LD ($DF4A),BC ; Store the address of the next frame in the variable ; pointed to by CDATA. $DFEF INC HL ; {Increment pointer and load values to store in ATTR T. $DFF0 LD A,(HL) ; $DFF1 LD ($5C8F),A ; } $DFF4 POP HL ; Restore whatever the fuck we put on the stack last time. ; FFS. Hang on... right, think it was map area pointer 1 ; 'cos that's what's needed next: $DFF5 LD ($E005),HL ; Store current sprite's colour info in UNKNOWN66 - but ; let's not give that variable a name just yet :-) $DFF8 PUSH HL ; Good God, this stack is getting a workout - let's bung ; the pointer into map area 1 back on it before we... $DFF9 CALL $E007 ; {Call the routine to convert an an object's address into $DFFC LD ($DF4C),HL ; display coordinates and store them in variable LC_POS.} $DFFF CALL $DF4E ; Call P_CHAR to print the four blocks of the sprite. $E002 POP HL ; Restore the pointer into map area 2 into HL. $E003 JR $DF93 ; Jump back to routine87_1 to keep processing. ; Used as a temporary variable to preserve pointer to game board object - see ; #R$D3C8 b$E005 DEFB $AD,$E0 ; Converts a pointer to a game board object into coordinates in HL as (L, H) ; ; Used by the routines at #R$9A21, #R$9C0F, #R$A18A, #R$B375, #R$B3C9, #R$B8DD, ; #R$C703, #R$D392, #R$D763 and #R$DF72. c$E007 LD HL,($E005) ; $E00A XOR A ; $E00B LD DE,$E01F ; $E00E SBC HL,DE ; $E010 LD A,L ; $E011 AND $F0 ; $E013 RRCA ; $E014 RRCA ; $E015 RRCA ; $E016 LD H,A ; $E017 LD A,L ; $E018 RLA ; $E019 AND $1E ; $E01B LD L,A ; $E01C INC H ; $E01D INC L ; $E01E RET ; ; Holds the IDs of objects to be *displayed* on the game board. See #R$E2A0. b$E01F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E027 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E02F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E037 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E03F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E047 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E04F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E057 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E05F DEFB $00,$00,$00,$00,$00,$00,$00,$10 $E067 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E06F DEFB $00,$00,$00,$00,$00,$00,$15,$00 $E077 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E07F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E087 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E08F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E097 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E09F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E0A7 DEFB $00,$00,$00,$00,$00,$00,$12,$00 $E0AF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E0B7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E0BF DEFB $FF ; The routine at $97D1 searches both the map AND map area 5 for the current ; wizard. This is making me think that map area 5 is a "working copy" of the ; whole map that might be copied back to the main map area at the end of ; everybody's turns. The only reason we'd need to search map area 5 is if he ; has moved and then wants to cast the spell on himself??? b$E0C0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0C8 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0D0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0D8 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0E0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0E8 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0F0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E0F8 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E100 DEFB $01,$01,$01,$01,$01,$01,$01,$05 $E108 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E110 DEFB $01,$01,$01,$01,$01,$01,$04,$01 $E118 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E120 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E128 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E130 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E138 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E140 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E148 DEFB $01,$01,$01,$01,$01,$01,$0F,$01 $E150 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E158 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E160 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E168 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E170 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E178 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E180 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E188 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E190 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E198 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E1A0 DEFB $01,$01,$01,$01,$01,$01,$04,$02 $E1A8 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E1B0 DEFB $01,$01,$01,$01,$01,$01,$03,$01 $E1B8 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E1C0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E1C8 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E1D0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E1D8 DEFB $01,$01,$01,$01,$01,$01,$01,$00 $E1E0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E1E8 DEFB $01,$01,$01,$01,$01,$01,$00,$00 $E1F0 DEFB $01,$01,$01,$01,$01,$01,$01,$01 $E1F8 DEFB $01,$01,$01,$01,$01,$01,$01,$00 ; Bit 4 is the ILLUSION flag for this creature. ; ; The bottom three bits hold the wizard number for the object in the ; corresponding slot in #R$E01F b$E200 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E208 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E210 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E218 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E220 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E228 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E238 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E240 DEFB $00,$00,$00,$00,$00,$00,$80,$81 $E248 DEFB $01,$01,$01,$01,$01,$01,$00,$00 $E250 DEFB $00,$00,$00,$00,$00,$00,$81,$00 $E258 DEFB $00,$00,$00,$00,$00,$01,$00,$00 $E260 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E268 DEFB $00,$00,$00,$01,$00,$01,$00,$00 $E270 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E278 DEFB $00,$00,$00,$00,$01,$00,$00,$00 $E280 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E288 DEFB $00,$00,$80,$00,$01,$00,$81,$00 $E290 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E298 DEFB $00,$00,$00,$01,$01,$01,$01,$00 ; This table holds the IDs of wizards who are mounted on the objects in ; #R$E01F. ; ; When I killed an enemy creature, a '*' appeared in the fuse fifth map area ; memory map - code $2A. b$E2A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E300 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E308 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E310 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E318 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E320 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E328 DEFB $00,$00,$00,$00,$00,$00,$2A,$00 $E330 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E338 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E340 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E348 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E350 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E358 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E360 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E368 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E370 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E378 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E380 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E388 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E390 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E398 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3B8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3E0 DEFB $40,$E4,$63,$E4,$D5,$E4,$21,$E5 $E3E8 DEFB $47,$E5,$B9,$E5,$DF,$E5,$2B,$E6 $E3F0 DEFB $77,$E6,$9F,$E7,$C5,$E7,$0E,$E8 $E3F8 DEFB $C9,$E8,$EF,$E8,$3B,$E9,$51,$E6 $E400 DEFB $33,$E7,$15,$E9,$7D,$E8,$05,$E6 $E408 DEFB $E6,$E6,$89,$E4,$6D,$E5,$9D,$E6 $E410 DEFB $61,$E9,$57,$E8,$A3,$E8,$93,$E5 $E418 DEFB $59,$E7,$FB,$E4,$7C,$E7,$EB,$E7 $E420 DEFB $34,$E8,$AF,$E4,$C3,$E6,$F3,$E9 $E428 DEFB $D0,$E9,$AD,$E9,$87,$E9,$16,$EA $E430 DEFB $39,$EA,$5C,$EA,$7F,$EA,$A2,$EA $E438 DEFB $C5,$EA,$E8,$EA,$0B,$EB,$2E,$EB $E440 DEFB $20,$20,$20,$20,$20,$20,$20,$20 $E448 DEFB $20,$20,$20,$20,$20,$00,$00,$00 $E450 DEFB $00,$00,$00,$00,$00,$00,$01,$51 $E458 DEFB $EB,$45,$51,$EB,$45,$51,$EB,$45 $E460 DEFB $51,$EB,$45,$4B,$49,$4E,$47,$20 $E468 DEFB $43,$4F,$42,$52,$41,$20,$20,$20 $E470 DEFB $04,$00,$00,$01,$01,$06,$01,$08 $E478 DEFB $01,$1E,$71,$EB,$44,$91,$EB,$44 $E480 DEFB $B3,$EB,$44,$91,$EB,$44,$53,$EC $E488 DEFB $44,$42,$41,$54,$20,$20,$20,$20 $E490 DEFB $20,$20,$20,$20,$20,$20,$01,$00 $E498 DEFB $00,$01,$05,$09,$04,$07,$FF,$08 $E4A0 DEFB $F3,$EB,$47,$13,$EC,$47,$33,$EC $E4A8 DEFB $47,$13,$EC,$47,$D3,$EB,$47,$42 $E4B0 DEFB $4C,$4F,$42,$20,$20,$20,$20,$20 $E4B8 DEFB $20,$20,$20,$20,$00,$00,$00,$00 $E4C0 DEFB $00,$00,$00,$00,$00,$28,$73,$EC $E4C8 DEFB $44,$93,$EC,$44,$B3,$EC,$44,$93 $E4D0 DEFB $EC,$44,$D3,$EC,$04,$44,$49,$52 $E4D8 DEFB $45,$20,$57,$4F,$4C,$46,$20,$20 $E4E0 DEFB $20,$20,$03,$00,$00,$02,$03,$07 $E4E8 DEFB $02,$08,$FF,$0C,$F3,$EC,$46,$13 $E4F0 DEFB $ED,$46,$33,$ED,$46,$13,$ED,$46 $E4F8 DEFB $53,$ED,$46,$53,$50,$45,$43,$54 $E500 DEFB $52,$45,$20,$20,$20,$20,$20,$20 $E508 DEFB $04,$00,$00,$02,$01,$06,$04,$05 $E510 DEFB $FF,$0F,$73,$ED,$47,$73,$ED,$45 $E518 DEFB $73,$ED,$43,$73,$ED,$41,$93,$ED $E520 DEFB $05,$47,$4F,$42,$4C,$49,$4E,$20 $E528 DEFB $20,$20,$20,$20,$20,$20,$02,$00 $E530 DEFB $00,$04,$01,$04,$04,$08,$FF,$0C $E538 DEFB $B3,$ED,$43,$D3,$ED,$43,$F3,$ED $E540 DEFB $43,$D3,$ED,$43,$13,$EE,$43,$43 $E548 DEFB $52,$4F,$43,$4F,$44,$49,$4C,$45 $E550 DEFB $20,$20,$20,$20,$05,$00,$00,$06 $E558 DEFB $01,$02,$02,$07,$00,$22,$33,$EE $E560 DEFB $44,$53,$EE,$44,$73,$EE,$44,$53 $E568 DEFB $EE,$44,$93,$EE,$44,$47,$52,$45 $E570 DEFB $45,$4E,$20,$44,$52,$41,$47,$4F $E578 DEFB $4E,$20,$05,$04,$06,$08,$03,$04 $E580 DEFB $04,$00,$FF,$20,$B3,$EE,$44,$D3 $E588 DEFB $EE,$44,$F3,$EE,$44,$D3,$EE,$44 $E590 DEFB $13,$EF,$44,$56,$41,$4D,$50,$49 $E598 DEFB $52,$45,$20,$20,$20,$20,$20,$20 $E5A0 DEFB $06,$00,$00,$08,$04,$06,$05,$01 $E5A8 DEFB $FE,$28,$33,$EF,$42,$53,$EF,$42 $E5B0 DEFB $73,$EF,$42,$53,$EF,$42,$93,$EF $E5B8 DEFB $42,$46,$41,$55,$4E,$20,$20,$20 $E5C0 DEFB $20,$20,$20,$20,$20,$20,$03,$00 $E5C8 DEFB $00,$02,$01,$07,$08,$07,$FF,$14 $E5D0 DEFB $B3,$EF,$47,$D3,$EF,$47,$F3,$EF $E5D8 DEFB $47,$D3,$EF,$47,$13,$F0,$47,$4C $E5E0 DEFB $49,$4F,$4E,$20,$20,$20,$20,$20 $E5E8 DEFB $20,$20,$20,$20,$06,$00,$00,$04 $E5F0 DEFB $04,$08,$03,$05,$01,$26,$33,$F0 $E5F8 DEFB $46,$53,$F0,$46,$73,$F0,$46,$53 $E600 DEFB $F0,$46,$93,$F0,$46,$47,$52,$59 $E608 DEFB $50,$48,$4F,$4E,$20,$20,$20,$20 $E610 DEFB $20,$20,$03,$00,$00,$05,$05,$05 $E618 DEFB $06,$05,$01,$0A,$B3,$F0,$07,$D3 $E620 DEFB $F0,$07,$F3,$F0,$07,$D3,$F0,$07 $E628 DEFB $13,$F1,$07,$45,$4C,$46,$20,$20 $E630 DEFB $20,$20,$20,$20,$20,$20,$20,$20 $E638 DEFB $01,$02,$06,$02,$01,$05,$07,$06 $E640 DEFB $02,$1A,$33,$F1,$44,$53,$F1,$44 $E648 DEFB $73,$F1,$44,$93,$F1,$44,$B3,$F1 $E650 DEFB $44,$48,$4F,$52,$53,$45,$20,$20 $E658 DEFB $20,$20,$20,$20,$20,$20,$01,$00 $E660 DEFB $00,$03,$04,$08,$01,$08,$01,$15 $E668 DEFB $D3,$F1,$06,$F3,$F1,$06,$13,$F2 $E670 DEFB $06,$F3,$F1,$06,$33,$F2,$06,$4F $E678 DEFB $52,$43,$20,$20,$20,$20,$20,$20 $E680 DEFB $20,$20,$20,$20,$02,$00,$00,$01 $E688 DEFB $01,$04,$04,$09,$FF,$15,$53,$F2 $E690 DEFB $45,$73,$F2,$45,$93,$F2,$45,$73 $E698 DEFB $F2,$45,$B3,$F2,$45,$52,$45,$44 $E6A0 DEFB $20,$44,$52,$41,$47,$4F,$4E,$20 $E6A8 DEFB $20,$20,$07,$03,$05,$09,$03,$04 $E6B0 DEFB $05,$00,$FE,$22,$D3,$F2,$42,$F3 $E6B8 DEFB $F2,$42,$13,$F3,$42,$F3,$F2,$42 $E6C0 DEFB $13,$EF,$42,$46,$49,$52,$45,$20 $E6C8 DEFB $20,$20,$20,$20,$20,$20,$20,$20 $E6D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E6D8 DEFB $00,$0C,$33,$F3,$46,$93,$F3,$46 $E6E0 DEFB $73,$F3,$46,$53,$F3,$46,$4D,$41 $E6E8 DEFB $4E,$54,$49,$43,$4F,$52,$45,$20 $E6F0 DEFB $20,$20,$20,$03,$01,$03,$06,$05 $E6F8 DEFB $06,$08,$03,$FF,$0D,$B3,$F3,$46 $E700 DEFB $D3,$F3,$46,$F3,$F3,$46,$D3,$F3 $E708 DEFB $46,$13,$F4,$46,$00,$54,$52,$4F $E710 DEFB $4C,$4C,$20,$20,$20,$20,$20,$20 $E718 DEFB $20,$20,$04,$00,$00,$08,$01,$01 $E720 DEFB $04,$06,$FF,$16,$33,$F4,$04,$53 $E728 DEFB $F4,$04,$73,$F4,$04,$53,$F4,$04 $E730 DEFB $93,$F4,$04,$55,$4E,$49,$43,$4F $E738 DEFB $52,$4E,$20,$20,$20,$20,$20,$20 $E740 DEFB $05,$00,$00,$04,$04,$09,$07,$05 $E748 DEFB $02,$10,$B3,$F4,$45,$D3,$F4,$45 $E750 DEFB $F3,$F4,$45,$D3,$F4,$45,$13,$F5 $E758 DEFB $45,$47,$48,$4F,$53,$54,$20,$20 $E760 DEFB $20,$20,$20,$20,$20,$20,$01,$00 $E768 DEFB $00,$03,$02,$09,$06,$04,$FF,$0F $E770 DEFB $33,$F5,$05,$53,$F5,$45,$73,$F5 $E778 DEFB $05,$93,$F5,$45,$57,$52,$41,$49 $E780 DEFB $54,$48,$20,$20,$20,$20,$20,$20 $E788 DEFB $20,$05,$00,$00,$05,$02,$04,$05 $E790 DEFB $04,$FF,$0A,$B3,$F5,$45,$D3,$F5 $E798 DEFB $45,$13,$F6,$45,$F3,$F5,$45,$42 $E7A0 DEFB $45,$41,$52,$20,$20,$20,$20,$20 $E7A8 DEFB $20,$20,$20,$20,$06,$00,$00,$07 $E7B0 DEFB $02,$06,$02,$05,$01,$17,$33,$F6 $E7B8 DEFB $42,$53,$F6,$42,$74,$F6,$42,$74 $E7C0 DEFB $F6,$42,$94,$F6,$42,$47,$4F,$52 $E7C8 DEFB $49,$4C,$4C,$41,$20,$20,$20,$20 $E7D0 DEFB $20,$20,$06,$00,$00,$05,$01,$04 $E7D8 DEFB $02,$06,$00,$12,$B4,$F6,$06,$D4 $E7E0 DEFB $F6,$06,$F4,$F6,$06,$D4,$F6,$06 $E7E8 DEFB $14,$F7,$06,$53,$4B,$45,$4C,$45 $E7F0 DEFB $54,$4F,$4E,$20,$20,$20,$20,$20 $E7F8 DEFB $03,$00,$00,$02,$01,$03,$04,$06 $E800 DEFB $FF,$11,$34,$F7,$47,$54,$F7,$47 $E808 DEFB $74,$F7,$47,$54,$F7,$47,$4F,$47 $E810 DEFB $52,$45,$20,$20,$20,$20,$20,$20 $E818 DEFB $20,$20,$20,$04,$00,$00,$07,$01 $E820 DEFB $03,$06,$06,$FF,$17,$94,$F7,$42 $E828 DEFB $B4,$F7,$42,$D4,$F7,$42,$B4,$F7 $E830 DEFB $42,$F4,$F7,$42,$5A,$4F,$4D,$42 $E838 DEFB $49,$45,$20,$20,$20,$20,$20,$20 $E840 DEFB $20,$01,$00,$00,$01,$01,$02,$03 $E848 DEFB $08,$FF,$19,$14,$F8,$45,$34,$F8 $E850 DEFB $45,$54,$F8,$45,$74,$F8,$45,$48 $E858 DEFB $41,$52,$50,$59,$20,$20,$20,$20 $E860 DEFB $20,$20,$20,$20,$04,$00,$00,$02 $E868 DEFB $05,$08,$05,$05,$FF,$0D,$94,$F8 $E870 DEFB $45,$B4,$F8,$45,$D4,$F8,$45,$B4 $E878 DEFB $F8,$45,$F4,$F8,$45,$50,$45,$47 $E880 DEFB $41,$53,$55,$53,$20,$20,$20,$20 $E888 DEFB $20,$20,$02,$00,$00,$04,$05,$06 $E890 DEFB $07,$05,$02,$10,$14,$F9,$47,$34 $E898 DEFB $F9,$47,$54,$F9,$47,$34,$F9,$47 $E8A0 DEFB $74,$F9,$47,$45,$41,$47,$4C,$45 $E8A8 DEFB $20,$20,$20,$20,$20,$20,$20,$20 $E8B0 DEFB $03,$00,$00,$03,$06,$08,$02,$06 $E8B8 DEFB $01,$0E,$94,$F9,$46,$B4,$F9,$46 $E8C0 DEFB $D4,$F9,$46,$B4,$F9,$46,$F4,$F9 $E8C8 DEFB $46,$48,$59,$44,$52,$41,$20,$20 $E8D0 DEFB $20,$20,$20,$20,$20,$20,$07,$00 $E8D8 DEFB $00,$08,$01,$04,$06,$04,$FF,$24 $E8E0 DEFB $14,$FA,$44,$34,$FA,$44,$54,$FA $E8E8 DEFB $44,$34,$FA,$44,$74,$FA,$44,$47 $E8F0 DEFB $49,$41,$4E,$54,$20,$52,$41,$54 $E8F8 DEFB $20,$20,$20,$20,$01,$00,$00,$01 $E900 DEFB $03,$08,$02,$09,$00,$0D,$94,$FA $E908 DEFB $07,$B4,$FA,$07,$D4,$FA,$07,$B4 $E910 DEFB $FA,$07,$F4,$FA,$07,$43,$45,$4E $E918 DEFB $54,$41,$55,$52,$20,$20,$20,$20 $E920 DEFB $20,$20,$01,$02,$04,$03,$04,$05 $E928 DEFB $05,$06,$01,$17,$14,$FB,$06,$34 $E930 DEFB $FB,$06,$54,$FB,$06,$34,$FB,$06 $E938 DEFB $74,$FB,$06,$47,$49,$41,$4E,$54 $E940 DEFB $20,$20,$20,$20,$20,$20,$20,$20 $E948 DEFB $09,$00,$00,$07,$02,$06,$05,$03 $E950 DEFB $01,$17,$94,$FB,$05,$B4,$FB,$05 $E958 DEFB $D4,$FB,$05,$B4,$FB,$05,$F4,$FB $E960 DEFB $05,$47,$4F,$4C,$44,$45,$4E,$20 $E968 DEFB $44,$52,$41,$47,$4F,$4E,$09,$05 $E970 DEFB $04,$09,$03,$05,$05,$00,$02,$1B $E978 DEFB $14,$FC,$46,$34,$FC,$46,$54,$FC $E980 DEFB $46,$34,$FC,$46,$74,$FC,$46,$44 $E988 DEFB $41,$52,$4B,$20,$43,$49,$54,$41 $E990 DEFB $44,$45,$4C,$20,$00,$00,$00,$00 $E998 DEFB $00,$00,$00,$00,$00,$32,$94,$FC $E9A0 DEFB $43,$94,$FC,$43,$94,$FC,$03,$94 $E9A8 DEFB $FC,$03,$94,$FC,$03,$4D,$41,$47 $E9B0 DEFB $49,$43,$20,$43,$41,$53,$54,$4C $E9B8 DEFB $45,$20,$00,$00,$00,$00,$00,$00 $E9C0 DEFB $00,$00,$00,$32,$B4,$FC,$45,$B4 $E9C8 DEFB $FC,$05,$B4,$FC,$45,$B4,$FC,$05 $E9D0 DEFB $53,$48,$41,$44,$4F,$57,$20,$57 $E9D8 DEFB $4F,$4F,$44,$20,$20,$02,$00,$00 $E9E0 DEFB $04,$00,$00,$09,$04,$FE,$1E,$D4 $E9E8 DEFB $FC,$05,$D4,$FC,$05,$D4,$FC,$45 $E9F0 DEFB $D4,$FC,$45,$4D,$41,$47,$49,$43 $E9F8 DEFB $20,$57,$4F,$4F,$44,$20,$20,$20 $EA00 DEFB $00,$00,$00,$05,$00,$00,$09,$06 $EA08 DEFB $02,$FA,$F4,$FC,$04,$F4,$FC,$44 $EA10 DEFB $F4,$FC,$06,$F4,$FC,$46,$57,$41 $EA18 DEFB $4C,$4C,$20,$20,$20,$20,$20,$20 $EA20 DEFB $20,$20,$20,$00,$00,$00,$00,$00 $EA28 DEFB $00,$00,$00,$00,$1E,$14,$FD,$72 $EA30 DEFB $14,$FD,$72,$14,$FD,$72,$14,$FD $EA38 DEFB $72,$4A,$55,$4C,$49,$41,$4E,$4C $EA40 DEFB $4C,$20,$20,$20,$20,$20,$01,$00 $EA48 DEFB $00,$01,$01,$03,$07,$0B,$00,$1E $EA50 DEFB $34,$FD,$42,$34,$FD,$42,$34,$FD $EA58 DEFB $42,$34,$FD,$42,$47,$41,$4E,$44 $EA60 DEFB $41,$4C,$46,$52,$54,$20,$20,$20 $EA68 DEFB $20,$01,$00,$00,$01,$01,$03,$06 $EA70 DEFB $0F,$00,$1E,$54,$FD,$43,$54,$FD $EA78 DEFB $43,$54,$FD,$43,$54,$FD,$43,$47 $EA80 DEFB $52,$45,$41,$54,$46,$4F,$47,$45 $EA88 DEFB $59,$20,$20,$20,$03,$00,$00,$03 $EA90 DEFB $01,$05,$06,$00,$00,$1E,$74,$FD $EA98 DEFB $44,$74,$FD,$44,$74,$FD,$44,$74 $EAA0 DEFB $FD,$44,$44,$59,$45,$52,$41,$52 $EAA8 DEFB $54,$49,$20,$20,$20,$20,$20,$01 $EAB0 DEFB $00,$00,$02,$01,$06,$07,$00,$00 $EAB8 DEFB $1E,$94,$FD,$45,$94,$FD,$45,$94 $EAC0 DEFB $FD,$45,$94,$FD,$45,$47,$4F,$57 $EAC8 DEFB $49,$4E,$20,$20,$20,$20,$20,$20 $EAD0 DEFB $20,$20,$02,$00,$00,$02,$01,$05 $EAD8 DEFB $00,$00,$00,$1E,$B4,$FD,$46,$B4 $EAE0 DEFB $FD,$46,$B4,$FD,$46,$B4,$FD,$46 $EAE8 DEFB $4D,$45,$52,$4C,$49,$4E,$20,$20 $EAF0 DEFB $20,$20,$20,$20,$20,$01,$00,$00 $EAF8 DEFB $04,$01,$04,$00,$00,$00,$1E,$D4 $EB00 DEFB $FD,$47,$D4,$FD,$47,$D4,$FD,$47 $EB08 DEFB $D4,$FD,$47,$49,$4C,$49,$41,$4E $EB10 DEFB $20,$52,$41,$4E,$45,$20,$20,$20 $EB18 DEFB $01,$00,$00,$02,$01,$04,$00,$00 $EB20 DEFB $00,$1E,$F4,$FD,$06,$F4,$FD,$06 $EB28 DEFB $F4,$FD,$06,$F4,$FD,$06,$41,$53 $EB30 DEFB $49,$4D,$4F,$4E,$4F,$20,$5A,$41 $EB38 DEFB $52,$4B,$20,$03,$00,$00,$02,$01 $EB40 DEFB $06,$00,$00,$00,$1E ; Data block at EB45 b$EB45 DEFB $14,$FE,$05,$14,$FE,$05,$14,$FE $EB4D DEFB $05,$14,$FE,$05,$00,$00,$00,$00 $EB55 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB5D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB65 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB6D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB75 DEFB $01,$00,$00,$00,$00,$00,$00,$00 $EB7D DEFB $80,$80,$80,$80,$00,$03,$04,$04 $EB85 DEFB $03,$00,$00,$00,$80,$00,$60,$10 $EB8D DEFB $E0,$00,$00,$00,$00,$00,$00,$00 $EB95 DEFB $00,$03,$01,$00,$00,$00,$00,$00 $EB9D DEFB $00,$00,$00,$80,$00,$03,$04,$04 $EBA5 DEFB $03,$00,$00,$00,$80,$00,$60,$10 $EBAD DEFB $E0,$00,$00,$00,$73,$F2,$00,$00 $EBB5 DEFB $00,$00,$00,$00,$07,$08,$00,$00 $EBBD DEFB $00,$00,$00,$00,$00,$80,$00,$03 $EBC5 DEFB $04,$04,$03,$00,$00,$00,$80,$00 $EBCD DEFB $60,$10,$E0,$00,$00,$00,$00,$00 $EBD5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EBDD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EBE5 DEFB $00,$00,$01,$13,$0C,$00,$00,$00 $EBED DEFB $00,$00,$00,$90,$60,$00,$00,$00 $EBF5 DEFB $00,$00,$00,$00,$0C,$13,$00,$00 $EBFD DEFB $00,$00,$00,$00,$60,$90,$01,$00 $EC05 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC0D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC15 DEFB $00,$00,$00,$00,$00,$0F,$00,$00 $EC1D DEFB $00,$00,$00,$00,$00,$E0,$11,$00 $EC25 DEFB $00,$00,$00,$00,$00,$00,$10,$00 $EC2D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC35 DEFB $00,$00,$00,$00,$00,$03,$00,$00 $EC3D DEFB $00,$00,$00,$00,$00,$80,$05,$18 $EC45 DEFB $00,$00,$00,$00,$00,$00,$40,$30 $EC4D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC55 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC5D DEFB $00,$00,$00,$00,$00,$00,$00,$1E $EC65 DEFB $20,$18,$07,$00,$00,$00,$00,$00 $EC6D DEFB $38,$C4,$00,$00,$00,$00,$01,$03 $EC75 DEFB $07,$07,$03,$33,$7F,$FF,$80,$C0 $EC7D DEFB $E0,$E0,$C0,$CC,$FF,$FF,$FF,$7F $EC85 DEFB $39,$03,$07,$0F,$0F,$06,$CC,$E0 $EC8D DEFB $FC,$BE,$9E,$8C,$00,$00,$00,$01 $EC95 DEFB $03,$03,$03,$01,$19,$7F,$00,$80 $EC9D DEFB $C0,$C0,$C0,$98,$FE,$FE,$7F,$19 $ECA5 DEFB $01,$03,$07,$07,$03,$00,$E0,$F0 $ECAD DEFB $BE,$9E,$8C,$80,$00,$00,$00,$00 $ECB5 DEFB $01,$03,$03,$01,$19,$3F,$00,$00 $ECBD DEFB $80,$C0,$C0,$98,$FC,$FC,$3F,$19 $ECC5 DEFB $03,$07,$07,$03,$00,$00,$E0,$F0 $ECCD DEFB $BC,$9C,$00,$00,$00,$00,$00,$00 $ECD5 DEFB $00,$00,$00,$00,$00,$0C,$00,$00 $ECDD DEFB $00,$00,$00,$00,$00,$60,$1A,$37 $ECE5 DEFB $3E,$6B,$7F,$00,$00,$00,$E0,$B0 $ECED DEFB $F0,$A8,$FE,$00,$00,$00,$00,$00 $ECF5 DEFB $00,$00,$08,$78,$1C,$27,$00,$00 $ECFD DEFB $00,$00,$00,$08,$08,$F0,$0F,$0A $ED05 DEFB $09,$05,$00,$00,$00,$00,$F0,$28 $ED0D DEFB $48,$50,$00,$00,$00,$00,$00,$00 $ED15 DEFB $00,$00,$08,$78,$1C,$27,$00,$00 $ED1D DEFB $00,$00,$00,$04,$08,$F0,$0F,$0C $ED25 DEFB $14,$14,$00,$00,$00,$00,$F0,$28 $ED2D DEFB $28,$24,$00,$00,$00,$00,$00,$00 $ED35 DEFB $00,$00,$08,$78,$3C,$27,$00,$00 $ED3D DEFB $00,$00,$00,$00,$0C,$F0,$0F,$0C $ED45 DEFB $28,$08,$00,$00,$00,$00,$F0,$1C $ED4D DEFB $12,$08,$00,$00,$00,$00,$00,$00 $ED55 DEFB $00,$00,$00,$00,$00,$04,$00,$00 $ED5D DEFB $00,$00,$00,$00,$00,$00,$05,$22 $ED65 DEFB $1B,$7F,$00,$00,$00,$00,$8A,$0C $ED6D DEFB $F0,$FE,$00,$00,$00,$00,$00,$00 $ED75 DEFB $00,$40,$20,$11,$0A,$07,$00,$00 $ED7D DEFB $00,$60,$60,$F0,$F0,$E0,$00,$00 $ED85 DEFB $01,$01,$01,$03,$00,$00,$E0,$F0 $ED8D DEFB $B0,$10,$10,$18,$00,$00,$00,$00 $ED95 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $ED9D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EDA5 DEFB $00,$01,$37,$3F,$00,$00,$00,$00 $EDAD DEFB $00,$00,$C4,$FC,$00,$00,$00,$00 $EDB5 DEFB $00,$61,$71,$37,$1F,$1B,$00,$00 $EDBD DEFB $00,$80,$80,$E0,$F0,$D8,$03,$07 $EDC5 DEFB $06,$06,$06,$0E,$00,$00,$C8,$E0 $EDCD DEFB $60,$60,$60,$E0,$00,$00,$00,$30 $EDD5 DEFB $30,$31,$31,$1F,$1F,$03,$00,$00 $EDDD DEFB $00,$80,$80,$E0,$F0,$D8,$03,$07 $EDE5 DEFB $06,$06,$06,$0E,$00,$00,$C8,$E0 $EDED DEFB $60,$60,$60,$E0,$00,$00,$00,$06 $EDF5 DEFB $0C,$0D,$19,$1F,$0F,$03,$00,$00 $EDFD DEFB $00,$80,$80,$E0,$F0,$D8,$03,$07 $EE05 DEFB $06,$06,$06,$0E,$00,$00,$C8,$E0 $EE0D DEFB $60,$60,$60,$E0,$00,$00,$00,$00 $EE15 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE1D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE25 DEFB $00,$11,$3B,$3F,$00,$00,$00,$00 $EE2D DEFB $00,$E2,$FE,$FE,$00,$00,$00,$00 $EE35 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE3D DEFB $00,$00,$00,$00,$00,$0C,$00,$01 $EE45 DEFB $0F,$1F,$35,$01,$00,$00,$02,$FC $EE4D DEFB $F8,$24,$04,$00,$00,$00,$00,$00 $EE55 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE5D DEFB $00,$00,$00,$00,$00,$0C,$00,$1D $EE65 DEFB $7F,$1F,$35,$01,$00,$00,$02,$FC $EE6D DEFB $F8,$24,$04,$00,$00,$00,$00,$00 $EE75 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE7D DEFB $00,$00,$00,$00,$00,$0C,$70,$1D $EE85 DEFB $0F,$1F,$35,$01,$00,$00,$02,$FC $EE8D DEFB $F8,$24,$04,$00,$00,$00,$00,$00 $EE95 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE9D DEFB $00,$00,$00,$00,$00,$00,$00,$20 $EEA5 DEFB $19,$0F,$7F,$00,$00,$00,$10,$0C $EEAD DEFB $26,$FE,$FC,$00,$00,$00,$00,$F1 $EEB5 DEFB $18,$3C,$4C,$19,$31,$73,$00,$C0 $EEBD DEFB $E0,$F0,$F0,$F8,$E4,$00,$7A,$7F $EEC5 DEFB $3F,$1F,$14,$14,$24,$08,$70,$F8 $EECD DEFB $FE,$F9,$2D,$25,$44,$08,$60,$18 $EED5 DEFB $0C,$3E,$06,$0C,$38,$71,$00,$00 $EEDD DEFB $40,$70,$78,$FC,$FE,$C0,$7B,$7F $EEE5 DEFB $3F,$1F,$14,$14,$24,$08,$70,$F8 $EEED DEFB $FE,$F9,$2D,$25,$44,$08,$18,$06 $EEF5 DEFB $03,$1F,$03,$0E,$38,$70,$00,$00 $EEFD DEFB $00,$00,$10,$3C,$7E,$F8,$7B,$7F $EF05 DEFB $3F,$1F,$14,$14,$24,$08,$F0,$F8 $EF0D DEFB $FE,$F9,$2D,$25,$44,$08,$00,$00 $EF15 DEFB $00,$00,$00,$00,$00,$3C,$00,$00 $EF1D DEFB $00,$00,$00,$00,$00,$00,$73,$E8 $EF25 DEFB $C5,$E7,$7F,$3F,$00,$00,$08,$28 $EF2D DEFB $9A,$F9,$FD,$FE,$00,$00,$00,$00 $EF35 DEFB $00,$00,$01,$01,$03,$03,$00,$00 $EF3D DEFB $00,$00,$80,$80,$C0,$C0,$07,$07 $EF45 DEFB $07,$0F,$0A,$02,$00,$00,$E0,$E0 $EF4D DEFB $F0,$F0,$48,$40,$00,$00,$00,$00 $EF55 DEFB $00,$00,$01,$01,$03,$03,$00,$00 $EF5D DEFB $00,$00,$80,$80,$C0,$E0,$03,$07 $EF65 DEFB $07,$06,$02,$02,$00,$00,$F0,$F0 $EF6D DEFB $F8,$5C,$40,$40,$00,$00,$00,$00 $EF75 DEFB $00,$00,$01,$01,$03,$03,$00,$00 $EF7D DEFB $00,$00,$80,$80,$C0,$E0,$03,$03 $EF85 DEFB $07,$06,$02,$02,$00,$00,$F0,$F8 $EF8D DEFB $CC,$44,$40,$40,$00,$00,$00,$00 $EF95 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF9D DEFB $00,$00,$00,$00,$00,$00,$02,$02 $EFA5 DEFB $02,$03,$37,$3F,$00,$00,$00,$00 $EFAD DEFB $00,$80,$E4,$FC,$00,$00,$00,$00 $EFB5 DEFB $01,$01,$01,$23,$15,$09,$00,$00 $EFBD DEFB $40,$80,$80,$C0,$A0,$90,$03,$03 $EFC5 DEFB $03,$01,$01,$02,$00,$00,$C0,$C0 $EFCD DEFB $60,$20,$20,$40,$00,$00,$00,$00 $EFD5 DEFB $01,$11,$11,$0B,$0D,$01,$00,$00 $EFDD DEFB $40,$80,$80,$C0,$A0,$90,$03,$03 $EFE5 DEFB $03,$01,$01,$02,$00,$00,$C0,$C0 $EFED DEFB $60,$20,$20,$40,$00,$00,$00,$00 $EFF5 DEFB $05,$05,$09,$0F,$01,$01,$00,$00 $EFFD DEFB $40,$80,$80,$C0,$A0,$90,$03,$03 $F005 DEFB $03,$01,$01,$02,$00,$00,$C0,$C0 $F00D DEFB $60,$20,$20,$40,$00,$00,$00,$00 $F015 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F01D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F025 DEFB $00,$01,$37,$7F,$00,$00,$00,$00 $F02D DEFB $04,$38,$E2,$FC,$00,$00,$00,$00 $F035 DEFB $00,$00,$18,$7E,$7F,$3F,$00,$00 $F03D DEFB $00,$00,$00,$00,$F0,$F8,$1F,$0F $F045 DEFB $12,$22,$04,$00,$00,$00,$FC,$2C $F04D DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F055 DEFB $00,$18,$7C,$3E,$7F,$3F,$00,$00 $F05D DEFB $00,$00,$00,$00,$F0,$F8,$1F,$0F $F065 DEFB $12,$22,$04,$00,$00,$00,$FC,$2C $F06D DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F075 DEFB $00,$2C,$1C,$1E,$3F,$1F,$00,$00 $F07D DEFB $00,$00,$00,$00,$F0,$F8,$1F,$0F $F085 DEFB $12,$22,$04,$00,$00,$00,$FC,$2C $F08D DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F095 DEFB $00,$00,$00,$00,$00,$04,$00,$00 $F09D DEFB $00,$00,$00,$00,$00,$22,$09,$1A $F0A5 DEFB $7F,$7F,$3F,$1C,$00,$00,$92,$14 $F0AD DEFB $FC,$FC,$F8,$00,$00,$00,$00,$00 $F0B5 DEFB $03,$30,$79,$0D,$07,$03,$00,$80 $F0BD DEFB $C0,$C6,$8F,$98,$F0,$E0,$03,$03 $F0C5 DEFB $02,$02,$02,$00,$00,$00,$F0,$D0 $F0CD DEFB $50,$50,$40,$00,$00,$00,$00,$01 $F0D5 DEFB $07,$03,$01,$01,$0F,$7F,$00,$00 $F0DD DEFB $80,$80,$80,$80,$F8,$FF,$03,$03 $F0E5 DEFB $02,$02,$02,$00,$00,$00,$F0,$D0 $F0ED DEFB $50,$50,$40,$00,$00,$00,$00,$02 $F0F5 DEFB $0F,$03,$05,$01,$07,$0F,$00,$00 $F0FD DEFB $00,$00,$80,$80,$F0,$F8,$1F,$33 $F105 DEFB $42,$02,$02,$00,$00,$00,$FC,$D6 $F10D DEFB $51,$50,$40,$00,$00,$00,$00,$00 $F115 DEFB $00,$00,$00,$00,$00,$11,$00,$00 $F11D DEFB $00,$00,$00,$00,$00,$08,$3A,$62 $F125 DEFB $73,$3F,$1F,$07,$00,$00,$08,$18 $F12D DEFB $F0,$F8,$FE,$C0,$00,$00,$00,$00 $F135 DEFB $02,$06,$06,$3F,$06,$06,$00,$00 $F13D DEFB $00,$C0,$C0,$C0,$C0,$C0,$02,$00 $F145 DEFB $01,$01,$02,$02,$00,$00,$C0,$C0 $F14D DEFB $40,$40,$40,$40,$00,$00,$00,$00 $F155 DEFB $02,$05,$05,$1F,$05,$05,$00,$00 $F15D DEFB $00,$C0,$C0,$E0,$C0,$C0,$02,$00 $F165 DEFB $01,$01,$02,$02,$00,$00,$C0,$C0 $F16D DEFB $40,$40,$40,$40,$00,$00,$00,$00 $F175 DEFB $02,$05,$04,$0F,$04,$05,$00,$00 $F17D DEFB $00,$C0,$C0,$F0,$C0,$C0,$02,$00 $F185 DEFB $01,$01,$02,$02,$00,$00,$C0,$C0 $F18D DEFB $40,$40,$40,$40,$00,$00,$00,$00 $F195 DEFB $02,$04,$04,$F7,$04,$04,$00,$00 $F19D DEFB $00,$C0,$C0,$F0,$E0,$C0,$02,$00 $F1A5 DEFB $01,$01,$02,$02,$00,$00,$C0,$C0 $F1AD DEFB $40,$40,$40,$40,$00,$00,$00,$00 $F1B5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F1BD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F1C5 DEFB $03,$04,$1B,$1F,$00,$00,$00,$00 $F1CD DEFB $E0,$90,$E4,$FC,$00,$00,$00,$00 $F1D5 DEFB $00,$00,$30,$78,$DF,$1F,$00,$00 $F1DD DEFB $00,$00,$00,$00,$EC,$F2,$0F,$14 $F1E5 DEFB $14,$12,$0A,$00,$00,$00,$F0,$28 $F1ED DEFB $28,$48,$50,$00,$00,$00,$00,$00 $F1F5 DEFB $00,$00,$30,$78,$DF,$1F,$00,$00 $F1FD DEFB $00,$00,$00,$00,$EC,$F2,$0F,$14 $F205 DEFB $14,$24,$08,$00,$00,$00,$F0,$28 $F20D DEFB $28,$24,$20,$00,$00,$00,$00,$00 $F215 DEFB $00,$00,$30,$78,$DF,$1F,$00,$00 $F21D DEFB $00,$00,$00,$00,$EC,$F2,$0F,$34 $F225 DEFB $44,$08,$08,$00,$00,$00,$F0,$2C $F22D DEFB $22,$10,$10,$00,$00,$00,$00,$00 $F235 DEFB $00,$00,$00,$00,$00,$02,$00,$00 $F23D DEFB $00,$00,$00,$00,$00,$09,$04,$15 $F245 DEFB $33,$7F,$7F,$00,$00,$00,$CA,$0A $F24D DEFB $FC,$FC,$FB,$00,$00,$00,$00,$00 $F255 DEFB $00,$01,$01,$40,$23,$15,$00,$00 $F25D DEFB $80,$80,$80,$B0,$78,$78,$09,$01 $F265 DEFB $02,$02,$06,$00,$00,$00,$B0,$C0 $F26D DEFB $40,$40,$C0,$00,$00,$00,$00,$00 $F275 DEFB $00,$11,$11,$10,$13,$0D,$00,$00 $F27D DEFB $80,$80,$80,$B0,$78,$78,$01,$01 $F285 DEFB $02,$02,$06,$00,$00,$00,$B0,$C0 $F28D DEFB $40,$40,$C0,$00,$00,$00,$00,$00 $F295 DEFB $02,$05,$05,$08,$0F,$01,$00,$00 $F29D DEFB $80,$80,$80,$B0,$78,$78,$01,$01 $F2A5 DEFB $02,$02,$06,$00,$00,$00,$B0,$C0 $F2AD DEFB $40,$40,$C0,$00,$00,$00,$00,$00 $F2B5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F2BD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F2C5 DEFB $01,$1B,$1F,$00,$00,$00,$00,$00 $F2CD DEFB $C0,$E4,$FC,$00,$00,$00,$00,$00 $F2D5 DEFB $00,$10,$F8,$18,$31,$31,$00,$00 $F2DD DEFB $00,$00,$80,$C0,$E2,$F2,$3B,$1E $F2E5 DEFB $0F,$17,$15,$24,$08,$01,$8A,$02 $F2ED DEFB $E1,$F1,$F9,$79,$3A,$FC,$00,$70 $F2F5 DEFB $08,$7C,$0C,$18,$18,$1D,$00,$00 $F2FD DEFB $00,$80,$E0,$F0,$FD,$C1,$0F,$1F $F305 DEFB $27,$29,$08,$00,$00,$01,$01,$C2 $F30D DEFB $E2,$F2,$79,$79,$3A,$FC,$30,$0C $F315 DEFB $06,$0E,$3C,$0C,$0E,$1F,$00,$00 $F31D DEFB $20,$38,$3E,$78,$C2,$82,$23,$45 $F325 DEFB $08,$08,$00,$00,$00,$01,$C2,$E1 $F32D DEFB $F1,$F9,$7A,$7A,$3A,$FC,$20,$20 $F335 DEFB $21,$03,$05,$04,$04,$02,$04,$84 $F33D DEFB $00,$00,$00,$80,$44,$48,$12,$22 $F345 DEFB $32,$54,$4B,$27,$1F,$00,$48,$54 $F34D DEFB $92,$92,$6A,$9C,$F8,$00,$00,$00 $F355 DEFB $20,$30,$11,$11,$01,$41,$00,$00 $F35D DEFB $04,$04,$08,$80,$58,$54,$62,$52 $F365 DEFB $92,$94,$4B,$24,$1D,$00,$54,$52 $F36D DEFB $8A,$92,$6A,$94,$B8,$00,$01,$00 $F375 DEFB $20,$30,$10,$18,$28,$48,$00,$00 $F37D DEFB $04,$04,$18,$30,$50,$48,$8A,$93 $F385 DEFB $92,$94,$4B,$27,$1F,$00,$24,$12 $F38D DEFB $92,$92,$6A,$9C,$F8,$00,$00,$00 $F395 DEFB $01,$00,$01,$01,$01,$41,$00,$80 $F39D DEFB $00,$00,$00,$80,$58,$54,$62,$52 $F3A5 DEFB $92,$94,$4B,$24,$1D,$00,$54,$52 $F3AD DEFB $8A,$92,$6A,$94,$B8,$00,$07,$08 $F3B5 DEFB $08,$65,$65,$3B,$3F,$3F,$80,$FC $F3BD DEFB $F0,$C5,$82,$0D,$F0,$F8,$1F,$0F $F3C5 DEFB $12,$22,$04,$00,$00,$00,$FC,$2C $F3CD DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F3D5 DEFB $00,$67,$68,$3B,$3F,$3F,$00,$00 $F3DD DEFB $00,$05,$FE,$CD,$F0,$F8,$1F,$0F $F3E5 DEFB $12,$22,$04,$00,$00,$00,$FC,$2C $F3ED DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F3F5 DEFB $00,$60,$60,$3B,$3F,$3F,$00,$00 $F3FD DEFB $00,$05,$02,$0D,$F0,$F8,$1F,$0F $F405 DEFB $12,$22,$04,$00,$00,$00,$FC,$7C $F40D DEFB $24,$44,$08,$00,$00,$00,$00,$00 $F415 DEFB $00,$00,$00,$00,$00,$02,$00,$00 $F41D DEFB $00,$00,$00,$00,$00,$04,$14,$0C $F425 DEFB $07,$6F,$7F,$03,$00,$00,$32,$0A $F42D DEFB $FC,$FC,$FF,$E0,$00,$00,$00,$00 $F435 DEFB $03,$03,$01,$FF,$4F,$07,$00,$00 $F43D DEFB $80,$80,$00,$E0,$F0,$D8,$03,$03 $F445 DEFB $06,$06,$06,$0F,$00,$00,$CC,$C0 $F44D DEFB $C0,$C0,$C0,$C0,$00,$00,$00,$00 $F455 DEFB $23,$33,$19,$0F,$07,$07,$00,$00 $F45D DEFB $80,$80,$00,$E0,$F0,$D8,$03,$03 $F465 DEFB $06,$06,$06,$0F,$00,$00,$CC,$C0 $F46D DEFB $C0,$C0,$C0,$C0,$00,$00,$00,$08 $F475 DEFB $1B,$0B,$0D,$0F,$07,$07,$00,$00 $F47D DEFB $80,$80,$00,$E0,$F0,$D8,$03,$03 $F485 DEFB $06,$06,$06,$0F,$00,$00,$CC,$C0 $F48D DEFB $C0,$C0,$C0,$C0,$00,$00,$00,$00 $F495 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F49D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F4A5 DEFB $00,$03,$37,$3F,$00,$00,$00,$00 $F4AD DEFB $00,$C4,$FC,$FC,$00,$00,$00,$00 $F4B5 DEFB $40,$20,$18,$3C,$6F,$0F,$00,$00 $F4BD DEFB $00,$00,$00,$00,$F6,$F9,$07,$0A $F4C5 DEFB $0A,$09,$05,$00,$00,$00,$F8,$14 $F4CD DEFB $14,$24,$28,$00,$00,$00,$00,$00 $F4D5 DEFB $40,$20,$18,$3C,$6F,$0F,$00,$00 $F4DD DEFB $00,$00,$00,$00,$F7,$F8,$07,$0A $F4E5 DEFB $0A,$12,$04,$00,$00,$00,$F8,$14 $F4ED DEFB $14,$12,$10,$00,$00,$00,$00,$00 $F4F5 DEFB $40,$20,$18,$3C,$6F,$0F,$00,$00 $F4FD DEFB $00,$00,$00,$01,$F6,$F8,$07,$1A $F505 DEFB $22,$04,$04,$00,$00,$00,$F8,$16 $F50D DEFB $11,$08,$08,$00,$00,$00,$00,$00 $F515 DEFB $00,$00,$00,$00,$00,$01,$00,$00 $F51D DEFB $00,$00,$00,$00,$00,$09,$02,$8A $F525 DEFB $59,$3F,$3F,$00,$00,$00,$6A,$8A $F52D DEFB $FC,$FC,$FB,$00,$00,$00,$00,$00 $F535 DEFB $40,$47,$69,$F9,$FF,$CE,$00,$04 $F53D DEFB $0C,$CE,$3E,$3E,$E3,$43,$CE,$4F $F545 DEFB $45,$05,$40,$02,$02,$00,$41,$60 $F54D DEFB $E1,$61,$D0,$80,$10,$44,$00,$00 $F555 DEFB $00,$07,$09,$79,$FF,$FE,$00,$00 $F55D DEFB $04,$CC,$3C,$3E,$EE,$47,$CE,$0E $F565 DEFB $47,$43,$04,$45,$00,$02,$40,$40 $F56D DEFB $60,$A1,$21,$90,$80,$10,$00,$00 $F575 DEFB $00,$07,$09,$19,$3F,$FE,$00,$00 $F57D DEFB $00,$C0,$24,$3C,$FE,$7E,$CE,$CE $F585 DEFB $4E,$07,$43,$44,$04,$40,$63,$40 $F58D DEFB $40,$60,$A0,$A1,$00,$90,$00,$00 $F595 DEFB $00,$07,$49,$79,$FF,$FE,$00,$00 $F59D DEFB $04,$C4,$2C,$3E,$9A,$66,$8E,$0E $F5A5 DEFB $07,$03,$00,$00,$44,$04,$43,$41 $F5AD DEFB $40,$E0,$40,$80,$01,$20,$00,$00 $F5B5 DEFB $00,$00,$00,$11,$0A,$04,$00,$00 $F5BD DEFB $00,$C0,$C0,$E0,$D0,$D0,$00,$01 $F5C5 DEFB $01,$02,$02,$00,$00,$00,$C0,$20 $F5CD DEFB $20,$10,$10,$00,$00,$00,$00,$00 $F5D5 DEFB $01,$01,$3B,$2E,$35,$1B,$00,$00 $F5DD DEFB $E0,$20,$30,$18,$28,$28,$0F,$02 $F5E5 DEFB $06,$05,$05,$07,$00,$00,$38,$D0 $F5ED DEFB $D8,$E8,$28,$38,$00,$00,$07,$04 $F5F5 DEFB $FC,$80,$80,$91,$8A,$84,$F8,$08 $F5FD DEFB $0C,$C6,$C2,$E2,$D2,$D2,$C0,$61 $F605 DEFB $31,$12,$12,$10,$10,$1F,$C2,$22 $F60D DEFB $22,$12,$12,$02,$02,$FE,$00,$03 $F615 DEFB $02,$7E,$44,$40,$40,$60,$00,$F0 $F61D DEFB $10,$18,$0C,$04,$04,$04,$30,$1C $F625 DEFB $08,$08,$08,$08,$0F,$00,$04,$0C $F62D DEFB $04,$04,$C4,$C4,$FC,$00,$00,$00 $F635 DEFB $03,$07,$03,$01,$0D,$07,$00,$00 $F63D DEFB $00,$80,$C0,$C0,$E0,$E0,$03,$01 $F645 DEFB $03,$03,$03,$03,$00,$00,$E0,$E0 $F64D DEFB $E0,$60,$60,$60,$00,$00,$00,$00 $F655 DEFB $03,$07,$03,$01,$07,$1F,$00,$00 $F65D DEFB $00,$80,$C0,$C0,$E0,$E0,$11,$01 $F665 DEFB $03,$03,$03,$03,$00,$00,$E0,$E0 $F66D DEFB $E0,$60,$60,$60,$00,$00,$00,$00 $F675 DEFB $00,$03,$07,$03,$01,$03,$07,$00 $F67D DEFB $00,$00,$80,$C0,$C0,$E0,$E0,$0D $F685 DEFB $09,$03,$03,$03,$03,$00,$00,$E0 $F68D DEFB $E0,$E0,$60,$60,$60,$00,$00,$00 $F695 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F69D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F6A5 DEFB $00,$27,$7F,$7F,$3F,$00,$00,$00 $F6AD DEFB $C0,$80,$E2,$FE,$FE,$00,$00,$00 $F6B5 DEFB $00,$19,$33,$33,$3E,$1E,$07,$00 $F6BD DEFB $00,$80,$80,$80,$F8,$F8,$20,$03 $F6C5 DEFB $03,$07,$0E,$0C,$1C,$00,$00,$C0 $F6CD DEFB $C0,$E0,$70,$30,$38,$00,$00,$00 $F6D5 DEFB $00,$01,$07,$0D,$1F,$0F,$07,$00 $F6DD DEFB $00,$80,$E0,$B0,$F8,$F0,$E0,$03 $F6E5 DEFB $03,$07,$0E,$0C,$1C,$00,$00,$C0 $F6ED DEFB $C0,$E0,$70,$30,$38,$00,$00,$00 $F6F5 DEFB $00,$01,$01,$01,$1F,$1F,$04,$00 $F6FD DEFB $00,$98,$CC,$CC,$7C,$78,$E0,$03 $F705 DEFB $03,$07,$0E,$0C,$1C,$00,$00,$C0 $F70D DEFB $C0,$E0,$70,$30,$38,$00,$00,$00 $F715 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F71D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F725 DEFB $00,$01,$37,$3F,$3F,$00,$00,$00 $F72D DEFB $00,$80,$E2,$FE,$FE,$00,$00,$00 $F735 DEFB $01,$01,$00,$03,$05,$09,$F0,$00 $F73D DEFB $80,$88,$88,$F0,$C0,$C0,$80,$01 $F745 DEFB $01,$01,$01,$01,$01,$03,$00,$C0 $F74D DEFB $20,$10,$10,$20,$40,$20,$00,$00 $F755 DEFB $01,$01,$00,$03,$45,$29,$10,$00 $F75D DEFB $80,$80,$80,$FC,$C0,$C0,$80,$01 $F765 DEFB $01,$02,$02,$02,$01,$03,$00,$C0 $F76D DEFB $40,$20,$20,$20,$40,$60,$00,$00 $F775 DEFB $01,$11,$10,$17,$19,$01,$00,$00 $F77D DEFB $80,$80,$80,$F0,$C8,$C8,$80,$01 $F785 DEFB $02,$04,$04,$02,$01,$02,$00,$C0 $F78D DEFB $40,$40,$40,$40,$40,$60,$00,$00 $F795 DEFB $00,$00,$01,$01,$07,$4F,$FB,$00 $F79D DEFB $00,$00,$80,$80,$E0,$F0,$D8,$F3 $F7A5 DEFB $43,$07,$06,$06,$0E,$00,$00,$C8 $F7AD DEFB $E0,$F0,$30,$38,$00,$00,$00,$00 $F7B5 DEFB $00,$00,$61,$71,$3F,$1F,$03,$00 $F7BD DEFB $00,$00,$80,$80,$E0,$F0,$D8,$03 $F7C5 DEFB $03,$07,$06,$06,$0E,$00,$00,$C8 $F7CD DEFB $C0,$E0,$60,$60,$70,$00,$00,$00 $F7D5 DEFB $00,$18,$3D,$19,$1F,$0F,$03,$00 $F7DD DEFB $00,$00,$80,$80,$E0,$F0,$D8,$03 $F7E5 DEFB $07,$0F,$0C,$1C,$00,$00,$00,$C8 $F7ED DEFB $C0,$E0,$60,$60,$70,$00,$00,$00 $F7F5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F7FD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F805 DEFB $00,$01,$1B,$1F,$1F,$00,$00,$00 $F80D DEFB $00,$80,$E4,$FC,$FC,$00,$00,$00 $F815 DEFB $00,$01,$01,$00,$1F,$01,$01,$00 $F81D DEFB $00,$80,$80,$80,$80,$80,$80,$01 $F825 DEFB $02,$04,$04,$04,$0C,$00,$00,$80 $F82D DEFB $80,$80,$40,$20,$40,$00,$00,$00 $F835 DEFB $00,$01,$01,$00,$1F,$01,$01,$00 $F83D DEFB $00,$80,$80,$80,$80,$80,$80,$01 $F845 DEFB $02,$02,$02,$02,$06,$00,$00,$80 $F84D DEFB $80,$80,$70,$10,$00,$00,$00,$00 $F855 DEFB $00,$01,$01,$00,$1F,$01,$01,$00 $F85D DEFB $00,$80,$80,$80,$80,$80,$80,$01 $F865 DEFB $01,$01,$01,$01,$03,$00,$00,$80 $F86D DEFB $00,$00,$E0,$20,$00,$00,$00,$00 $F875 DEFB $00,$01,$01,$00,$1F,$01,$01,$00 $F87D DEFB $00,$80,$80,$80,$80,$80,$80,$01 $F885 DEFB $02,$04,$02,$01,$03,$00,$00,$80 $F88D DEFB $80,$80,$80,$80,$80,$00,$00,$00 $F895 DEFB $00,$01,$02,$1A,$1A,$0F,$07,$00 $F89D DEFB $00,$E0,$7C,$78,$E0,$C0,$00,$07 $F8A5 DEFB $03,$01,$02,$04,$00,$00,$00,$80 $F8AD DEFB $C0,$F0,$40,$40,$80,$00,$00,$00 $F8B5 DEFB $00,$00,$00,$18,$1B,$0F,$07,$00 $F8BD DEFB $00,$00,$00,$00,$C0,$F8,$C0,$07 $F8C5 DEFB $03,$01,$02,$04,$00,$00,$00,$80 $F8CD DEFB $C0,$F0,$40,$40,$80,$00,$00,$00 $F8D5 DEFB $00,$00,$00,$18,$18,$0F,$07,$00 $F8DD DEFB $00,$00,$00,$00,$00,$00,$80,$07 $F8E5 DEFB $03,$01,$02,$04,$00,$00,$00,$C0 $F8ED DEFB $F8,$F0,$40,$40,$80,$00,$00,$00 $F8F5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F8FD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F905 DEFB $01,$00,$33,$3F,$07,$01,$00,$00 $F90D DEFB $20,$A0,$F0,$FC,$80,$E0,$00,$00 $F915 DEFB $00,$01,$01,$31,$7B,$DF,$1F,$00 $F91D DEFB $FC,$F8,$E0,$80,$00,$EC,$F2,$0F $F925 DEFB $14,$14,$12,$0A,$00,$00,$00,$F0 $F92D DEFB $28,$28,$48,$50,$00,$00,$00,$00 $F935 DEFB $00,$00,$00,$30,$7B,$DF,$1F,$00 $F93D DEFB $00,$00,$00,$FC,$C0,$EE,$F0,$0F $F945 DEFB $14,$14,$24,$08,$00,$00,$00,$F0 $F94D DEFB $28,$28,$24,$20,$00,$00,$00,$00 $F955 DEFB $00,$00,$00,$30,$7B,$DF,$1F,$00 $F95D DEFB $00,$00,$00,$00,$00,$EE,$F0,$0F $F965 DEFB $35,$44,$08,$08,$00,$00,$00,$F0 $F96D DEFB $FC,$3E,$10,$10,$00,$00,$00,$00 $F975 DEFB $00,$00,$00,$00,$00,$00,$02,$00 $F97D DEFB $00,$00,$00,$00,$00,$00,$12,$04 $F985 DEFB $15,$33,$7F,$7F,$03,$00,$00,$D4 $F98D DEFB $14,$F8,$F8,$F6,$E0,$F8,$00,$00 $F995 DEFB $00,$00,$00,$38,$6C,$07,$03,$00 $F99D DEFB $00,$00,$00,$00,$78,$EC,$80,$06 $F9A5 DEFB $02,$00,$00,$00,$00,$00,$00,$80 $F9AD DEFB $80,$00,$00,$00,$00,$00,$00,$00 $F9B5 DEFB $00,$00,$00,$00,$00,$03,$1F,$00 $F9BD DEFB $00,$00,$00,$00,$00,$80,$E0,$7E $F9C5 DEFB $02,$00,$00,$00,$00,$00,$00,$F8 $F9CD DEFB $9E,$00,$00,$00,$00,$00,$00,$00 $F9D5 DEFB $00,$00,$00,$00,$00,$03,$0F,$00 $F9DD DEFB $00,$00,$00,$00,$00,$80,$E0,$1E $F9E5 DEFB $3A,$30,$00,$00,$00,$00,$00,$F0 $F9ED DEFB $B8,$1C,$0C,$00,$00,$00,$00,$00 $F9F5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F9FD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FA05 DEFB $70,$3D,$0F,$0F,$11,$00,$00,$00 $FA0D DEFB $00,$00,$40,$80,$E0,$78,$00,$00 $FA15 DEFB $36,$12,$12,$CA,$4A,$3F,$07,$00 $FA1D DEFB $C0,$40,$40,$98,$88,$30,$C0,$0E $FA25 DEFB $1C,$19,$18,$1C,$0F,$07,$00,$00 $FA2D DEFB $F8,$3C,$0C,$1C,$F8,$F0,$00,$00 $FA35 DEFB $0D,$64,$24,$12,$CA,$7F,$07,$00 $FA3D DEFB $80,$80,$B0,$90,$90,$20,$C0,$0E $FA45 DEFB $1C,$19,$18,$1C,$0F,$07,$00,$00 $FA4D DEFB $F8,$3C,$0C,$1C,$F8,$F0,$00,$00 $FA55 DEFB $03,$19,$09,$64,$32,$CF,$77,$00 $FA5D DEFB $00,$60,$20,$A0,$A0,$40,$80,$0E $FA65 DEFB $1C,$19,$18,$1C,$0F,$07,$00,$00 $FA6D DEFB $F8,$3C,$0C,$1C,$F8,$F0,$00,$00 $FA75 DEFB $00,$00,$00,$00,$05,$56,$7F,$00 $FA7D DEFB $00,$00,$00,$00,$00,$20,$E8,$1F $FA85 DEFB $38,$71,$62,$60,$7F,$3F,$00,$F8 $FA8D DEFB $00,$FC,$7E,$06,$FE,$F8,$00,$00 $FA95 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FA9D DEFB $00,$00,$00,$00,$00,$0C,$92,$00 $FAA5 DEFB $1F,$7F,$FF,$11,$20,$00,$00,$61 $FAAD DEFB $01,$82,$FC,$80,$40,$00,$00,$00 $FAB5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FABD DEFB $00,$00,$00,$00,$0C,$12,$21,$00 $FAC5 DEFB $1F,$7F,$FF,$10,$10,$00,$00,$21 $FACD DEFB $01,$82,$FC,$80,$80,$00,$00,$00 $FAD5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FADD DEFB $00,$00,$00,$00,$0C,$12,$11,$00 $FAE5 DEFB $1F,$7F,$FF,$11,$0A,$00,$00,$09 $FAED DEFB $01,$82,$FC,$00,$00,$00,$00,$00 $FAF5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FAFD DEFB $00,$00,$00,$00,$00,$00,$00,$08 $FB05 DEFB $10,$1F,$FF,$7F,$00,$01,$02,$00 $FB0D DEFB $C0,$00,$80,$FE,$01,$FE,$00,$00 $FB15 DEFB $00,$2C,$4C,$44,$7C,$4E,$4F,$00 $FB1D DEFB $00,$00,$00,$00,$00,$00,$F6,$2F $FB25 DEFB $07,$0A,$0A,$09,$05,$00,$00,$F9 $FB2D DEFB $F8,$14,$14,$24,$28,$00,$00,$00 $FB35 DEFB $00,$2C,$4C,$44,$7C,$4E,$4F,$00 $FB3D DEFB $00,$00,$00,$00,$00,$00,$F6,$2F $FB45 DEFB $07,$0A,$0A,$12,$04,$00,$00,$F9 $FB4D DEFB $F8,$14,$14,$12,$10,$00,$00,$00 $FB55 DEFB $00,$2C,$4C,$44,$7C,$4E,$4F,$00 $FB5D DEFB $00,$00,$00,$00,$00,$00,$F6,$2F $FB65 DEFB $07,$1A,$22,$04,$04,$00,$00,$F9 $FB6D DEFB $F8,$16,$11,$08,$08,$00,$00,$00 $FB75 DEFB $00,$00,$00,$00,$00,$00,$02,$00 $FB7D DEFB $00,$00,$00,$00,$00,$00,$09,$04 $FB85 DEFB $05,$03,$6F,$7F,$00,$00,$00,$CA $FB8D DEFB $0A,$FC,$FC,$97,$00,$00,$00,$00 $FB95 DEFB $00,$03,$07,$07,$0F,$FD,$F9,$C0 $FB9D DEFB $C0,$F0,$F8,$F8,$EC,$E4,$E6,$03 $FBA5 DEFB $03,$03,$03,$03,$03,$03,$07,$F2 $FBAD DEFB $F0,$30,$30,$30,$30,$30,$70,$00 $FBB5 DEFB $00,$43,$E7,$7F,$3D,$19,$01,$C0 $FBBD DEFB $C0,$F0,$F8,$F8,$EC,$E4,$E6,$03 $FBC5 DEFB $03,$03,$03,$03,$03,$03,$07,$F2 $FBCD DEFB $F0,$30,$30,$30,$30,$30,$70,$30 $FBD5 DEFB $30,$33,$37,$3F,$1D,$01,$01,$C0 $FBDD DEFB $C0,$F0,$F8,$F8,$EC,$E4,$E6,$03 $FBE5 DEFB $03,$03,$03,$03,$03,$03,$07,$F2 $FBED DEFB $F0,$30,$30,$30,$30,$30,$70,$00 $FBF5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FBFD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC05 DEFB $00,$00,$0F,$DF,$FF,$00,$00,$00 $FC0D DEFB $00,$00,$C1,$FF,$FF,$00,$00,$00 $FC15 DEFB $17,$30,$71,$71,$FB,$FB,$CF,$80 $FC1D DEFB $D0,$D8,$9C,$9C,$3E,$3E,$66,$87 $FC25 DEFB $03,$03,$02,$04,$04,$00,$00,$F2 $FC2D DEFB $F8,$D4,$52,$52,$42,$04,$F8,$1A $FC35 DEFB $07,$1B,$43,$63,$73,$FB,$FF,$00 $FC3D DEFB $00,$00,$04,$0C,$1C,$3E,$7E,$C7 $FC45 DEFB $83,$03,$02,$04,$04,$00,$00,$F6 $FC4D DEFB $FA,$D4,$52,$52,$42,$04,$F8,$68 $FC55 DEFB $1C,$1C,$66,$06,$83,$C3,$F3,$00 $FC5D DEFB $00,$00,$00,$00,$02,$06,$1E,$FF $FC65 DEFB $FF,$63,$42,$04,$04,$00,$00,$FE $FC6D DEFB $FE,$DC,$56,$52,$42,$04,$F8,$00 $FC75 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC7D DEFB $00,$00,$00,$00,$00,$00,$00,$04 $FC85 DEFB $A5,$A3,$7F,$7F,$03,$00,$00,$92 $FC8D DEFB $0A,$FC,$FF,$FF,$C0,$F8,$00,$10 $FC95 DEFB $10,$38,$38,$7C,$7C,$38,$39,$08 $FC9D DEFB $08,$1C,$1C,$3E,$3E,$1C,$9C,$3B $FCA5 DEFB $7F,$FF,$CE,$CC,$CC,$FC,$FC,$DC $FCAD DEFB $FE,$FF,$73,$33,$33,$3F,$3F,$0A $FCB5 DEFB $0E,$0A,$0A,$0A,$CE,$CE,$CE,$50 $FCBD DEFB $70,$50,$50,$50,$73,$73,$73,$CE $FCC5 DEFB $FF,$7F,$36,$36,$36,$3E,$7F,$7F $FCCD DEFB $FF,$FE,$6C,$6C,$6C,$7C,$FE,$05 $FCD5 DEFB $02,$24,$14,$0C,$56,$23,$25,$00 $FCDD DEFB $20,$B8,$40,$88,$A6,$A8,$F0,$09 $FCE5 DEFB $09,$01,$01,$01,$03,$05,$00,$88 $FCED DEFB $84,$80,$80,$A0,$D0,$48,$00,$02 $FCF5 DEFB $15,$2A,$55,$2A,$55,$2A,$15,$80 $FCFD DEFB $50,$A8,$54,$A8,$54,$A8,$D0,$0B $FD05 DEFB $01,$01,$01,$01,$03,$07,$00,$A0 $FD0D DEFB $80,$80,$80,$80,$C0,$E0,$00,$00 $FD15 DEFB $EE,$EE,$00,$BB,$BB,$00,$EE,$00 $FD1D DEFB $EE,$EE,$00,$BB,$BB,$00,$EE,$EE $FD25 DEFB $00,$BB,$BB,$00,$EE,$EE,$00,$EE $FD2D DEFB $00,$BB,$BB,$00,$EE,$EE,$00,$00 $FD35 DEFB $00,$01,$01,$07,$0F,$3B,$1B,$00 $FD3D DEFB $00,$80,$80,$FE,$9C,$8C,$84,$13 $FD45 DEFB $13,$03,$03,$07,$1F,$00,$00,$80 $FD4D DEFB $C0,$C0,$C0,$E0,$E0,$00,$00,$00 $FD55 DEFB $00,$01,$11,$13,$17,$1B,$13,$00 $FD5D DEFB $00,$80,$80,$C0,$E2,$94,$88,$13 $FD65 DEFB $13,$12,$12,$12,$12,$00,$00,$80 $FD6D DEFB $C0,$40,$40,$40,$40,$00,$00,$00 $FD75 DEFB $00,$01,$01,$03,$07,$07,$03,$00 $FD7D DEFB $00,$80,$80,$80,$C0,$F8,$B0,$03 $FD85 DEFB $03,$07,$07,$0F,$03,$00,$00,$90 $FD8D DEFB $C0,$C0,$C0,$60,$00,$00,$00,$00 $FD95 DEFB $00,$01,$01,$3F,$0F,$01,$01,$00 $FD9D DEFB $00,$80,$80,$C0,$E0,$F0,$D8,$03 $FDA5 DEFB $07,$06,$06,$06,$0E,$00,$00,$C8 $FDAD DEFB $C0,$C0,$C0,$60,$E0,$00,$00,$00 $FDB5 DEFB $00,$01,$01,$00,$43,$25,$19,$00 $FDBD DEFB $00,$80,$80,$80,$E0,$D0,$C8,$09 $FDC5 DEFB $05,$03,$07,$04,$0C,$00,$00,$C8 $FDCD DEFB $C0,$60,$30,$90,$58,$00,$00,$00 $FDD5 DEFB $00,$01,$01,$00,$1F,$0C,$08,$00 $FDDD DEFB $00,$80,$80,$80,$C0,$E2,$D4,$01 $FDE5 DEFB $03,$03,$03,$03,$00,$00,$00,$C8 $FDED DEFB $D0,$E0,$E0,$F0,$FC,$00,$00,$00 $FDF5 DEFB $18,$19,$0D,$0E,$07,$03,$03,$00 $FDFD DEFB $18,$98,$B0,$70,$E0,$C0,$C0,$03 $FE05 DEFB $03,$07,$07,$07,$0F,$00,$00,$C0 $FE0D DEFB $C0,$C0,$C0,$C0,$E0,$00,$00,$00 $FE15 DEFB $00,$01,$01,$00,$41,$23,$15,$00 $FE1D DEFB $00,$80,$80,$80,$80,$C0,$A0,$09 $FE25 DEFB $03,$02,$02,$02,$06,$00,$00,$C0 $FE2D DEFB $80,$80,$40,$20,$40,$00,$00,$C8 $FE35 DEFB $1C,$00,$00,$47,$FE,$01,$43,$33 $FE3D DEFB $34,$5F,$C4,$E8,$1C,$00,$00,$53 $FE45 DEFB $FE,$01,$43,$33,$35,$5F,$B1,$00 $FE4D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE55 DEFB $00 ; Routine at FE56 ; ; Used by the routines at #R$89F9, #R$9168, #R$95B8, #R$981A and #R$D52E. c$FE56 LD A,$09 ; $FE58 LD I,A ; $FE5A IM 2 ; $FE5C RET ; ; Unused s$FE5D DEFS $03 ; Routine at FE60 ; ; Used by the routine at #R$89F9. c$FE60 LD A,$3E ; $FE62 LD I,A ; $FE64 IM 1 ; $FE66 RET ; ; Unused s$FE67 DEFS $02 ; Routine at FE69 c$FE69 DI ; $FE6A CALL $DF0C ; $FE6D EI ; $FE6E JP $0038 ; ; Data block at FE71 b$FE71 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE79 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE81 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE89 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE91 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE99 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEA1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEA9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEB1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEB9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEC1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEC9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FED1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FED9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEE1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEE9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEF1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FEF9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FF01 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FF09 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FF11 DEFB $00,$00,$00,$00,$00,$00,$00,$F3 $FF19 DEFB $0D,$CE,$0B,$E4,$50,$CE,$0B,$E5 $FF21 DEFB $50,$1C,$17,$DC,$0A,$CE,$0B,$EB $FF29 DEFB $50,$16,$17,$DC,$0A,$D7,$18,$B1 $FF31 DEFB $33,$DE,$5C,$05,$00,$DB,$02,$DB $FF39 DEFB $02,$4D,$00,$C0,$52,$3F,$00,$C0 $FF41 DEFB $52,$3A,$02,$5B,$0E,$C0,$57,$71 $FF49 DEFB $0E,$F3,$0D,$21,$17,$C6,$1E,$A7 $FF51 DEFB $61,$76,$1B,$03,$13,$00,$3E,$00 $FF59 DEFB $3C,$42,$42,$7E,$42,$42,$00,$00 $FF61 DEFB $7C,$42,$7C,$42,$42,$7C,$00,$00 $FF69 DEFB $3C,$42,$40,$40,$42,$3C,$00,$00 $FF71 DEFB $78,$44,$42,$42,$44,$78,$00,$00 $FF79 DEFB $7E,$40,$7C,$40,$40,$7E,$00,$00 $FF81 DEFB $7E,$40,$7C,$40,$40,$40,$00,$00 $FF89 DEFB $3C,$42,$40,$4E,$42,$3C,$00,$00 $FF91 DEFB $42,$42,$7E,$42,$42,$42,$00,$00 $FF99 DEFB $3E,$08,$08,$08,$08,$3E,$00,$00 $FFA1 DEFB $02,$02,$02,$42,$42,$3C,$00,$00 $FFA9 DEFB $44,$48,$70,$48,$44,$42,$00,$00 $FFB1 DEFB $40,$40,$40,$40,$40,$7E,$00,$00 $FFB9 DEFB $42,$66,$5A,$42,$42,$42,$00,$00 $FFC1 DEFB $42,$62,$52,$4A,$46,$42,$00,$00 $FFC9 DEFB $3C,$42,$42,$42,$42,$3C,$00,$00 $FFD1 DEFB $7C,$42,$42,$7C,$40,$40,$00,$00 $FFD9 DEFB $3C,$42,$42,$52,$4A,$3C,$00,$00 $FFE1 DEFB $7C,$42,$42,$7C,$44,$42,$00,$00 $FFE9 DEFB $3C,$40,$3C,$02,$42,$3C,$00,$00 $FFF1 DEFB $FE,$10,$10,$10,$10,$10,$00,$00 $FFF9 DEFB $42,$42,$42,$42,$00,$01,$02