; Data block at 4000 b$4000 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4008 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4010 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4018 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4020 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4028 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4030 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4038 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4040 DEFB $D0,$00,$38,$C6,$38,$38,$7C,$00 $4048 DEFB $00,$FE,$C6,$FE,$00,$FC,$38,$FE $4050 DEFB $FE,$C0,$FE,$00,$38,$FE,$00,$C6 $4058 DEFB $FC,$FE,$38,$FC,$F8,$7C,$00,$57 $4060 DEFB $D0,$00,$E6,$C6,$C6,$EE,$C6,$00 $4068 DEFB $00,$18,$C6,$C0,$00,$C6,$C6,$18 $4070 DEFB $18,$C0,$C0,$00,$EE,$C0,$00,$EE $4078 DEFB $30,$C0,$C6,$C6,$CE,$C6,$00,$57 $4080 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4088 DEFB $FC,$00,$00,$FE,$00,$30,$30,$00 $4090 DEFB $00,$00,$38,$00,$30,$30,$00,$00 $4098 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $40A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $40A8 DEFB $C6,$E6,$00,$38,$EE,$30,$30,$E6 $40B0 DEFB $C6,$00,$E6,$EE,$30,$30,$EE,$CE $40B8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $40C0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $40C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $40D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $40D8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $40E0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $40E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $40F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $40F8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4100 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4108 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4110 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4118 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $4120 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4128 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4130 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4138 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4140 DEFB $E4,$00,$7C,$C6,$7C,$7C,$FE,$00 $4148 DEFB $00,$FE,$C6,$FE,$00,$FE,$7C,$FE $4150 DEFB $FE,$C0,$FE,$00,$7C,$FE,$00,$C6 $4158 DEFB $FC,$FE,$7C,$FE,$FC,$FE,$00,$0B $4160 DEFB $E4,$00,$7C,$C6,$C6,$7C,$FE,$00 $4168 DEFB $00,$18,$C6,$FE,$00,$FE,$C6,$18 $4170 DEFB $18,$FE,$FE,$00,$7C,$C0,$00,$C6 $4178 DEFB $FC,$FE,$C6,$C6,$FC,$FE,$00,$0B $4180 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4188 DEFB $FE,$00,$00,$FE,$00,$30,$30,$00 $4190 DEFB $00,$00,$7C,$00,$30,$30,$00,$00 $4198 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $41A0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $41A8 DEFB $FE,$7E,$00,$F0,$7C,$30,$FC,$7E $41B0 DEFB $C6,$00,$7E,$7C,$30,$30,$7C,$FC $41B8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $41C0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $41C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $41D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $41D8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $41E0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $41E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $41F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $41F8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4200 DEFB $EA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $4208 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $4210 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $4218 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AF $4220 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4228 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4238 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4240 DEFB $D0,$00,$E6,$C6,$EE,$EE,$C6,$00 $4248 DEFB $00,$18,$C6,$C0,$00,$C6,$EE,$18 $4250 DEFB $18,$C0,$C0,$00,$EE,$C0,$00,$C6 $4258 DEFB $30,$06,$EE,$C6,$CE,$C6,$00,$27 $4260 DEFB $D0,$00,$38,$C6,$C6,$38,$7C,$00 $4268 DEFB $00,$18,$C6,$FE,$00,$FC,$C6,$18 $4270 DEFB $18,$FE,$FE,$00,$38,$C0,$00,$C6 $4278 DEFB $FC,$FE,$C6,$C6,$F8,$7C,$00,$27 $4280 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4288 DEFB $C6,$00,$00,$18,$00,$30,$00,$00 $4290 DEFB $00,$00,$E6,$00,$30,$30,$00,$00 $4298 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $42A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $42A8 DEFB $FC,$3E,$00,$E0,$38,$18,$FC,$3E $42B0 DEFB $C6,$00,$3E,$38,$18,$18,$38,$F8 $42B8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $42C0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $42C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $42D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $42D8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $42E0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $42E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $42F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $42F8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4300 DEFB $F5,$55,$55,$55,$55,$55,$55,$55 $4308 DEFB $55,$55,$55,$55,$55,$55,$55,$55 $4310 DEFB $55,$55,$55,$55,$55,$55,$55,$55 $4318 DEFB $55,$55,$55,$55,$55,$55,$55,$5B $4320 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4328 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4330 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4338 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4340 DEFB $EA,$00,$C0,$C6,$C6,$C6,$C0,$00 $4348 DEFB $00,$18,$C6,$C0,$00,$C6,$C6,$18 $4350 DEFB $18,$C0,$C0,$00,$C6,$C0,$00,$C6 $4358 DEFB $30,$0E,$C6,$C6,$C6,$C0,$00,$0B $4360 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4368 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4370 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4378 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4380 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4388 DEFB $C6,$00,$00,$18,$00,$30,$00,$00 $4390 DEFB $00,$00,$C0,$00,$30,$30,$00,$00 $4398 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $43A0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $43A8 DEFB $00,$06,$00,$00,$00,$00,$00,$00 $43B0 DEFB $00,$00,$00,$00,$00,$00,$00,$C0 $43B8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $43C0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $43C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $43D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $43D8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $43E0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $43E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $43F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $43F8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4400 DEFB $D0,$88,$88,$88,$88,$88,$88,$88 $4408 DEFB $88,$88,$88,$88,$88,$88,$88,$88 $4410 DEFB $88,$88,$88,$88,$88,$88,$88,$88 $4418 DEFB $88,$88,$88,$88,$88,$88,$88,$87 $4420 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4428 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4430 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4438 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4440 DEFB $D0,$00,$C0,$FE,$C6,$C6,$F8,$00 $4448 DEFB $00,$18,$FE,$F8,$00,$FC,$C6,$18 $4450 DEFB $18,$C0,$F8,$00,$C6,$F8,$00,$C6 $4458 DEFB $30,$1C,$C6,$FE,$C6,$F8,$00,$57 $4460 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4468 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4470 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4478 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4480 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4488 DEFB $FC,$C6,$00,$18,$C6,$30,$30,$3E $4490 DEFB $F8,$00,$C0,$38,$30,$30,$38,$F8 $4498 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $44A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $44A8 DEFB $00,$CE,$00,$00,$00,$00,$00,$00 $44B0 DEFB $00,$00,$00,$00,$00,$00,$00,$C0 $44B8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $44C0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $44C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $44D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $44D8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $44E0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $44E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $44F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $44F8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4500 DEFB $E4,$22,$22,$22,$22,$22,$22,$22 $4508 DEFB $22,$22,$22,$22,$22,$22,$22,$22 $4510 DEFB $22,$22,$22,$22,$22,$22,$22,$22 $4518 DEFB $22,$22,$22,$22,$22,$22,$22,$2B $4520 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4528 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4530 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4538 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4540 DEFB $E4,$00,$C0,$FE,$FE,$C6,$7C,$00 $4548 DEFB $FE,$18,$FE,$F8,$00,$FE,$FE,$18 $4550 DEFB $18,$C0,$F8,$00,$C6,$F8,$00,$D6 $4558 DEFB $30,$38,$FE,$FC,$C6,$7C,$00,$0B $4560 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4568 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4570 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4578 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4580 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4588 DEFB $FE,$C6,$00,$18,$C6,$30,$30,$7E $4590 DEFB $FC,$00,$C0,$7C,$30,$30,$7C,$FC $4598 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $45A0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $45A8 DEFB $00,$7C,$00,$00,$00,$00,$00,$00 $45B0 DEFB $00,$00,$00,$00,$00,$00,$00,$C0 $45B8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $45C0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $45C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $45D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $45D8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $45E0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $45E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $45F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $45F8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4600 DEFB $D0,$88,$88,$88,$88,$88,$88,$88 $4608 DEFB $88,$88,$88,$88,$88,$88,$88,$88 $4610 DEFB $88,$88,$88,$88,$88,$88,$88,$88 $4618 DEFB $88,$88,$88,$88,$88,$88,$88,$87 $4620 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4628 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4630 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4638 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4640 DEFB $D0,$00,$C0,$C6,$FE,$C6,$0E,$00 $4648 DEFB $FE,$18,$C6,$C0,$00,$C6,$FE,$18 $4650 DEFB $18,$C0,$C0,$00,$C6,$C0,$00,$FE $4658 DEFB $30,$70,$FE,$CE,$C6,$0E,$00,$27 $4660 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4668 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4670 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4678 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4680 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4688 DEFB $C6,$C6,$00,$18,$C6,$30,$30,$E6 $4690 DEFB $CE,$00,$C0,$EE,$30,$30,$EE,$CE $4698 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $46A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $46A8 DEFB $00,$38,$00,$00,$00,$00,$00,$00 $46B0 DEFB $00,$00,$00,$00,$00,$00,$00,$C0 $46B8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $46C0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $46C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $46D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $46D8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $46E0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $46E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $46F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $46F8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4700 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4708 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4710 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4718 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4720 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4728 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4730 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4738 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4740 DEFB $EA,$00,$C0,$C6,$C6,$C6,$06,$00 $4748 DEFB $00,$18,$C6,$C0,$00,$C6,$C6,$18 $4750 DEFB $18,$C0,$C0,$00,$C6,$C0,$00,$FE $4758 DEFB $30,$E0,$C6,$C6,$C6,$06,$00,$0B $4760 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4768 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4770 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4778 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4780 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4788 DEFB $C6,$C6,$00,$18,$C6,$30,$30,$C6 $4790 DEFB $C6,$00,$C6,$C6,$30,$30,$C6,$C6 $4798 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $47A0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $47A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47B8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $47C0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $47C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47D8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $47E0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $47E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $47F8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4800 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4808 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4810 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4818 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4820 DEFB $D0,$00,$C6,$00,$00,$00,$00,$00 $4828 DEFB $00,$00,$00,$00,$30,$00,$00,$00 $4830 DEFB $06,$00,$38,$00,$00,$00,$00,$00 $4838 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4840 DEFB $D0,$00,$C6,$EE,$D6,$00,$D6,$E6 $4848 DEFB $C6,$E6,$00,$D6,$30,$30,$E6,$C0 $4850 DEFB $E6,$06,$00,$00,$00,$00,$00,$00 $4858 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4860 DEFB $D0,$00,$0C,$F8,$00,$00,$00,$00 $4868 DEFB $00,$38,$00,$C0,$00,$00,$38,$60 $4870 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4878 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4880 DEFB $D0,$00,$18,$C0,$C0,$E0,$06,$06 $4888 DEFB $00,$C0,$00,$E6,$EE,$00,$EE,$30 $4890 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4898 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $48A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $48A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48B8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $48C0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $48C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48D8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $48E0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $48E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $48F8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4900 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4908 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4910 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4918 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4920 DEFB $E4,$00,$C6,$00,$00,$00,$00,$00 $4928 DEFB $00,$00,$00,$00,$30,$00,$00,$00 $4930 DEFB $06,$00,$7C,$00,$00,$00,$00,$00 $4938 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4940 DEFB $E4,$00,$C6,$7C,$FE,$00,$C6,$7E $4948 DEFB $C6,$7E,$00,$FE,$FC,$FE,$7E,$C0 $4950 DEFB $7E,$FE,$18,$00,$00,$00,$00,$00 $4958 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4960 DEFB $E4,$00,$18,$FC,$00,$00,$00,$00 $4968 DEFB $00,$7C,$00,$C0,$00,$00,$7C,$30 $4970 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4978 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4980 DEFB $E4,$00,$18,$C0,$C0,$7E,$FE,$FE $4988 DEFB $00,$FE,$00,$7C,$7C,$00,$7C,$30 $4990 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4998 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $49A0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $49A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49B8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $49C0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $49C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49D8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $49E0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $49E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $49F8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4A00 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4A08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4A10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4A18 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4A20 DEFB $D0,$00,$C6,$00,$00,$00,$00,$00 $4A28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4A30 DEFB $06,$00,$CE,$00,$00,$00,$00,$00 $4A38 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4A40 DEFB $D0,$00,$C6,$38,$6C,$00,$C6,$3E $4A48 DEFB $C6,$3E,$00,$6C,$FC,$FE,$3E,$C0 $4A50 DEFB $3E,$FC,$18,$00,$00,$00,$00,$00 $4A58 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4A60 DEFB $D0,$00,$18,$CE,$00,$00,$00,$00 $4A68 DEFB $00,$CE,$00,$C0,$00,$00,$EE,$30 $4A70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4A78 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4A80 DEFB $D0,$00,$0C,$C0,$C0,$3C,$FC,$FC $4A88 DEFB $00,$FE,$00,$38,$38,$00,$38,$60 $4A90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4A98 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4AA0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4AA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AB8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4AC0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4AC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AD8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4AE0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4AE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4AF8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4B00 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4B08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B18 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4B20 DEFB $EA,$00,$C6,$00,$00,$00,$00,$00 $4B28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B30 DEFB $06,$00,$06,$00,$00,$00,$00,$00 $4B38 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4B40 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4B48 DEFB $00,$06,$00,$00,$00,$00,$00,$00 $4B50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B58 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4B60 DEFB $EA,$00,$30,$C6,$00,$00,$00,$00 $4B68 DEFB $00,$06,$00,$C0,$00,$00,$C6,$18 $4B70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B78 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4B80 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4B88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4B98 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4BA0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4BA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BB8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4BC0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4BC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BD8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4BE0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4BE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4BF8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4C00 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4C08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C18 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4C20 DEFB $D0,$00,$FE,$38,$C6,$00,$EC,$3E $4C28 DEFB $F8,$C6,$00,$C6,$30,$FE,$3E,$38 $4C30 DEFB $3E,$7E,$0E,$00,$00,$00,$00,$00 $4C38 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4C40 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4C48 DEFB $00,$CE,$00,$00,$00,$00,$00,$00 $4C50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C58 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4C60 DEFB $D0,$00,$30,$C6,$38,$38,$7E,$7E $4C68 DEFB $00,$0E,$00,$FC,$38,$00,$EE,$18 $4C70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C78 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4C80 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4C88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4C98 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4CA0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4CA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CB8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4CC0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4CC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CD8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4CE0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4CE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4CF8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $4D00 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4D08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D18 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4D20 DEFB $E4,$00,$FE,$7C,$C6,$00,$FE,$7E $4D28 DEFB $FC,$C6,$00,$C6,$30,$FE,$7E,$7C $4D30 DEFB $7E,$FE,$1C,$00,$00,$00,$00,$00 $4D38 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4D40 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4D48 DEFB $00,$7C,$00,$00,$00,$00,$00,$00 $4D50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D58 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4D60 DEFB $E4,$00,$30,$CE,$7C,$7C,$FE,$FE $4D68 DEFB $00,$3C,$00,$FC,$7C,$00,$7C,$18 $4D70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D78 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4D80 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4D88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4D98 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4DA0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4DA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DB8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4DC0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4DC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DD8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4DE0 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $4DE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4DF8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4E00 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4E08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E18 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4E20 DEFB $D0,$00,$C6,$EE,$C6,$00,$FE,$E6 $4E28 DEFB $CE,$C6,$00,$C6,$30,$0C,$E6,$E6 $4E30 DEFB $E6,$C0,$18,$00,$00,$00,$00,$00 $4E38 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4E40 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4E48 DEFB $00,$38,$00,$00,$00,$00,$00,$00 $4E50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E58 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4E60 DEFB $D0,$00,$30,$FC,$E6,$E6,$C0,$C0 $4E68 DEFB $00,$78,$00,$C0,$EE,$00,$EE,$18 $4E70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E78 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4E80 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4E88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4E98 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4EA0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4EA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4EB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4EB8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4EC0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4EC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4ED0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4ED8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4EE0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $4EE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4EF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4EF8 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $4F00 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4F08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F18 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4F20 DEFB $EA,$00,$C6,$C6,$D6,$00,$D6,$C6 $4F28 DEFB $C6,$C6,$00,$D6,$30,$18,$C6,$C0 $4F30 DEFB $C6,$7C,$18,$00,$00,$00,$00,$00 $4F38 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4F40 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4F48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F58 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4F60 DEFB $EA,$00,$30,$F8,$C0,$FE,$7C,$7C $4F68 DEFB $00,$E0,$00,$C0,$C6,$00,$C6,$18 $4F70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F78 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4F80 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4F88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4F98 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4FA0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4FA8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FB0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FB8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4FC0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4FC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FD8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $4FE0 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $4FE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $4FF8 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5000 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5008 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5010 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5018 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5020 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5028 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5030 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5038 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5040 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5048 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5050 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5058 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5060 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5068 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5070 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5078 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5080 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5088 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5090 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5098 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $50A0 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $50A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50B8 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $50C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $50F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5100 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5108 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5110 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5118 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5120 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5128 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5130 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5138 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5140 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5148 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5150 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5158 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5160 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5168 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5170 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5178 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5180 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5188 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5190 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5198 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $51A0 DEFB $E1,$11,$11,$11,$11,$11,$11,$11 $51A8 DEFB $11,$11,$11,$11,$11,$11,$11,$11 $51B0 DEFB $11,$11,$11,$11,$11,$11,$11,$11 $51B8 DEFB $11,$11,$11,$11,$11,$11,$11,$0B $51C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $51F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5200 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5208 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5210 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5218 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5220 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5228 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5230 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5238 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5240 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5248 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5250 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5258 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5260 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5268 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5270 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5278 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5280 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5288 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5290 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5298 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $52A0 DEFB $D4,$44,$44,$44,$44,$44,$44,$44 $52A8 DEFB $44,$44,$44,$44,$44,$44,$44,$44 $52B0 DEFB $44,$44,$44,$44,$44,$44,$44,$44 $52B8 DEFB $44,$44,$44,$44,$44,$44,$44,$27 $52C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $52F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5300 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5308 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5310 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5318 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5320 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5328 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5330 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5338 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5340 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5348 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5350 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5358 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5360 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5368 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5370 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5378 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5380 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5388 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5390 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5398 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $53A0 DEFB $E1,$11,$11,$11,$11,$11,$11,$11 $53A8 DEFB $11,$11,$11,$11,$11,$11,$11,$11 $53B0 DEFB $11,$11,$11,$11,$11,$11,$11,$11 $53B8 DEFB $11,$11,$11,$11,$11,$11,$11,$0B $53C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $53F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5400 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5408 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5410 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5418 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5420 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5428 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5430 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5438 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5440 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5448 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5450 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5458 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5460 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5468 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5470 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5478 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $5480 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5488 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5490 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5498 DEFB $00,$00,$00,$00,$00,$00,$00,$57 $54A0 DEFB $DA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $54A8 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $54B0 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA $54B8 DEFB $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AF $54C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $54F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5500 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5508 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5510 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5518 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5520 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5528 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5530 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5538 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5540 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5548 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5550 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5558 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5560 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5568 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5570 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5578 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5580 DEFB $E4,$00,$00,$00,$00,$00,$00,$00 $5588 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5590 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5598 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $55A0 DEFB $F5,$55,$55,$55,$55,$55,$55,$55 $55A8 DEFB $55,$55,$55,$55,$55,$55,$55,$55 $55B0 DEFB $55,$55,$55,$55,$55,$55,$55,$55 $55B8 DEFB $55,$55,$55,$55,$55,$55,$55,$57 $55C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $55F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5600 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5608 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5610 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5618 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5620 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5628 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5630 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5638 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5640 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5648 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5650 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5658 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5660 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5668 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5670 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5678 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $5680 DEFB $D0,$00,$00,$00,$00,$00,$00,$00 $5688 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5690 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5698 DEFB $00,$00,$00,$00,$00,$00,$00,$27 $56A0 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $56A8 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $56B0 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $56B8 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $56C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $56F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5700 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5708 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5710 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5718 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5720 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5728 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5730 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5738 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5740 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5748 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5750 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5758 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5760 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5768 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5770 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5778 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $5780 DEFB $EA,$00,$00,$00,$00,$00,$00,$00 $5788 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5790 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5798 DEFB $00,$00,$00,$00,$00,$00,$00,$0B $57A0 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $57A8 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $57B0 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $57B8 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $57C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57D8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $57F8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5800 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5808 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5810 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5818 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5820 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5828 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5830 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5838 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5840 DEFB $5A,$00,$43,$43,$43,$43,$43,$43 $5848 DEFB $43,$43,$43,$43,$43,$43,$43,$43 $5850 DEFB $43,$43,$43,$43,$43,$43,$43,$43 $5858 DEFB $43,$43,$43,$43,$43,$43,$00,$5A $5860 DEFB $5A,$00,$43,$43,$43,$43,$43,$43 $5868 DEFB $43,$43,$43,$43,$43,$43,$43,$43 $5870 DEFB $43,$43,$43,$43,$43,$43,$43,$43 $5878 DEFB $43,$43,$43,$43,$43,$43,$00,$5A $5880 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5888 DEFB $42,$42,$42,$42,$42,$42,$42,$42 $5890 DEFB $42,$42,$42,$42,$42,$42,$42,$42 $5898 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $58A0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $58A8 DEFB $42,$42,$42,$42,$42,$42,$42,$42 $58B0 DEFB $42,$42,$42,$42,$42,$42,$42,$42 $58B8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $58C0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $58C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $58D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $58D8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $58E0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $58E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $58F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $58F8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5900 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5908 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5910 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5918 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5920 DEFB $5A,$00,$46,$46,$46,$46,$46,$46 $5928 DEFB $46,$46,$46,$46,$46,$46,$46,$46 $5930 DEFB $46,$46,$46,$46,$00,$00,$00,$00 $5938 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5940 DEFB $5A,$00,$46,$46,$46,$46,$46,$46 $5948 DEFB $46,$46,$46,$46,$46,$46,$46,$46 $5950 DEFB $46,$46,$46,$46,$00,$00,$00,$00 $5958 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5960 DEFB $5A,$00,$44,$44,$44,$44,$44,$44 $5968 DEFB $44,$44,$44,$44,$44,$44,$44,$44 $5970 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5978 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5980 DEFB $5A,$00,$44,$44,$44,$44,$44,$44 $5988 DEFB $44,$44,$44,$44,$44,$44,$44,$44 $5990 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5998 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $59A0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $59A8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59B8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $59C0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $59C8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59D8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $59E0 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $59E8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $59F8 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5A00 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5A08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A18 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5A20 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5A28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A38 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5A40 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5A48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A58 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5A60 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5A68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A78 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5A80 DEFB $5A,$00,$00,$00,$00,$00,$00,$00 $5A88 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A90 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5A98 DEFB $00,$00,$00,$00,$00,$00,$00,$5A $5AA0 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5AA8 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5AB0 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5AB8 DEFB $5A,$5A,$5A,$5A,$5A,$5A,$5A,$5A $5AC0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AC8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AD0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AD8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AE8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AF0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5AF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $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,$20 $5C08 DEFB $20,$23,$05,$00,$00,$00,$10,$07 $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,$08,$DB $5C38 DEFB $40,$00,$FF,$CD,$00,$15,$79,$00 $5C40 DEFB $00,$00,$0A,$00,$FF,$28,$00,$02 $5C48 DEFB $07,$00,$00,$40,$5D,$00,$00,$B6 $5C50 DEFB $5C,$BB,$5C,$CB,$5C,$32,$5D,$CA $5C58 DEFB $5C,$41,$5D,$44,$5D,$31,$5D,$9B $5C60 DEFB $5D,$46,$5D,$46,$5D,$46,$5D,$2D $5C68 DEFB $92,$5C,$00,$02,$00,$00,$00,$00 $5C70 DEFB $00,$00,$00,$00,$B6,$1A,$00,$00 $5C78 DEFB $98,$02,$00,$58,$FF,$00,$00,$21 $5C80 DEFB $00,$5B,$21,$17,$20,$48,$E0,$50 $5C88 DEFB $21,$0F,$21,$17,$03,$00,$FF,$44 $5C90 DEFB $00,$03,$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,$1F,$00,$E7 $5CD0 DEFB $30,$0E,$00,$00,$00,$00,$00,$3A $5CD8 DEFB $DA,$30,$0E,$00,$00,$00,$00,$00 $5CE0 DEFB $3A,$FD,$33,$31,$30,$30,$30,$0E $5CE8 DEFB $00,$00,$18,$79,$00,$0D,$00,$14 $5CF0 DEFB $05,$00,$EF,$22,$22,$AA,$0D,$00 $5CF8 DEFB $19,$13,$00,$F5,$AC,$37,$0E,$00 $5D00 DEFB $00,$07,$00,$00,$2C,$30,$0E,$00 $5D08 DEFB $00,$00,$00,$00,$3B,$0D,$00,$1E $5D10 DEFB $05,$00,$EF,$22,$22,$AF,$0D,$00 $5D18 DEFB $28,$17,$00,$F2,$30,$0E,$00,$00 $5D20 DEFB $00,$00,$00,$3A,$F9,$C0,$33,$32 $5D28 DEFB $30,$30,$30,$0E,$00,$00,$00,$7D $5D30 DEFB $00,$0D,$00,$32,$0A,$00,$EC,$34 $5D38 DEFB $30,$0E,$00,$00,$28,$00,$00,$0D $5D40 DEFB $80,$EF,$22,$22,$0D,$80,$00,$00 $5D48 DEFB $00,$7D,$00,$20,$20,$20,$20,$20 $5D50 DEFB $20,$00,$00,$00,$00,$00,$00,$03 $5D58 DEFB $57,$49,$5A,$43,$4F,$44,$45,$10 $5D60 DEFB $00,$20,$E8,$86,$00,$7D,$00,$80 $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,$6F,$48,$8F,$48,$0F $78F0 DEFB $0C,$EB,$BA,$F4,$BA,$01,$88,$4E $78F8 DEFB $89,$C2,$02,$B4,$89,$14,$09,$90 $7900 DEFB $8A,$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 @start @org ; Entrypoint ; ; Simply jumps to #R$89F9. @label=ENTRYPOINT c$7D00 JP $89F9 ; ; Variable - Round counter @label=ROUND_COUNTER b$7D03 DEFB $03 ; Routine at 7D04 ; ; Used by the routine at #R$95C7. @label=ROUTINE_7D04 c$7D04 LD A,($7D03) ; {If the round counter < 6, return. TODO Why? $7D07 CP $06 ; $7D09 RET M ; } $7D0A LD HL,$E01F ; {Set the target location to the top left space in table $7D0D LD ($AC12),HL ; 1.} $7D10 LD B,$9F ; Going to loop for every space in the arena. *$7D12 PUSH BC ; $7D13 LD A,(HL) ; A = object at the target location. $7D14 CP $02 ; {If A < 2 jump to #R$7D3B. $7D16 JP M,$7D3B ; } $7D19 CP $22 ; {If A >= $22 (gooey blob and up) jump to #R$7D3B. $7D1B JP P,$7D3B ; } $7D1E LD DE,$0281 ; {HL = HL + $0281, so that it's pointing at the $7D21 ADD HL,DE ; equivalent location in table 5 (see #R$E2A0).} $7D22 LD A,(HL) ; A = data from table 5 $7D23 SUB $29 ; Subtract $29 to convert from a wizard's "creature ID" to ; the player ID. (First wizard has ID 0 and creature ID ; $29, etc. See #R$E3E0.) $7D25 LD HL,$AC0E ; HL = memory address of current wizard ID $7D28 CP (HL) ; {If A == current wizard ID jump to #R$7D3B. $7D29 JR Z,$7D3B ; } $7D2B LD HL,($AC12) ; HL = target location $7D2E LD DE,$01E1 ; {HL = HL + $01E1, so that it's pointing at the $7D31 ADD HL,DE ; equivalent location in table 4 (see #R$E200).} $7D32 LD A,(HL) ; A = data from table 4 $7D33 AND $07 ; AND 7 - i.e. reset all but the three least significant ; bits. This is because table 4 contains information in ; those other bits that isn't relevant right now. $7D35 LD HL,$AC0E ; {If A == current wizard ID (i.e. the creature we're $7D38 CP (HL) ; looking at is owned by the current wizard), jump to $7D39 JR Z,$7D52 ; #R$7D52.} *$7D3B POP BC ; $7D3C LD HL,($AC12) ; {Increase #R$AC12 by 1, moving on to the next arena $7D3F INC HL ; space. $7D40 LD ($AC12),HL ; } $7D43 DJNZ $7D12 ; If we still have spaces to look at, jump back to ; #R$7D12. $7D45 LD HL,$AC1E ; {Set the wizard's status value in the small table at $7D48 LD D,$00 ; #R$AC1E to $14 (20 in decimal). TODO Why? $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 ; {Set the wizard's status value in the small table at $7D56 LD D,$00 ; #R$AC1E to 0. TODO Why? $7D58 LD A,($AC0E) ; $7D5B LD E,A ; $7D5C ADD HL,DE ; $7D5D LD (HL),$00 ; } $7D5F RET ; ; Table - spells ; ; This holds the information for all of the spells in the game. TODO Why are ; some of the addresses in here different from the ID that is stored when the ; user selects the spell? ; . ; #LIST(data) ; { ID: The spell's ID. } ; { Casting chance. 0 is 10%, 9 is 100%. } ; { The max cast distance, times two then plus 1. Stored like this for use in ; calculating diagonal distances. } ; { Effect on the chaos/law indicator. This is in two's complement for negative ; values. Positive is lawful and negative is chaotic. } ; { TODO: Unknown. Saved into the wizard's spell inventory alongside the spell ; ID. } ; { The last two values are the address of the routine to call when casting the ; spell, swapped around. } ; LIST# ; . ; #TABLE(default,centre) ; { =h ID | =h Casting Chance | =h Distance * 2 | =h Chaos/law | =h Unknown | ; =h Routine } ; #FOR(0,64)//n/ { #PEEK($7D60+n*$7) | #PEEK($7D60+n*$7+1) | ; #PEEK($7D60+n*$7+2) | #PEEK($7D60+n*$7+3) | #PEEK($7D60+n*$7+4) | } ; // TABLE# @label=TABLE_SPELLS b$7D60 DEFB $5D,$09,$FF,$00,$00,$F1,$99 ; 1: $01 #R$99F1 Disbelieve $7D67 DEFB $02,$08,$03,$01,$12,$75,$99 ; 2: $02 #R$9975 King Cobra $7D6E DEFB $03,$08,$03,$FF,$12,$75,$99 ; 3: $03 #R$9975 Dire Wolf $7D75 DEFB $04,$08,$03,$FF,$12,$75,$99 ; 4: $04 #R$9975 Goblin $7D7C DEFB $05,$07,$03,$00,$12,$75,$99 ; 5: $05 #R$9975 Crocodile $7D83 DEFB $06,$07,$03,$FF,$12,$75,$99 ; 6: $06 #R$9975 Faun $7D8A DEFB $07,$05,$03,$01,$12,$75,$99 ; 7: $07 #R$9975 Lion $7D91 DEFB $08,$06,$03,$02,$12,$75,$99 ; 8: $08 #R$9975 Elf $7D98 DEFB $09,$09,$03,$FF,$12,$75,$99 ; 9: $09 #R$9975 Orc $7D9F DEFB $0A,$05,$03,$01,$12,$75,$99 ; 10: $0A #R$9975 Bear $7DA6 DEFB $0B,$06,$03,$00,$12,$75,$99 ; 11: $0B #R$9975 Gorilla $7DAD DEFB $0C,$06,$03,$FF,$12,$75,$99 ; 12: $0C #R$9975 Ogre $7DB4 DEFB $0D,$04,$03,$FF,$12,$75,$99 ; 13: $0D #R$9975 Hydra $7DBB DEFB $0E,$09,$03,$00,$12,$75,$99 ; 14: $0E #R$9975 Giant Rat $7DC2 DEFB $0F,$03,$03,$01,$12,$75,$99 ; 15: $0F #R$9975 Giant $7DC9 DEFB $10,$08,$03,$01,$12,$75,$99 ; 16: $10 #R$9975 Horse $7DD0 DEFB $11,$05,$03,$02,$12,$75,$99 ; 17: $11 #R$9975 Unicorn $7DD7 DEFB $12,$06,$03,$01,$12,$75,$99 ; 18: $12 #R$9975 Centaur $7DDE DEFB $13,$05,$03,$02,$12,$75,$99 ; 19: $13 #R$9975 Pegasus $7DE5 DEFB $14,$05,$03,$01,$12,$75,$99 ; 20: $14 #R$9975 Gryphon $7DEC DEFB $15,$03,$03,$FF,$12,$75,$99 ; 21: $15 #R$9975 Manticore $7DF3 DEFB $16,$07,$03,$FF,$12,$75,$99 ; 22: $16 #R$9975 Bat $7DFA DEFB $17,$00,$03,$FF,$12,$75,$99 ; 23: $17 #R$9975 Green Dragon $7E01 DEFB $18,$00,$03,$FF,$12,$75,$99 ; 24: $18 #R$9975 Red Dragon $7E08 DEFB $19,$00,$03,$02,$12,$75,$99 ; 25: $19 #R$9975 Golden Dragon $7E0F DEFB $1A,$05,$03,$FF,$12,$75,$99 ; 26: $1A #R$9975 Harpy $7E16 DEFB $1B,$06,$03,$01,$12,$75,$99 ; 27: $1B #R$9975 Eagle $7E1D DEFB $1C,$01,$03,$FE,$12,$75,$99 ; 28: $1C #R$9975 Vampire $7E24 DEFB $1D,$04,$03,$FF,$12,$75,$99 ; 29: $1D #R$9975 Ghost $7E2B DEFB $1E,$05,$03,$FF,$12,$75,$99 ; 30: $1E #R$9975 Spectre $7E32 DEFB $1F,$04,$03,$FF,$12,$75,$99 ; 31: $1F #R$9975 Wraith $7E39 DEFB $20,$06,$03,$FF,$12,$75,$99 ; 32: $20 #R$9975 Skeleton $7E40 DEFB $21,$08,$03,$FF,$12,$75,$99 ; 33: $21 #R$9975 Zombie $7E47 DEFB $61,$08,$0D,$FF,$12,$75,$99 ; 34: $22 #R$9975 Gooey Blob $7E4E DEFB $60,$07,$0D,$FF,$12,$75,$99 ; 35: $23 #R$9975 Magic Fire $7E55 DEFB $24,$07,$11,$01,$11,$DD,$9A ; 36: $24 #R$9ADD Magic Wood $7E5C DEFB $25,$03,$11,$FF,$12,$DD,$9A ; 37: $25 #R$9ADD Shadow Wood $7E63 DEFB $26,$04,$11,$01,$17,$DD,$9A ; 38: $26 #R$9ADD Magic Castle $7E6A DEFB $27,$04,$11,$FF,$17,$DD,$9A ; 39: $27 #R$9ADD Dark Citadel $7E71 DEFB $28,$07,$0D,$00,$0C,$76,$9B ; 40: $28 #R$9B76 Wall $7E78 DEFB $70,$09,$0D,$00,$12,$59,$9C ; 41: $29 #R$9C59 Magic Bolt $7E7F DEFB $70,$09,$0D,$00,$12,$59,$9C ; 42: $2A #R$9C59 Magic Bolt $7E86 DEFB $62,$09,$09,$00,$12,$59,$9C ; 43: $2B #R$9C59 Lightning $7E8D DEFB $62,$09,$09,$00,$12,$59,$9C ; 44: $2C #R$9C59 Lightning $7E94 DEFB $63,$07,$1E,$FF,$0C,$E0,$9D ; 45: $2D #R$9DE0 Vengeance $7E9B DEFB $65,$07,$1E,$01,$0C,$E0,$9D ; 46: $2E #R$9DE0 Decree $7EA2 DEFB $64,$04,$1E,$FE,$0B,$E0,$9D ; 47: $2F #R$9DE0 Dark Power $7EA9 DEFB $66,$04,$1E,$02,$0B,$E0,$9D ; 48: $30 #R$9DE0 Justice $7EB0 DEFB $6B,$06,$00,$01,$17,$04,$84 ; 49: $31 #R$8404 Magic Shield $7EB7 DEFB $6C,$03,$00,$01,$17,$6A,$83 ; 50: $32 #R$836A Magic Armour $7EBE DEFB $6D,$03,$00,$01,$10,$9C,$83 ; 51: $33 #R$839C Magic Sword $7EC5 DEFB $6E,$06,$00,$01,$10,$D0,$83 ; 52: $34 #R$83D0 Magic Knife $7ECC DEFB $6F,$04,$00,$01,$11,$6A,$84 ; 53: $35 #R$846A Magic Bow $7ED3 DEFB $7B,$04,$00,$00,$0E,$38,$84 ; 54: $36 #R$8438 Magic Wings $7EDA DEFB $67,$07,$00,$02,$05,$B0,$84 ; 55: $37 #R$84B0 Law-1 $7EE1 DEFB $68,$05,$00,$04,$06,$B0,$84 ; 56: $38 #R$84B0 Law-2 $7EE8 DEFB $69,$07,$00,$FE,$05,$B0,$84 ; 57: $39 #R$84B0 Chaos-1 $7EEF DEFB $6A,$05,$00,$FC,$06,$B0,$84 ; 58: $3A #R$84B0 Chaos-2 $7EF6 DEFB $7D,$06,$00,$00,$12,$C0,$84 ; 59: $3B #R$84C0 Shadow Form $7EFD DEFB $75,$09,$0F,$00,$12,$F7,$84 ; 60: $3C #R$84F7 Subversion $7F04 DEFB $75,$09,$0F,$00,$12,$F7,$84 ; 61: $3D #R$84F7 Subversion $7F0B DEFB $73,$04,$09,$FF,$12,$F6,$85 ; 62: $3E #R$85F6 Raise Dead $7F12 DEFB $73,$04,$09,$FF,$12,$F6,$85 ; 63: $3F #R$85F6 Raise Dead $7F19 DEFB $76,$09,$14,$FF,$11,$EF,$86 ; #R$86EF Turmoil $7F20 DEFB $76,$09,$14,$FF,$11,$EF,$86 ; #R$86EF Turmoil ; Graphics - select cursor ; ; #HTML(#UDGARRAY2;$7F27-$7F3F-8(cursorselect.png)) @label=GRAPHICS_SELECT_CURSOR b$7F27 DEFB $FF,$80,$80,$87,$8C,$88,$8C,$87 $7F2F DEFB $FF,$01,$01,$E1,$31,$11,$01,$E1 $7F37 DEFB $80,$80,$88,$8C,$87,$80,$80,$FF $7F3F DEFB $31,$11,$11,$31,$E1,$01,$01,$FF ; Table - Wizard spell inventories ; ; Contains the set of spells assigned to a wizard at the start of the game. ; They're arranged in two bytes - the purpose of the first byte is unknown, but ; the second byte is the spell ID. (TODO: investigate first byte) As the spell ; is cast, the byte representing the spell ID is set to 0. @label=TABLE_WIZARD_SPELL_INVENTORIES b$7F47 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F51 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F5B DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F65 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F6F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F79 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F83 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F8D DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7F97 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FA1 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FAB DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FB5 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FBF DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FC9 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FD3 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FDD DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FE7 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FF1 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $7FFB DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8005 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $800F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8019 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8023 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $802D DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8037 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8041 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $804B DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8055 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $805F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8069 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8073 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $807D DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $8087 DEFB $00,$12,$02,$00,$05,$00,$1F,$00,$08,$00 $8091 DEFB $1D,$00,$01,$00,$00,$00,$00,$00,$00,$00 $809B DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $80A5 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $80AF DEFB $00 ; Graphics - wizard - magic sword ; ; #HTML(#FOR(0,2)//n/ ; #UDGARRAY2;($80B0+n*$20)-(($80B0+n*$20)+$18)-8(magic_swordn*.png) //) @label=GRAPHICS_WIZ_SWORD b$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 ; Graphics - wizard - magic knife ; ; #HTML(#FOR(0,2)//n/ ; #UDGARRAY2;($8110+n*$20)-(($8110+n*$20)+$18)-8(magic_knifen*.png) //) @label=GRAPHICS_WIZ_KNIFE b$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 ; Graphics - wizard - magic armour ; ; #HTML(#UDGARRAY2;$8170-$8188-8(magic_armour.png)) @label=GRAPHICS_WIZ_ARMOUR b$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 ; Graphics - wizard - magic shield ; ; #HTML(#UDGARRAY2;$8190-$81A8-8(magic_shieldn*.png)) @label=GRAPHICS_WIZ_SHIELD b$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 ; Graphics - wizard - magic wings ; ; #HTML(#FOR(0,2)//n/ ; #UDGARRAY2;($81B0+n*$20)-(($81B0+n*$20)+$18)-8(magic_wingsn*.png) //) @label=GRAPHICS_WIZ_WINGS b$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 ; Graphics - wizard - magic bow ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($8210+n*$20)-(($8210+n*$20)+$18)-8(magic_bown*.png) //) @label=GRAPHICS_WIZ_BOW b$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 ; Graphics data for a wizard with a sword @label=GRAPHICS_DATA_WIZ_SWORD b$8290 DEFB $B0,$80,$D0,$80,$F0,$80,$D0,$80 ; #R$80B0 ; Graphics data for a wizard with a knife @label=GRAPHICS_DATA_WIZ_KNIFE b$8298 DEFB $10,$81,$30,$81,$50,$81,$30,$81 ; #R$8110 ; Graphics data for a wizard with magic armour @label=GRAPHICS_DATA_WIZ_ARMOUR b$82A0 DEFB $70,$81,$70,$81,$70,$81,$70,$81 ; #R$8170 ; Graphics data for a wizard with a magic shield @label=GRAPHICS_DATA_WIZ_SHIELD b$82A8 DEFB $90,$81,$90,$81,$90,$81,$90,$81 ; #R$8190 ; Graphics data for a wizard with magic wings @label=GRAPHICS_DATA_WIZ_WINGS b$82B0 DEFB $B0,$81,$D0,$81,$F0,$81,$D0,$81 ; #R$81B0 ; Graphics data for a wizard with bow @label=GRAPHICS_DATA_WIZ_BOW b$82B8 DEFB $10,$82,$30,$82,$50,$82,$70,$82 ; #R$8210 ; Table - Defines the graphics data for wizards. @label=TABLE_WIZ_GRAPHICS b$82C0 DEFB $34,$FD,$34,$FD,$34,$FD,$34,$FD ; #R$FD34 Wizard 1 $82C8 DEFB $54,$FD,$54,$FD,$54,$FD,$54,$FD ; #R$FD54 Wizard 2 $82D0 DEFB $74,$FD,$74,$FD,$74,$FD,$74,$FD ; #R$FD74 Wizard 3 $82D8 DEFB $94,$FD,$94,$FD,$94,$FD,$94,$FD ; #R$FD94 Wizard 4 $82E0 DEFB $B4,$FD,$B4,$FD,$B4,$FD,$B4,$FD ; #R$FDB4 Wizard 5 $82E8 DEFB $D4,$FD,$D4,$FD,$D4,$FD,$D4,$FD ; #R$FDD4 Wizard 6 $82F0 DEFB $F4,$FD,$F4,$FD,$F4,$FD,$F4,$FD ; #R$FDF4 Wizard 7 $82F8 DEFB $14,$FE,$14,$FE,$14,$FE,$14,$FE ; #R$FE14 Wizard 8 ; Load current wizard details. ; ; Afterwards #R$89AA will contain the memory address at which the current ; wizard's name can be found, and #R$8321 will contain the memory address of ; the wizard's graphics. ; . ; Used by the routines at #R$8324, #R$846A, #R$84C0 and #R$89F9. @label=LOAD_CURRENT_WIZARD_DETAILS c$8300 PUSH HL ; $8301 LD A,($AC0E) ; Load the current player number from #R$AC0E into A. $8304 LD B,$00 ; {Get the offset from which we can get the current $8306 ADD A,$28 ; wizard's information from the table at #R$E3E0, and $8308 SLA A ; store it in BC. We add 40 to the player number and $830A LD C,A ; double it using SLA (we double it because that table has ; two bytes for each entry).} $830B LD HL,$E3E0 ; {Add the offset that was just calculated to the start $830E ADD HL,BC ; address of the #R$E3E0 table to get the address at which ; the current wizard's name can be found. This is then ; stored in HL.} $830F LD E,(HL) ; {Load DE with the contents at the memory address we just $8310 INC HL ; found, i.e. the address at which we can find the current $8311 LD D,(HL) ; wizard's name.} $8312 EX DE,HL ; Swap DE and HL. HL now contains the address at which the ; current wizard's name can be found. $8313 LD DE,$0017 ; Set DE to 23 (because the graphics data is 23 bytes ; after the start of the wizard name). $8316 LD ($89AA),HL ; Store the memory address for the wizard's name into ; #R$89AA. $8319 ADD HL,DE ; {Calculate the start of the wizard's graphics data and $831A LD ($8321),HL ; store it in #R$8321.} $831D POP HL ; $831E RET ; ; Pointer - graphics data to apply to a wizard ; ; Will contain one of the addresses in the table starting at #R$8290. Mostly ; used in routine #R$8324, and at the start of a game when choosing the wizard ; graphics (#R$8C29). @label=NEW_WIZ_GRAPHICS_POINTER b$831F DEFB $D0,$82 ; Pointer - address of the current wizard's graphics data. ; ; Populated in #R$8300. @label=CURRENT_WIZ_GRAPHICS_POINTER b$8321 DEFB $A1,$90 ; Flag - Is number key input limited to 2 to 8. ; ; 1 if the routine at #R$89B0 should stop the user selecting the value 1. @label=PRESS_2_TO_8_FLAG b$8323 DEFB $01 ; Change wizard graphics. ; ; Required variables: #R$831F (and the next byte) should contain the address of ; the graphics data to apply, and #R$8321 (and the next byte) will contain the ; start address of the wizard's graphics data. ; . ; An example of the wizard graphics settings we'll overwrite is at #R$EA50. ; Four sets of three bytes, consisting of: two bytes indicating the memory ; address of the graphics to use; then one byte indicating the paper and ink ; colour (which is chosen during game setup). ; . ; Used by the routines at #R$836A, #R$839C, #R$83D0, #R$8404, #R$8438, #R$846A ; and #R$89F9. @label=CHANGE_WIZARD_GRAPHICS c$8324 CALL $8300 ; Load current wizard details. $8327 LD B,$04 ; {Going to loop four times... *$8329 PUSH BC ; } $832A LD B,$02 ; {And two loops within that... *$832C PUSH BC ; } $832D LD HL,($831F) ; Load the address of the graphics data to apply from ; #R$831F into HL. $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 ; ; Load the current wizard's status. ; ; Used by the routines at #R$836A, #R$839C, #R$83D0, #R$8404, #R$8438 and ; #R$84C0. ; ; Output:A The current wizard's status mask. ; HL The memory location at which the current wizard's status mask can ; . be found. @label=LOAD_CURRENT_WIZARD_STATUS c$834B LD A,($AC0E) ; Load the current player number from #R$AC0E into A. $834E LD D,$00 ; {Set DE to the current player number. $8350 LD E,A ; } $8351 LD HL,$AC16 ; #R$AC16 is the address that stores the wizard status ; flags. Load that address into HL. $8354 ADD HL,DE ; Adds DE to HL and stores the result in HL. This gives us ; the memory address of the current wizard's status. $8355 LD A,(HL) ; Load the contents of HL into A. $8356 RET ; ; Cast wizard buff spell, e.g magic items, wings, shadow form ; ; Used by the routines at #R$836A, #R$839C, #R$83D0, #R$8404, #R$8438,#R$846A ; and #R$84C0. @label=CAST_WIZARD_BUFF_SPELL c$8357 LD A,($AC2E) ; {If the current wizard is player controlled jump to $835A OR A ; #R$8360. $835B JR Z,$8360 ; } $835D CALL $967A ; *$8360 CALL $9760 ; $8363 CALL $97D1 ; $8366 CALL $A18A ; $8369 RET ; ; Cast Magic Armour @label=CAST_MAGIC_ARMOUR c$836A LD A,($AC2E) ; {If the current wizard is player controlled jump to $836D OR A ; #R$837D. $836E JR Z,$837D ; } $8370 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $8373 AND $80 ; {Check the 128 bit of the wizard status. If it's set, $8375 JR Z,$837D ; the wizard already has magic armour, and we fall ; through. Otherwise jump to #R$837D.} $8377 LD A,$00 ; {Record that the spell was not cast. $8379 LD ($975F),A ; } $837C RET ; *$837D CALL $8357 ; $8380 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$8395. $8383 OR A ; $8384 JR Z,$8395 ; } $8386 LD HL,$82A0 ; {Load #R$831F with the graphics data for the magic $8389 LD ($831F),HL ; armour (see table at #R$8290).} $838C CALL $8324 ; Change the current wizard's graphics. $838F CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $8392 OR $C0 ; $8394 LD (HL),A ; *$8395 CALL $C0DD ; $8398 CALL $97A3 ; Display the spell succeeds/fails message. $839B RET ; ; Cast Magic Sword @label=CAST_MAGIC_SWORD c$839C LD A,($AC2E) ; {If the current wizard is player controlled jump to $839F OR A ; #R$83AF. $83A0 JR Z,$83AF ; } $83A2 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $83A5 AND $04 ; {Check the 4 bit of the wizard status. If it's set, the $83A7 JR Z,$83AF ; wizard already has a magic sword, and we fall through. ; Otherwise jump to #R$83AF.} $83A9 LD A,$00 ; {Record that the spell was not cast. $83AB LD ($975F),A ; } $83AE RET ; *$83AF CALL $8357 ; $83B2 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$83C9. $83B5 OR A ; $83B6 JR Z,$83C9 ; } $83B8 LD HL,$8290 ; {Load #R$831F with the graphics data for the magic sword $83BB LD ($831F),HL ; (see table at #R$8290).} $83BE CALL $8324 ; Change the current wizard's graphics. $83C1 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $83C4 AND $FC ; $83C6 OR $04 ; $83C8 LD (HL),A ; *$83C9 CALL $C0DD ; $83CC CALL $97A3 ; Display the spell succeeds/fails message. $83CF RET ; ; Cast Magic Knife @label=CAST_MAGIC_KNIFE c$83D0 LD A,($AC2E) ; {If the current wizard is player controlled jump to $83D3 OR A ; #R$83E3. $83D4 JR Z,$83E3 ; } $83D6 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $83D9 AND $07 ; {Check the 4,2 and 1 bits of the wizard status. If $83DB JR Z,$83E3 ; they're set, the wizard already has a magic knife, and ; we fall through. Otherwise jump to #R$83E3.} $83DD LD A,$00 ; {Record that the spell was not cast. $83DF LD ($975F),A ; } $83E2 RET ; *$83E3 CALL $8357 ; $83E6 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$83FD. $83E9 OR A ; $83EA JR Z,$83FD ; } $83EC LD HL,$8298 ; {Load #R$831F with the graphics data for the magic knife $83EF LD ($831F),HL ; (see table at #R$8290).} $83F2 CALL $8324 ; Change the current wizard's graphics. $83F5 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $83F8 AND $F8 ; $83FA OR $02 ; $83FC LD (HL),A ; *$83FD CALL $C0DD ; $8400 CALL $97A3 ; Display the spell succeeds/fails message. $8403 RET ; ; Cast Magic Shield @label=CAST_MAGIC_SHIELD c$8404 LD A,($AC2E) ; {If the current wizard is player controlled jump to $8407 OR A ; #R$8417. $8408 JR Z,$8417 ; } $840A CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $840D AND $40 ; {Check the 64 bit of the wizard status. If it's set, the $840F JR Z,$8417 ; wizard already has a magic shield, and we fall through. ; Otherwise jump to #R$8417.} $8411 LD A,$00 ; {Record that the spell was not cast. $8413 LD ($975F),A ; } $8416 RET ; *$8417 CALL $8357 ; $841A LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$8431. $841D OR A ; $841E JR Z,$8431 ; } $8420 LD HL,$82A8 ; {Load #R$831F with the graphics data for the magic $8423 LD ($831F),HL ; shield (see table at #R$8290).} $8426 CALL $8324 ; Change the current wizard's graphics. $8429 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $842C AND $7F ; $842E OR $40 ; $8430 LD (HL),A ; *$8431 CALL $C0DD ; $8434 CALL $97A3 ; Display the spell succeeds/fails message. $8437 RET ; ; Cast Magic Wings @label=CAST_MAGIC_WINGS c$8438 LD A,($AC2E) ; {If the current wizard is player controlled jump to $843B OR A ; #R$844B. $843C JR Z,$844B ; } $843E CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $8441 AND $20 ; {Check the 32 bit of the wizard status. If it's set, the $8443 JR Z,$844B ; wizard already has magic wings, and we fall through. ; Otherwise jump to #R$844B.} $8445 LD A,$00 ; {Record that the spell was not cast. $8447 LD ($975F),A ; } $844A RET ; *$844B CALL $8357 ; $844E LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$8463. $8451 OR A ; $8452 JR Z,$8463 ; } $8454 LD HL,$82B0 ; {Load #R$831F with the graphics data for the magic wings $8457 LD ($831F),HL ; (see table at #R$8290).} $845A CALL $8324 ; Change the current wizard's graphics. $845D CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $8460 OR $20 ; $8462 LD (HL),A ; *$8463 CALL $C0DD ; $8466 CALL $97A3 ; Display the spell succeeds/fails message. $8469 RET ; ; Cast Magic Bow @label=CAST_MAGIC_BOW c$846A LD A,($AC2E) ; {If the current wizard is player controlled jump to $846D OR A ; #R$8486. $846E JR Z,$8486 ; } $8470 CALL $8300 ; Load current wizard details. $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 ; {Record that the spell was not cast. $8482 LD ($975F),A ; } $8485 RET ; *$8486 CALL $8357 ; $8489 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$84A9. $848C OR A ; $848D JR Z,$84A9 ; } $848F LD HL,$82B8 ; {Load #R$831F with the graphics data for the magic bow $8492 LD ($831F),HL ; (see table at #R$8290).} $8495 CALL $8324 ; Change the current wizard's graphics. $8498 CALL $8300 ; Load current wizard details. $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 ; Display the spell succeeds/fails message. $84AF RET ; ; Cast Chaos/Law @label=CAST_CHAOS_OR_LAW c$84B0 LD A,($AC2E) ; {If the current wizard is player controlled jump to $84B3 OR A ; #R$84B9. $84B4 JR Z,$84B9 ; } $84B6 CALL $967A ; *$84B9 CALL $9760 ; $84BC CALL $97A3 ; Display the spell succeeds/fails message. $84BF RET ; ; Cast Shadow Form @label=CAST_SHADOW_FORM c$84C0 LD A,($AC2E) ; {If the current wizard is player controlled jump to $84C3 OR A ; #R$84D3. $84C4 JR Z,$84D3 ; } $84C6 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $84C9 BIT 3,(HL) ; $84CB JR Z,$84D3 ; $84CD LD A,$00 ; {Record that the spell was not cast. $84CF LD ($975F),A ; } $84D2 RET ; *$84D3 CALL $8357 ; $84D6 CALL $97A3 ; Display the spell succeeds/fails message. $84D9 LD A,($9167) ; {If the spell failed (see #R$9167), return. $84DC OR A ; $84DD RET Z ; } $84DE CALL $8300 ; Load current wizard details. $84E1 LD HL,($8321) ; $84E4 LD DE,$0005 ; $84E7 ADD HL,DE ; $84E8 LD (HL),$00 ; $84EA LD DE,$0006 ; $84ED ADD HL,DE ; $84EE LD (HL),$00 ; $84F0 CALL $834B ; Load the wizard's status. Afterwards, A will contain the ; current wizard's status mask, and HL will contain the ; memory location at which that status mask can be found. $84F3 OR $08 ; $84F5 LD (HL),A ; $84F6 RET ; ; Cast Subversion @label=CAST_SUBVERSION c$84F7 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $84FA OR A ; #R$853B. $84FB JR NZ,$853B ; } $84FD CALL $BED7 ; Clear the message bar. $8500 LD A,$03 ; $8502 LD ($5C91),A ; *$8505 CALL $BC96 ; User key input. $8508 CALL $02BF ; Keyboard ROM subroutine. $850B CP $53 ; {If the user pressed S jump to #R$851B. $850D JR Z,$851B ; } $850F CP $4B ; {If the user pressed anything other than K jump back to $8511 JR NZ,$8505 ; #R$8505.} $8513 LD HL,$C2B1 ; {The user pressed K. Play a sound effect, enable $8516 CALL $C2F9 ; interrupts and return. $8519 EI ; $851A RET ; } *$851B CALL $85EC ; Get the value in board state table 5 representing the ; spot at which the cursor is pointing. TODO - what does ; table 5 represent though? $851E JR NZ,$8505 ; If it's not 0, jump back to the start. $8520 LD HL,($AC12) ; {A = ID of the target object. $8523 LD A,(HL) ; } $8524 CP $22 ; {If A == 0, or A >= $22 (i.e. not a creature that can be $8526 JP P,$8505 ; subverted) jump back to #R$8505. $8529 OR A ; $852A JR Z,$8505 ; } $852C CALL $9786 ; $852F JP M,$8505 ; $8532 CALL $98DB ; $8535 JR NZ,$8505 ; $8537 CALL $859C ; $853A RET ; *$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 ; *$8557 CALL $A17E ; $855A CP $FF ; $855C JR NZ,$8567 ; $855E LD A,$00 ; {Record that the spell was not cast. $8560 LD ($975F),A ; } $8563 CALL $96E6 ; $8566 RET ; *$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 ; $8585 JP M,$8557 ; $8588 CALL $98DB ; $858B JR NZ,$8557 ; $858D LD HL,($AC12) ; $8590 LD DE,$01E1 ; $8593 ADD HL,DE ; $8594 BIT 5,(HL) ; $8596 JR NZ,$8557 ; $8598 CALL $859C ; $859B RET ; ; Routine at 859C ; ; Used by the routine at #R$84F7. @label=ROUTINE_859C c$859C LD A,($AC2E) ; {If the current wizard is player controlled jump to $859F OR A ; #R$85A5. $85A0 JR Z,$85A5 ; } $85A2 CALL $967A ; *$85A5 CALL $A18A ; $85A8 LD HL,($AC12) ; $85AB LD DE,$01E1 ; $85AE ADD HL,DE ; $85AF BIT 4,(HL) ; $85B1 JR NZ,$85CA ; $85B3 LD HL,($AC12) ; $85B6 LD D,(HL) ; $85B7 LD E,$13 ; {A = the creature's magic resistance. $85B9 CALL $BE0A ; } $85BC INC A ; $85BD LD ($A172),A ; $85C0 CALL $904B ; $85C3 LD HL,$A172 ; $85C6 CP (HL) ; $85C7 JP M,$85D3 ; *$85CA LD A,$00 ; $85CC LD ($9167),A ; $85CF CALL $97A3 ; Display the spell succeeds/fails message. $85D2 RET ; *$85D3 LD HL,($AC12) ; $85D6 LD DE,$01E1 ; $85D9 ADD HL,DE ; $85DA LD A,(HL) ; $85DB AND $F8 ; $85DD LD E,A ; $85DE LD A,($AC0E) ; $85E1 ADD A,E ; $85E2 LD (HL),A ; $85E3 LD A,$01 ; $85E5 LD ($9167),A ; $85E8 CALL $97A3 ; Display the spell succeeds/fails message. $85EB RET ; ; Maybe get owner ; ; Used by the routine at #R$84F7. @label=GET_INFO_FROM_BOARD_STATE_TABLE_5 c$85EC LD HL,($AC12) ; {Load the memory address at which the cursor is pointing $85EF LD DE,$0281 ; and add $0281. Go to that memory location and set A to $85F2 ADD HL,DE ; its value, OR A to set the registers, and return. A now $85F3 LD A,(HL) ; contains the corresponding location in the fifth board $85F4 OR A ; state table. TODO - what does it represent? $85F5 RET ; } ; Cast Raise Dead @label=CAST_RAISE_DEAD c$85F6 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $85F9 OR A ; #R$8639. $85FA JR NZ,$8639 ; } $85FC CALL $BED7 ; Clear the message bar. $85FF LD A,$03 ; $8601 LD ($5C91),A ; @label=CAST_RAISE_DEAD_1 *$8604 CALL $BC96 ; User key input. $8607 CALL $02BF ; Keyboard ROM subroutine. $860A CP $53 ; {If the user pressed S jump to #R$861A. $860C JR Z,$861A ; } $860E CP $4B ; {If the user pressed anything other than K jump back to $8610 JR NZ,$8604 ; #R$8604.} $8612 LD HL,$C2B1 ; {The user pressed K. Play a sound effect, enable $8615 CALL $C2F9 ; interrupts and return. $8618 EI ; $8619 RET ; } @label=CAST_RAISE_DEAD_2 *$861A LD HL,($AC12) ; {Set A to the ID of the creature at the cursor location. $861D LD A,(HL) ; } $861E OR A ; {If there is no creature, jump back to #R$8604. $861F JR Z,$8604 ; } $8621 LD DE,$0141 ; {A = data at cursor location for arena status table 3. $8624 ADD HL,DE ; $8625 LD A,(HL) ; } $8626 CP $04 ; {If A != 4, jump back to #R$8604. 4 is used to indicate $8628 JR NZ,$8604 ; that the creature is dead.} $862A CALL $9786 ; $862D JP M,$8604 ; $8630 CALL $98DB ; $8633 JR NZ,$8604 ; $8635 CALL $86C3 ; $8638 RET ; @label=CAST_RAISE_DEAD_3 *$8639 LD HL,$D3F2 ; $863C LD ($CD86),HL ; $863F LD HL,$E01F ; HL = first entry in arena table 1 $8642 LD ($AC12),HL ; Cursor location = HL $8645 LD B,$9F ; B = $9F (looping 160 times, once for each entry in the ; arena table) @label=CAST_RAISE_DEAD_4 *$8647 PUSH BC ; $8648 LD A,(HL) ; A = entry at cursor location $8649 LD ($A172),A ; $864C LD DE,$0141 ; {A = entry at cursor location in arena table 3. $864F ADD HL,DE ; $8650 LD A,(HL) ; } $8651 CP $04 ; {If A != 4 (i.e. the creature is not dead) jump to $8653 JR NZ,$8676 ; #R$8676.} $8655 LD HL,$C6D4 ; $8658 LD D,$00 ; $865A LD A,($A172) ; $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 ; @label=CAST_RAISE_DEAD_5 *$8676 LD HL,($AC12) ; {Increment the cursor location and set HL to the new $8679 INC HL ; value. $867A LD ($AC12),HL ; } $867D POP BC ; {If there are still spaces to check, jump back to $867E DJNZ $8647 ; #R$8647.} $8680 LD HL,$D3F2 ; $8683 LD ($CD86),HL ; $8686 LD A,($C7BB) ; $8689 INC A ; $868A CALL $C64C ; @label=CAST_RAISE_DEAD_6 *$868D CALL $A17E ; $8690 CP $FF ; $8692 JR NZ,$869A ; $8694 LD A,$00 ; {Record that the spell was not cast. $8696 LD ($975F),A ; } $8699 RET ; @label=CAST_RAISE_DEAD_7 *$869A LD HL,$E01F ; $869D LD D,$00 ; $869F LD E,A ; $86A0 ADD HL,DE ; $86A1 LD ($AC12),HL ; $86A4 LD A,(HL) ; $86A5 OR A ; $86A6 JR Z,$868D ; $86A8 LD DE,$0141 ; $86AB ADD HL,DE ; $86AC LD A,(HL) ; $86AD CP $04 ; $86AF JR NZ,$868D ; $86B1 CALL $9786 ; $86B4 JP M,$868D ; $86B7 CALL $98DB ; $86BA JR NZ,$868D ; $86BC CALL $967A ; $86BF CALL $86C3 ; $86C2 RET ; ; Attempt to raise the dead. ; ; Used by the routine at #R$85F6. @label=ATTEMPT_RAISE_DEAD c$86C3 CALL $A18A ; Display cast animation. $86C6 CALL $9760 ; Work out if the spell succeeded. $86C9 LD A,($9167) ; A = whether the spell succeeded $86CC OR A ; {If A == 0, return. $86CD RET Z ; } $86CE LD HL,($AC12) ; {The spell succeeded. Point HL to the memory address of $86D1 LD DE,$0141 ; the dead creature in arena table 3. $86D4 ADD HL,DE ; } $86D5 LD (HL),$00 ; Set the value in arena table 3 to 0, the first animation ; frame. $86D7 LD DE,$00A0 ; {Move HL on by 160 to get the matching location in table $86DA ADD HL,DE ; 4.} $86DB LD E,$60 ; {Add the current wizard ID to $60. We're building up a $86DD LD A,($AC0E) ; status value showing that the current wizard owns the $86E0 ADD A,E ; creature, with bits 5 and 6 are set (setting bit 5 stops ; the computer from disbelieving it, and bit 6 ??? TODO).} $86E1 LD (HL),A ; Set the new status in arena table 4. $86E2 LD DE,$0140 ; {HL = pointer to status value in arena table 6. $86E5 ADD HL,DE ; } $86E6 LD (HL),$00 ; Reset the value in arena table 6 to 0. TODO Why? $86E8 CALL $C0DD ; $86EB CALL $97A3 ; Display the spell succeeds/fails message. $86EE RET ; ; Cast Turmoil @label=CAST_TURMOIL c$86EF LD A,($AC2E) ; {If the current wizard is computer controlled jump to $86F2 OR A ; #R$86F9. $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 ; {Record that the spell was not cast. $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 ; *$8741 CALL $9760 ; $8744 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$87EB. $8747 OR A ; $8748 JP Z,$87EB ; } $874B CALL $A173 ; Mark all objects in the arena as being ready $874E LD HL,$E01F ; $8751 LD ($AC14),HL ; $8754 LD B,$9F ; *$8756 PUSH BC ; $8757 LD A,(HL) ; $8758 OR A ; $8759 JP Z,$87DF ; $875C LD DE,$01E1 ; $875F ADD HL,DE ; $8760 BIT 7,(HL) ; $8762 JR NZ,$87DF ; $8764 LD HL,($AC14) ; $8767 LD ($873C),A ; $876A LD DE,$0141 ; $876D ADD HL,DE ; $876E LD A,(HL) ; $876F LD ($8740),A ; $8772 LD DE,$00A0 ; $8775 ADD HL,DE ; $8776 LD A,(HL) ; $8777 LD ($873D),A ; $877A ADD HL,DE ; $877B LD A,(HL) ; $877C LD ($873E),A ; $877F ADD HL,DE ; $8780 LD A,(HL) ; $8781 LD ($873F),A ; *$8784 CALL $904B ; $8787 LD HL,$907A ; $878A ADD A,(HL) ; $878B CP $9F ; $878D JP P,$8784 ; $8790 LD HL,$E01F ; $8793 LD D,$00 ; $8795 LD E,A ; $8796 ADD HL,DE ; $8797 LD ($AC12),HL ; $879A LD A,(HL) ; $879B OR A ; $879C JR NZ,$8784 ; $879E CALL $980E ; $87A1 JR Z,$8784 ; $87A3 CALL $A18A ; $87A6 LD HL,($AC12) ; $87A9 LD A,($873C) ; $87AC LD (HL),A ; $87AD LD DE,$0141 ; $87B0 ADD HL,DE ; $87B1 LD A,($8740) ; $87B4 LD (HL),A ; $87B5 LD DE,$00A0 ; $87B8 ADD HL,DE ; $87B9 LD A,($873D) ; $87BC OR $80 ; $87BE LD (HL),A ; $87BF ADD HL,DE ; $87C0 LD A,($873E) ; $87C3 LD (HL),A ; $87C4 ADD HL,DE ; $87C5 LD A,($873F) ; $87C8 LD (HL),A ; $87C9 LD HL,($AC14) ; $87CC LD (HL),$00 ; $87CE LD DE,$0281 ; $87D1 ADD HL,DE ; $87D2 LD (HL),$00 ; $87D4 LD DE,$00A0 ; $87D7 ADD HL,DE ; $87D8 LD (HL),$00 ; $87DA CALL $C0DD ; $87DD HALT ; $87DE HALT ; *$87DF LD HL,($AC14) ; $87E2 INC HL ; $87E3 LD ($AC14),HL ; $87E6 POP BC ; $87E7 DEC B ; $87E8 JP NZ,$8756 ; *$87EB CALL $97A3 ; Display the spell succeeds/fails message. $87EE RET ; ; Print message to screen ; ; Prints one of the messages starting at #R$8859 (described in the table at ; #R$8809). ; . ; Used by the routines at #R$89F9 and #R$8F8B. ; ; Input:A the number of the message in the table at #R$8809. (The first entry ; . is 0.) ; BC the screen address where the message should be printed. @label=PRINT_MESSAGE_1 c$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 ; ; Table - text message information ; ; Lists information about the text messages starting at #R$8859. Organised in ; sets of 4 bytes. ; . ; #LIST(data) ; { First two bytes (swapped around) list the memory address of the message } ; { Third byte is the length of the message. } ; { The last byte is zero. } ; LIST# @label=TABLE_TEXT_MESSAGES_1 b$8809 DEFB $59,$88,$1C,$00 ; #R$8859 $00 CHAOS -THE BATTLE OF WIZARDS $880D DEFB $75,$88,$10,$00 ; #R$8875 $01 By Julian Gollop $8811 DEFB $85,$88,$12,$00 ; #R$8885 $02 How many wizards? $8815 DEFB $97,$88,$0F,$00 ; #R$8897 $03 (Press 1 to 8) $8819 DEFB $A6,$88,$07,$00 ; #R$88A6 $04 PLAYER $881D DEFB $AD,$88,$15,$00 ; #R$88AD $05 Computer controlled? $8821 DEFB $C2,$88,$03,$00 ; #R$88C2 $06 YES $8825 DEFB $C5,$88,$02,$00 ; #R$88C5 $07 NO $8829 DEFB $C7,$88,$1B,$00 ; #R$88C7 $08 Level of computer wizards? $882D DEFB $E2,$88,$1C,$00 ; #R$88E2 $09 Enter name (12 letters max.) $8831 DEFB $FE,$88,$0E,$00 ; #R$88FE $0A (Press Y or N) $8835 DEFB $0C,$89,$0E,$00 ; #R$890C $0B Which colour? $8839 DEFB $1A,$89,$11,$00 ; #R$891A $0C Which character? $883D DEFB $2B,$89,$18,$00 ; #R$892B $0D 1 2 3 4 5 6 7 8 $8841 DEFB $41,$89,$0E,$00 ; #R$8941 $0E (Press 2 to 8) $8845 DEFB $4F,$89,$0E,$00 ; #R$894F $0F NEW SPELL FOR $8849 DEFB $5D,$89,$1C,$00 ; #R$895D $10 THE CONTEST IS DRAWN BETWEEN $884D DEFB $79,$89,$0E,$00 ; #R$8979 $11 THE WINNER IS: $8851 DEFB $87,$89,$10,$00 ; Possibly not used? $8855 DEFB $97,$89,$10,$00 ; Possibly not used? ; CHAOS -THE BATTLE OF WIZARDS @label=TEXT_TITLE_1 t$8859 DEFM "CHAOS -THE BATTLE OF WIZARDS" ; By Julian Gollop @label=TEXT_TITLE_2 t$8875 DEFM "By Julian Gollop" ; How many wizards? @label=TEXT_HOW_MANY t$8885 DEFM "How many wizards? " ; (Press 1 to 8) @label=TEXT_PRESS_1_TO_8 t$8897 DEFM "(Press 1 to 8) " ; PLAYER @label=TEXT_PLAYER t$88A6 DEFM "PLAYER " ; Computer controlled? @label=TEXT_COMP_CONTROLLED t$88AD DEFM "Computer controlled? " ; YES @label=TEXT_YES t$88C2 DEFM "YES" ; NO @label=TEXT_NO t$88C5 DEFM "NO" ; Level of computer wizards? @label=TEXT_WIZ_LEVEL t$88C7 DEFM "Level of computer wizards? " ; Enter name (12 letters max.) @label=TEXT_ENTER_NAME t$88E2 DEFM "Enter name (12 letters max.)" ; (Press Y or N) @label=TEXT_Y_OR_N t$88FE DEFM "(Press Y or N)" ; Which colour? @label=TEXT_WHICH_COLOUR t$890C DEFM "Which colour? " ; Which character? @label=TEXT_WHICH_CHAR t$891A DEFM "Which character? " ; 1 2 3 4 5 6 7 8 @label=TEXT_12345678 t$892B DEFM "1 2 3 4 5 6 7 8" ; (Press 2 to 8) @label=TEXT_PRESS_2_TO_8 t$8941 DEFM "(Press 2 to 8)" ; NEW SPELL FOR @label=TEXT_NEW_SPELL t$894F DEFM "NEW SPELL FOR " ; THE CONTEST IS DRAWN BETWEEN @label=TEXT_DRAW t$895D DEFM "THE CONTEST IS DRAWN BETWEEN" ; THE WINNER IS: @label=TEXT_WINNER_IS t$8979 DEFM "THE 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 ; Blank string t$8998 DEFM " " ; Data block at 89A6 @label=VAR_89A6 b$89A6 DEFB $5E ; Variable - strength of computer-controlled wizards. @label=COMP_WIZ_STRENGTH b$89A7 DEFB $00 ; Variable - last key pressed. (TODO: only number keys?) ; ; Stored as the hex ID from the character set (e.g. A is $41). @label=LAST_KEY_PRESSED b$89A8 DEFB $32 ; Variable - maybe computer wizard strength @label=VAR_89A9_MAYBE_COMP_WIZ_STRENGTH b$89A9 DEFB $0F ; Pointer - address of the current wizard's name ; ; Populated in #R$8300. @label=CURRENT_WIZ_NAME_POINTER b$89AA DEFB $5C,$EA ; Data block at 89AC @label=VAR_89AC b$89AC DEFB $11,$10 ; Variable - name length during name entry @label=NAME_ENTRY_LENGTH b$89AE DEFB $07 ; Data block at 89AF @label=VAR_89AF_MAYBE_LAST_LETTER_PRESSED b$89AF DEFB $0D ; Keyboard input: picking a number from 1 to 8. ; ; Waits for the user to pick a number between 1 and 8, and sets A to the chosen ; number minus 1. i.e. pressing 3 will result in A having value $02. A will ; then match up with the ID of a wizard with that number, as the wizard IDs ; start counting from 0. ; . ; If the flag at #R$8323 is set, TODO ; . ; Used by the routine at #R$89F9. ; ; Output:A The number chosen minus 1. @label=KEYS_INPUT_NUMBERS c$89B0 PUSH BC ; *$89B1 CALL $02BF ; Keyboard ROM subroutine. $89B4 CP $31 ; {Don't continue until the number pressed is between 1 $89B6 JP M,$89B1 ; and 8 inclusive. $89B9 CP $39 ; $89BB JP P,$89B1 ; } $89BE LD ($89A8),A ; Save the last key pressed to #R$89A8. $89C1 LD A,($8323) ; {Check the flag at #R$8323. If it's 0, jump to #R$89CF. $89C4 OR A ; Otherwise fall through. $89C5 JR Z,$89CF ; } $89C7 LD A,($89A8) ; Load the key pressed back into A. $89CA CP $32 ; {If it's less than 2, jump back to #R$89B1. The flag had $89CC JP M,$89B1 ; been set, so we're not allowed to choose the number 1.} *$89CF POP BC ; $89D0 LD A,$47 ; {Set the colours to white on black ($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 ; {Set the "press 2 to 8 only" flag back to 0. $89E6 LD ($8323),A ; } $89E9 LD A,($89A8) ; $89EC SUB $31 ; $89EE RET ; ; Data block at 89EF @label=VAR_89EF_MAYBE_TABLE b$89EF DEFB $04,$0C,$04,$03,$02,$01,$01,$07 $89F7 DEFB $50,$22 ; Main game loop. ; ; Used by the routine at #R$7D00. @label=MAIN_LOOP 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 ; Clear the screen. $8A10 LD HL,$AC16 ; {Clear the data at #R$AC16 (wizard status) and #R$AC1E $8A13 LD DE,$AC17 ; (TODO ???). $8A16 LD (HL),$00 ; $8A18 LD BC,$001F ; $8A1B LDIR ; } $8A1D LD HL,$7F47 ; {Clear the wizard spell inventories (#R$7F47 to 8086). $8A20 LD DE,$7F48 ; $8A23 LD (HL),$00 ; $8A25 LD BC,$013F ; $8A28 LDIR ; } $8A2A LD HL,$E01F ; {Clear out the game board state information at #R$E01F. $8A2D LD DE,$E020 ; $8A30 LD (HL),$00 ; $8A32 LD BC,$009F ; $8A35 LDIR ; } $8A37 LD HL,$E0C0 ; {Clear out the information from board state tables 2-6 $8A3A LD DE,$E0C1 ; (from #R$E0C0 to E3DF) $8A3D LD (HL),$00 ; $8A3F LD BC,$031F ; $8A42 LDIR ; } $8A44 LD A,$00 ; $8A46 LD ($C3A4),A ; $8A49 LD A,$5A ; {Draw the border in red on magenta ($5A). $8A4B LD ($5C8F),A ; $8A4E CALL $BB57 ; } $8A51 LD A,$43 ; {Print the message with ID $00 (CHAOS - THE BATTLE OF $8A53 LD ($5C8F),A ; WIZARDS) in magenta on black ($43) at screen position $8A56 LD BC,$0202 ; $0202. $8A59 LD A,$00 ; $8A5B CALL $87EF ; } $8A5E LD A,$42 ; {Print the message with ID $01 (By Julian Gollop) in red $8A60 LD ($5C8F),A ; on black ($42) at screen position $0408. $8A63 LD BC,$0408 ; $8A66 LD A,$01 ; $8A68 CALL $87EF ; } $8A6B LD A,$46 ; {Print the message with ID $02 (How many wizards?) in $8A6D LD ($5C8F),A ; yellow on black ($46) at screen position $0902. $8A70 LD BC,$0902 ; $8A73 LD A,$02 ; $8A75 CALL $87EF ; } $8A78 LD A,$44 ; {Print the message with ID $0E ((Press 2 to 8)) in green $8A7A LD ($5C8F),A ; on black ($44) at screen position $0B02. $8A7D LD BC,$0B02 ; $8A80 LD A,$0E ; $8A82 CALL $87EF ; } $8A85 LD BC,$0914 ; $8A88 LD A,$01 ; {Set the flag which indicates we're picking the number $8A8A LD ($8323),A ; of wizards in the game, and have the user pick a number $8A8D CALL $89B0 ; between 2 and 8.} $8A90 INC A ; {Set #R$AC0F, which stores the number of wizards in the $8A91 LD ($AC0F),A ; game.} $8A94 LD A,$46 ; {Print the message with ID $08 (Level of computer $8A96 LD ($5C8F),A ; wizards?) in yellow on black ($46) at screen position $8A99 LD BC,$0E02 ; $0E02. $8A9C LD A,$08 ; $8A9E CALL $87EF ; } $8AA1 LD A,$43 ; {Print the message with ID $03 ((Press 1 to 8)) in $8AA3 LD ($5C8F),A ; magenta on black ($43) at screen position $1002. $8AA6 LD BC,$1002 ; $8AA9 LD A,$03 ; $8AAB CALL $87EF ; } $8AAE LD BC,$0E1D ; $8AB1 CALL $89B0 ; Have the user pick a number between 1 and 8. $8AB4 LD ($89A7),A ; Store the number selected at #R$89A7. $8AB7 SLA A ; {Double it twice and add 15, then store the result in $8AB9 SLA A ; #R$89A9. 0,1,2,3,4,5,6,7 maps to 15, 19, 23, 27, 31, 35, $8ABB ADD A,$0F ; 39, 43 $8ABD LD ($89A9),A ; } $8AC0 LD B,$0A ; {TODO Pause for a short time? @label=MAIN_LOOP_0 *$8AC2 PUSH BC ; $8AC3 CALL $96E6 ; $8AC6 POP BC ; $8AC7 DJNZ $8AC2 ; } $8AC9 LD A,$00 ; {Set current wizard ID to 0. $8ACB LD ($AC0E),A ; } $8ACE LD A,($AC0F) ; {Load B with the number of wizards in this game. We're $8AD1 LD B,A ; setting up to loop between #R$8AD8 and 8E11.} $8AD2 LD HL,$D3F2 ; $8AD5 LD ($CD86),HL ; @label=MAIN_LOOP_1 *$8AD8 PUSH BC ; $8AD9 CALL $C5EE ; Clear the screen. $8ADC LD A,$69 ; {Draw the border in blue on cyan ($69). $8ADE LD ($5C8F),A ; $8AE1 CALL $BB57 ; } $8AE4 LD BC,$0202 ; {Print the message with ID $04 (PLAYER ) in yellow on $8AE7 LD A,$46 ; black ($46) at screen position $0202. $8AE9 LD ($5C8F),A ; $8AEC LD A,$04 ; $8AEE CALL $87EF ; } $8AF1 LD A,($AC0E) ; {Print the current player number. $8AF4 ADD A,$31 ; $8AF6 CALL $BAD6 ; } $8AF9 LD A,$43 ; {Print the message with ID $09 (Enter name (12 letters $8AFB LD ($5C8F),A ; max.)) in magenta on black ($43) at screen position $8AFE LD BC,$0402 ; $0402. $8B01 LD A,$09 ; $8B03 CALL $87EF ; } $8B06 CALL $8300 ; Load current wizard details. $8B09 LD A,$00 ; $8B0B LD ($89AE),A ; $8B0E LD HL,$0602 ; $8B11 LD ($89AC),HL ; $8B14 LD A,$45 ; {Set the colours to cyan on black ($45). $8B16 LD ($5C8F),A ; } @label=MAIN_LOOP_2 *$8B19 CALL $02BF ; Keyboard ROM subroutine. $8B1C LD ($89AF),A ; $8B1F CP $0D ; {If the last key pressed was Enter jump to #R$8B95. $8B21 JP Z,$8B95 ; } $8B24 CP $0C ; {If the last key pressed was Delete jump to #R$8B56. $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 ; @label=MAIN_LOOP_3 *$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 ; @label=MAIN_LOOP_4 *$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 ; @label=MAIN_LOOP_5_STORE_WIZ_NAME *$8B95 LD A,($89AE) ; {If the name entered had zero characters in it, jump $8B98 OR A ; back to #R$8B19. $8B99 JP Z,$8B19 ; } $8B9C LD H,$00 ; {Load HL with the address at which we should store the $8B9E LD A,($AC0E) ; wizard's name data. To calculate this, take the wizard $8BA1 ADD A,$29 ; ID and add $29. Quadruple that figure. That tells you $8BA3 LD L,A ; the number of bytes after #R$CDD3 at which you should $8BA4 ADD HL,HL ; store the data. Add them together and store the result $8BA5 ADD HL,HL ; in HL. $8BA6 LD DE,$CDD3 ; $8BA9 ADD HL,DE ; } $8BAA INC HL ; {Move the pointer two bytes forward, so that it points $8BAB INC HL ; to the memory location storing the name's length. Store $8BAC LD A,($89AE) ; the name's length in there. $8BAF LD (HL),A ; } $8BB0 CALL $907B ; $8BB3 LD BC,$0902 ; {Print the message with ID $05 (Computer controlled?) in $8BB6 LD A,$43 ; magenta on black ($43) at screen position $0902. $8BB8 LD ($5C8F),A ; $8BBB LD A,$05 ; $8BBD CALL $87EF ; } $8BC0 LD A,$46 ; {Set the colours to yellow on black ($46). $8BC2 LD ($5C8F),A ; } $8BC5 LD A,$00 ; {Set #R$AC2E (flag indicating if this wizard is computer $8BC7 LD ($AC2E),A ; controlled) to 0 (false) by default.} @label=MAIN_LOOP_6_IS_WIZ_COMP *$8BCA CALL $02BF ; Keyboard ROM subroutine. $8BCD CP $59 ; {If the user pressed Y jump to #R$8BDF. $8BCF JR Z,$8BDF ; } $8BD1 CP $4E ; {If the user pressed any key other than N jump back to $8BD3 JR NZ,$8BCA ; #R$8BCA.} $8BD5 LD BC,$0917 ; {Print the message with ID $07 (NO) in yellow on black $8BD8 LD A,$07 ; ($46) at screen position $0917. $8BDA CALL $87EF ; } $8BDD JR $8BF8 ; @label=MAIN_LOOP_7_SET_WIZ_COMP *$8BDF LD BC,$0917 ; {Print the message with ID $06 (YES) in yellow on black $8BE2 LD A,$06 ; ($46) at screen position $0917. $8BE4 CALL $87EF ; } $8BE7 LD HL,$AC26 ; {Going to update the flag which indicates whether the $8BEA LD D,$00 ; wizard is computer controlled. See #R$AC26. We'll set DE $8BEC LD A,($AC0E) ; to the current wizard number (found at #R$AC0E) and add $8BEF LD E,A ; it to #R$AC26 to get the memory location to alter. Then $8BF0 ADD HL,DE ; set it to 1. $8BF1 LD (HL),$01 ; } $8BF3 LD A,$01 ; {Set #R$AC2E (flag indicating if this wizard is computer $8BF5 LD ($AC2E),A ; controlled) to 1 (true).} @label=MAIN_LOOP_8_WHICH_CHAR *$8BF8 LD HL,$89EF ; $8BFB CALL $C2F9 ; $8BFE CALL $907B ; $8C01 LD BC,$0B02 ; {Print the message with ID $0C (Which character?) in $8C04 LD A,$43 ; magenta on black ($43) at screen position $0B02. $8C06 LD ($5C8F),A ; $8C09 LD A,$0C ; $8C0B CALL $87EF ; } $8C0E LD A,$45 ; {Print the message with ID $0D (1 2 3 4 5 6 7 8) in cyan $8C10 LD ($5C8F),A ; on black ($45) at screen position $0D02. $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 ; @label=MAIN_LOOP_9 *$8C29 PUSH BC ; $8C2A LD A,($89A8) ; A = last key pressed (#R$89A8) $8C2D LD ($90DF),A ; Set the wizard character that's been picked (#R$90DF) $8C30 INC A ; $8C31 LD ($89A8),A ; $8C34 CALL $90F0 ; Call #R$90F0 to draw the picked character. $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 ; Have the user pick a number between 1 and 8. $8C4B LD ($90DF),A ; Save the key pressed to #R$90DF. $8C4E LD BC,$0B14 ; $8C51 LD ($89AC),BC ; $8C55 CALL $90F0 ; Display the picked character on screen. $8C58 LD HL,$82C0 ; {HL = the wizard's graphics data in the table at $8C5B LD D,$00 ; #R$82C0. $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 ; Set #R$831F (the next routine will save the current ; wizard's graphics to this address) $8C6B CALL $8324 ; Change the current wizard's graphics. $8C6E LD A,$43 ; {Print the message with ID $0B (Which colour?) in $8C70 LD ($5C8F),A ; magenta on black ($43) at screen position $1002. $8C73 LD BC,$1002 ; $8C76 LD A,$0B ; $8C78 CALL $87EF ; } $8C7B LD A,$46 ; {Print the message with ID $0D (1 2 3 4 5 6 7 8) in $8C7D LD ($5C8F),A ; yellow on black ($46) at screen position $1202. $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 ; @label=MAIN_LOOP_10 *$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 ; Have the user pick a number between 1 and 8. $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 ; Load current wizard details. $8CD1 LD HL,($8321) ; $8CD4 DEC HL ; $8CD5 LD DE,$0003 ; $8CD8 LD A,($5C8F) ; $8CDB LD B,$04 ; @label=MAIN_LOOP_11 *$8CDD ADD HL,DE ; $8CDE LD (HL),A ; $8CDF DJNZ $8CDD ; $8CE1 LD A,$00 ; $8CE3 LD ($9049),A ; $8CE6 LD A,($AC2E) ; {If the current wizard is player controlled jump to $8CE9 OR A ; #R$8CF2. $8CEA JR Z,$8CF2 ; } $8CEC LD A,($89A7) ; $8CEF LD ($9049),A ; @label=MAIN_LOOP_12 *$8CF2 CALL $8300 ; Load current wizard details. $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 ; @label=MAIN_LOOP_13 *$8D53 INC HL ; $8D54 LD ($904A),A ; Set #R$904A (wizard spell count) $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 ; @label=MAIN_LOOP_14_ASSIGN_SPELLS *$8D7A CALL $92AA ; Get the current wizard's inventory location $8D7D LD HL,($9154) ; {HL = current wizard's inventory location $8D80 DEC HL ; } $8D81 LD ($9154),HL ; Save HL to #R$9154 (the wizard's inventory location) $8D84 CALL $904B ; {Get a random number (0-9?) and add 12 to it. TODO Why? $8D87 ADD A,$0C ; } $8D89 LD HL,($9154) ; HL = #R$9154 (the wizard's inventory location) $8D8C LD (HL),A ; Save the mystery number to the inventory $8D8D INC HL ; Move to the next inventory slot $8D8E LD (HL),$01 ; Set the first spell to disbelieve. $8D90 INC HL ; Move to the next inventory slot $8D91 LD ($9154),HL ; Save HL to #R$9154 (the current inventory location) $8D94 LD HL,$D3F2 ; $8D97 LD ($CD86),HL ; $8D9A LD A,($904A) ; {Going to loop the number of times set in #R$904A. $8D9D LD B,A ; } @label=MAIN_LOOP_15_ASSIGN_SPELLS *$8D9E PUSH BC ; @label=MAIN_LOOP_16_ASSIGN_SPELL *$8D9F LD A,R ; {A = random data from the start of memory? $8DA1 AND $07 ; $8DA3 LD H,A ; $8DA4 LD A,R ; $8DA6 LD L,A ; $8DA7 LD A,(HL) ; } $8DA8 LD HL,($CD86) ; {TODO Why are we adding data from #R$CD86 to A? $8DAB ADD A,(HL) ; } $8DAC AND $3F ; Max spell ID is $3F (Raise Dead) $8DAE CP $02 ; {If the spell ID is less than 2 (i.e. if it's $8DB0 JP M,$8D9F ; disbelieve) or if it's $42 or more jump back to #R$8D9F $8DB3 CP $42 ; and pick another one. $8DB5 JP P,$8D9F ; } $8DB8 INC HL ; $8DB9 LD ($CD86),HL ; $8DBC LD ($937B),A ; Save the spell ID to #R$937B $8DBF CALL $92F9 ; Get the spell info $8DC2 LD A,(IX+$04) ; A = the new spell ID? TODO Doesn't seem to be the spell ; ID, it's the number between each spell ID $8DC5 LD HL,($9154) ; HL = #R$9154 (the current inventory location) $8DC8 LD (HL),A ; Save the spell ID to the inventory $8DC9 INC HL ; $8DCA LD A,($937B) ; Load the current spell ID into A. $8DCD LD (HL),A ; $8DCE INC HL ; $8DCF LD ($9154),HL ; $8DD2 POP BC ; $8DD3 DJNZ $8D9E ; $8DD5 LD A,($AC2E) ; {If the current wizard is player controlled jump to $8DD8 OR A ; #R$8E08. $8DD9 JR Z,$8E08 ; } $8DDB CALL $92AA ; $8DDE LD HL,($9154) ; $8DE1 DEC HL ; $8DE2 LD B,$13 ; @label=MAIN_LOOP_17 *$8DE4 PUSH BC ; $8DE5 PUSH HL ; $8DE6 LD B,$13 ; @label=MAIN_LOOP_18 *$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 ; @label=MAIN_LOOP_19 *$8E01 POP BC ; $8E02 DJNZ $8DE8 ; $8E04 POP HL ; $8E05 POP BC ; $8E06 DJNZ $8DE4 ; @label=MAIN_LOOP_20 *$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 ; @label=MAIN_LOOP_21 *$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 ; {Set the round counter to 0. $8E57 LD ($7D03),A ; } $8E5A LD A,($AC0F) ; {Load B with the number of rounds before a draw is $8E5D SLA A ; called. Take the number of players from #R$AC0F, double $8E5F ADD A,$0F ; it using SLA, and add 15. e.g. 19 rounds in a game with $8E61 LD B,A ; 2 wizards, and 31 in a game with 8 wizards.} @label=MAIN_LOOP_22_SELECT_SPELL_PHASE *$8E62 PUSH BC ; Push BC to the stack. B contains the number of rounds ; left until the game is called a draw. This is the start ; of the main game loop. $8E63 CALL $9168 ; Display the pre-turn (select spell) menus $8E66 LD A,($AC34) ; $8E69 INC A ; $8E6A LD HL,$AC0F ; {HL = number of wizards in the game. $8E6D CP (HL) ; } $8E6E JR Z,$8E93 ; If A == number of wizards jump to #R$8E93. $8E70 CALL $9F50 ; Spread gooey blob and magic fire $8E73 CALL $8F9A ; Check magic woods for new wizard spells $8E76 CALL $A173 ; Mark all creatures as ready to move. $8E79 CALL $AC36 ; Wizard takes a turn. $8E7C CALL $FE56 ; $8E7F LD B,$0A ; @label=MAIN_LOOP_23 *$8E81 PUSH BC ; $8E82 CALL $96E6 ; $8E85 POP BC ; $8E86 DJNZ $8E81 ; $8E88 CALL $FE60 ; $8E8B LD A,($AC34) ; A = number of dead wizards in the game $8E8E INC A ; $8E8F LD HL,$AC0F ; HL = address which contains the number of wizards $8E92 CP (HL) ; If there's only one wizard left... @label=MAIN_LOOP_24 *$8E93 POP BC ; Pop BC from the stack. B contains the number of rounds ; left until the game is called a draw. $8E94 JR Z,$8F04 ; ...jump to #R$8F04 $8E96 LD HL,$7D03 ; {Increment the round counter. $8E99 INC (HL) ; } $8E9A DJNZ $8E62 ; Decrease B and jump back to #R$8E62 if it's greater than ; 0 (i.e. if there are still rounds left). $8E9C CALL $C5EE ; Clear the screen. $8E9F LD A,$01 ; {Set the colours to blue on black ($01). $8EA1 LD ($5C8F),A ; } @label=MAIN_LOOP_25 *$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 ; @label=MAIN_LOOP_26 *$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 ; @label=MAIN_LOOP_27 *$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 ; {Print the message with ID $3D (PRESS ANY KEY) at screen $8EF3 LD BC,$1600 ; position $1600. $8EF6 CALL $BAFB ; } $8EF9 CALL $96E6 ; $8EFC CALL $028E ; Keyboard scanning ROM subroutine. $8EFF LD A,E ; $8F00 INC A ; $8F01 JR Z,$8EA4 ; $8F03 RET ; @label=MAIN_LOOP_28 *$8F04 CALL $C5EE ; Clear the screen. $8F07 LD A,$01 ; {Set the colours to blue on black ($01). $8F09 LD ($5C8F),A ; } @label=MAIN_LOOP_29 *$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 ; @label=MAIN_LOOP_30 *$8F50 BIT 4,(HL) ; $8F52 JR Z,$8F57 ; $8F54 INC HL ; $8F55 DJNZ $8F50 ; @label=MAIN_LOOP_31 *$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 ; {Print the message with ID $3D (PRESS ANY KEY) at screen $8F7A LD BC,$1600 ; position $1600. $8F7D CALL $BAFB ; } $8F80 CALL $96E6 ; $8F83 CALL $028E ; Keyboard scanning ROM subroutine. $8F86 LD A,E ; $8F87 INC E ; $8F88 JR Z,$8F0C ; $8F8A RET ; ; Go through the magic trees and check if any wizards hiding in them get a new ; spell. ; ; Used by the routine at #R$89F9. @label=CHECK_TREES_FOR_NEW_SPELL c$8F8B LD A,($5C8F) ; $8F8E INC A ; $8F8F LD ($5C8F),A ; $8F92 CP $08 ; $8F94 RET NZ ; $8F95 LD A,$01 ; {Set the colours to blue on black ($01). $8F97 LD ($5C8F),A ; } ; This entry point is used by the routine at #R$89F9. *$8F9A LD HL,$E01F ; {Set the cursor location to the top left corner. $8F9D LD ($AC12),HL ; } $8FA0 LD B,$9F ; Going to check all 150 cells. Load B with 159, as that's ; how often we'll increase HL. (There are 10 "blank cell" ; memory locations that are not used.) *$8FA2 PUSH BC ; $8FA3 LD A,(HL) ; {Does the cell contain a magic tree? If not, jump to $8FA4 CP $24 ; #R$9031. $8FA6 JP NZ,$9031 ; } $8FA9 LD DE,$0281 ; {Adding $0281 to HL so that it's pointing to the $8FAC ADD HL,DE ; corresponding location in table 5 (#R$E2A0).} $8FAD LD A,(HL) ; Load the entry from table 5 into A. $8FAE OR A ; {If there's nothing in the corresponding entry in table $8FAF JP Z,$9031 ; 5 (TODO: what would be in there? The wizard ID?), jump ; to #R$9031.} $8FB2 LD ($A172),A ; $8FB5 CALL $904B ; $8FB8 CP $04 ; {If the player didn't get a new spell, jump to #R$9031. $8FBA JP P,$9031 ; } $8FBD LD A,($A172) ; The player gets a new spell. $8FC0 SUB $29 ; $8FC2 LD ($AC0E),A ; $8FC5 LD A,$46 ; {Set the colours to yellow on black ($46). $8FC7 LD ($5C8F),A ; } $8FCA LD A,$0F ; {Print the message with ID $0F (NEW SPELL FOR) at screen $8FCC LD BC,$1600 ; position $1600. $8FCF CALL $87EF ; } $8FD2 INC C ; $8FD3 LD A,($A172) ; {Print the player's name. $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 ; Clear the message bar. *$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 @label=VAR_903E_MAYBE_TABLE b$903E DEFB $14,$06,$02,$07,$14,$03,$FB,$14 $9046 DEFB $00,$00,$00 ; Variable - maybe computer wizard strength? @label=VAR_9049_MAYBE_COMP_WIZ_STRENGTH b$9049 DEFB $00 ; Variable - wizard spell count @label=WIZARD_SPELL_COUNT b$904A DEFB $0F ; Random number generator? ; ; Used by the routines at #R$859C, #R$89F9, #R$8F8B and #R$96F3. @label=MAYBE_RANDOM_NUM_GENERATOR c$904B PUSH HL ; *$904C LD A,R ; $904E LD HL,$5C76 ; HL = mem address of $5C76 (the seed for RND) $9051 ADD A,(HL) ; A = A + seed for RND $9052 OR $80 ; $9054 LD B,A ; *$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 ; HL = mem address of $5C76 (the seed for RND) $906D ADD A,(HL) ; A = A + seed for RND $906E LD ($907A),A ; Store the value in A to #R$907A. $9071 AND $0F ; $9073 CP $0A ; $9075 JP P,$904C ; $9078 POP HL ; $9079 RET ; ; Variable - random number result ; ; After a random number is generated in #R$904B the result is stored in here. @label=RANDOM_NUM_RESULT b$907A DEFB $24 ; Routine at 907B. Unknown purpose - seems to write something into memory with ; every keypress during setup. ; ; Used by the routines at #R$89B0 and #R$89F9. @label=UNKNOWN_SETUP_ROUTINE_907B c$907B PUSH HL ; $907C PUSH DE ; $907D PUSH BC ; *$907E PUSH BC ; $907F CALL $028E ; Keyboard scanning ROM subroutine. $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 @label=VAR_909F_MAYBE_TABLE 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 ; Data block at 90D7 @label=VAR_90D7_MAYBE_TABLE b$90D7 DEFB $42,$43,$44,$45,$06,$46,$07,$47 ; Variable - wizard image picked @label=WIZARD_CHARACTER_PICK b$90DF DEFB $01 ; Data block at 90E0 @label=VAR_90E0_MAYBE_TABLE b$90E0 DEFB $34,$FD,$54,$FD,$74,$FD,$94,$FD $90E8 DEFB $B4,$FD,$D4,$FD,$F4,$FD,$14,$FE ; Draw picked character during setup ; ; Used by the routine at #R$89F9. @label=DRAW_PICKED_CHARACTER 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 @label=VAR_910D_MAYBE_TABLE 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 ; Data block at 9135 @label=VAR_9135_MAYBE_TABLE b$9135 DEFB $0A,$05,$01,$05,$1E,$08,$03,$07 $913D DEFB $FD,$F6,$14,$03,$28,$28,$46,$64 ; Data block at 9145 b$9145 DEFB $02,$03,$3C,$64,$14,$03,$01,$02 $914D DEFB $03,$04,$01,$01,$01,$01 ; Current spell casting chance. 0 is 10%, and 9 is 100%. See the second column ; of the table at #R$7D60 for more info. @label=CURRENT_SPELL_CASTING_CHANCE b$9153 DEFB $08 ; Variable - memory location of the current wizard's spell inventory. Or, when ; the computer wizard is choosing a spell, pointer to the current spell. ; ; It will point at one of the memory locations starting at #R$7F47. @label=CURRENT_WIZ_INVENTORY_POINTER b$9154 DEFB $76,$7F ; Variables - all chosen player spells. ; ; Stores the IDs of the chosen spells, as specified in the table at #R$7D60. ; These values are all cleared to zeroes at the start of #R$9168. ; . ; Note that computer controlled players don't have assigned spells in here. ; Their memory locations stay at 0 after the spell choice round. @label=SPELLS_CHOSEN b$9156 DEFB $1B,$00,$00,$00,$00,$00,$00,$00 ; Variables - whether the spells chosen by each player are illusions. ; ; Flags indicating whether each spell is an illusion (0 if not, 1 if so). These ; values are all cleared to zeroes at the start of #R$9168. @label=SPELLS_CHOSEN_ILLUSIONS b$915E DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Variable - whether the spell currently being cast is an illusion. ; ; 1 if the spell is an illusion, 0 if it's real. @label=IS_CURRENT_SPELL_ILLUSION b$9166 DEFB $00 ; Flag - spell cast success. ; ; 1 if the spell succeeded, 0 if it failed. @label=SPELL_SUCCESS_FLAG b$9167 DEFB $00 ; Pre-turn menu: displays the "PRESS KEYS 1 TO 4" menu for each player. ; ; Used by the routine at #R$89F9. @label=PRE_TURN_MENU c$9168 LD HL,$9156 ; {Clear the spells chosen previously, if any (see $916B LD (HL),$00 ; #R$9156). $916D LD DE,$9157 ; $9170 LD BC,$000F ; $9173 LDIR ; } $9175 LD HL,$7F27 ; $9178 LD ($5C7B),HL ; $917B LD A,($AC0F) ; {Load the number of wizards into B. $917E LD B,A ; } $917F LD A,$00 ; {Set the current wizard ID to 0. $9181 LD ($AC0E),A ; } $9184 DI ; @label=PRE_TURN_MENU_1_LOAD_WIZ *$9185 PUSH BC ; $9186 LD HL,$AC16 ; Load the address of the wizard status values into HL. $9189 LD A,($AC0E) ; {Set DE to the current wizard ID. $918C LD D,$00 ; } $918E LD E,A ; {Set HL to the address containing the current wizard's $918F ADD HL,DE ; status values.} $9190 BIT 4,(HL) ; {If bit 4 is set (i.e. the wizard is dead) jump to $9192 JP NZ,$929E ; #R$929E (skipping his turn).} $9195 CALL $95B8 ; Update the flag which tells whether the current wizard ; is computer controlled (1 if computer controlled, 0 if ; not). $9198 OR A ; {If the wizard is computer controlled, jump to #R$929E $9199 JP NZ,$929E ; (skipping his turn). The computer wizards don't choose a ; spell at this point.} ; This entry point is used by the routine at #R$92BE. @label=PRE_TURN_MENU_2_DISPLAY *$919C LD HL,$C2E3 ; $919F CALL $C2F9 ; $91A2 CALL $BBCC ; $91A5 CALL $C5EE ; Clear the screen. $91A8 LD A,$72 ; {Draw the border in red on yellow ($72). $91AA LD ($5C8F),A ; $91AD CALL $BB57 ; } $91B0 LD A,($C3A4) ; Load the chaos/law level into A. $91B3 OR A ; {If it's neutral, jump to #R$9230. $91B4 JR Z,$9230 ; } $91B6 LD BC,$0707 ; Set BC to the location for printing the chaos/law info. $91B9 JP M,$91F6 ; If it's negative (chaotic) jump to #R$91F6. $91BC LD A,$46 ; {Set the colours to yellow on black ($46). $91BE LD ($5C8F),A ; } $91C1 LD A,$47 ; {Print the message with ID $47 ((LAW)). $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 ; @label=PRE_TURN_MENU_3_PRINT_LAW_ICONS *$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) ; @label=PRE_TURN_MENU_4 *$91EF LD A,$29 ; $91F1 CALL $BAD6 ; $91F4 JR $9230 ; @label=PRE_TURN_MENU_5_PRINT_CHAOS *$91F6 LD A,$45 ; {Set the colours to cyan on black ($45). $91F8 LD ($5C8F),A ; } $91FB LD A,$46 ; {Print the message with ID $46 ((CHAOS). $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 ; @label=PRE_TURN_MENU_6_PRINT_CHAOS_ICONS *$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) ; @label=PRE_TURN_MENU_7 *$922B LD A,$29 ; $922D CALL $BAD6 ; @label=PRE_TURN_MENU_8 *$9230 LD A,$46 ; {Set the colours to yellow on black ($46). $9232 LD ($5C8F),A ; } $9235 LD A,($AC0E) ; {Add $29 to the ID of the active wizard (#R$AC0E) to get $9238 ADD A,$29 ; the ID of current wizard's name in the string table at ; #R$CDD3.} $923A LD BC,$0507 ; {Print the current wizard's name at screen location $923D CALL $BAFB ; $0507.} $9240 LD A,$45 ; {Set the colours to cyan on black ($45). $9242 LD ($5C8F),A ; } $9245 LD A,$59 ; {Print the message with ID $59 (1.EXAMINE SPELLS) at $9247 LD BC,$0907 ; screen location $0907. $924A CALL $BAFB ; } $924D LD A,$5A ; {Print the message with ID $5A (2.SELECT SPELL) at $924F LD BC,$0B07 ; screen location $0B07. $9252 CALL $BAFB ; } $9255 LD A,$5B ; {Print the message with ID $5B (3.EXAMINE BOARD) at $9257 LD BC,$0D07 ; screen location $0D07. $925A CALL $BAFB ; } $925D LD A,$5C ; {Print the message with ID $5C (4.CONTINUE WITH GAME) at $925F LD BC,$0F07 ; screen location $0F07. $9262 CALL $BAFB ; } $9265 LD A,$56 ; {Set the colours to yellow on red ($56). $9267 LD ($5C8F),A ; } $926A LD A,$57 ; {Print the message with ID $57 (PRESS KEYS 1 TO 4) at $926C LD BC,$1600 ; screen location $1600. $926F CALL $BAFB ; } $9272 CALL $92AA ; @label=PRE_TURN_MENU_9 *$9275 CALL $02BF ; Keyboard ROM subroutine. $9278 LD HL,$9384 ; {Reset the "is user selecting a spell" flag to 0. $927B LD (HL),$00 ; } $927D CP $31 ; {If the user pressed anything other than 1, jump to $927F JR NZ,$9287 ; #R$9287.} $9281 CALL $9385 ; The user pressed 1. Display the spell menu, and we'll be ; viewing spell info. $9284 JP $919C ; Back to displaying the 1-4 option menu. @label=PRE_TURN_MENU_10 *$9287 CP $34 ; {If the user pressed 4, jump to #R$929E. $9289 JR Z,$929E ; } $928B CP $33 ; {If the user pressed 3, display the arena. $928D JR Z,$92BE ; } $928F CP $32 ; {If the user pressed anything other than 2, jump back to $9291 JR NZ,$9275 ; #R$9275.} $9293 LD A,$01 ; {The user pressed 2. Set the "is user selecting a spell" $9295 LD ($9384),A ; flag to 1 (true).} $9298 CALL $9385 ; Display the spell menu, and we'll be selecting a spell. $929B JP $919C ; Back to displaying the 1-4 option menu. @label=PRE_TURN_MENU_11_NEXT_WIZ *$929E POP BC ; $929F LD HL,$AC0E ; {Next wizard's turn - increase the current wizard ID $92A2 INC (HL) ; variable by 1.} $92A3 DEC B ; If there's another wizard, jump back to #R$9185. $92A4 JP NZ,$9185 ; $92A7 JP $95C7 ; ; Get current wizard's spell inventory location. ; ; Saves the result in #R$9154. It will point at one of the memory locations ; starting at #R$7F47. ; ; Used by the routines at #R$89F9, #R$8F8B, #R$9168, #R$95C7 and #R$96F3. @label=GET_CURRENT_WIZ_INVENTORY_LOCATION c$92AA LD HL,$7F47 ; Load the location of the first spell inventory table ; into HL. $92AD LD A,($AC0E) ; {Set DE to the current wizard ID. (Player 1 has index $92B0 LD D,$00 ; 0.) $92B2 LD E,A ; } $92B3 LD B,$28 ; {There are 40 bytes between each wizard's inventory, so $92B5 XOR A ; find the address to return by adding the player's ID *$92B6 ADD HL,DE ; onto the value in HL 40 times. $92B7 DJNZ $92B6 ; } $92B9 INC HL ; Increment HL so that it's pointing at the ID of the ; first spell. $92BA LD ($9154),HL ; Save the ID of the first spell in the wizard's inventory ; to #R$9154. $92BD RET ; ; Display the arena between turns. ; ; Used by the routine at #R$9168. @label=DISPLAY_ARENA_READ_ONLY c$92BE CALL $C5EE ; Clear the screen. $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 ; User key input. $92DE CALL $02BF ; Keyboard ROM subroutine. $92E1 CP $30 ; {If the user pressed Space jump to #R$92EC. $92E3 JR Z,$92EC ; } $92E5 CP $49 ; {If the user pressed I jump to #R$C3B3 $92E7 CALL Z,$C3B3 ; } $92EA JR $92DB ; Else jump back to #R$92DB. *$92EC DI ; $92ED LD HL,$7F27 ; $92F0 LD ($5C7B),HL ; $92F3 CALL $C5EE ; Clear the screen. $92F6 JP $919C ; ; Get spell info. ; ; Used by the routines at #R$89F9, #R$9385, #R$94A7, #R$95C7 and #R$96F3. @label=GET_SPELL_INFO c$92F9 LD A,($937B) ; Load the current spell ID into A. $92FC LD IX,$7D60 ; Load the spell table at #R$7D60 into the index register. $9300 LD D,$00 ; {Set DE to the be the row at which the spell table $9302 DEC A ; contains the current spell ID. $9303 LD E,A ; } $9304 LD B,$07 ; {There are 7 bytes for each entry in the spells table. *$9306 ADD IX,DE ; Keep adding 7 to the index register until it points at $9308 DJNZ $9306 ; the memory location of the spell we're looking for.} $930A LD ($9380),IX ; Save the memory location to #R$9380. $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 ; {A = the creature's chaos/law value. $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 ; ; Variable - current spell being cast @label=CURRENT_SPELL_ID b$937B DEFB $22 ; ID of the spell currently being cast, as defined in the ; spells table at #R$7D60. ; Variable - as spells are written to the screen this increases, holding the ; offset from the start at which we start printing text. @label=SPELL_MENU_TEXT_OFFSET b$937C DEFB $00 ; Variable - how many characters in from the left to start writing text when ; display the spell menu. ; ; Either 2 or 16, depending on whether text is to be written to the 1st or 2nd ; column. @label=SPELL_MENU_TEXT_INDENT b$937D DEFB $0A ; Variable - holds the ASCII code for the next char to print in alphabetical ; order ; ; Initially $40 (A), and increments with each spell printed. e.g. A-Disbelieve, ; B-Zombie @label=SPELL_MENU_NEXT_CHAR b$937E DEFB $49 ; Variable - holds whether the current spell is lawful (positive), neutral (0) ; or chaotic (negative) @label=CURRENT_SPELL_CHAOS_LAW_VALUE b$937F DEFB $FF ; Pointer - memory location of the current spell @label=SPELL_TABLE_POINTER b$9380 DEFB $47,$7E ; Variable - used when displaying spells in the spell menu routine (#R$9385). ; That routine loops through the spells in a wizard's inventory, listing them. ; This points to the memory location of the spell it's currently listing. @label=SPELL_INVENTORY_POINTER b$9382 DEFB $70,$7F ; Variable - holds whether the user wants to view details about a spell (0) or ; is selecting a spell (1). @label=IS_USER_SELECTING_SPELL b$9384 DEFB $00 ; Spell menu ; ; Displays the list of spells available to a wizard. Used both when selecting a ; spell, and when viewing the spell's information page. The behaviour is ; determined by #R$9384, which would have been set to the appropriate value ; earlier. ; ; Used by the routine at #R$9168. @label=SPELL_MENU c$9385 LD HL,$C2E3 ; Select menu chirp sound effect $9388 CALL $C2F9 ; Play sound effect $938B CALL $C5EE ; Clear the screen. $938E LD A,$46 ; {Set the colours to yellow on black ($46). $9390 LD ($5C8F),A ; } $9393 LD A,($AC0E) ; {Add $29 to the ID of the active wizard (#R$AC0E) to get $9396 ADD A,$29 ; the ID of current wizard's name in the string table at ; #R$CDD3.} $9398 LD BC,$0000 ; {Print the current wizard's name at screen location $939B CALL $BAFB ; $0000.} $939E LD A,$53 ; {Print the message with ID $53('S SPELLS). $93A0 CALL $BAFB ; } $93A3 LD B,$14 ; Looping max of 20 times $93A5 LD A,$40 ; $93A7 LD ($937E),A ; $93AA LD HL,$0010 ; {Set text writing position to 16 initially. $93AD LD ($937C),HL ; } $93B0 LD HL,($9154) ; {Point #R$9382 to the current wizard's spell inventory. $93B3 LD ($9382),HL ; } @label=SPELL_MENU_1 *$93B6 PUSH BC ; $93B7 LD HL,($9382) ; {A = ID of a spell in the wizard's inventory $93BA LD A,(HL) ; } $93BB OR A ; {If A == 0 jump to #R$9419. $93BC JR Z,$9419 ; } $93BE LD A,($937C) ; Going to figure out the screen column to write the next ; spell text. A = last position. $93C1 LD C,A ; {A = 16 - A. $93C2 LD A,$10 ; $93C4 SUB C ; } $93C5 LD ($937C),A ; Save result to #R$937C $93C8 OR A ; {If it wasn't 0 jump to #R$93D3. $93C9 JR NZ,$93D3 ; } $93CB LD A,($937D) ; {The text indent is currently 0, so bump it up to 2. $93CE ADD A,$02 ; $93D0 LD ($937D),A ; } @label=SPELL_MENU_2 *$93D3 LD HL,($9382) ; $93D6 LD A,(HL) ; $93D7 LD ($937B),A ; Set #R$937B (current spell ID) to value in A $93DA CALL $92F9 ; Get the info about the spell. $93DD LD A,($9153) ; Set A to the spell casting chance. $93E0 INC A ; {Convert A to the appropriate casting chance colour by $93E1 SRL A ; adding 1, doubling it, and adding $42 to get the $93E3 ADD A,$42 ; corresponding paper and ink colours.} $93E5 LD ($5C8F),A ; Set the colours we calculated. $93E8 LD A,($937E) ; {Set the alphabetical character we're going to print $93EB INC A ; next, saving it to #R$937E. $93EC LD ($937E),A ; } $93EF LD BC,($937C) ; {Print the single character. $93F3 PUSH BC ; $93F4 CALL $BAD6 ; $93F7 POP BC ; } $93F8 INC C ; Move print location one space right. $93F9 LD A,($937F) ; Load the current spell's chaos/law value into A. $93FC OR A ; {If it isn't zero (i.e. it's chaos or law), jump to $93FD JR NZ,$9403 ; #R$9403.} $93FF LD A,$2D ; Set A to $2D, indicating a dash. $9401 JR $940C ; Jump to #R$940C. @label=SPELL_MENU_3_PICK_CHAOS_LAW_ICON *$9403 JP P,$940A ; If it's positive (i.e. law) jump to #R$940A. $9406 LD A,$2A ; Set A to $2D, indicating an asterisk (chaos). $9408 JR $940C ; Jump to #R$940C. @label=SPELL_MENU_4_SET_LAW_ICON *$940A LD A,$5E ; Set A to $5E, indicating the law icon. @label=SPELL_MENU_5_PRINT_SPELL *$940C PUSH BC ; {Print the appropriate icon. $940D CALL $BAD6 ; $9410 POP BC ; } $9411 INC C ; Move print location one space right. $9412 LD HL,($9380) ; {Load the ID of the spell into A. $9415 LD A,(HL) ; } $9416 CALL $BAFB ; Print the spell name. @label=SPELL_MENU_6_NEXT_SPELL *$9419 LD HL,($9382) ; {Repoint #R$9382 to the memory location two spaces along $941C INC HL ; (every second memory location is one of the spell IDs.) $941D INC HL ; $941E LD ($9382),HL ; } $9421 POP BC ; $9422 DJNZ $93B6 ; If there are still spells to display, jump back to ; #R$93B6. $9424 LD BC,$1600 ; $9427 LD A,$46 ; {Set the colours to yellow on black ($46). $9429 LD ($5C8F),A ; } $942C LD A,$58 ; {Print the message with ID $58 (PRESS '0' TO RETURN TO $942E CALL $BAFB ; MAIN MENU) at screen position $1600.} $9431 CALL $BBCC ; @label=SPELL_MENU_7_WAIT_FOR_KEY *$9434 CALL $02BF ; Keyboard ROM subroutine. $9437 CP $30 ; {If the user pressed 0, return. $9439 JR NZ,$943C ; $943B RET ; } @label=SPELL_MENU_8_KEY_PRESSED *$943C LD HL,$937E ; HL = #R$937E, the address containing the code of the ; next char we would have printed when listing the spells $943F DEC A ; {If the key pressed is higher than any listed jump back $9440 CP (HL) ; to #R$9434. $9441 JP P,$9434 ; } $9444 SUB $3F ; {If the key pressed is lower than the A key jump back to $9446 JP M,$9434 ; #R$9434.} $9449 LD B,A ; $944A LD HL,($9154) ; HL = address pointed to by #R$9154 (first item in the ; current wizard's inventory) $944D LD DE,$0002 ; $9450 AND A ; AND A just to reset the carry flag $9451 SBC HL,DE ; HL = HL - DE. @label=SPELL_MENU_9_SPELL_SELECTED *$9453 ADD HL,DE ; $9454 LD A,(HL) ; $9455 OR A ; $9456 JR Z,$9453 ; $9458 DJNZ $9453 ; $945A LD ($937B),A ; Save the selected spell ID at #R$937B. $945D LD A,($9384) ; {If the user is selecting a spell, jump ahead to $9460 OR A ; #R$9469. $9461 JR NZ,$9469 ; } $9463 CALL $94A7 ; Otherwise, call #R$94A7 and display the spell info. $9466 JP $9385 ; Jump back to #R$9385 when finished displaying the spell ; info. @label=SPELL_MENU_10_RECORD_SPELL *$9469 LD A,($AC0E) ; {The user has picked a spell. Write the spell ID into $946C LD D,$00 ; the small table at #R$937B, at the correct index for the $946E LD E,A ; current wizard. (Calculated by adding the wizard's ID to $946F LD HL,$9156 ; the memory location of the first entry in the table.) $9472 ADD HL,DE ; $9473 LD A,($937B) ; $9476 LD (HL),A ; } $9477 CP $02 ; {If the current spell ID is between $02 and $21 (i.e. is $9479 RET M ; a creature) carry on and ask if it should be cast as an $947A CP $22 ; illusion. Otherwise return. $947C RET P ; } $947D CALL $BED7 ; Clear the message bar. $9480 LD A,$47 ; {Set the colours to white on black ($47). $9482 LD ($5C8F),A ; } $9485 LD A,$5E ; {Print the message with ID $5E (ILLUSION? (PRESS Y OR $9487 LD BC,$1600 ; N)) at screen position $1600. $948A CALL $BAFB ; } $948D CALL $BBCC ; @label=SPELL_MENU_11_ILLUSION_Y_OR_N *$9490 CALL $02BF ; Keyboard ROM subroutine. $9493 CP $4E ; {If the user pressed N return. $9495 RET Z ; } $9496 CP $59 ; {If the user pressed something other than Y, loop back. $9498 JR NZ,$9490 ; You can only press Y or N at this point.} $949A LD HL,$915E ; {The user pressed Y. Record that the creature will be $949D LD D,$00 ; cast as an illusion in the small table at #R$915E. $949F LD A,($AC0E) ; $94A2 LD E,A ; $94A3 ADD HL,DE ; $94A4 LD (HL),$01 ; } $94A6 RET ; ; Display spell info ; ; Displays information about a single spell. ; ; Used by the routine at #R$9385. @label=DISPLAY_SPELL_INFO c$94A7 CALL $92F9 ; $94AA LD A,($937B) ; {If the current spell ID is $01 (Disbelieve) jump to $94AD CP $01 ; #R$94E2. $94AF JR Z,$94E2 ; } $94B1 CP $22 ; {If the current spell ID >= $22 (Gooey Blob) jump to $94B3 JP P,$94E2 ; #R$94E2.} $94B6 LD HL,$E0BE ; $94B9 LD (HL),A ; $94BA LD ($AC12),HL ; $94BD LD DE,$0281 ; $94C0 ADD HL,DE ; $94C1 LD (HL),$00 ; $94C3 LD HL,$C39E ; $94C6 LD (HL),$03 ; $94C8 LD A,($9153) ; $94CB LD ($FFFF),A ; $94CE CALL $C3B3 ; Display the 'I' key info page. $94D1 LD HL,$C39E ; $94D4 LD (HL),$00 ; $94D6 LD HL,($AC12) ; $94D9 LD (HL),$00 ; $94DB LD HL,$E01F ; $94DE LD ($AC12),HL ; $94E1 RET ; *$94E2 CALL $C5EE ; Clear the screen. $94E5 LD HL,$C2E3 ; $94E8 CALL $C2F9 ; $94EB LD A,$69 ; {Draw the border in blue on cyan ($69). $94ED LD ($5C8F),A ; $94F0 CALL $BB57 ; } $94F3 LD A,$46 ; {Set the colours to yellow on black ($46). $94F5 LD ($5C8F),A ; } $94F8 LD HL,($9380) ; $94FB LD A,(HL) ; $94FC LD BC,$0508 ; $94FF CALL $BAFB ; $9502 LD A,($937F) ; Load the spell's chaos/law value into A. $9505 OR A ; $9506 JR Z,$9543 ; Neutral spell. Jump to #R$9543. $9508 JP P,$9529 ; Lawful spell. Jump to #R$9529. $950B LD A,$43 ; {Set the colours to magenta on black ($43). $950D LD ($5C8F),A ; } $9510 LD A,$46 ; {Print the message with ID $46 ((CHAOS) at screen $9512 LD BC,$0708 ; position $0708. $9515 CALL $BAFB ; } $9518 LD A,($937F) ; {Load the spell's chaos/law value into A and negate it. $951B NEG ; } $951D ADD A,$30 ; {Add $30 to get the character to print, then print it. $951F CALL $BAD6 ; } $9522 LD A,$29 ; {Print a close bracket. $9524 CALL $BAD6 ; } $9527 JR $9543 ; *$9529 LD A,$45 ; {Set the colours to cyan on black ($45). $952B LD ($5C8F),A ; } $952E LD A,$47 ; {Print the message with ID $47 ((LAW) at screen position $9530 LD BC,$0708 ; $0708. $9533 CALL $BAFB ; } $9536 LD A,($937F) ; $9539 ADD A,$30 ; $953B CALL $BAD6 ; $953E LD A,$29 ; $9540 CALL $BAD6 ; *$9543 LD A,$44 ; {Set the colours to green on black ($44). $9545 LD ($5C8F),A ; } $9548 LD A,$4F ; {Print the message with ID $4F (CASTING CHANCE=) at $954A LD BC,$0B08 ; screen position $0B08. $954D CALL $BAFB ; } $9550 LD A,$46 ; {Set the colours to yellow on black ($46). $9552 LD ($5C8F),A ; } $9555 LD A,($9153) ; Get the casting chance of the current spell. Will be a ; value from 0 (10% chance) to 9 (100% chance). $9558 INC A ; {Add 1 to A. If we don't have 10 (i.e. it's not a 100% $9559 CP $0A ; chance) jump to #R$9564. $955B JR NZ,$9564 ; } $955D LD A,$50 ; {Print the message with ID $50 (10). See table at $955F CALL $BAFB ; #R$CDD3.} $9562 JR $9569 ; *$9564 ADD A,$30 ; Add $30 to A to get the character to print (e.g. 5 maps ; to $35) $9566 CALL $BAD6 ; Print it. *$9569 LD A,$30 ; {Print a 0. $956B CALL $BAD6 ; } $956E LD A,$25 ; {Print the % symbol. $9570 CALL $BAD6 ; } $9573 LD A,$44 ; {Set the colours to green on black ($44). $9575 LD ($5C8F),A ; } $9578 LD A,$4A ; {Print the message with ID $4A (RANGE=) at screen $957A LD BC,$0F08 ; position $0F08. $957D CALL $BAFB ; } $9580 LD A,$46 ; {Set the colours to yellow on black ($46). $9582 LD ($5C8F),A ; } $9585 LD IX,($9380) ; Set the index register to the location of the current ; spell in the spells table. $9589 LD A,(IX+$02) ; Get the third byte in the spell's data: the range. $958C SRL A ; Shift the bits in A right, effectively dividing by two. $958E CP $0A ; {If it's 10 or above, jump to #R$959A. $9590 JP P,$959A ; } $9593 ADD A,$30 ; Add $30 to A to get the character to print (e.g. 5 maps ; to $35) $9595 CALL $BAD6 ; Print it. $9598 JR $95A4 ; *$959A LD A,$32 ; {Print 20. $959C CALL $BAD6 ; $959F LD A,$30 ; $95A1 CALL $BAD6 ; } *$95A4 LD A,$4D ; {Set the colours to cyan on blue ($4D). $95A6 LD ($5C8F),A ; } $95A9 LD A,$3D ; {Print the message with ID $3D (PRESS ANY KEY) at screen $95AB LD BC,$1600 ; position $1600. $95AE CALL $BAFB ; } $95B1 CALL $BBCC ; $95B4 CALL $BBB0 ; Wait for keypress $95B7 RET ; ; Update the "is current wizard computer controlled" flag at #R$AC2E. ; ; Used by the routines at #R$9168 and #R$95C7. @label=SET_WIZ_IS_COMP_CONTROLLED c$95B8 LD HL,$AC26 ; Load HL with #R$AC26, the memory address which contains ; info on which players are computer controlled (see ; #R$AC26). $95BB LD A,($AC0E) ; {Set DE to the number of the wizard whose turn it is $95BE LD D,$00 ; (see #R$AC0E). $95C0 LD E,A ; } $95C1 ADD HL,DE ; Add DE to HL and save to HL. HL now contains the memory ; address of the current wizard's "is computer controlled" ; flag. $95C2 LD A,(HL) ; {Set #R$AC2E to the value of the address HL is pointing $95C3 LD ($AC2E),A ; to (i.e. 1 if the current wizard is computer controlled ; or 0 if not).} $95C6 RET ; ; Cast spells. ; ; Used by the routine at #R$9168. @label=CAST_SPELLS c$95C7 CALL $C5EE ; Clear the screen. $95CA CALL $FE56 ; $95CD CALL $C0DD ; $95D0 HALT ; $95D1 HALT ; $95D2 LD A,$00 ; {Set the current wizard ID (at #R$AC0E) to 0. $95D4 LD ($AC0E),A ; } @label=CAST_SPELLS_1_LOAD_WIZARD *$95D7 LD HL,$AC16 ; Set HL to the address of the wizard status values, ; #R$AC16. $95DA LD A,($AC0E) ; {Set DE to the current wizard ID. $95DD LD D,$00 ; $95DF LD E,A ; } $95E0 ADD HL,DE ; {Add HL and DE to get the address of the current $95E1 LD A,(HL) ; wizard's status, and load it into A.} $95E2 BIT 4,(HL) ; {If bit 4 is set (i.e. the wizard is dead) jump to $95E4 JP NZ,$9665 ; #R$9665 (skipping his turn).} $95E7 CALL $97D1 ; $95EA CALL $95B8 ; Update the flag which tells whether the current wizard ; is computer controlled (1 if computer controlled, 0 if ; not). $95ED OR A ; {If the wizard is computer controlled, jump to #R$96F3. $95EE JP NZ,$96F3 ; } $95F1 LD HL,$9156 ; Set HL to the address of the small table in which each ; wizard's chosen spell is held. (#R$9156) $95F4 LD D,$00 ; {Set DE to the current wizard ID. $95F6 LD A,($AC0E) ; $95F9 LD E,A ; } $95FA ADD HL,DE ; {Add HL and DE together to get the address of the $95FB LD A,(HL) ; current wizard's chosen spell and load its ID into A.} $95FC LD ($937B),A ; Set the current spell ID variable (#R$937B). $95FF OR A ; {If it's 0 (no spell selected) jump to #R$9665, skipping $9600 JP Z,$9665 ; this wizard.} $9603 CALL $92AA ; Gets the current wizard's inventory location (the result ; is saved into HL, and also at #R$9154.) $9606 LD B,$13 ; $9608 LD A,($937B) ; {If the current spell ID is $01 (Disbelieve) jump to $960B CP $01 ; #R$961B. $960D JR Z,$961B ; } @label=CAST_SPELLS_2_MARK_SPELL_CAST *$960F LD E,(HL) ; {If the spell ID at the memory location pointed to by HL $9610 CP E ; doesn't match the current spell ID, jump to #R$9617. $9611 JR NZ,$9617 ; } $9613 LD (HL),$00 ; Found the spell. Mark it as cast by setting the spell ID ; in the wizard's inventory to 0. $9615 JR $961B ; Jump to #R$961B @label=CAST_SPELLS_3_NEXT_SPELL *$9617 INC HL ; {HL is pointing to a spell in the player's inventory. $9618 INC HL ; Increment twice to move to the next spell and jump back $9619 DJNZ $960F ; to #R$960F.} @label=CAST_SPELLS_4 *$961B CALL $92F9 ; Get the spell info. Sets a number of variables in ; memory. $961E CALL $967A ; Print the spell name. $9621 CALL $BBB0 ; Wait for keypress $9624 CALL $BED7 ; Clear the message bar. $9627 LD HL,$915E ; {Work out if the spell chosen was an illusion and load $962A LD D,$00 ; it into A. A will be 1 if it's an illusion, 0 if not. $962C LD A,($AC0E) ; $962F LD E,A ; $9630 ADD HL,DE ; $9631 LD A,(HL) ; } $9632 LD ($9166),A ; Set the flag indicating whether the current spell is an ; illusion. $9635 OR A ; {If the spell is an illusion, jump to #R$964C. $9636 JR NZ,$964C ; } $9638 CALL $BE94 ; A = a random number from 0 to 9. $963B LD HL,$9153 ; HL = address holding the current spell casting chance ; (#R$9153) $963E LD E,(HL) ; {E = casting chance of current spell + 1 $963F INC E ; } $9640 CP E ; {If A < E spell succeeded. Jump to #R$964C. $9641 JP M,$964C ; } $9644 LD A,$00 ; {Record that the spell failed at #R$9167. TODO Or did it $9646 LD ($9167),A ; succeed?} $9649 JP $9659 ; @label=CAST_SPELLS_5_SUCCESSFUL *$964C LD A,$01 ; {Record that the spell succeeded at #R$9167. $964E LD ($9167),A ; } $9651 LD A,($937F) ; Load the current spell's law/chaos level into A. $9654 LD HL,$C3A4 ; Load the address of the world's law/chaos level ; (#R$C3A4) into HL. $9657 ADD A,(HL) ; Add the world's law/chaos level to A. $9658 LD (HL),A ; Save the new world law/chaos level back to #R$C3A4. @label=CAST_SPELLS_6 *$9659 LD L,(IX+$05) ; {Set HL to the address of the routine used to cast the $965C LD H,(IX+$06) ; spell.} $965F LD ($9663),HL ; Overwrite the address in the next line to point to the ; appropriate spell routine. $9662 CALL $9975 ; Address will be overwritten with a new routine location, ; depending on the spell being cast. @label=CAST_SPELLS_7 *$9665 CALL $BED7 ; Clear the message bar. ; This entry point is used by the routine at #R$96F3. @label=CAST_SPELLS_8 *$9668 LD HL,$A172 ; $966B CALL $7D04 ; $966E LD HL,$AC0E ; HL = #R$AC0E (current wizard ID) $9671 INC (HL) ; Add one to HL, getting the next wizard ID. $9672 LD A,($AC0F) ; A = #R$AC0E (num of wizards in the game) $9675 CP (HL) ; {If there are still more wizards, jump back to #R$95D7. $9676 JP NZ,$95D7 ; } $9679 RET ; Else, return. ; Print spell about to be cast in message bar. ; ; Used by the routines at #R$8357, #R$84B0, #R$859C, #R$85F6, #R$95C7, #R$9975, ; #R$9A95, #R$9ADD, #R$9B76, #R$9C59, #R$9D8A and #R$9EF9. @label=PRINT_SPELL_TO_CAST c$967A LD A,$46 ; {Set the colours to yellow on black ($46). $967C LD ($5C8F),A ; } $967F LD A,($AC0E) ; {Add $29 to the ID of the active wizard (#R$AC0E) to get $9682 ADD A,$29 ; the ID of current wizard's name in the string table at ; #R$CDD3.} $9684 LD BC,$1600 ; {Print the current wizard's name at screen location $9687 CALL $BAFB ; $1600.} $968A CALL $96D1 ; $968D LD A,$44 ; {Set the colours to green on black ($44). $968F LD ($5C8F),A ; } $9692 LD A,(IX+$00) ; $9695 CALL $BAFB ; $9698 CALL $96D1 ; $969B LD A,$47 ; {Set the colours to white on black ($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) ; {If the current wizard is player controlled, return. $96C5 OR A ; $96C6 RET Z ; } $96C7 LD B,$08 ; *$96C9 PUSH BC ; $96CA CALL $96E6 ; $96CD POP BC ; $96CE DJNZ $96C9 ; $96D0 RET ; ; Routine at 96D1 ; ; Used by the routine at #R$967A. @label=ROUTINE_96D1 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 ; ; Routine at 96E6 ; ; Used by the routines at #R$84F7, #R$89F9, #R$8F8B and #R$967A. @label=ROUTINE_96E6_MAYBE_BRIEF_PAUSE c$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 ; ; Computer wizard choosing and casting spell. ; ; Used by the routine at #R$95C7. @label=COMP_WIZ_CASTS_SPELL c$96F3 LD HL,$AC16 ; HL = address of the wizard status values. $96F6 LD A,($AC0E) ; {DE = current wizard ID $96F9 LD D,$00 ; $96FB LD E,A ; } $96FC ADD HL,DE ; HL = address of the current wizard's status value byte. $96FD BIT 4,(HL) ; {If bit 4 is set (wizard is dead) jump to #R$9668, $96FF JP NZ,$9668 ; skipping the rest of the routine.} $9702 CALL $92AA ; Get the current wizard inventory location. $9705 CALL $904B ; $9708 ADD A,$0C ; $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 ; Going to loop 14 times. @label=COMP_WIZ_CASTS_SPELL_1 *$9719 PUSH BC ; $971A LD A,$01 ; {Assume that the spell is valid to cast. See #R$975F. $971C LD ($975F),A ; } $971F LD HL,($9154) ; {A = the ID of the spell the pointer is pointing at. $9722 LD A,(HL) ; } $9723 OR A ; {If there was a 0 at that slot, jump to #R$9751 (select $9724 JR Z,$9751 ; next available spell).} $9726 LD ($937B),A ; Set the current spell ID variable. $9729 CALL $92F9 ; Get the current spell info. $972C LD L,(IX+$05) ; {Set HL to the address of the routine used to cast the $972F LD H,(IX+$06) ; spell.} $9732 LD ($9736),HL ; Overwrite the address in the next line to point to the ; appropriate spell routine. $9735 CALL $9975 ; Address will be overwritten with a new routine location, ; depending on the spell being cast. $9738 CALL $BED7 ; Clear the message bar. $973B LD A,($975F) ; {If the spell cast was invalid (e.g. magic sword routine $973E OR A ; returned early because the wizard already had it), $973F JR Z,$9751 ; return to #R$9751 and pick another spell.} $9741 LD A,($937B) ; {If the current spell ID is $01 (Disbelieve) jump to $9744 CP $01 ; #R$974D. $9746 JR Z,$974D ; } $9748 LD HL,($9154) ; {Put a 0 in the spell inventory for the current spell. $974B LD (HL),$00 ; (So that it's no longer available.)} @label=COMP_WIZ_CASTS_SPELL_2 *$974D POP BC ; $974E JP $9668 ; Return to the spell casting routine. @label=COMP_WIZ_CASTS_SPELL_3_NEXT_SPELL *$9751 POP BC ; $9752 LD HL,($9154) ; Load the memory location of the current spell slot into ; A. $9755 INC HL ; {Add two to HL, to move the pointer two bytes forward. $9756 INC HL ; } $9757 LD ($9154),HL ; Set the inventory pointer to the next spell. $975A DJNZ $9719 ; If there are still spells to cast, jump back to #R$9719. $975C JP $9668 ; Return to the spell casting routine. ; Variable - whether the spell was valid to cast. ; ; If a computer wizard decided not to cast a spell (e.g. doesn't cast magic ; sword because he already has one), this is set to 0 and a new spell is ; selected in #R$96F3. @label=IS_SPELL_VALID b$975F DEFB $01 ; Spell attempt. ; ; Calculates whether the wizard succeeds in casting the spell. Sets the spell ; success flag, and updates the chaos/law level if successful. ; ; Used by the routines at #R$8357, #R$84B0, #R$86C3, #R$9975, #R$9ADD, #R$9B76, ; #R$9DE0 and # R$9EF9. @label=SPELL_ATTEMPT c$9760 LD A,($9166) ; {If the current spell is an illusion, jump to #R$9778. $9763 OR A ; $9764 JR NZ,$9778 ; } $9766 CALL $BE94 ; A = a random number from 0 to 9. $9769 LD HL,$9153 ; {Load the current spell casting chance (0 is 10%, 9 is $976C LD E,(HL) ; 100%) into E.} $976D INC E ; {Increment E and compare with A. If the random number $976E CP E ; was less than the casting chance, jump to #R$9778. $976F JP M,$9778 ; } $9772 LD A,$00 ; {The spell failed. Record a 0 in the spell success flag. $9774 LD ($9167),A ; } $9777 RET ; @label=SPELL_ATTEMPT_1_SUCCESS *$9778 LD A,$01 ; {Set the spell success flag to 1 (successful). $977A LD ($9167),A ; } $977D LD A,($937F) ; A = current spell's law/chaos level. $9780 LD HL,$C3A4 ; HL = address of the world's law/chaos level (#R$C3A4) $9783 ADD A,(HL) ; {Add the world's law/chaos level to A and save it back $9784 LD (HL),A ; to #R$C3A4.} $9785 RET ; ; Check that the spell is in range. ; ; Used by the routines at #R$84F7, #R$85F6, #R$981A, #R$9C59, #R$9DAA and ; #R$9F50. @label=SPELL_RANGE_CHECK c$9786 LD HL,($AC14) ; HL = contents of #R$AC14. When casting a spell this is ; the casting wizard's location. $9789 CALL $C703 ; $978C LD ($BEE9),HL ; $978F LD HL,($AC12) ; HL = contents of #R$AC12. When casting a spell this is ; the target location. $9792 CALL $C703 ; $9795 LD ($BEEB),HL ; $9798 CALL $BEEF ; $979B LD HL,$BEE8 ; $979E LD A,(IX+$02) ; $97A1 CP (HL) ; $97A2 RET ; ; Display spell success/failure message. ; ; Used by the routines at #R$836A, #R$839C, #R$83D0, #R$8404, #R$8438, #R$846A, ; #R$84B0, #R$84C0, #R$859C, #R$86C3, #R$981A, #R$9975, #R$9A21, #R$9ADD, ; #R$9B76, #R$9DE0 and #R$9EF9. @label=DISPLAY_SUCCESS_FAIL_MESSAGE c$97A3 CALL $BED7 ; Clear the message bar. $97A6 LD A,($9167) ; {If the spell succeeded (see #R$9167) jump to #R$97BB. $97A9 OR A ; $97AA JR NZ,$97BB ; } $97AC LD A,$43 ; {Set the colours to magenta on black ($43). $97AE LD ($5C8F),A ; } $97B1 LD A,$54 ; {Print the message with ID $54 (SPELL FAILS) at screen $97B3 LD BC,$1600 ; position $1600. $97B6 CALL $BAFB ; } $97B9 JR $97C8 ; *$97BB LD A,$47 ; {Set the colours to white on black ($47). $97BD LD ($5C8F),A ; } $97C0 LD BC,$1600 ; {Print the message with ID $55 (SPELL SUCCEEDS) at $97C3 LD A,$55 ; screen position $1600. $97C5 CALL $BAFB ; } *$97C8 LD B,$64 ; *$97CA HALT ; {Pause for a short while. $97CB DJNZ $97CA ; } $97CD RET ; ; Variable - number of casts left for current spell @label=CASTS_LEFT b$97CE DEFB $01 ; Variable - stores location when searching for the current wizard ; ; Points to somewhere in the arena state table at #R$E01F. @label=SEARCH_LOCATION b$97CF DEFB $BA,$E0 ; Find the current wizard in the arena. ; ; Used by the routines at #R$8357, #R$95C7 and #R$981A. @label=FIND_CURRENT_WIZARD c$97D1 LD HL,$E01F ; $97D4 LD ($97CF),HL ; #R$97CF = address of current index to the arena table 1 $97D7 LD B,$9F ; Going to check all 150 cells. Load B with 159, as that's ; how often we'll increase HL. (There are 10 "blank cell" ; memory locations that are not used.) *$97D9 LD A,(HL) ; A = contents of the cell $97DA SUB $29 ; Subtract $29 (the creature ID of the first wizard) $97DC LD HL,$AC0E ; HL = address containing the current wizard ID (#R$AC0E) $97DF CP (HL) ; {If A == current wizard ID, found them. Jump to #R$97FB. $97E0 JR Z,$97FB ; } $97E2 LD HL,($97CF) ; HL = search location again $97E5 LD DE,$0281 ; {Find the equivalent location in arena table 5. The $97E8 ADD HL,DE ; wizard ID may be stored there if the wizard is in a tree ; or on a mount.} $97E9 LD A,(HL) ; A = contents of the cell in table 5 $97EA SUB $29 ; Subtract $29 (the creature ID of the first wizard) $97EC LD HL,$AC0E ; HL = address containing the current wizard ID (#R$AC0E) $97EF CP (HL) ; {If A == current wizard ID, found them. Jump to #R$97FB. $97F0 JR Z,$97FB ; } $97F2 LD HL,($97CF) ; {Didn't find them at this location. Set #R$97CF to the $97F5 INC HL ; next location and repeat. $97F6 LD ($97CF),HL ; $97F9 DJNZ $97D9 ; } *$97FB LD HL,($97CF) ; $97FE LD ($AC14),HL ; Set #R$AC14 to the wizard's location. $9801 LD ($AC12),HL ; Set #R$AC12 to the wizard's location. $9804 LD ($C649),HL ; Set #R$C649 to the wizard's location. $9807 CALL $C703 ; $980A LD ($BC94),HL ; $980D RET ; ; Routine at 980E ; ; Used by the routines at #R$9975, #R$9ADD and #R$9B76. @label=ROUTINE_980E c$980E PUSH HL ; $980F LD HL,($AC12) ; $9812 CALL $C703 ; $9815 LD A,L ; $9816 CP $10 ; $9818 POP HL ; $9819 RET ; ; Player casts a spell with a location. ; ; Used by the routines at #R$9975, #R$9ADD and #R$9B76. @label=PLAYER_CAST_LOCATIONAL_SPELL c$981A CALL $BED7 ; Clear the message bar. $981D CALL $97D1 ; $9820 CALL $FE56 ; $9823 LD A,$00 ; {Set $5C8D (ATTR P) to 0. $9825 LD ($5C8D),A ; } $9828 LD A,$FF ; {Set $5C8E (MASK P) to 255/-1. $982A LD ($5C8E),A ; } $982D CALL $C0DD ; $9830 EI ; $9831 HALT ; $9832 LD A,$03 ; $9834 LD ($5C91),A ; $9837 CALL $BED7 ; Clear the message bar. $983A LD A,($97CE) ; Load the number of spell casts left (#R$97CE) into A. $983D LD B,A ; {Load A into B and push BC. *$983E PUSH BC ; } *$983F CALL $BC96 ; User key input. $9842 CALL $02BF ; Keyboard ROM subroutine. $9845 CP $53 ; {If the user pressed S jump to #R$9856. $9847 JR Z,$9856 ; } $9849 CP $4B ; {If the user pressed K jump to #R$983F. $984B JR NZ,$983F ; } $984D POP BC ; $984E LD HL,$C2B1 ; $9851 CALL $C2F9 ; $9854 EI ; $9855 RET ; *$9856 CALL $BBCC ; $9859 CALL $9786 ; $985C JP P,$9877 ; If the spell was within range, jump to #R$9877. $985F CALL $BED7 ; Clear the message bar. $9862 LD BC,$1600 ; $9865 LD A,$45 ; {Set the colours to cyan on black ($45). $9867 LD ($5C8F),A ; } $986A LD A,$35 ; {Print the message with ID $35 (OUT OF RANGE) at screen $986C CALL $BAFB ; position $1600.} $986F CALL $BBCC ; $9872 CALL $BBB0 ; Wait for keypress $9875 JR $983F ; *$9877 LD HL,($AC12) ; {The spell was in range. HL = object at the spell target $987A LD A,(HL) ; location.} $987B OR A ; {If the targeted space is empty jump to #R$9892. $987C JR Z,$9892 ; } $987E LD A,($937B) ; {If the current spell ID >= $24 (Magic Wood) jump to $9881 CP $24 ; #R$983F. $9883 JP P,$983F ; } $9886 LD HL,($AC12) ; $9889 LD DE,$0141 ; $988C ADD HL,DE ; $988D LD A,(HL) ; $988E CP $04 ; $9890 JR NZ,$983F ; *$9892 CALL $98F1 ; $9895 JR NZ,$983F ; $9897 CALL $9C0F ; $989A JR NZ,$983F ; $989C CALL $98DB ; $989F JR Z,$98BA ; $98A1 LD A,$45 ; {Set the colours to cyan on black ($45). $98A3 LD ($5C8F),A ; } $98A6 CALL $BED7 ; Clear the message bar. $98A9 LD A,$3C ; {Print the message with ID $3C (NO LINE OF SIGHT) at $98AB LD BC,$1600 ; screen position $1600. $98AE CALL $BAFB ; } $98B1 CALL $BBCC ; $98B4 CALL $BBB0 ; Wait for keypress $98B7 JP $983F ; *$98BA CALL $A18A ; $98BD LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$98D6. $98C0 OR A ; $98C1 JR Z,$98D6 ; } $98C3 CALL $9941 ; Spell succeeded. Call #R$9941 to spawn the new creature. $98C6 POP BC ; $98C7 PUSH BC ; $98C8 LD A,B ; $98C9 CP $01 ; $98CB JR NZ,$98D0 ; $98CD CALL $97A3 ; Display the spell succeeds/fails message. *$98D0 POP BC ; {If there are any casts left, jump back to #R$983E. $98D1 DEC B ; $98D2 JP NZ,$983E ; } $98D5 RET ; *$98D6 POP BC ; $98D7 CALL $97A3 ; Display the spell succeeds/fails message. $98DA RET ; ; Routine at 98DB ; ; Used by the routines at #R$84F7, #R$85F6, #R$981A, #R$9975, #R$9ADD, #R$9B76, ; #R$9C59 and #R$9DAA. @label=ROUTINE_98DB c$98DB XOR A ; $98DC LD ($B754),A ; Set #R$B754 to 0. $98DF LD ($B60B),A ; Set #R$B60B to 0. $98E2 CALL $BA77 ; $98E5 CALL $B626 ; $98E8 CALL $C0DD ; $98EB HALT ; $98EC LD A,($B754) ; $98EF OR A ; $98F0 RET ; ; Routine at 98F1. Possibly to do with Shadow Wood? ; ; Used by the routines at #R$981A and #R$9ADD. @label=ROUTINE_98F1 c$98F1 LD A,$00 ; {Set #R$9940 to 0. $98F3 LD ($9940),A ; } $98F6 LD A,($937B) ; {If the current spell ID < $24 (Magic Wood) jump to $98F9 CP $24 ; #R$993B. $98FB JP M,$993B ; } $98FE CP $26 ; {If the current spell ID >= $26 (Magic Castle) jump to $9900 JP P,$993B ; #R$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 ; *$9932 POP BC ; $9933 DJNZ $9911 ; $9935 LD HL,($C78B) ; $9938 LD ($AC14),HL ; *$993B LD A,($9940) ; $993E OR A ; $993F RET ; ; Data block at 9940 @label=VAR_9940 b$9940 DEFB $00 ; Spawn a new creature or object in the arena. ; ; Used by the routines at #R$981A, #R$9975 and #R$9B76. @label=SPAWN_NEW_CREATURE c$9941 LD HL,($AC12) ; Load the memory address representing the cursor location ; into HL. $9944 LD A,($937B) ; {If the current spell ID is $22 (Gooey Blob) jump to $9947 CP $22 ; #R$9958. $9949 JR Z,$9958 ; } $994B CP $23 ; {If the current spell ID is $23 (Magic Fire) jump to $994D JR Z,$9958 ; #R$9958.} $994F LD A,(HL) ; {Copy the data at the cursor location to the $9950 LD DE,$0321 ; corresponding space in the data table 6, which starts at $9953 ADD HL,DE ; #R$E340. TODO - don't know what that table is for yet. $9954 LD (HL),A ; Dead creatures?} $9955 LD A,($937B) ; Load the current spell ID into A. @label=SPAWN_NEW_CREATURE_1 *$9958 LD HL,($AC12) ; {Copy A into the memory address representing the current $995B LD (HL),A ; cursor location. The spell IDs and the creature IDs ; match up, so this spawns a new creature on the map.} $995C LD DE,$00A1 ; {Get the equivalent memory address in table 2. $995F ADD HL,DE ; } $9960 LD (HL),$01 ; Set the value in table 2 to 1. TODO What does this ; indicate? $9962 DEC DE ; {Get the equivalent memory address in table 3. $9963 ADD HL,DE ; } $9964 LD (HL),$00 ; Set the value in table 3 to 0. TODO What does this ; indicate? $9966 ADD HL,DE ; Get the equivalent memory address in table 4. $9967 LD A,($AC0E) ; {Set the value in table 4 to the current wizard ID. $996A LD (HL),A ; } $996B LD A,($9166) ; {If the current spell is not an illusion jump to $996E OR A ; #R$9973. $996F JR Z,$9973 ; } $9971 SET 4,(HL) ; Set bit 4 to indicate that the creature is an illusion. @label=SPAWN_NEW_CREATURE_2_RETURN *$9973 HALT ; $9974 RET ; ; Cast Creature ; ; Used by the routines at #R$95C7 and #R$96F3. @label=CAST_CREATURE c$9975 LD A,$01 ; {Set the number of times you get to cast this spell (1) $9977 LD ($97CE),A ; and save it at #R$97CE.} $997A LD A,($AC2E) ; {If the current wizard is computer controlled jump to $997D OR A ; #R$9984. $997E JR NZ,$9984 ; } $9980 CALL $981A ; $9983 RET ; @label=CAST_CREATURE_1 *$9984 CALL $C78D ; $9987 LD A,$03 ; $9989 LD ($AC03),A ; $998C LD A,($937B) ; {If the current spell ID < $22 (Gooey Blob) jump to $998F CP $22 ; #R$9999. $9991 JP M,$9999 ; } $9994 LD A,$0D ; $9996 LD ($AC03),A ; @label=CAST_CREATURE_2 *$9999 CALL $C955 ; @label=CAST_CREATURE_3 *$999C CALL $C9DC ; $999F CP $4B ; $99A1 JR NZ,$99A9 ; $99A3 LD A,$00 ; {Record that the spell was not cast. $99A5 LD ($975F),A ; } $99A8 RET ; @label=CAST_CREATURE_4 *$99A9 CALL $980E ; {Maybe checking target square is empty? $99AC JR Z,$999C ; } $99AE CALL $98DB ; $99B1 JR NZ,$999C ; $99B3 LD HL,($AC12) ; {Load the ID of the object at the current cursor $99B6 LD A,(HL) ; location into A.} $99B7 OR A ; {If it's an empty space jump to #R$99C3. $99B8 JR Z,$99C3 ; } $99BA LD DE,$0141 ; $99BD ADD HL,DE ; $99BE LD A,(HL) ; $99BF CP $04 ; $99C1 JR NZ,$999C ; @label=CAST_CREATURE_5 *$99C3 CALL $967A ; Print the name of the spell that's being cast. $99C6 CALL $A18A ; $99C9 LD A,($937B) ; {If the current spell ID >= $22 (Gooey Blob) jump to $99CC CP $22 ; #R$99DE. $99CE JP P,$99DE ; } $99D1 CALL $BE94 ; A = a random number from 0 to 9. $99D4 CP $02 ; {If A >= 2, jump to #R$99DE. $99D6 JP P,$99DE ; } $99D9 LD A,$01 ; {The computer player is casting the creature as an $99DB LD ($9166),A ; illusion. Set #R$9166.} @label=CAST_CREATURE_6 *$99DE CALL $9760 ; $99E1 LD A,($9167) ; {If the spell succeeded (see #R$9167) jump to #R$9941. $99E4 OR A ; $99E5 CALL NZ,$9941 ; } $99E8 LD A,$00 ; {Reset the flag that tells us if the current spell is an $99EA LD ($9166),A ; illusion to 0.} $99ED CALL $97A3 ; Display the spell succeeds/fails message. $99F0 RET ; ; Cast Disbelieve @label=CAST_DISBELIEVE_CHOOSE_TARGET c$99F1 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $99F4 OR A ; #R$9A95. $99F5 JP NZ,$9A95 ; } *$99F8 CALL $BC96 ; User key input. $99FB CALL $02BF ; Keyboard ROM subroutine. $99FE CP $53 ; {If the user pressed S jump to #R$9A0E. $9A00 JR Z,$9A0E ; } $9A02 CP $4B ; {If the user pressed anything other than K jump back to $9A04 JR NZ,$99F8 ; #R$99F8.} $9A06 LD HL,$C2B1 ; {User pressed K. Play a sound effect, enable interrupts $9A09 CALL $C2F9 ; and return. $9A0C EI ; $9A0D RET ; } *$9A0E CALL $BBCC ; $9A11 LD HL,($AC12) ; {Find out what is at the current cursor location and $9A14 LD A,(HL) ; load its ID into A.} $9A15 OR A ; {If A == 0, jump back to #R$99F8. $9A16 JR Z,$99F8 ; } $9A18 CP $22 ; {If A >= $22, the ID isn't of a creature that can be $9A1A JP P,$99F8 ; disbelieved. Jump back to #R$99F8.} $9A1D CALL $9A21 ; $9A20 RET ; ; Routine at 9A21 ; ; Used by the routines at #R$99F1 and #R$9A95. @label=CAST_DISBELIEVE c$9A21 CALL $A18A ; $9A24 LD HL,($AC12) ; Load the cursor location into HL. $9A27 LD A,$00 ; {Set the spell success flag to 0 (failed). $9A29 LD ($9167),A ; } $9A2C LD DE,$01E1 ; {HL = the memory address in table 4 representing the $9A2F ADD HL,DE ; cursor location. It records the wizard owner and whether ; creatures are illusions.} $9A30 BIT 4,(HL) ; {Check bit 4. If it's 0, the creature is real - jump to $9A32 JR Z,$9A45 ; #R$9A45.} $9A34 LD DE,$00A0 ; {Get the memory address in table 5 representing the $9A37 ADD HL,DE ; cursor location.} $9A38 LD A,(HL) ; {Overwrite the item in table 1 with the item in table 5. $9A39 LD HL,($AC12) ; TODO Why? Copying in dead creatures? $9A3C LD (HL),A ; } $9A3D CALL $9A52 ; $9A40 LD A,$01 ; {Set the spell success flag to 1 (successful). $9A42 LD ($9167),A ; } @label=CAST_DISBELIEVE_EXIT *$9A45 CALL $97A3 ; Display the spell succeeds/fails message. $9A48 LD HL,($AC12) ; {HL = the memory address in table 4 representing the $9A4B LD DE,$01E1 ; cursor location. $9A4E ADD HL,DE ; } $9A4F SET 5,(HL) ; Set bit 5. TODO Indicates that it should not be ; disbelieved by the AI again? $9A51 RET ; ; Display explosion animation ; ; Used by the routines at #R$9A21, #R$9C59, #R$9CA9, #R$9E38 and #R$A075. @label=DISPLAY_EXPLOSION_ANIMATION c$9A52 LD HL,$9121 ; $9A55 LD ($C2F3),HL ; $9A58 CALL $C2F6 ; $9A5B LD A,$46 ; {Set the colours to yellow on black ($46). $9A5D LD ($5C8F),A ; } $9A60 LD HL,$A345 ; $9A63 LD ($A188),HL ; $9A66 LD HL,($AC12) ; $9A69 LD ($E005),HL ; $9A6C CALL $E007 ; $9A6F LD ($DF4C),HL ; $9A72 LD B,$07 ; $9A74 DI ; *$9A75 PUSH BC ; $9A76 LD HL,($A188) ; $9A79 LD ($DF4A),HL ; $9A7C CALL $DF4E ; $9A7F CALL $C301 ; $9A82 LD DE,$0020 ; $9A85 LD HL,($A188) ; $9A88 ADD HL,DE ; $9A89 LD ($A188),HL ; $9A8C POP BC ; $9A8D DJNZ $9A75 ; $9A8F CALL $C0DD ; $9A92 EI ; $9A93 HALT ; $9A94 RET ; ; Computer wizard casts disbelieve. ; ; Used by the routine at #R$99F1. @label=COMP_WIZ_CASTS_DISBELIEVE c$9A95 LD HL,($AC14) ; $9A98 LD ($C78B),HL ; $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 ; @label=COMP_WIZ_CASTS_DISBELIEVE_1 *$9AB1 CALL $A17E ; $9AB4 CP $FF ; $9AB6 JR NZ,$9ABE ; $9AB8 LD A,$00 ; {Record that the spell was not cast. $9ABA LD ($975F),A ; } $9ABD RET ; @label=COMP_WIZ_CASTS_DISBELIEVE_2 *$9ABE LD HL,$E01F ; {HL = memory address of the creature we may attempt to $9AC1 LD D,$00 ; disbelieve, in arena table 1. See #R$E01F. $9AC3 LD E,A ; $9AC4 ADD HL,DE ; } $9AC5 LD ($AC12),HL ; $9AC8 LD A,(HL) ; A = object ID $9AC9 CP $22 ; {If A > $22 (i.e. it's not a creature) jump to #R$9AB1. $9ACB JP P,$9AB1 ; } $9ACE LD DE,$01E1 ; {HL = the memory address containing the creature's $9AD1 ADD HL,DE ; status, in arena table 4.} $9AD2 BIT 5,(HL) ; {If bit 5 is 0, jump back to #R$9AB1. The creature has $9AD4 JR NZ,$9AB1 ; already been disbelieved and found to be real.} $9AD6 CALL $967A ; Bit 5 was set, so the creature is an illusion. Print ; that we're casting disbelieve. $9AD9 CALL $9A21 ; Call the cast disbelieve routine. $9ADC RET ; ; Cast Trees and Castles @label=CAST_TREES_OR_CASTLE c$9ADD LD A,$08 ; {Assume we're casting trees. Save the number of times $9ADF LD ($97CE),A ; you can cast this spell (8) at #R$97CE.} $9AE2 LD A,($937B) ; {If the current spell ID < 38 (i.e. the spell is a tree) $9AE5 CP $26 ; jump to #R$9AEF. $9AE7 JP M,$9AEF ; } $9AEA LD A,$01 ; {Casting a castle. Set the number of times you can cast $9AEC LD ($97CE),A ; this spell (1) and save it at #R$97CE.} @label=CAST_TREES_OR_CASTLE_1 *$9AEF LD A,($AC2E) ; {If the current wizard is computer controlled jump to $9AF2 OR A ; #R$9B00. $9AF3 JR NZ,$9B00 ; } $9AF5 LD A,($937B) ; {If the spell being cast is a magic wood, jump to $9AF8 CP $24 ; #R$9B1F. $9AFA JR Z,$9B1F ; } $9AFC CALL $981A ; $9AFF RET ; @label=CAST_TREES_OR_CASTLE_2 *$9B00 LD A,($937B) ; {If the spell being cast is a tree, jump to #R$9B1C. $9B03 CP $26 ; $9B05 JP M,$9B1C ; } $9B08 LD HL,($AC12) ; $9B0B LD A,(HL) ; $9B0C CP $26 ; $9B0E JP M,$9B1C ; $9B11 CP $28 ; $9B13 JP P,$9B1C ; $9B16 LD A,$00 ; {Record that the spell was not cast. $9B18 LD ($975F),A ; } $9B1B RET ; @label=CAST_TREES_OR_CASTLE_3 *$9B1C CALL $967A ; @label=CAST_TREES_OR_CASTLE_4 *$9B1F LD HL,($AC14) ; $9B22 LD ($C8B7),HL ; $9B25 LD A,$0D ; $9B27 LD ($AC03),A ; $9B2A CALL $9760 ; $9B2D LD A,($97CE) ; $9B30 LD B,A ; @label=CAST_TREES_OR_CASTLE_5 *$9B31 PUSH BC ; $9B32 CALL $C955 ; @label=CAST_TREES_OR_CASTLE_6 *$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 ; $9B55 LD A,($9167) ; {If the spell succeeded (see #R$9167) jump to #R$9B71. $9B58 OR A ; $9B59 JR Z,$9B71 ; } $9B5B LD A,($937B) ; {Write the current spell ID (creature ID?) into the $9B5E LD HL,($AC12) ; memory location corresponding to the cursor's position. $9B61 LD (HL),A ; } $9B62 LD DE,$01E1 ; $9B65 ADD HL,DE ; $9B66 LD A,($AC0E) ; $9B69 LD (HL),A ; $9B6A CALL $C0DD ; $9B6D POP BC ; $9B6E DJNZ $9B31 ; $9B70 RET ; @label=CAST_TREES_OR_CASTLE_7 *$9B71 CALL $97A3 ; Display the spell succeeds/fails message. @label=CAST_TREES_OR_CASTLE_8 *$9B74 POP BC ; $9B75 RET ; ; Cast Wall @label=CAST_WALL c$9B76 LD A,$04 ; {Set the number of times you get to cast this spell (1) $9B78 LD ($97CE),A ; and save it at #R$97CE.} $9B7B LD A,($AC2E) ; {If the current wizard is computer controlled jump to $9B7E OR A ; #R$9B85. $9B7F JR NZ,$9B85 ; } $9B81 CALL $981A ; $9B84 RET ; *$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 ; *$9BA6 CALL $A17E ; $9BA9 CP $FF ; $9BAB JR NZ,$9BB3 ; $9BAD LD A,$00 ; {Record that the spell was not cast. $9BAF LD ($975F),A ; } $9BB2 RET ; *$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 ; *$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 ; Display the cast animation. $9BF9 LD A,($9167) ; {If the spell failed (see #R$9167) jump to #R$9C09. $9BFC OR A ; $9BFD JR Z,$9C09 ; } $9BFF CALL $9941 ; Spawn the new wall in the arena. *$9C02 POP BC ; $9C03 DJNZ $9BD5 ; $9C05 CALL $97A3 ; Display the spell succeeds/fails message. $9C08 RET ; *$9C09 CALL $97A3 ; Display the spell succeeds/fails message. $9C0C POP BC ; $9C0D RET ; ; Data block at 9C0E @label=VAR_9C0E b$9C0E DEFB $00 ; Routine at 9C0F - something to do with walls ; ; Used by the routines at #R$981A and #R$9B76. @label=ROUTINE_9C0F c$9C0F LD A,$00 ; {Set #R$9C0E to 0. $9C11 LD ($9C0E),A ; } $9C14 LD A,($937B) ; {If this spell isn't $28 (Wall) jump to #R$9C54. $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 ; ; Cast Lightning or Magic Bolt @label=CAST_LIGHTNING c$9C59 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $9C5C OR A ; #R$9D8A. $9C5D JP NZ,$9D8A ; } *$9C60 CALL $BC96 ; User key input. $9C63 CALL $02BF ; Keyboard ROM subroutine. $9C66 CP $53 ; {If the user pressed S jump to #R$9C76. $9C68 JR Z,$9C76 ; } $9C6A CP $4B ; {If the user pressed anything other than K jump back to $9C6C JR NZ,$9C60 ; #R$9C60.} $9C6E LD HL,$C2B1 ; {User pressed K. Play a sound effect, enable interrupts $9C71 CALL $C2F9 ; and return. $9C74 EI ; $9C75 RET ; } *$9C76 LD HL,($AC12) ; {Load the target's ID into A by reading the memory $9C79 LD A,(HL) ; location corresponding to the cursor location (#R$AC12). ; } $9C7A OR A ; {If there was no target at the cursor location, jump $9C7B JR Z,$9C60 ; back to #R$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 ; Clear the message bar. $9C8F LD BC,$1600 ; $9C92 LD A,$45 ; {Set the colours to cyan on black ($45). $9C94 LD ($5C8F),A ; } $9C97 LD A,$35 ; {Print the message with ID $35 (OUT OF RANGE) at screen $9C99 CALL $BAFB ; position $1600.} $9C9C CALL $BBCC ; $9C9F CALL $BBB0 ; Wait for keypress $9CA2 JR $9C60 ; *$9CA4 CALL $98DB ; $9CA7 JR NZ,$9C60 ; ; Routine at 9CA9 ; ; Used by the routine at #R$9D8A. @label=ROUTINE_9CA9 c$9CA9 LD A,$05 ; $9CAB LD ($B60B),A ; $9CAE LD HL,$C275 ; $9CB1 LD ($C2F3),HL ; $9CB4 LD A,($937B) ; {If the current spell ID < $2B (Lightning) jump to $9CB7 CP $2B ; #R$9CC7. $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 ; {Set the colours to white on black ($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 ; {A = the creature's defence. $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 ; A = a random number from 0 to 9. $9D44 LD HL,$A172 ; $9D47 ADD A,(HL) ; $9D48 LD (HL),A ; $9D49 CALL $BE94 ; A = a random number from 0 to 9. $9D4C ADD A,$03 ; $9D4E LD E,A ; $9D4F LD A,($937B) ; {If the ID of the spell being cast < $2B (Lightning) $9D52 CP $2B ; jump to #R$9D5B. $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 ; ; Routine at 9D8A ; ; Used by the routine at #R$9C59. @label=ROUTINE_9D8A c$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 ; {Record that the spell was not cast. $9D9F LD ($975F),A ; } $9DA2 RET ; *$9DA3 CALL $967A ; $9DA6 CALL $9CA9 ; $9DA9 RET ; ; Routine at 9DAA @label=ROUTINE_9DAA c$9DAA LD HL,($CD86) ; $9DAD INC HL ; $9DAE INC HL ; $9DAF LD ($CD86),HL ; ; This entry point is used by the routine at #R$9D8A. *$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 ; ; Cast Dark Power, etc @label=CAST_DARK_POWER_SELECT_TARGET c$9DE0 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $9DE3 OR A ; #R$9EF9. $9DE4 JP NZ,$9EF9 ; } $9DE7 CALL $9760 ; $9DEA LD A,($9167) ; {If the spell succeeded (see #R$9167) jump to #R$9C09. $9DED OR A ; $9DEE JR NZ,$9DF4 ; } $9DF0 CALL $97A3 ; Display the spell succeeds/fails message. $9DF3 RET ; *$9DF4 CALL $BED7 ; Clear the message bar. $9DF7 LD A,($9167) ; {If the spell failed (see #R$9167), return. $9DFA OR A ; $9DFB RET Z ; } $9DFC LD B,$01 ; $9DFE LD A,($937B) ; {If the ID of the spell being cast < $2F (Dark Power) $9E01 CP $2F ; jump to #R$9E08. $9E03 JP M,$9E08 ; } $9E06 LD B,$03 ; *$9E08 PUSH BC ; *$9E09 CALL $BC96 ; User key input. $9E0C CALL $02BF ; Keyboard ROM subroutine. $9E0F CP $53 ; {If the user pressed S jump to #R$9E20. $9E11 JR Z,$9E20 ; } $9E13 CP $4B ; {If the user pressed anything other than K jump back to $9E15 JR NZ,$9E09 ; #R$9E09.} $9E17 LD HL,$C2B1 ; {The user pressed K. Play a sound effect, enable $9E1A CALL $C2F9 ; interrupts and return. $9E1D EI ; $9E1E POP BC ; $9E1F RET ; } *$9E20 LD HL,($AC12) ; {Load the ID of the object at the cursor location into $9E23 LD A,(HL) ; A.} $9E24 OR A ; {If A is zero - i.e. there's nothing there - jump back $9E25 JR Z,$9E09 ; to #R$9E09.} $9E27 CP $29 ; {If A >= $29 (i.e. it's not an object) jump to #R$9E31. $9E29 JP P,$9E31 ; } $9E2C CP $22 ; {If A >= $22 (i.e. it's not a creature) jump back to $9E2E JP P,$9E09 ; #R$9E09.} *$9E31 CALL $9E38 ; $9E34 POP BC ; $9E35 DJNZ $9E08 ; $9E37 RET ; ; Routine at 9E38 ; ; Used by the routines at #R$9DE0 and #R$9EF9. @label=ROUTINE_9E38 c$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 ; Chan-open ROM subroutine. $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 ; {A = the creature's magic resistance. $9EA5 CALL $BE0A ; } $9EA8 LD E,A ; $9EA9 CALL $BE94 ; A = a random number from 0 to 9. $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 ; ; Routine at 9EF9 ; ; Used by the routine at #R$9DE0. @label=ROUTINE_9EF9 c$9EF9 CALL $967A ; $9EFC CALL $9760 ; $9EFF LD A,($9167) ; {If the spell succeeded (see #R$9167) jump to #R$9F09. $9F02 OR A ; $9F03 JR NZ,$9F09 ; } $9F05 CALL $97A3 ; Display the spell succeeds/fails message. $9F08 RET ; *$9F09 LD B,$01 ; $9F0B LD A,($937B) ; {If the ID of the spell being cast < $2F (Dark Power) $9F0E CP $2F ; jump to #R$9F15. $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 ; ; Spread gooey blob and magic fire. ; ; Used by the routine at #R$89F9. @label=SPREAD_BLOB_AND_FIRE c$9F50 LD HL,$E01F ; HL = #R$E01F, arena state table 1 $9F53 LD ($AC12),HL ; Set the location pointer to the top left. $9F56 CALL $A173 ; Mark all objects in the arena as being ready $9F59 LD B,$9F ; We're going to loop over the whole of table 1. ; This entry point is used by the routine at #R$A075. @label=SPREAD_BLOB_AND_FIRE_1 *$9F5B PUSH BC ; $9F5C LD HL,($AC12) ; HL = location pointer $9F5F LD ($AC14),HL ; Store the location $9F62 LD DE,$01E1 ; {Check bit 4 in the corresponding location in table 4. $9F65 ADD HL,DE ; If it's not zero (i.e. the object is an illusion), jump $9F66 BIT 7,(HL) ; to #R$A114. $9F68 JP NZ,$A114 ; } $9F6B LD HL,($AC14) ; HL = current location $9F6E LD A,(HL) ; A = ID of object at current location $9F6F CP $22 ; {If A < 22 or A >= 24 there's something other than a $9F71 JP M,$A114 ; blob or magic fire there. Jump to #R$A114. $9F74 CP $24 ; $9F76 JP P,$A114 ; } $9F79 LD DE,$01E1 ; {Found a magic fire or blob. HL = the corresponding $9F7C ADD HL,DE ; location in arena table 4.} $9F7D LD A,(HL) ; {Get the ID of the owning wizard by ANDing with all but $9F7E AND $07 ; the 3 least significant bits.} $9F80 LD ($AC0E),A ; Set the current wizard ID (#R$AC0E) $9F83 CALL $BE94 ; A = a random number from 0 to 9. $9F86 CP $09 ; {If A >= 9 jump to #R$A0C6. TODO Why? $9F88 JP P,$A0C6 ; } $9F8B LD HL,($AC14) ; {If the space contains a magic fire, jump to #R$9F9B. $9F8E LD A,(HL) ; $9F8F CP $23 ; $9F91 JR Z,$9F9B ; } $9F93 CALL $BE94 ; A = a random number from 0 to 9. $9F96 CP $08 ; {If A >= 8 jump to #R$A0C6. $9F98 JP P,$A0C6 ; } @label=SPREAD_BLOB_AND_FIRE_2 *$9F9B CALL $BE94 ; A = a random number from 0 to 9. $9F9E CP $08 ; {If A >= 8 jump back to #R$9F9B. $9FA0 JP P,$9F9B ; } $9FA3 LD HL,$CD2A ; $9FA6 LD D,$00 ; $9FA8 SLA A ; $9FAA LD E,A ; $9FAB ADD HL,DE ; $9FAC LD ($CD3A),HL ; $9FAF CALL $CD3C ; $9FB2 LD HL,($AC14) ; $9FB5 LD A,H ; $9FB6 ADD A,L ; $9FB7 JP Z,$A114 ; $9FBA CALL $9786 ; $9FBD LD A,($BEE8) ; $9FC0 CP $04 ; $9FC2 JP P,$A114 ; $9FC5 LD HL,($AC14) ; $9FC8 LD A,(HL) ; $9FC9 OR A ; $9FCA JP Z,$A09B ; $9FCD CP $29 ; $9FCF JP P,$A011 ; $9FD2 CP $26 ; $9FD4 JP P,$A0C6 ; $9FD7 CP $24 ; $9FD9 JP Z,$A0C6 ; $9FDC LD DE,$0141 ; $9FDF ADD HL,DE ; $9FE0 LD A,(HL) ; $9FE1 CP $04 ; $9FE3 JP Z,$A09B ; $9FE6 LD DE,$00A0 ; $9FE9 ADD HL,DE ; $9FEA LD A,(HL) ; $9FEB AND $07 ; $9FED LD HL,$AC0E ; $9FF0 CP (HL) ; $9FF1 JP Z,$A114 ; $9FF4 LD HL,($AC14) ; $9FF7 LD A,(HL) ; $9FF8 CP $16 ; $9FFA JP P,$A03D ; $9FFD CP $10 ; $9FFF JP M,$A03D ; $A002 CP $29 ; $A004 JP P,$A011 ; $A007 LD DE,$0281 ; $A00A ADD HL,DE ; $A00B LD A,(HL) ; $A00C CP $29 ; $A00E JP M,$A03D ; @label=SPREAD_BLOB_AND_FIRE_3 *$A011 LD HL,$AC0E ; $A014 SUB $29 ; $A016 CP (HL) ; $A017 JP Z,$A114 ; $A01A ADD A,$29 ; $A01C LD HL,($AC12) ; $A01F PUSH HL ; $A020 LD HL,($AC14) ; $A023 LD DE,$0281 ; $A026 ADD HL,DE ; $A027 LD (HL),$00 ; $A029 LD HL,($AC14) ; $A02C LD ($AC12),HL ; $A02F LD (HL),A ; $A030 CALL $C0DD ; $A033 CALL $B3C9 ; $A036 POP HL ; $A037 LD ($AC12),HL ; $A03A JP $A09B ; @label=SPREAD_BLOB_AND_FIRE_4 *$A03D LD HL,($AC12) ; $A040 LD A,(HL) ; $A041 CP $23 ; $A043 JR Z,$A075 ; $A045 LD HL,($AC14) ; $A048 LD A,(HL) ; $A049 CP $23 ; $A04B JP P,$A0C6 ; $A04E LD DE,$0141 ; $A051 ADD HL,DE ; $A052 LD A,(HL) ; $A053 CP $04 ; $A055 JR Z,$A09B ; $A057 LD HL,($AC14) ; $A05A LD A,(HL) ; $A05B LD DE,$0281 ; $A05E ADD HL,DE ; $A05F LD (HL),A ; $A060 LD DE,$00A0 ; $A063 SBC HL,DE ; $A065 LD A,(HL) ; $A066 AND $07 ; $A068 LD DE,$0140 ; $A06B ADD HL,DE ; $A06C LD (HL),A ; $A06D JR $A09B ; ; Data block at A06F b$A06F DEFB $21,$35,$91,$22,$F3,$C2 ; Routine at A075 ; ; Used by the routine at #R$9F50. @label=MAYBE_BLOB_AND_FIRE_ACTIONS c$A075 LD HL,($AC14) ; $A078 LD D,(HL) ; $A079 LD E,$10 ; {A = the creature's defence. $A07B CALL $BE0A ; } $A07E LD ($A172),A ; $A081 CALL $BE94 ; A = a random number from 0 to 9. $A084 LD HL,$A172 ; $A087 ADD A,(HL) ; $A088 LD (HL),A ; $A089 CALL $BE94 ; A = a random number from 0 to 9. $A08C ADD A,$05 ; $A08E LD HL,$A172 ; $A091 CP (HL) ; $A092 JP P,$A0C6 ; $A095 LD HL,$913F ; $A098 LD ($C2F3),HL ; ; This entry point is used by the routine at #R$9F50. *$A09B LD HL,($AC12) ; $A09E LD A,(HL) ; $A09F LD HL,($AC14) ; $A0A2 LD (HL),A ; $A0A3 LD DE,$0141 ; $A0A6 ADD HL,DE ; $A0A7 LD (HL),$00 ; $A0A9 LD DE,$00A0 ; $A0AC ADD HL,DE ; $A0AD LD A,($AC0E) ; $A0B0 ADD A,$80 ; $A0B2 LD (HL),A ; $A0B3 LD HL,($AC12) ; $A0B6 ADD HL,DE ; $A0B7 SET 7,(HL) ; $A0B9 LD HL,($AC12) ; $A0BC LD ($AC14),HL ; $A0BF CALL $C0DD ; $A0C2 CALL $C2F6 ; $A0C5 EI ; ; This entry point is used by the routine at #R$9F50. *$A0C6 CALL $BE94 ; A = a random number from 0 to 9. $A0C9 CP $02 ; {If A >= 2 jump to #R$A114. $A0CB JP P,$A114 ; } $A0CE LD HL,($AC14) ; {Get ID of object at the current location. $A0D1 LD A,(HL) ; } $A0D2 CP $23 ; {If it's a magic fire jump to #R$A0DE. $A0D4 JR Z,$A0DE ; } $A0D6 CALL $BE94 ; Going to check if a creature that is trapped in this ; blob can break free. A = a random number from 0 to 9. $A0D9 CP $03 ; {If A >= 3 jump to #R$A114. $A0DB JP P,$A114 ; } *$A0DE LD HL,($AC12) ; {HL = corresponding location in table 5. $A0E1 LD DE,$0281 ; $A0E4 ADD HL,DE ; } $A0E5 LD A,(HL) ; A = object at the location in table 5 $A0E6 OR A ; {If nothing's there jump to #R$A0FE. $A0E7 JR Z,$A0FE ; } $A0E9 LD (HL),$00 ; {There was something in table 5. It broke free! Delete $A0EB LD HL,($AC12) ; it from table 5 and move it to table 1. $A0EE LD (HL),A ; } $A0EF LD DE,$0321 ; {A = the item at the corresponding location in arena $A0F2 ADD HL,DE ; table 6. TODO What is it? $A0F3 LD A,(HL) ; } $A0F4 LD (HL),$00 ; Set the location in arena table 6 to 0. $A0F6 LD DE,$0140 ; {HL = the corresponding location in table 5. $A0F9 SBC HL,DE ; } $A0FB LD (HL),A ; Store A in table 5, moving the item from table 6 to 5. $A0FC JR $A109 ; *$A0FE LD HL,($AC12) ; TODO Fire/blob blinking out of existence? $A101 LD (HL),$01 ; $A103 LD DE,$0321 ; {Delete the entry at the corresponding location in arena $A106 ADD HL,DE ; table 6. $A107 LD (HL),$00 ; } *$A109 CALL $C0DD ; $A10C LD HL,$9149 ; $A10F CALL $C2F9 ; $A112 EI ; $A113 HALT ; ; This entry point is used by the routine at #R$9F50. *$A114 POP BC ; $A115 LD HL,($AC12) ; $A118 INC HL ; $A119 LD ($AC12),HL ; $A11C DEC B ; $A11D JP NZ,$9F5B ; $A120 LD HL,$E01F ; $A123 LD ($AC12),HL ; $A126 LD B,$9F ; *$A128 PUSH BC ; $A129 LD HL,($AC12) ; $A12C LD A,(HL) ; $A12D CP $26 ; $A12F JP M,$A158 ; $A132 CP $28 ; $A134 JP P,$A158 ; $A137 CALL $BE94 ; A = a random number from 0 to 9. $A13A CP $02 ; $A13C JP P,$A158 ; $A13F LD HL,($AC12) ; $A142 LD DE,$0281 ; $A145 ADD HL,DE ; $A146 LD A,(HL) ; $A147 LD (HL),$00 ; $A149 OR A ; $A14A JR NZ,$A14E ; $A14C LD A,$01 ; *$A14E LD HL,($AC12) ; $A151 LD (HL),A ; $A152 CALL $9A52 ; $A155 CALL $C0DD ; *$A158 POP BC ; $A159 LD HL,($AC12) ; $A15C INC HL ; $A15D LD ($AC12),HL ; $A160 DJNZ $A128 ; $A162 LD HL,$E076 ; $A165 LD ($AC12),HL ; $A168 LD ($AC14),HL ; $A16B CALL $C703 ; $A16E LD ($BC94),HL ; $A171 RET ; ; Data block at A172 @label=VAR_A172 b$A172 DEFB $0C ; Mark all creatures as not having moved yet. ; ; This involves resetting bit 7 across arena table 4. ; ; Used by the routines at #R$89F9 and #R$9F50. @label=SET_ALL_CREATURES_READY c$A173 LD HL,$E200 ; {Set bit 7 across every entry in arena table 4 (#R$E200) $A176 LD B,$9F ; *$A178 RES 7,(HL) ; $A17A INC HL ; $A17B DJNZ $A178 ; } $A17D RET ; ; Routine at A17E ; ; Used by the routines at #R$84F7, #R$85F6, #R$9A95, #R$9B76 and #R$9EF9. @label=ROUTINE_A17E c$A17E LD HL,($CD86) ; $A181 INC HL ; $A182 LD A,(HL) ; $A183 INC HL ; $A184 LD ($CD86),HL ; $A187 RET ; ; Data block at A188 @label=VAR_A188 b$A188 DEFB $00,$00 ; Display the cast animation (cyan line, twirl) ; ; Used by the routines at #R$8357, #R$859C, #R$86C3, #R$981A, #R$9975, #R$9A21, ; #R$9ADD and #R$9B76. @label=DISPLAY_CAST_ANIMATION c$A18A LD A,(IX+$02) ; $A18D OR A ; $A18E JR Z,$A1A5 ; $A190 LD HL,$912B ; $A193 LD ($C2F3),HL ; $A196 CALL $C2F6 ; $A199 LD A,$03 ; $A19B LD ($B60B),A ; $A19E CALL $B626 ; $A1A1 CALL $C0DD ; $A1A4 HALT ; *$A1A5 DI ; $A1A6 LD A,$45 ; {Set the colours to cyan on black ($45). $A1A8 LD ($5C8F),A ; } $A1AB LD HL,$910D ; $A1AE LD ($C2F3),HL ; $A1B1 CALL $C2F6 ; $A1B4 LD HL,$A1E8 ; $A1B7 LD ($A1E6),HL ; $A1BA LD HL,($AC12) ; $A1BD LD ($E005),HL ; $A1C0 CALL $E007 ; $A1C3 LD ($DF4C),HL ; $A1C6 LD B,$12 ; *$A1C8 PUSH BC ; $A1C9 LD HL,($A1E6) ; $A1CC LD E,(HL) ; $A1CD INC HL ; $A1CE LD D,(HL) ; $A1CF INC HL ; $A1D0 LD ($A1E6),HL ; $A1D3 EX DE,HL ; $A1D4 LD ($DF4A),HL ; $A1D7 CALL $DF4E ; $A1DA CALL $C301 ; $A1DD POP BC ; $A1DE DJNZ $A1C8 ; $A1E0 CALL $C0DD ; $A1E3 EI ; $A1E4 HALT ; $A1E5 RET ; ; Data block at A1E6 @label=VAR_A1E6_MAYBE_TABLE 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 ; Graphics - cast twirl ; ; #HTML(#FOR(0,4)//n/ ; #UDGARRAY2;($A20C+n*$20)-(($A20C+n*$20)+$18)-8(cursor_anim_castn*.png) //) @label=GRAPHICS_TWIRL b$A20C DEFB $01,$01,$01,$01,$01,$01,$00,$FC $A214 DEFB $80,$80,$80,$80,$80,$80,$00,$3F $A21C DEFB $FC,$00,$01,$01,$01,$01,$01,$01 $A224 DEFB $3F,$00,$80,$80,$80,$80,$80,$80 $A22C DEFB $00,$00,$00,$60,$F8,$3E,$0C,$00 $A234 DEFB $10,$18,$38,$30,$70,$60,$20,$00 $A23C DEFB $00,$04,$06,$0E,$0C,$1C,$18,$08 $A244 DEFB $00,$30,$7C,$1F,$06,$00,$00,$00 $A24C DEFB $00,$00,$30,$38,$1C,$0E,$06,$00 $A254 DEFB $00,$00,$0C,$1C,$38,$70,$60,$00 $A25C DEFB $00,$06,$0E,$1C,$38,$30,$00,$00 $A264 DEFB $00,$60,$70,$38,$1C,$0C,$00,$00 $A26C DEFB $08,$18,$1C,$0C,$0E,$06,$04,$00 $A274 DEFB $00,$00,$00,$06,$1F,$7C,$30,$00 $A27C DEFB $00,$0C,$3E,$F8,$60,$00,$00,$00 $A284 DEFB $00,$20,$60,$70,$30,$38,$18,$10 $A28C DEFB $01,$01,$01,$01,$01,$00,$00,$F8 $A294 DEFB $80,$80,$80,$80,$80,$00,$00,$1F $A29C DEFB $F8,$00,$00,$01,$01,$01,$01,$01 $A2A4 DEFB $1F,$00,$00,$80,$80,$80,$80,$80 $A2AC DEFB $00,$00,$00,$60,$F8,$38,$00,$00 $A2B4 DEFB $10,$18,$38,$30,$30,$00,$00,$00 $A2BC DEFB $00,$00,$00,$0C,$0C,$1C,$18,$18 $A2C4 DEFB $08,$00,$00,$1C,$1F,$06,$00,$00 $A2CC DEFB $00,$00,$60,$70,$30,$00,$00,$00 $A2D4 DEFB $00,$00,$06,$0E,$0C,$00,$00,$00 $A2DC DEFB $00,$00,$00,$00,$00,$0C,$0E,$06 $A2E4 DEFB $00,$08,$18,$18,$00,$00,$00,$00 $A2EC DEFB $00,$00,$00,$00,$06,$07,$00,$00 $A2F4 DEFB $00,$00,$00,$00,$E0,$60,$00,$00 $A2FC DEFB $00,$00,$00,$00,$00,$00,$18,$18 $A304 DEFB $10,$01,$00,$00,$00,$00,$00,$00 $A30C DEFB $80,$80,$00,$00,$00,$00,$00,$00 $A314 DEFB $01,$80,$00,$00,$00,$00,$00,$00 $A31C DEFB $01,$01,$00,$00,$00,$00,$00,$00 $A324 DEFB $80,$00,$00,$00,$00,$00,$00,$00 $A32C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A334 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A33C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $A344 DEFB $00 ; Graphics - explosion ; ; #HTML(#FOR(0,6)//n/ ; #UDGARRAY2;($A345+n*$20)-(($A345+n*$20)+$18)-8(explosionn*.png) //) @label=GRAPHICS_EXPLOSION b$A345 DEFB $00,$00,$00,$00,$02,$0A,$07,$0F $A34D DEFB $00,$00,$00,$00,$A0,$C0,$E0,$C0 $A355 DEFB $07,$0A,$05,$00,$00,$00,$00,$00 $A35D DEFB $E0,$C0,$40,$00,$00,$00,$00,$00 $A365 DEFB $00,$00,$00,$02,$12,$0A,$07,$3D $A36D DEFB $00,$00,$00,$90,$A0,$C0,$F0,$40 $A375 DEFB $07,$1A,$05,$09,$00,$00,$00,$00 $A37D DEFB $E0,$D0,$40,$40,$00,$00,$00,$00 $A385 DEFB $00,$02,$02,$22,$12,$0B,$06,$7D $A38D DEFB $00,$00,$48,$90,$A0,$C0,$B8,$40 $A395 DEFB $06,$1B,$25,$09,$11,$01,$00,$00 $A39D DEFB $E0,$D0,$48,$40,$20,$00,$00,$00 $A3A5 DEFB $02,$02,$42,$22,$10,$0B,$06,$F8 $A3AD DEFB $00,$44,$48,$90,$A0,$40,$AC,$40 $A3B5 DEFB $06,$19,$64,$09,$11,$21,$01,$00 $A3BD DEFB $A0,$50,$48,$44,$20,$20,$00,$00 $A3C5 DEFB $02,$82,$42,$22,$00,$0A,$04,$D0 $A3CD DEFB $22,$44,$48,$80,$A0,$00,$AB,$00 $A3D5 DEFB $04,$11,$60,$81,$11,$21,$41,$81 $A3DD DEFB $80,$50,$00,$44,$22,$21,$10,$00 $A3E5 DEFB $02,$82,$00,$20,$12,$00,$00,$A0 $A3ED DEFB $22,$44,$00,$90,$00,$00,$12,$00 $A3F5 DEFB $00,$08,$41,$80,$01,$00,$41,$81 $A3FD DEFB $00,$40,$28,$00,$22,$01,$10,$10 $A405 DEFB $02,$80,$00,$22,$00,$00,$00,$80 $A40D DEFB $22,$00,$48,$00,$00,$00,$09,$00 $A415 DEFB $00,$00,$10,$80,$00,$01,$00,$81 $A41D DEFB $00,$00,$00,$24,$00,$11,$00,$10 ; Data block at A425 b$A425 DEFB $B0,$01,$53,$55,$42,$5F,$44,$CF $A42D DEFB $9C,$85,$46,$AC,$4D,$A4,$01,$44 $A435 DEFB $5F,$41,$44,$C4,$14,$AC,$1F,$AC $A43D DEFB $CB,$A4,$01,$54,$45,$4D,$41,$44 $A445 DEFB $C4,$8B,$C7,$80,$A5,$54,$AE,$01 $A44D DEFB $45,$4E,$5F,$41,$CE,$BC,$C7,$DB $A455 DEFB $A5,$30,$A8,$01,$49,$4E,$42,$55 $A45D DEFB $C6,$F2,$D3,$98,$B5,$00,$00,$01 $A465 DEFB $42,$55,$46,$50,$4E,$D4,$86,$CD $A46D DEFB $00,$00,$23,$A8,$01,$53,$52,$54 $A475 DEFB $43,$4E,$D4,$BB,$C7,$00,$00,$56 $A47D DEFB $A8,$01,$53,$4F,$52,$D4,$4C,$C6 $A485 DEFB $BE,$A4,$00,$00,$01,$42,$41,$52 $A48D DEFB $54,$5F,$CC,$57,$85,$D8,$A4,$5E $A495 DEFB $AC,$01,$47,$45,$54,$50,$4C,$C1 $A49D DEFB $7E,$A1,$73,$A5,$B1,$A4,$01,$4F $A4A5 DEFB $4B,$5F,$53,$55,$C2,$67,$85,$79 $A4AD DEFB $A9,$F8,$A9,$01,$50,$41,$55,$53 $A4B5 DEFB $45,$D2,$E6,$96,$B7,$A7,$00,$00 $A4BD DEFB $01,$42,$41,$4C,$53,$55,$D0,$A5 $A4C5 DEFB $85,$59,$A5,$8D,$A5,$01,$54,$4F $A4CD DEFB $46,$41,$49,$CC,$CA,$85,$D5,$AE $A4D5 DEFB $21,$A9,$01,$47,$45,$54,$43,$48 $A4DD DEFB $D2,$0A,$BE,$00,$00,$00,$00,$01 $A4E5 DEFB $53,$54,$52,$45,$4E,$C7,$72,$A1 $A4ED DEFB $25,$A5,$0B,$A5,$01,$52,$41,$4E $A4F5 DEFB $44,$D9,$4B,$90,$1E,$AB,$FC,$A7 $A4FD DEFB $01,$59,$45,$53,$53,$55,$C2,$D3 $A505 DEFB $85,$36,$A6,$3F,$A5,$01,$52,$41 $A50D DEFB $53,$41,$52,$D4,$39,$86,$96,$A8 $A515 DEFB $32,$A5,$01,$52,$41,$49,$4C,$4F $A51D DEFB $CF,$04,$86,$00,$00,$EE,$AA,$01 $A525 DEFB $52,$41,$49,$5F,$43,$C8,$1A,$86 $A52D DEFB $00,$00,$00,$00,$01,$52,$41,$49 $A535 DEFB $53,$44,$CF,$C3,$86,$4C,$A5,$16 $A53D DEFB $A8,$01,$52,$41,$53,$4C,$4F,$CF $A545 DEFB $47,$86,$00,$00,$00,$00,$01,$52 $A54D DEFB $41,$53,$42,$41,$CB,$76,$86,$A5 $A555 DEFB $AB,$00,$00,$01,$54,$48,$52,$54 $A55D DEFB $41,$C2,$D4,$C6,$49,$A7,$A7,$A5 $A565 DEFB $01,$4C,$4F,$4F,$52,$41,$D3,$8D $A56D DEFB $86,$4F,$A6,$00,$00,$01,$4F,$4B $A575 DEFB $5F,$52,$41,$D3,$9A,$86,$05,$AA $A57D DEFB $3D,$A8,$01,$45,$4E,$44,$52,$41 $A585 DEFB $D3,$EB,$86,$EB,$A9,$B7,$A9,$01 $A58D DEFB $54,$55,$52,$41,$52,$D4,$F9,$86 $A595 DEFB $00,$00,$00,$00,$01,$54,$55,$52 $A59D DEFB $5F,$44,$CF,$41,$87,$00,$00,$5C $A5A5 DEFB $A6,$01,$4C,$4F,$4F,$54,$55,$D2 $A5AD DEFB $1A,$87,$00,$00,$8F,$AB,$01,$41 $A5B5 DEFB $44,$44,$5F,$4F,$CE,$2B,$87,$79 $A5BD DEFB $A7,$EC,$AC,$01,$43,$52,$45,$30 $A5C5 DEFB $30,$B0,$3C,$87,$5E,$AB,$F5,$A5 $A5CD DEFB $01,$46,$4C,$41,$34,$38,$B1,$3D $A5D5 DEFB $87,$D1,$A9,$2E,$A9,$01,$48,$49 $A5DD DEFB $44,$36,$34,$B1,$3E,$87,$00,$00 $A5E5 DEFB $4F,$B4,$01,$42,$4F,$44,$38,$30 $A5ED DEFB $B1,$3F,$87,$68,$AA,$68,$B2,$01 $A5F5 DEFB $46,$52,$41,$33,$32,$B1,$40,$87 $A5FD DEFB $00,$00,$00,$00,$01,$46,$55,$43 $A605 DEFB $4B,$49,$D4,$EB,$87,$12,$AB,$00 $A60D DEFB $00,$01,$57,$41,$4C,$4B,$59,$D3 $A615 DEFB $73,$A1,$29,$A6,$76,$A6,$01,$4D $A61D DEFB $4F,$4C,$4C,$4F,$CF,$56,$87,$C0 $A625 DEFB $B2,$00,$00,$01,$4D,$4F,$4C,$45 $A62D DEFB $4E,$C4,$DF,$87,$78,$AC,$43,$A6 $A635 DEFB $01,$52,$41,$4E,$4D,$4F,$CC,$84 $A63D DEFB $87,$00,$00,$00,$00,$01,$52,$41 $A645 DEFB $4E,$55,$CD,$7A,$90,$55,$A7,$05 $A64D DEFB $B2,$01,$4F,$46,$42,$4F,$52,$C4 $A655 DEFB $0E,$98,$69,$A6,$0E,$B5,$01,$4D $A65D DEFB $32,$50,$52,$49,$CE,$EF,$87,$50 $A665 DEFB $AA,$00,$00,$01,$4D,$32,$45,$53 $A66D DEFB $41,$C7,$09,$88,$43,$AA,$80,$A6 $A675 DEFB $01,$4D,$5F,$B1,$59,$88,$D0,$A6 $A67D DEFB $8A,$A6,$01,$4D,$5F,$B2,$75,$88 $A685 DEFB $3E,$A7,$94,$A6,$01,$4D,$5F,$B3 $A68D DEFB $85,$88,$00,$00,$9E,$A6,$01,$4D $A695 DEFB $5F,$B4,$97,$88,$00,$00,$A8,$A6 $A69D DEFB $01,$4D,$5F,$B5,$A6,$88,$00,$00 $A6A5 DEFB $B2,$A6,$01,$4D,$5F,$B6,$AD,$88 $A6AD DEFB $00,$00,$BC,$A6,$01,$4D,$5F,$B7 $A6B5 DEFB $C2,$88,$00,$00,$C6,$A6,$01,$4D $A6BD DEFB $5F,$B8,$C5,$88,$00,$00,$AB,$A7 $A6C5 DEFB $01,$4D,$5F,$B9,$C7,$88,$00,$00 $A6CD DEFB $DB,$A6,$01,$4D,$5F,$31,$B0,$E2 $A6D5 DEFB $88,$00,$00,$E6,$A6,$01,$4D,$5F $A6DD DEFB $31,$B1,$FE,$88,$00,$00,$F1,$A6 $A6E5 DEFB $01,$4D,$5F,$31,$B2,$0C,$89,$00 $A6ED DEFB $00,$FC,$A6,$01,$4D,$5F,$31,$B3 $A6F5 DEFB $1A,$89,$00,$00,$07,$A7,$01,$4D $A6FD DEFB $5F,$31,$B4,$2B,$89,$00,$00,$12 $A705 DEFB $A7,$01,$4D,$5F,$31,$B5,$41,$89 $A70D DEFB $00,$00,$1D,$A7,$01,$4D,$5F,$31 $A715 DEFB $B6,$4F,$89,$00,$00,$28,$A7,$01 $A71D DEFB $4D,$5F,$31,$B7,$5D,$89,$00,$00 $A725 DEFB $33,$A7,$01,$4D,$5F,$31,$B8,$79 $A72D DEFB $89,$00,$00,$00,$00,$01,$4D,$5F $A735 DEFB $31,$B9,$87,$89,$00,$00,$00,$00 $A73D DEFB $01,$4D,$5F,$32,$B0,$97,$89,$37 $A745 DEFB $AB,$12,$AA,$01,$4C,$45,$56,$45 $A74D DEFB $CC,$A7,$89,$09,$A8,$82,$AA,$01 $A755 DEFB $4E,$55,$CD,$A8,$89,$00,$00,$00 $A75D DEFB $00,$01,$47,$41,$4D,$54,$55,$CE $A765 DEFB $A9,$89,$51,$AC,$2C,$AC,$01,$50 $A76D DEFB $4F,$53,$50,$52,$C9,$AC,$89,$E0 $A775 DEFB $A8,$00,$00,$01,$43,$4F,$55,$4E $A77D DEFB $54,$CC,$AE,$89,$9F,$A7,$00,$00 $A785 DEFB $01,$4B,$45,$59,$5F,$D0,$AF,$89 $A78D DEFB $5F,$A9,$20,$AE,$01,$43,$48,$4F $A795 DEFB $4E,$55,$CD,$B0,$89,$3B,$A9,$CB $A79D DEFB $AF,$01,$4B,$45,$59,$49,$D4,$B1 $A7A5 DEFB $89,$D9,$A7,$FA,$A8,$01,$4E,$4F $A7AD DEFB $41,$44,$C4,$CF,$89,$BB,$A8,$E2 $A7B5 DEFB $AE,$01,$41,$54,$54,$52,$5F,$D4 $A7BD DEFB $8F,$5C,$00,$00,$CD,$B2,$01,$44 $A7C5 DEFB $48,$5F,$D0,$D6,$BA,$16,$AC,$8F $A7CD DEFB $AA,$01,$53,$36,$B0,$EF,$89,$04 $A7D5 DEFB $B4,$14,$A9,$01,$4E,$4B,$45,$59 $A7DD DEFB $B2,$7B,$90,$EF,$A7,$C7,$A8,$01 $A7E5 DEFB $43,$4C,$D3,$EE,$C5,$00,$00,$00 $A7ED DEFB $00,$01,$43,$48,$5F,$4C,$41,$D7 $A7F5 DEFB $A4,$C3,$62,$A8,$00,$00,$01,$5A $A7FD DEFB $52,$44,$52,$5F,$D0,$57,$BB,$49 $A805 DEFB $A8,$20,$B6,$01,$4E,$4F,$5F,$50 $A80D DEFB $4C,$C1,$0F,$AC,$00,$00,$00,$00 $A815 DEFB $01,$52,$45,$50,$57,$41,$D4,$C2 $A81D DEFB $8A,$18,$B3,$00,$00,$01,$53,$54 $A825 DEFB $41,$4C,$4F,$CF,$D8,$8A,$85,$A9 $A82D DEFB $00,$00,$01,$49,$4E,$50,$4C,$4F $A835 DEFB $CF,$19,$8B,$00,$00,$00,$00,$01 $A83D DEFB $45,$4E,$54,$45,$D2,$95,$8B,$7C $A845 DEFB $A8,$46,$B3,$01,$4E,$4F,$5F,$44 $A84D DEFB $45,$CC,$56,$8B,$00,$00,$B2,$AB $A855 DEFB $01,$53,$50,$41,$43,$C5,$6F,$8B $A85D DEFB $6F,$A8,$2B,$AA,$01,$59,$5F,$4F $A865 DEFB $52,$5F,$CE,$CA,$8B,$00,$00,$7F $A86D DEFB $B5,$01,$59,$45,$53,$5F,$43,$C3 $A875 DEFB $DF,$8B,$BE,$B5,$B7,$B4,$01,$4E $A87D DEFB $4F,$54,$5F,$43,$C3,$F8,$8B,$00 $A885 DEFB $00,$82,$AB,$01,$57,$49,$5A,$43 $A88D DEFB $4F,$CE,$26,$AC,$44,$AB,$00,$00 $A895 DEFB $01,$50,$5F,$57,$49,$5A,$CC,$29 $A89D DEFB $8C,$48,$A9,$A6,$AA,$01,$52,$4F $A8A5 DEFB $4D,$D0,$DF,$90,$42,$AF,$92,$B6 $A8AD DEFB $01,$50,$52,$5F,$43,$48,$D2,$F0 $A8B5 DEFB $90,$43,$B0,$1E,$AA,$01,$41,$54 $A8BD DEFB $54,$41,$C2,$D7,$90,$00,$00,$10 $A8C5 DEFB $AF,$01,$43,$4F,$4C,$4F,$CF,$97 $A8CD DEFB $8C,$00,$00,$00,$00,$01,$50,$55 $A8D5 DEFB $54,$41,$54,$CC,$DD,$8C,$00,$00 $A8DD DEFB $C6,$AD,$01,$43,$4F,$4D,$50,$41 $A8E5 DEFB $D2,$49,$90,$6B,$AC,$00,$00,$01 $A8ED DEFB $4D,$41,$4B,$43,$48,$D2,$F2,$8C $A8F5 DEFB $90,$A9,$D1,$B1,$01,$4E,$4F,$54 $A8FD DEFB $4D,$4F,$D2,$53,$8D,$00,$00,$85 $A905 DEFB $AD,$01,$53,$50,$45,$4C,$4E,$CF $A90D DEFB $4A,$90,$00,$00,$00,$00,$01,$4E $A915 DEFB $4F,$41,$42,$49,$CC,$7A,$8D,$00 $A91D DEFB $00,$84,$AC,$01,$47,$45,$54,$48 $A925 DEFB $49,$D3,$AA,$92,$D6,$AA,$92,$AD $A92D DEFB $01,$48,$49,$53,$50,$45,$CC,$54 $A935 DEFB $91,$F8,$AE,$DE,$A9,$01,$49,$4E $A93D DEFB $53,$50,$4C,$CF,$9E,$8D,$00,$00 $A945 DEFB $CC,$AC,$01,$52,$49,$4E,$C4,$9F $A94D DEFB $8D,$00,$00,$2A,$AB,$01,$43,$55 $A955 DEFB $52,$53,$D0,$7B,$93,$C4,$A9,$ED $A95D DEFB $AD,$01,$43,$48,$41,$4E,$5F,$C3 $A965 DEFB $F9,$92,$6D,$B3,$A5,$B5,$01,$44 $A96D DEFB $4F,$4E,$53,$4F,$D2,$08,$8E,$00 $A975 DEFB $00,$C1,$B0,$01,$4F,$55,$54,$4C $A97D DEFB $DF,$E4,$8D,$BF,$AA,$00,$00,$01 $A985 DEFB $49,$4E,$4C,$DF,$E8,$8D,$8E,$B2 $A98D DEFB $11,$AD,$01,$4E,$4F,$42,$49,$47 $A995 DEFB $C1,$01,$8E,$00,$00,$00,$00,$01 $A99D DEFB $53,$54,$41,$50,$4F,$D3,$9F,$90 $A9A5 DEFB $00,$00,$00,$00,$01,$50,$55,$54 $A9AD DEFB $49,$42,$CF,$32,$8E,$00,$00,$00 $A9B5 DEFB $00,$01,$54,$55,$52,$4C,$4F,$CF $A9BD DEFB $62,$8E,$78,$AD,$00,$00,$01,$43 $A9C5 DEFB $41,$53,$54,$5F,$D3,$68,$91,$00 $A9CD DEFB $00,$5C,$AA,$01,$47,$4F,$5F,$45 $A9D5 DEFB $4E,$C4,$93,$8E,$00,$00,$9C,$B0 $A9DD DEFB $01,$49,$4E,$54,$45,$52,$CF,$50 $A9E5 DEFB $9F,$E1,$AA,$75,$AA,$01,$54,$52 $A9ED DEFB $45,$50,$55,$D4,$9A,$8F,$00,$00 $A9F5 DEFB $FA,$AA,$01,$50,$41,$55,$53,$5F $A9FD DEFB $CC,$81,$8E,$5D,$B0,$82,$B0,$01 $AA05 DEFB $45,$4E,$44,$47,$41,$CD,$04,$8F $AA0D DEFB $99,$AB,$00,$00,$01,$4C,$4F,$4F $AA15 DEFB $50,$D9,$A4,$8E,$00,$00,$00,$00 $AA1D DEFB $01,$41,$54,$54,$52,$44,$CF,$8B $AA25 DEFB $8F,$00,$00,$00,$00,$01,$5A,$41 $AA2D DEFB $50,$45,$CD,$C8,$8E,$00,$00,$00 $AA35 DEFB $00,$01,$44,$45,$44,$45,$C4,$E2 $AA3D DEFB $8E,$00,$00,$00,$00,$01,$4D,$50 $AA45 DEFB $52,$49,$4E,$D4,$FB,$BA,$00,$00 $AA4D DEFB $CC,$AA,$01,$4C,$4F,$50,$59,$B2 $AA55 DEFB $0C,$8F,$00,$00,$00,$00,$01,$47 $AA5D DEFB $52,$4F,$4E,$CB,$50,$8F,$F0,$AB $AA65 DEFB $69,$B4,$01,$46,$4F,$55,$44,$49 $AA6D DEFB $CD,$57,$8F,$DE,$B1,$51,$B2,$01 $AA75 DEFB $54,$52,$46,$49,$4C,$CF,$A2,$8F $AA7D DEFB $5D,$B1,$68,$AF,$01,$4E,$5F,$48 $AA85 DEFB $45,$52,$C5,$31,$90,$00,$00,$00 $AA8D DEFB $00,$01,$53,$36,$B1,$3E,$90,$EB $AA95 DEFB $B1,$D1,$B4,$01,$57,$41,$59,$4C $AA9D DEFB $4F,$CF,$E2,$8F,$00,$00,$00,$00 $AAA5 DEFB $01,$52,$55,$4E,$44,$D9,$EA,$8F $AAAD DEFB $00,$00,$00,$00,$01,$50,$52,$49 $AAB5 DEFB $4C,$4F,$CF,$07,$90,$F7,$AC,$8F $AABD DEFB $AF,$01,$49,$4E,$49,$54,$47,$CF $AAC5 DEFB $0F,$90,$00,$00,$CE,$B0,$01,$4C $AACD DEFB $4F,$D7,$46,$90,$00,$00,$00,$00 $AAD5 DEFB $01,$48,$49,$47,$C8,$47,$90,$53 $AADD DEFB $B6,$00,$00,$01,$54,$4F,$5F,$56 $AAE5 DEFB $41,$CC,$48,$90,$00,$00,$00,$00 $AAED DEFB $01,$52,$41,$4E,$44,$CF,$4C,$90 $AAF5 DEFB $06,$AB,$24,$B3,$01,$50,$4F,$44 $AAFD DEFB $45,$D2,$55,$90,$AC,$AD,$00,$00 $AB05 DEFB $01,$50,$4F,$44,$45,$C9,$58,$90 $AB0D DEFB $20,$B0,$04,$AD,$01,$57,$41,$49 $AB15 DEFB $54,$B1,$7E,$90,$75,$AB,$D8,$AB $AB1D DEFB $01,$57,$5F,$54,$41,$C2,$E0,$90 $AB25 DEFB $00,$00,$C8,$AE,$01,$43,$5F,$44 $AB2D DEFB $41,$54,$C1,$4A,$DF,$07,$AE,$FA $AB35 DEFB $AF,$01,$4C,$43,$5F,$50,$4F,$D3 $AB3D DEFB $4C,$DF,$07,$B0,$00,$00,$01,$50 $AB45 DEFB $5F,$43,$48,$41,$D2,$4E,$DF,$77 $AB4D DEFB $B1,$00,$00,$01,$47,$45,$54,$5F $AB55 DEFB $4C,$C3,$8D,$BC,$E0,$AD,$00,$00 $AB5D DEFB $01,$46,$49,$52,$45,$4F,$CE,$56 $AB65 DEFB $CC,$00,$00,$00,$00,$01,$53,$31 $AB6D DEFB $B0,$9D,$C2,$00,$00,$0C,$B3,$01 $AB75 DEFB $57,$4F,$4F,$50,$5F,$C4,$B7,$BF $AB7D DEFB $00,$00,$00,$00,$01,$57,$49,$5A $AB85 DEFB $4B,$49,$CC,$C9,$B3,$CC,$AB,$37 $AB8D DEFB $B2,$01,$41,$49,$CD,$B7,$C8,$1D $AB95 DEFB $AF,$2B,$B0,$01,$4C,$4F,$46,$5F $AB9D DEFB $C4,$54,$B7,$00,$00,$35,$AF,$01 $ABA5 DEFB $54,$45,$4D,$50,$5F,$C3,$77,$BA $ABAD DEFB $BF,$AB,$00,$00,$01,$53,$50,$41 $ABB5 DEFB $54,$41,$C2,$2A,$CD,$00,$00,$00 $ABBD DEFB $00,$01,$53,$50,$41,$44,$41,$D4 $ABC5 DEFB $3A,$CD,$00,$00,$00,$00,$01,$41 $ABCD DEFB $44,$53,$50,$C1,$3C,$CD,$00,$00 $ABD5 DEFB $00,$00,$01,$58,$5F,$41,$44,$C4 $ABDD DEFB $49,$C6,$00,$3E,$41,$32,$8F,$5C $ABE5 DEFB $3A,$FF,$FF,$32,$0F,$AC,$21,$F7 $ABED DEFB $FF,$11,$26,$AC,$01,$08,$00,$ED $ABF5 DEFB $B0,$CD,$57,$BB,$C3,$36,$AC ; Variable - combat range of the current creature ; ; If 0 we know the combat isn't a ranged combat, otherwise holds the creature's ; range. @label=COMBAT_RANGE b$ABFC DEFB $00 ; Data block at ABFD @label=VAR_ABFD b$ABFD DEFB $BE,$E0 ; Data block at ABFF @label=VAR_ABFF b$ABFF DEFB $01 ; Data block at AC00 @label=VAR_AC00 b$AC00 DEFB $00 ; Variable - a creature's movement points @label=MOVEMENT_POINTS b$AC01 DEFB $3E ; Variable - something to do with movement points @label=MAYBE_TEMP_MOVE_POINTS b$AC02 DEFB $02 ; Variable - select square range @label=SELECT_SQUARE_RANGE b$AC03 DEFB $00 ; Data block at AC04 @label=VAR_AC04 b$AC04 DEFB $07 ; Data block at AC05 @label=VAR_AC05 b$AC05 DEFB $06 ; Variable - ID of an enemy adjacent to the selected creature @label=ADJACENT_ENEMY_ID b$AC06 DEFB $01 ; Variable - indicates whether the currently selected creature is engaged in ; combat with an enemy @label=CREATURE_IS_ENGAGED b$AC07 DEFB $00 ; A byte of data about an object, taken from arena table 6 (#R$E340) @label=CREATURE_STATUS_FROM_TABLE_6 b$AC08 DEFB $00 ; A byte of data about an object, taken from arena table 5 (#R$E2A0) @label=CREATURE_STATUS_FROM_TABLE_5 b$AC09 DEFB $00 ; Variable - the wizard's XY coords are stored in here during #R$CA92. Also ; used as the destination for creature movement on a computer player's turn. @label=MAYBE_WIZ_XY_COORDS b$AC0A DEFB $0F,$0A ; Variable - selected creature ID (attacking creature during an attack) @label=SELECTED_CREATURE_ID b$AC0C DEFB $00 ; Variable - the code of the selected wizard object. Often used if he's hidden ; or on a mount. ; ; Value from $29 to $30 representing the object ID of the a wizard. @label=WIZARD_OBJECT_ID b$AC0D DEFB $00 ; Variable - ID of active wizard ; ; Value of 0-7 representing the wizard whose turn it currently is. @label=CURRENT_WIZARD_ID b$AC0E DEFB $01 ; Variable - number of wizards competing in the current game. ; ; Starts counting from 1, unlike the wizard IDs. @label=NUM_OF_WIZARDS b$AC0F DEFB $02 ; A byte of data flags about an object, taken from arena table 4 (#R$E200): ; controlling wizard, whether it has been disbelieved, undead because of raise ; dead, etc. @label=CREATURE_STATUS_FLAGS b$AC10 DEFB $01 ; Data block at AC11 @label=VAR_AC11 b$AC11 DEFB $00 ; Pointer to a memory address corresponding to a location in the game state ; info table (#R$E01F) ; ; When casting a spell or in ranged combat this is the location of the target. @label=LOCATION_TARGET b$AC12 DEFB $BE,$E0 ; Pointer to a memory address corresponding to a location in the game state ; info table (#R$E01F) ; ; When casting a spell or in ranged combat this is the location of the caster ; or creature firing. @label=LOCATION_SOURCE b$AC14 DEFB $BD,$E0 ; Variables - wizard status values ; ; 8 bytes, one for each wizard, representing the wizard's current state. Each ; bit in the byte has a meaning, as shown in the table. ; . ; #TABLE(default,centre) ; { =h Bit | =h Bit value | =h Upgrade } ; { 7 | 128 | Magic Armour (also sets bit 6) } ; { 6 | 64 | Magic Shield } ; { 5 | 32 | Magic Wings } ; { 4 | 16 | Dead } ; { 3 | 8 | Shadow Form } ; { 2 | 4 | Magic Sword } ; { 1 | 2 | Magic Knife } ; { 0 | 1 | Magic Knife } ; TABLE# @label=WIZARD_STATUS_VALUES b$AC16 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; TODO - Unknown wizard status values. ; ; Don't know what this is recording. Set during the routine at #R$7D04. @label=UNKNOWN_WIZARD_STATUS_VALUES b$AC1E DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Flags - computer controlled wizards ; ; One for each wizard. 0 if the wizard is player controlled, 1 if they are ; computer controlled. @label=COMP_CONTROLLED_WIZARDS b$AC26 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Flag - is current wizard computer controlled ; ; 1 if the wizard whose turn it is is computer controlled - 0 otherwise. @label=WIZ_IS_COMP_CONTROLLED b$AC2E DEFB $00 ; Data block at AC2F @label=VAR_AC2F b$AC2F DEFB $00 ; Data block at AC30 @label=VAR_AC30 b$AC30 DEFB $00 ; Variable - maybe whether creature can fly. False if set to 0, otherwise true @label=MAYBE_CREATURE_CAN_FLY b$AC31 DEFB $00 ; Stores the last keypress (e.g. X for down = $58) @label=LAST_KEYPRESS b$AC32 DEFB $00 ; Data block at AC33 @label=VAR_AC33 b$AC33 DEFB $00 ; Variable - holds count of dead wizards in this game @label=DEAD_WIZARD_COUNT b$AC34 DEFB $00 ; Data block at AC35 @label=VAR_AC35 b$AC35 DEFB $00 ; Wizard turns. ; ; Used by the routine at #R$89F9. @label=WIZARD_TURN c$AC36 LD A,($AC0F) ; $AC39 LD B,A ; @label=WIZARD_TURN_1 *$AC3A PUSH BC ; $AC3B LD A,($AC0F) ; $AC3E SUB B ; $AC3F LD ($AC0E),A ; $AC42 LD ($D391),A ; $AC45 LD HL,$AC16 ; #R$AC16 is the address that stores the wizard status ; flags. Load that address into HL. $AC48 LD D,$00 ; {DE = current wizard ID. $AC4A LD E,A ; } $AC4B ADD HL,DE ; {Add DE to HL to get the memory address of the current $AC4C LD A,(HL) ; wizard's status, then load it into A.} $AC4D BIT 4,A ; {If bit 4 is set (i.e. the wizard is dead) jump to $AC4F JR NZ,$ACB9 ; #R$ACB9 (skipping his turn).} $AC51 LD HL,$AC2E ; {Set #R$AC2E to 0 (it stores whether the current wizard $AC54 LD (HL),$00 ; is computer controlled).} $AC56 LD A,($AC0E) ; A = current wizard ID $AC59 LD HL,$AC26 ; The 8 addresses starting at #R$AC26 store which wizards ; are computer controlled. $AC5C LD D,$00 ; {DE = current wizard ID. $AC5E LD E,A ; } $AC5F ADD HL,DE ; {Add DE to HL to get the memory address indicating $AC60 LD A,(HL) ; whether the current wizard is computer controlled, and ; load its value into A.} $AC61 OR A ; {If A is 0 (wizard is player controlled), jump to $AC62 JR Z,$AC69 ; #R$AC69.} $AC64 LD A,$01 ; {Wizard is computer controlled. Set #R$AC2E to 1. $AC66 LD ($AC2E),A ; } @label=WIZARD_TURN_2 *$AC69 LD A,$46 ; {Set the colours to yellow on black ($46). $AC6B LD ($5C8F),A ; } $AC6E CALL $BED7 ; Clear the message bar. $AC71 LD A,($AC0E) ; {Add $29 to the ID of the active wizard (#R$AC0E) to get $AC74 ADD A,$29 ; the ID of current wizard's name in the string table at ; #R$CDD3.} $AC76 LD BC,$1600 ; {Print the current wizard's name at screen location $AC79 CALL $BAFB ; $1600.} $AC7C LD A,$37 ; {Print the message with ID $37 ('S TURN). $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 ; @label=WIZARD_TURN_3 *$AC91 PUSH BC ; $AC92 LD B,$FF ; @label=WIZARD_TURN_4 *$AC94 DJNZ $AC94 ; $AC96 POP BC ; $AC97 DJNZ $AC91 ; $AC99 CALL $C0DD ; $AC9C CALL $BBB0 ; Wait for keypress $AC9F LD A,($AC2E) ; {If the current wizard is player controlled jump to $ACA2 OR A ; #R$ACB0. $ACA3 JR Z,$ACB0 ; } $ACA5 LD B,$3C ; @label=WIZARD_TURN_5 *$ACA7 HALT ; {Pause for a short moment. $ACA8 DJNZ $ACA7 ; } $ACAA CALL $BED7 ; Clear the message bar. $ACAD JP $C710 ; Computer controlled wizard takes a turn. @label=WIZARD_TURN_6 *$ACB0 CALL $BED7 ; Clear the message bar. $ACB3 CALL $ACC6 ; $ACB6 CALL $BBCC ; ; This entry point is used by the routine at #R$C710. @label=WIZARD_TURN_7 *$ACB9 POP BC ; $ACBA DEC B ; {If there are more wizards to take a turn, jump back to $ACBB JP NZ,$AC3A ; #R$AC3A.} $ACBE LD HL,$AC33 ; $ACC1 LD (HL),$00 ; $ACC3 IM 1 ; $ACC5 RET ; ; Wait for the user to select a creature. ; ; Used by the routine at #R$AC36. @label=SELECT_CREATURE_CHECK c$ACC6 LD HL,$C33D ; $ACC9 LD ($5C7B),HL ; $ACCC CALL $BC96 ; User key input. $ACCF PUSH BC ; $ACD0 CALL $02BF ; Keyboard ROM subroutine. $ACD3 CP $53 ; S Key $ACD5 POP BC ; $ACD6 CALL Z,$ACED ; Creature selected. Call #R$ACED. $ACD9 CP $30 ; 0 key $ACDB JR NZ,$ACC6 ; $ACDD CALL $C0DD ; $ACE0 HALT ; $ACE1 HALT ; $ACE2 CALL $BED7 ; Clear the message bar. $ACE5 LD HL,$C27F ; $ACE8 CALL $C2F9 ; $ACEB EI ; $ACEC RET ; ; Creature selected. ; ; Used by the routines at #R$ACC6 and #R$C710. @label=CREATURE_SELECTED c$ACED CALL $BDE7 ; $ACF0 XOR A ; $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) ; A = selected creature ID $AD06 LD D,A ; $AD07 LD E,$11 ; {A = the creature's movement allowance. $AD09 CALL $BE0A ; } $AD0C SLA A ; $AD0E LD ($AC01),A ; $AD11 LD A,D ; A = selected creature ID $AD12 CP $13 ; {If A < $13 or A >= $1E(creatures code for non-flying $AD14 JP M,$AD23 ; creatures) jump to #R$AD23 $AD17 CP $1E ; $AD19 JP P,$AD23 ; } $AD1C LD A,($AC01) ; {Set the selection square range (#R$AC03) to the $AD1F INC A ; movement range +1. TODO Why? $AD20 LD ($AC03),A ; } *$AD23 LD A,($AC0C) ; A = selected creature ID $AD26 SUB $29 ; {If it's not a wizard, jump to #R$AD4A. $AD28 JP M,$AD4A ; } $AD2B LD HL,$AC16 ; {A = wizard's status value from the table at #R$AC16. $AD2E LD E,A ; $AD2F LD D,$00 ; $AD31 ADD HL,DE ; $AD32 LD A,(HL) ; } $AD33 BIT 5,A ; {If the wizard has magic wings, continue. Otherwise, $AD35 JR Z,$AD3E ; jump to #R$AD3E.} $AD37 LD A,$0D ; {Set the range of squares we can select #R$AC03 to 13 $AD39 LD ($AC03),A ; (six spaces flying).} $AD3C JR $AD4A ; Jump to #R$AD4A. *$AD3E BIT 3,A ; {If the wizard has shadow form, continue. Otherwise, $AD40 JR Z,$AD4A ; jump to #R$AD4A.} $AD42 LD A,$06 ; {Set remaining move points (TODO verify) to 6 (3 spaces) $AD44 LD ($AC01),A ; } $AD47 LD ($AC35),A ; *$AD4A LD A,($AC10) ; Get the creature's status flags from #R$AC10. $AD4D BIT 7,A ; {If bit 7 is set (creature has already moved) return. $AD4F RET NZ ; } $AD50 LD A,($AC0C) ; A = selected creature ID $AD53 OR A ; {If there's no creature at the space, return. $AD54 RET Z ; } $AD55 SUB $29 ; {If the creature is a wizard, continue. If not, jump to $AD57 JP M,$AD68 ; #R$AD68.} $AD5A LD HL,($AC0E) ; {Compare the selected wizard with the current wizard ID. $AD5D CP L ; If they're different, return. $AD5E RET NZ ; } $AD5F LD A,($AC0C) ; A = selected creature ID $AD62 LD ($AC0D),A ; Store the selected creature's ID in #R$AC0D (TODO Why?) $AD65 JP $ADD2 ; Jump to #R$ADD2. *$AD68 LD A,($AC09) ; Get the object status from arena table 5. $AD6B SUB $29 ; {If it's less than $29 (i.e. doesn't contain a hidden $AD6D JP M,$ADB3 ; wizard) jump to #R$ADB3.} $AD70 LD HL,($AC0E) ; HL = current wizard ID $AD73 CP L ; Compare current wizard ID with ID of wizard at space we ; clicked. $AD74 RET NZ ; Return if it's a different wizard. $AD75 LD A,($AC09) ; Get the object status from arena table 5 again. $AD78 LD ($AC0D),A ; $AD7B LD A,($AC0C) ; $AD7E CP $24 ; $AD80 JP P,$ADD2 ; $AD83 LD A,$46 ; {Set the colours to yellow on black ($46). $AD85 LD ($5C8F),A ; } $AD88 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $AD8B OR A ; #R$ADA1. $AD8C JR NZ,$ADA1 ; } $AD8E LD A,$33 ; {Print the message with ID $33 (DISMOUNT WIZARD? (Y OR $AD90 LD BC,$1600 ; N)) at screen position $1600. $AD93 CALL $BAFB ; } *$AD96 CALL $02BF ; Keyboard ROM subroutine. $AD99 CP $59 ; {If the user pressed Y jump to #R$ADA7. $AD9B JR Z,$ADA7 ; } $AD9D CP $4E ; {If the user pressed anything other than N jump back to $AD9F JR NZ,$AD96 ; #R$AD96.} *$ADA1 XOR A ; The user pressed N. The wizard will stay mounted. $ADA2 LD ($AC0D),A ; $ADA5 JR $ADB3 ; *$ADA7 XOR A ; $ADA8 LD ($AC03),A ; $ADAB LD A,$01 ; $ADAD LD ($AC01),A ; $ADB0 JP $ADD2 ; *$ADB3 LD A,($AC0C) ; A = selected creature ID $ADB6 CP $25 ; {If selected creature is a shadow wood jump to #R$ADBD. $ADB8 JR Z,$ADBD ; } $ADBA CP $22 ; {If selected creature ID >= $22 (gooey blob, the first $ADBC RET P ; non-movable object in the list) return.} *$ADBD LD A,($AC10) ; {A = ID of the owning wizard. $ADC0 AND $07 ; } $ADC2 LD HL,($AC0E) ; HL = current wizard ID $ADC5 CP L ; {If the selected creature isn't owned by the wizard $ADC6 RET NZ ; whose turn it is, return.} $ADC7 LD HL,($AC12) ; {A = selected object's status in arena table 4. $ADCA LD DE,$0141 ; $ADCD ADD HL,DE ; $ADCE LD A,(HL) ; } $ADCF CP $04 ; {If the value is 4 (i.e. the creature is dead) return. $ADD1 RET Z ; } *$ADD2 CALL $BE21 ; $ADD5 LD A,($AC06) ; $ADD8 OR A ; $ADD9 JR Z,$ADF4 ; $ADDB LD A,($AC09) ; A = status value from table 5 (#R$AC09) $ADDE OR A ; {If the wizard is hiding in a tree/castle or on a mount $ADDF JR NZ,$ADF4 ; jump to #R$ADF4.} $ADE1 LD A,($AC0C) ; A = selected creature ID (#R$AC0C) $ADE4 LD D,A ; $ADE5 LD E,$12 ; {A = the creature's manoeuvre rating. $ADE7 CALL $BE0A ; } $ADEA LD E,A ; $ADEB CALL $BE94 ; A = a random number from 0 to 9. $ADEE INC A ; {If A + 2 >= the creature's manoeuvre rating call $ADEF INC A ; #R$BEB2. $ADF0 CP E ; $ADF1 CALL P,$BEB2 ; } *$ADF4 LD A,($AC33) ; $ADF7 OR A ; $ADF8 CALL NZ,$BEB2 ; $ADFB LD A,($AC07) ; {If #R$AC07 is set (i.e. the creature is engaged in $ADFE OR A ; combat with an enemy) jump to #R$AE50. $ADFF JR NZ,$AE50 ; } $AE01 CALL $BED7 ; Clear the message bar. $AE04 LD A,$44 ; {Set the colours to green on black ($44). $AE06 LD ($5C8F),A ; } $AE09 LD A,$3A ; {Print the message with ID $3A (MOVEMENT RANGE=) at $AE0B LD BC,$1600 ; screen position $1600. $AE0E CALL $BAFB ; } $AE11 LD A,$46 ; {Set the colours to yellow on black ($46). $AE13 LD ($5C8F),A ; } $AE16 LD A,($AC0D) ; A = wizard object ID, if he's hidden or on a mount ; that's currently been selected. $AE19 OR A ; {If wizard is hidden or on a mount, jump to #R$AE1F. $AE1A JR NZ,$AE1F ; } $AE1C LD A,($AC0C) ; A = selected creature ID. *$AE1F LD D,A ; $AE20 LD E,$11 ; {A = selected the creature's movement allowance. $AE22 CALL $BE0A ; } $AE25 LD E,A ; $AE26 LD A,($AC03) ; $AE29 OR A ; $AE2A JR Z,$AE2F ; $AE2C SRL A ; $AE2E LD E,A ; *$AE2F LD A,E ; $AE30 ADD A,$30 ; {Add $30 to get the corresponding character code for the $AE32 CALL $BAD6 ; movement allowance and print it to screen.} $AE35 LD HL,$C2CF ; $AE38 CALL $C2F9 ; $AE3B EI ; $AE3C LD A,($AC2E) ; {If the current wizard is player controlled jump to $AE3F OR A ; #R$AE50. $AE40 JR Z,$AE50 ; } $AE42 LD A,($AC31) ; {If the creature can fly (or is on a flying mount) jump $AE45 OR A ; to #R$AE4D. $AE46 JR NZ,$AE4D ; } $AE48 CALL $CA92 ; $AE4B JR $AE50 ; *$AE4D CALL $C78D ; ; This entry point is used by the routines at #R$AF0D and #R$B168. *$AE50 LD BC,($BC94) ; $AE54 LD A,($AC03) ; $AE57 OR A ; $AE58 JP NZ,$B0A8 ; $AE5B LD A,($AC2E) ; {If the current wizard is player controlled jump to $AE5E OR A ; #R$AE77. $AE5F JR Z,$AE77 ; } $AE61 LD A,($AC31) ; {If the creature can fly (or is on a flying mount) jump $AE64 OR A ; to #R$AE70. $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 ; ; This entry point is used by the routine at #R$B0A8. *$AE7A LD ($AC0A),BC ; $AE7E CALL $BDD1 ; $AE81 LD ($AC12),HL ; $AE84 CALL $BDED ; $AE87 LD A,($AC32) ; $AE8A CP $49 ; {If the user pressed I, display the creature info screen $AE8C CALL Z,$C3B3 ; } $AE8F CP $4B ; {If the user pressed anything other than K jump to $AE91 JR NZ,$AE9D ; #R$AE9D.} $AE93 LD HL,$C2B1 ; $AE96 CALL $C2F9 ; $AE99 EI ; $AE9A JP $B06F ; *$AE9D LD HL,($AC12) ; {If the user hasn't selected a target square yet, jump $AEA0 LD DE,($AC14) ; back to #R$AE50. $AEA4 XOR A ; $AEA5 SBC HL,DE ; $AEA7 JR Z,$AE50 ; } $AEA9 LD A,($AC0C) ; {User has chosen a target square. A = TODO??? #R$AC0C. $AEAC OR A ; If it's 0 jump to #R$AF50. $AEAD JP Z,$AF50 ; } $AEB0 LD HL,($AC12) ; $AEB3 LD DE,$0141 ; $AEB6 ADD HL,DE ; $AEB7 LD A,(HL) ; $AEB8 CP $04 ; $AEBA JP Z,$AF50 ; $AEBD LD A,($AC0C) ; $AEC0 CP $24 ; $AEC2 JR NZ,$AED5 ; $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) ; A = selected creature ID (#R$AC0C) $AEF7 CP $10 ; {If A < $10 or A >= $16 (TODO the selected creature is $AEF9 JP M,$AE50 ; not mountable, maybe?) jump to #R$AE50. $AEFC CP $16 ; $AEFE JP P,$AE50 ; } $AF01 JR $AF50 ; ; Data block at AF03 b$AF03 DEFB $FE,$24,$20,$06,$3A,$0D,$AC,$B7 $AF0B DEFB $20,$43 ; Maybe creature turn routine? ; ; Used by the routine at #R$ACED. @label=ROUTINE_AF0D_MAYBE_CREATURE_TURN c$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) ; HL = location source (#R$AC14) $AF36 LD A,(HL) ; A = ID of creature at source (usually attacking ; creature?) $AF37 CP $29 ; {If A > $29 (is a wizard) jump to #R$B168, attack $AF39 JP P,$B168 ; calculation} $AF3C LD DE,$01E1 ; {A = corresponding data in arena table 4. $AF3F ADD HL,DE ; $AF40 LD A,(HL) ; } $AF41 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $AF43 LD E,A ; E = ID of the attacked creature's wizard $AF44 LD A,($AC0C) ; A = ID of the attacked creature $AF47 SUB $29 ; {If the attacking creature is not owned by the wizard $AF49 CP E ; it's attacking, jump to #R$B168, attack calculation. $AF4A JP NZ,$B168 ; } $AF4D JP $AE50 ; Can't attack your own wizard - jump back to #R$AE50. ; This entry point is used by the routines at #R$ACED and #R$B168. *$AF50 LD A,($AC07) ; {If #R$AC07 is set (i.e. the creature is engaged in $AF53 OR A ; combat with an enemy) jump to #R$AE50. $AF54 JP NZ,$AE50 ; } $AF57 LD A,$00 ; $AF59 LD ($AC30),A ; $AF5C LD BC,($AC0A) ; $AF60 LD ($BC94),BC ; $AF64 LD HL,($AC14) ; {A = ID of the selected creature. $AF67 LD A,(HL) ; } $AF68 CP $25 ; {If selected creature is a shadow wood jump to #R$B06F. $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) ; {A = corresponding selected creature's entry in arena $AF8B LD DE,$0321 ; table 6. $AF8E ADD HL,DE ; $AF8F LD A,(HL) ; } $AF90 OR A ; {If A == 0 jump to #R$AFBA. $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) ; {A = creature's ID in arena table 4. $AFA6 LD DE,$01E1 ; $AFA9 ADD HL,DE ; $AFAA LD A,(HL) ; } $AFAB LD ($AC10),A ; Set the creature's status flags (#R$AC10). $AFAE LD DE,$00A0 ; {Point HL to the corresponding space in arena table 5. $AFB1 ADD HL,DE ; } $AFB2 LD A,(HL) ; {Save the creature data from table 5 to #R$AC09, then $AFB3 LD ($AC09),A ; set that space in arena table 5 to 0. $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) ; HL = target location $AFE2 LD A,(HL) ; $AFE3 PUSH AF ; $AFE4 LD A,($AC0C) ; A = selected creature ID (#R$AC0C) $AFE7 LD (HL),A ; Copy creature ID to the target location $AFE8 POP AF ; $AFE9 LD DE,$0321 ; {Point HL to the corresponding location in data table 6 $AFEC ADD HL,DE ; and copy in the selected creature ID. $AFED LD (HL),A ; } $AFEE LD DE,$0280 ; {Subtract $280 from HL to point it to the corresponding $AFF1 SBC HL,DE ; square in arena table 2.} $AFF3 LD A,$01 ; {Set the value in arena table 2 to $01. $AFF5 LD (HL),A ; } $AFF6 LD DE,$00A0 ; {Add $A0 to HL to point it at arena table 3. $AFF9 ADD HL,DE ; } $AFFA LD A,$00 ; {Set the location in arena table 3 to 0. $AFFC LD (HL),A ; } $AFFD ADD HL,DE ; Add another $A0 to point HL at arena table 4. $AFFE LD A,($AC10) ; {Copy the creature's stats from #R$AC10 to arena table $B001 LD (HL),A ; 4.} $B002 ADD HL,DE ; Add another $A0 to point HL at arena table 5. $B003 LD A,($AC09) ; {Copy the creature's stats from #R$AC09 to arena table $B006 LD (HL),A ; 5.} *$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) ; {If #R$AC07 is set (i.e. the creature is engaged in $B02F OR A ; combat with an enemy) jump to #R$AE50. $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 ; Clear the message bar. $B04F LD A,$44 ; {Set the colours to green on black ($44). $B051 LD ($5C8F),A ; } $B054 LD BC,$1600 ; {Print the message with ID $38 (MOVEMENT POINTS LEFT=) $B057 LD A,$38 ; at screen position $1600. $B059 CALL $BAFB ; } $B05C LD A,$46 ; {Set the colours to yellow on black ($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 routines at #R$ACED, #R$B0A8 and #R$B168. *$B06F LD HL,($AC14) ; HL = location of currently selected creature in arena ; table 1 $B072 LD DE,$01E1 ; {HL = corresponding location in arena table 4 $B075 ADD HL,DE ; } $B076 SET 7,(HL) ; Set bit 7 to indicate that the creature has moved this ; turn $B078 CALL $BED7 ; Clear the message bar. $B07B LD HL,($AC14) ; $B07E LD A,(HL) ; $B07F CP $25 ; $B081 RET Z ; $B082 LD A,$01 ; {Set #R$AC31, indicating that the creature can fly. $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 ; {A = the creature's range. $B09A CALL $BE0A ; } $B09D OR A ; {If the creature doesn't have ranged combat, return. $B09E RET Z ; } $B09F LD ($ABFC),A ; Set #R$ABFC to the creature's range. $B0A2 CALL $BBCC ; TODO Set up ranged combat? $B0A5 JP $B8DD ; Call the ranged combat routine. ; Flying movement. ; ; Used by the routine at #R$ACED. @label=FLYING_MOVEMENT c$B0A8 LD A,($AC11) ; $B0AB PUSH BC ; $B0AC OR A ; $B0AD JR NZ,$B0CB ; $B0AF LD A,$45 ; {Set the colours to cyan on black ($45). $B0B1 LD ($5C8F),A ; } $B0B4 LD A,$36 ; {Print the message with ID $36 ((FLYING)) at screen $B0B6 LD BC,$1611 ; position $1611. $B0B9 CALL $BAFB ; } $B0BC CALL $BBCC ; $B0BF CALL $BBB0 ; Wait for keypress $B0C2 LD A,($AC2E) ; {If the current wizard is player controlled jump to $B0C5 OR A ; #R$B0CB. $B0C6 JR Z,$B0CB ; } $B0C8 CALL $C955 ; *$B0CB CALL $BED7 ; Clear the message bar. $B0CE POP BC ; $B0CF LD ($AC04),BC ; $B0D3 LD A,($AC07) ; $B0D6 OR A ; $B0D7 JR Z,$B0DE ; $B0D9 LD A,$03 ; {Creature is engaged to an enemy. Set its range $B0DB LD ($AC03),A ; (#R$AC03) to 3.} *$B0DE LD A,($AC2E) ; {If the current wizard is player controlled jump to $B0E1 OR A ; #R$B0E9. $B0E2 JR Z,$B0E9 ; } $B0E4 CALL $C9DC ; $B0E7 JR $B0F8 ; *$B0E9 LD HL,$C35D ; $B0EC LD ($5C7B),HL ; $B0EF CALL $BC96 ; User key input. $B0F2 CALL $02BF ; Keyboard ROM subroutine. $B0F5 LD ($AC32),A ; *$B0F8 LD A,($AC32) ; $B0FB CP $49 ; {If the user pressed I show the $B0FD CALL Z,$C3B3 ; } $B100 CP $4B ; {If the user pressed anything other than K jump to $B102 JR NZ,$B114 ; #R$B114.} $B104 LD HL,$C2B1 ; {User cancelled. Play a sound effect. $B107 CALL $C2F9 ; $B10A EI ; } $B10B LD HL,($AC14) ; $B10E LD ($AC12),HL ; $B111 JP $B06F ; *$B114 CP $53 ; {If the user pressed anything other than S jump to $B116 JR NZ,$B0DE ; #R$B0DE.} $B118 LD BC,($AC04) ; {User pressed S. Check the range. $B11C LD ($BEE9),BC ; $B120 LD BC,($BC94) ; $B124 LD ($BEEB),BC ; $B128 LD A,($AC03) ; $B12B CALL $BEEF ; } $B12E JP P,$B148 ; If it was in range, jump to #R$B148. $B131 LD A,$46 ; {Set the colours to yellow on black ($46). $B133 LD ($5C8F),A ; } $B136 LD A,$35 ; {Print the message with ID $35 (OUT OF RANGE) at screen $B138 LD BC,$1600 ; position $1600. $B13B CALL $BAFB ; } $B13E LD B,$14 ; *$B140 HALT ; $B141 DJNZ $B140 ; $B143 CALL $BBB0 ; Wait for keypress $B146 JR $B0DE ; *$B148 LD HL,$C2BB ; $B14B CALL $C2F9 ; $B14E EI ; $B14F LD HL,($AC04) ; $B152 LD BC,($BC94) ; $B156 LD ($BC94),HL ; $B159 LD A,$01 ; $B15B LD ($AC11),A ; $B15E JP $AE7A ; ; Attack bonus @label=ATTACK_BONUS b$B161 DEFB $00 ; Defence bonus @label=DEFENCE_BONUS b$B162 DEFB $00 ; Variable - 0 if the attacking creature is not undead, otherwise true @label=ATTACKER_IS_UNDEAD b$B163 DEFB $00 ; Variable - 0 if the attacked creature is not undead, otherwise true @label=ATTACKED_IS_UNDEAD b$B164 DEFB $00 ; Data block at B165 @label=VAR_B165_MAYBE_ATTACKING_CREATURE b$B165 DEFB $00 ; Data block at B166 @label=VAR_B166 b$B166 DEFB $00 ; Data block at B167 @label=VAR_B167 b$B167 DEFB $00 ; Attack calculation ; ; Used by the routines at #R$ACED, #R$AF0D and #R$B8DD. @label=ATTACK_CALC c$B168 CALL $BED7 ; Clear the message bar. $B16B LD HL,($AC12) ; HL = location of the attacked creature $B16E LD DE,$0321 ; {A = value from arena table 6 corresponding to the $B171 ADD HL,DE ; attacked creature. $B172 LD A,(HL) ; } $B173 LD ($B374),A ; $B176 XOR A ; $B177 LD ($B161),A ; Set #R$B161 (attack bonus) to 0. $B17A LD ($B162),A ; Set #R$B162 (defence bonus )to 0. $B17D LD ($B163),A ; Set #R$B163 (attacker is undead) to 0. $B180 LD ($B164),A ; Set #R$B164 (attacked creature is undead) to 0. $B183 LD HL,($AC14) ; {A = ID of the attacking creature. $B186 LD A,(HL) ; } $B187 LD ($AC0C),A ; $B18A LD ($B165),A ; $B18D CP $1C ; {If attacking creature's ID < $1C jump to #R$B19A. $B18F JP M,$B19A ; } $B192 CP $22 ; {If attacking creature's ID >= $22 jump to #R$B19A. $B194 JP P,$B19A ; } $B197 LD ($B163),A ; The attacking creature is undead. Set #R$B163. *$B19A LD HL,($AC14) ; {Get the info on the attacking creature from arena table $B19D LD DE,$01E1 ; 4. $B1A0 ADD HL,DE ; $B1A1 LD A,(HL) ; } $B1A2 BIT 6,A ; {If bit 6 is 0 (creature is not undead), jump to $B1A4 JR Z,$B1A9 ; #R$B1A9.} $B1A6 LD ($B163),A ; The target is undead. Set #R$B163. *$B1A9 LD A,($AC0C) ; A = ID of attacked creature $B1AC SUB $29 ; {Subtract $29 - if it's negative - i.e. the creature is $B1AE JP M,$B1F8 ; not a wizard - jump to #R$B1F8.} $B1B1 LD HL,$AC16 ; {The attacked creature is a wizard. HL = address of the $B1B4 LD D,$00 ; appropriate wizard's status value byte in the small $B1B6 LD E,A ; table at #R$AC16. $B1B7 ADD HL,DE ; } $B1B8 RES 3,(HL) ; Set bit 3 to 0, cancelling shadow form. $B1BA PUSH HL ; $B1BB LD HL,$E3E0 ; {Point HL to the creature's entry in the table at $B1BE LD A,($AC0C) ; #R$E3E0. $B1C1 DEC A ; $B1C2 SLA A ; $B1C4 LD D,$00 ; $B1C6 LD E,A ; $B1C7 ADD HL,DE ; } $B1C8 LD C,(HL) ; {Load BC with the memory address at which we can find $B1C9 INC HL ; the creature's name. $B1CA LD B,(HL) ; } $B1CB LD ($B166),BC ; $B1CF LD IX,($B166) ; {TODO Possibly changing the colours with which the $B1D3 LD A,(IX+$19) ; target is displayed? $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 ; {A = the creature's ranged combat value. $B1EF CALL $BE0A ; } $B1F2 OR A ; $B1F3 JR Z,$B1F8 ; $B1F5 LD ($B163),A ; *$B1F8 LD HL,($AC12) ; $B1FB LD A,(HL) ; A = ID of attacked creature $B1FC CP $1C ; {If attacked creature's ID is not in the undead creature $B1FE JP M,$B209 ; range ($1C to $21) jump to #R$B209. $B201 CP $22 ; $B203 JP P,$B209 ; } $B206 LD ($B164),A ; Attacked creature is undead. Set #R$B164. *$B209 LD DE,$01E1 ; {A = status value of the attacked creature, from arena $B20C ADD HL,DE ; table 4. $B20D LD A,(HL) ; } $B20E BIT 6,A ; {If bit 6 is not set (it's not undead), jump to #R$B215. $B210 JR Z,$B215 ; } $B212 LD ($B164),A ; Attacked creature is undead. Set #R$B164. *$B215 LD HL,($AC12) ; {A = ID of attacked creature $B218 LD A,(HL) ; } $B219 SUB $29 ; {If the attacked creature is not a wizard jump to $B21B JP M,$B23D ; #R$B23D.} $B21E LD HL,$AC16 ; {Attacked creature is a wizard. Get the wizard's status $B221 LD D,$00 ; value from the table at #R$AC16. $B223 LD E,A ; $B224 ADD HL,DE ; } $B225 XOR A ; {A = wizard's status value. $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) ; {If bit 3 is zero (i.e. wizard does not have shadow $B234 JR Z,$B23D ; form) jump to #R$B23D.} $B236 LD HL,$B162 ; {Wizard has shadow form. Add 3 to the defence bonus. $B239 LD A,$03 ; $B23B ADD A,(HL) ; $B23C LD (HL),A ; } *$B23D LD A,($B164) ; {If the attacked creature is not undead, jump to $B240 OR A ; #R$B26E. $B241 JR Z,$B26E ; } $B243 LD A,($B163) ; {If the attacking creature is undead, jump to #R$B26E. $B246 OR A ; $B247 JR NZ,$B26E ; } $B249 LD A,$45 ; {A mortal attacker is attacking the undead. Set the $B24B LD ($5C8F),A ; colours to cyan on black ($45).} $B24E LD BC,$1600 ; {Print the message with ID $39 (UNDEAD-CANNOT BE $B251 LD A,$39 ; ATTACKED) at screen position $1600. $B253 CALL $BAFB ; } $B256 LD HL,$C2D9 ; $B259 CALL $C2F9 ; $B25C EI ; $B25D CALL $BBCC ; $B260 CALL $BBB0 ; Wait for keypress $B263 CALL $BED7 ; Clear the message bar. $B266 LD A,($ABFC) ; $B269 OR A ; $B26A RET NZ ; $B26B JP $AE50 ; *$B26E LD A,($AC0C) ; A = attacking creature ID $B271 LD D,A ; D = attacking creature ID $B272 LD E,$0D ; E = $0D (code for combat value) $B274 LD A,($ABFC) ; {If this is not ranged combat, jump to #R$B27C. $B277 OR A ; $B278 JR Z,$B27C ; } $B27A LD E,$0E ; E = $0D (code for ranged combat value) *$B27C CALL $BE0A ; A = the attacking creature's combat (or ranged combat) ; value. $B27F LD HL,$B161 ; {Get attack bonus from #R$B161 and add it to A. $B282 ADD A,(HL) ; } $B283 LD E,A ; $B284 CALL $BE94 ; A = a random number from 0 to 9. $B287 ADD A,E ; Add the random number to the previously calculated ; attack value. $B288 LD C,A ; Save the result to C. $B289 PUSH BC ; $B28A LD HL,($AC12) ; {A = the attacked creature's ID. $B28D LD A,(HL) ; } $B28E LD D,A ; {A = the creature's defence. $B28F LD E,$10 ; $B291 CALL $BE0A ; } $B294 LD HL,$B162 ; {Get defence bonus from #R$B162 and add it to A. $B297 ADD A,(HL) ; } $B298 LD E,A ; E = Defence result $B299 CALL $BBCC ; $B29C CALL $BE94 ; A = a random number from 0 to 9. $B29F ADD A,E ; A = A + defence result $B2A0 POP BC ; $B2A1 SUB C ; A = A (defending creature's defence total) - C ; (attacking creature's attack total) $B2A2 PUSH AF ; $B2A3 LD A,($ABFC) ; A = #R$ABFC (combat range) $B2A6 OR A ; $B2A7 JR NZ,$B2AC ; $B2A9 CALL $B375 ; Display attack animation at attacked creature's square. *$B2AC POP AF ; $B2AD JP P,$B302 ; If A >= 0, creature survived. Jump to #R$B302. $B2B0 LD HL,($AC12) ; {The creature did not survive. A = the attacked $B2B3 LD DE,$0281 ; creature's data from arena table 5. $B2B6 ADD HL,DE ; $B2B7 LD A,(HL) ; } $B2B8 OR A ; $B2B9 JR NZ,$B2E0 ; $B2BB LD HL,($AC12) ; {A = ID of attacked creature $B2BE LD A,(HL) ; } $B2BF CP $29 ; {If A >= $29 (creature is a wizard) call #R$B3C9. $B2C1 CALL P,$B3C9 ; } $B2C4 CP $1C ; {Going to work out if the creature leaves a body behind. $B2C6 JP P,$B310 ; If the creature's ID >= $1C, it doesn't.} $B2C9 LD DE,$01E1 ; {Get the creature's status from arena table 4 and look $B2CC ADD HL,DE ; in bit 4. If it's an illusion (bit 4 was set) it won't $B2CD LD A,(HL) ; leave a body behind. Jump to #$B310. $B2CE BIT 4,A ; $B2D0 JP NZ,$B310 ; } $B2D3 BIT 6,A ; {If it had been undead through the raise dead spell, it $B2D5 JP NZ,$B310 ; won't leave behind a body. Jump to #$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 ; Set #R$AC07 to 0. $B314 LD ($AC01),A ; Set #R$AC01 to 0. $B317 LD ($AC0D),A ; Set #R$AC0D to 0. $B31A LD HL,($AC12) ; HL = location of attacked creature in arena table 1 $B31D LD A,($B165) ; $B320 CP $FF ; $B322 JR NZ,$B347 ; $B324 LD DE,$00A1 ; {Get the corresponding space for the attacked creature $B327 ADD HL,DE ; in arena table 2.} $B328 LD (HL),$01 ; Set it to 1. TODO - what does this indicate? $B32A LD DE,$00A0 ; {Point HL to the corresponding space in arena 3. $B32D ADD HL,DE ; } $B32E LD (HL),$04 ; Set the value to 4, which indicates a dead body at the ; space. $B330 HALT ; $B331 LD HL,$C293 ; $B334 CALL $C2F9 ; $B337 EI ; $B338 LD A,($AC0C) ; A = attacking creature ID $B33B CP $25 ; {If attacker is a shadow wood tree, jump to #R$B302. $B33D JR Z,$B302 ; } $B33F LD A,($ABFC) ; {If this was a ranged combat, return. $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 ; ; Variable - maybe the ID of the attacked creature @label=MAYBE_ATTACKED_CREATURE_ID b$B374 DEFB $00 ; Display attack animation ; ; Used by the routine at #R$B168. @label=DISPLAY_ATTACK_ANIMATION 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 ; {Set the colours to yellow on black ($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 @label=VAR_B3C3 b$B3C3 DEFB $01 ; Data block at B3C4 @label=VAR_B3C4 b$B3C4 DEFB $13 ; Data block at B3C5 @label=VAR_B3C5 b$B3C5 DEFB $01 ; Data block at B3C6 @label=VAR_B3C6 b$B3C6 DEFB $1D ; Data block at B3C7 @label=VAR_B3C7 b$B3C7 DEFB $0D,$09 ; Wizard death ; ; Used by the routines at #R$9C59, #R$9CA9, #R$9F50 and #R$B168. @label=WIZARD_DEATH c$B3C9 DI ; $B3CA LD HL,$AC34 ; $B3CD INC (HL) ; $B3CE LD HL,$C2A7 ; $B3D1 CALL $C2F9 ; $B3D4 LD HL,($AC12) ; $B3D7 LD C,(HL) ; $B3D8 DEC C ; $B3D9 LD B,$00 ; $B3DB SLA C ; $B3DD LD HL,$E3E0 ; $B3E0 ADD HL,BC ; $B3E1 LD E,(HL) ; $B3E2 INC HL ; $B3E3 LD D,(HL) ; $B3E4 LD HL,$0017 ; $B3E7 ADD HL,DE ; $B3E8 LD E,(HL) ; $B3E9 INC HL ; $B3EA LD D,(HL) ; $B3EB EX DE,HL ; $B3EC LD ($DF4A),HL ; $B3EF LD B,$08 ; *$B3F1 PUSH BC ; $B3F2 LD HL,($AC12) ; $B3F5 LD ($E005),HL ; $B3F8 CALL $E007 ; $B3FB LD ($B3C7),HL ; $B3FE LD A,H ; $B3FF LD ($B3C3),A ; $B402 LD ($B3C4),A ; $B405 LD A,L ; $B406 LD ($B3C5),A ; $B409 LD ($B3C6),A ; $B40C DEC B ; $B40D LD A,$40 ; $B40F ADD A,B ; $B410 LD ($5C8F),A ; $B413 LD B,$1D ; *$B415 PUSH BC ; $B416 LD A,($B3C3) ; $B419 DEC A ; $B41A JR Z,$B42A ; $B41C LD ($B3C3),A ; $B41F LD H,A ; $B420 LD A,($B3C7) ; $B423 LD L,A ; $B424 LD ($DF4C),HL ; $B427 CALL $DF4E ; *$B42A LD A,($B3C4) ; $B42D INC A ; $B42E CP $14 ; $B430 JR Z,$B440 ; $B432 LD ($B3C4),A ; $B435 LD H,A ; $B436 LD A,($B3C7) ; $B439 LD L,A ; $B43A LD ($DF4C),HL ; $B43D CALL $DF4E ; *$B440 LD A,($B3C5) ; $B443 DEC A ; $B444 JR Z,$B454 ; $B446 LD ($B3C5),A ; $B449 LD L,A ; $B44A LD A,($B3C8) ; $B44D LD H,A ; $B44E LD ($DF4C),HL ; $B451 CALL $DF4E ; *$B454 LD A,($B3C6) ; $B457 INC A ; $B458 CP $1E ; $B45A JR Z,$B46A ; $B45C LD ($B3C6),A ; $B45F LD L,A ; $B460 LD A,($B3C8) ; $B463 LD H,A ; $B464 LD ($DF4C),HL ; $B467 CALL $DF4E ; *$B46A LD A,($B3C3) ; $B46D CP $01 ; $B46F JR Z,$B480 ; $B471 LD H,A ; $B472 LD A,($B3C5) ; $B475 CP $01 ; $B477 JR Z,$B480 ; $B479 LD L,A ; $B47A LD ($DF4C),HL ; $B47D CALL $DF4E ; *$B480 LD A,($B3C3) ; $B483 CP $01 ; $B485 JR Z,$B496 ; $B487 LD H,A ; $B488 LD A,($B3C6) ; $B48B CP $1D ; $B48D JR Z,$B496 ; $B48F LD L,A ; $B490 LD ($DF4C),HL ; $B493 CALL $DF4E ; *$B496 LD A,($B3C4) ; $B499 CP $13 ; $B49B JR Z,$B4AC ; $B49D LD H,A ; $B49E LD A,($B3C5) ; $B4A1 CP $01 ; $B4A3 JR Z,$B4AC ; $B4A5 LD L,A ; $B4A6 LD ($DF4C),HL ; $B4A9 CALL $DF4E ; *$B4AC LD A,($B3C4) ; $B4AF CP $13 ; $B4B1 JR Z,$B4C2 ; $B4B3 LD H,A ; $B4B4 LD A,($B3C6) ; $B4B7 CP $1D ; $B4B9 JR Z,$B4C2 ; $B4BB LD L,A ; $B4BC LD ($DF4C),HL ; $B4BF CALL $DF4E ; *$B4C2 CALL $C301 ; $B4C5 POP BC ; $B4C6 DEC B ; $B4C7 JP NZ,$B415 ; $B4CA POP BC ; $B4CB DEC B ; $B4CC JP NZ,$B3F1 ; $B4CF LD HL,($AC12) ; $B4D2 LD A,(HL) ; $B4D3 SUB $29 ; $B4D5 LD ($AC00),A ; $B4D8 LD (HL),$00 ; $B4DA LD HL,$AC16 ; $B4DD LD D,$00 ; $B4DF LD E,A ; $B4E0 ADD HL,DE ; $B4E1 SET 4,(HL) ; $B4E3 LD HL,($AC12) ; $B4E6 LD DE,$0321 ; $B4E9 ADD HL,DE ; $B4EA LD A,(HL) ; $B4EB LD HL,($AC12) ; $B4EE LD (HL),A ; $B4EF CALL $C0DD ; $B4F2 HALT ; $B4F3 DI ; $B4F4 LD HL,$C2C5 ; $B4F7 CALL $C2F9 ; ; This entry point is used by the routine at #R$9E38. *$B4FA LD B,$09 ; $B4FC LD HL,$BFB7 ; $B4FF LD ($DF4A),HL ; $B502 LD A,$46 ; {Set the colours to yellow on black ($46). $B504 LD ($5C8F),A ; } *$B507 PUSH BC ; $B508 LD A,B ; $B509 LD ($ABFF),A ; $B50C LD B,$9F ; $B50E LD HL,$E01F ; $B511 LD ($ABFD),HL ; *$B514 PUSH BC ; $B515 LD HL,($ABFD) ; $B518 LD A,(HL) ; $B519 OR A ; $B51A JP Z,$B5E8 ; $B51D CP $29 ; $B51F JP P,$B5E8 ; $B522 LD DE,$0141 ; $B525 ADD HL,DE ; $B526 LD A,(HL) ; $B527 CP $04 ; $B529 JR NZ,$B535 ; $B52B LD DE,$00A0 ; $B52E ADD HL,DE ; $B52F LD A,(HL) ; $B530 BIT 3,A ; $B532 JP Z,$B5E8 ; *$B535 LD HL,($ABFD) ; $B538 LD DE,$01E1 ; $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) ; $B548 LD A,(HL) ; $B549 CP $22 ; $B54B JP NZ,$B5E8 ; $B54E LD DE,$0281 ; $B551 ADD HL,DE ; $B552 LD A,(HL) ; $B553 OR A ; $B554 JP Z,$B5E8 ; $B557 LD DE,$00A0 ; $B55A ADD HL,DE ; $B55B LD A,(HL) ; $B55C LD HL,($AC00) ; $B55F CP L ; $B560 JP NZ,$B5E8 ; *$B563 LD HL,($ABFD) ; $B566 LD ($E005),HL ; $B569 CALL $E007 ; $B56C LD ($DF4C),HL ; $B56F CALL $DF4E ; $B572 LD A,($ABFF) ; $B575 DEC A ; $B576 JR NZ,$B5E8 ; $B578 LD HL,($ABFD) ; $B57B LD DE,$01E1 ; $B57E ADD HL,DE ; $B57F LD A,(HL) ; $B580 AND $07 ; $B582 LD HL,($AC00) ; $B585 CP L ; $B586 JR Z,$B599 ; $B588 LD HL,($ABFD) ; $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 ; *$B599 LD HL,($ABFD) ; $B59C LD A,(HL) ; $B59D CP $22 ; $B59F JR NZ,$B5BE ; $B5A1 LD DE,$0281 ; $B5A4 ADD HL,DE ; $B5A5 LD A,(HL) ; $B5A6 OR A ; $B5A7 JR Z,$B5BE ; $B5A9 LD (HL),$00 ; $B5AB LD HL,($ABFD) ; $B5AE LD (HL),A ; $B5AF LD DE,$0321 ; $B5B2 ADD HL,DE ; $B5B3 LD A,(HL) ; $B5B4 LD (HL),$00 ; $B5B6 LD DE,$0140 ; $B5B9 SBC HL,DE ; $B5BB LD (HL),A ; $B5BC JR $B5E8 ; *$B5BE LD HL,($ABFD) ; $B5C1 LD DE,$0281 ; $B5C4 ADD HL,DE ; $B5C5 LD A,(HL) ; $B5C6 LD (HL),$00 ; $B5C8 OR A ; $B5C9 JR Z,$B5D1 ; $B5CB LD HL,($ABFD) ; $B5CE LD (HL),A ; $B5CF JR $B5E8 ; *$B5D1 LD HL,($ABFD) ; $B5D4 LD DE,$0321 ; $B5D7 ADD HL,DE ; $B5D8 LD A,(HL) ; $B5D9 LD HL,($ABFD) ; $B5DC LD (HL),A ; $B5DD OR A ; $B5DE JR Z,$B5E8 ; $B5E0 LD DE,$0141 ; $B5E3 ADD HL,DE ; $B5E4 LD A,$04 ; $B5E6 LD (HL),$04 ; *$B5E8 POP BC ; $B5E9 LD HL,($ABFD) ; $B5EC INC HL ; $B5ED LD ($ABFD),HL ; $B5F0 DEC B ; $B5F1 JP NZ,$B514 ; $B5F4 CALL $C301 ; $B5F7 POP BC ; $B5F8 LD HL,($DF4A) ; $B5FB LD DE,$0020 ; $B5FE ADD HL,DE ; $B5FF LD ($DF4A),HL ; $B602 DEC B ; $B603 JP NZ,$B507 ; $B606 CALL $C0DD ; $B609 HALT ; $B60A RET ; ; Data block at B60B @label=VAR_B60B b$B60B DEFB $02 ; Data block at B60C @label=VAR_B60C b$B60C DEFB $28 ; Routine at B60D ; ; Used by the routine at #R$B626. @label=ROUTINE_B60D 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 ; ; Routine at B626 Maybe fire attack animation ; ; Used by the routines at #R$98DB, #R$9C59, #R$9CA9, #R$A18A and #R$B8DD. @label=MAYBE_FIRE_ATTACK_ANIM c$B626 XOR A ; $B627 LD ($5C90),A ; $B62A LD ($5C91),A ; $B62D LD ($B60C),A ; $B630 LD A,($B60B) ; $B633 OR A ; $B634 JR Z,$B6AB ; $B636 CP $01 ; $B638 JR NZ,$B647 ; $B63A LD ($B844),A ; $B63D LD A,$2A ; $B63F LD ($B769),A ; $B642 LD A,$47 ; {Set the colours to white on black ($47). $B644 LD ($5C8F),A ; } *$B647 LD A,($B60B) ; $B64A CP $02 ; $B64C JR NZ,$B65B ; $B64E LD ($B844),A ; $B651 LD A,$0E ; $B653 LD ($B769),A ; $B656 LD A,$46 ; {Set the colours to yellow on black ($46). $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 the colours to cyan on black ($45). $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 the colours to yellow on black ($46). $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 the colours to yellow on black ($46). $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 the colours to white on black ($47). $B6A3 LD ($5C8F),A ; } $B6A6 LD A,$64 ; $B6A8 LD ($B769),A ; *$B6AB DI ; $B6AC XOR A ; $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 ; *$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 ; $B726 LD A,$03 ; $B728 LD ($5C91),A ; $B72B LD A,$FF ; $B72D LD ($5C90),A ; $B730 RET ; *$B731 JR Z,$B718 ; ; Routine at B733 ; ; Used by the routine at #R$B8BD. @label=ROUTINE_B733 c$B733 LD ($5C7D),BC ; $B737 CALL $22AA ; Pixel address ROM subroutine. $B73A LD B,A ; $B73B INC B ; $B73C LD A,$FE ; *$B73E RRCA ; $B73F DJNZ $B73E ; $B741 LD B,A ; $B742 LD A,(HL) ; $B743 AND B ; $B744 LD (HL),A ; $B745 RET ; ; Routine at B746 ; ; Used by the routine at #R$B626. @label=ROUTINE_B746 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 @label=VAR_B754 b$B754 DEFB $00 ; Routine at B755 ; ; Used by the routine at #R$B746. @label=ROUTINE_B755 c$B755 LD ($5C7D),BC ; $B759 CALL $22AA ; Pixel address ROM subroutine. $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 @label=VAR_B769 b$B769 DEFB $0E ; Data block at B76A @label=VAR_B76A b$B76A DEFB $0E ; Data block at B76B @label=VAR_B76B b$B76B DEFB $70,$60 ; Data block at B76D @label=VAR_B76D b$B76D DEFB $70,$60,$70,$5F,$70,$5E,$70,$5D $B775 DEFB $70,$5C,$70,$5B,$70,$5A,$70,$59 $B77D DEFB $70,$58,$70,$57,$70,$56,$70,$55 $B785 DEFB $70,$54,$70,$53,$70,$52,$70,$51 $B78D DEFB $B1,$20,$B2,$20,$B3,$20,$B4,$20 $B795 DEFB $B5,$20,$B6,$20,$B7,$20,$B8,$20 $B79D DEFB $B9,$20,$BA,$20,$BB,$20,$BC,$20 $B7A5 DEFB $BD,$20,$BE,$20,$BF,$20,$C0,$20 $B7AD DEFB $C1,$20,$C2,$20,$C3,$20,$C4,$20 $B7B5 DEFB $C5,$20,$C6,$20,$C7,$20,$C8,$20 $B7BD DEFB $C9,$20,$CA,$20,$CB,$20,$CC,$20 $B7C5 DEFB $CD,$20,$CE,$20,$CF,$20,$D0,$20 $B7CD DEFB $D1,$20,$D2,$20,$D3,$20 ; Routine at B7D3 ; ; Used by the routine at #R$B746. @label=ROUTINE_B7D3 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 @label=VAR_B844 b$B844 DEFB $02 ; Routine at B845 ; ; Used by the routine at #R$B7D3. @label=ROUTINE_B845 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 ; ; Routine at B8BD ; ; Used by the routine at #R$B845. @label=ROUTINE_B8BD c$B8BD PUSH BC ; $B8BE LD A,($B844) ; $B8C1 AND $80 ; $B8C3 JR Z,$B8CA ; $B8C5 CALL $B733 ; $B8C8 JR $B8DB ; *$B8CA LD A,($B60B) ; $B8CD AND $04 ; $B8CF JR Z,$B8D8 ; $B8D1 LD A,($B60C) ; $B8D4 AND $07 ; $B8D6 JR NZ,$B8DB ; *$B8D8 CALL $22E5 ; Plot command ROM routine. *$B8DB POP BC ; $B8DC RET ; ; Ranged combat ; ; Used by the routine at #R$AF0D. @label=RANGED_COMBAT c$B8DD LD A,$43 ; {Draw the border in magenta on black ($43). $B8DF LD ($5C8F),A ; $B8E2 CALL $BB57 ; } $B8E5 LD A,$44 ; {Set the colours to green on black ($44). $B8E7 LD ($5C8F),A ; } $B8EA LD BC,$1600 ; {Print the message with ID $3B (RANGED COMBAT,RANGE=) at $B8ED LD A,$3B ; screen position $1600. $B8EF CALL $BAFB ; } $B8F2 LD A,$46 ; {Set the colours to yellow on black ($46). $B8F4 LD ($5C8F),A ; } $B8F7 LD A,($ABFC) ; {Print the ranged combat value. $B8FA ADD A,$30 ; $B8FC CALL $BAD6 ; } $B8FF LD BC,($BC94) ; $B903 LD ($AC04),BC ; $B907 LD HL,$C257 ; $B90A CALL $C2F9 ; $B90D EI ; $B90E LD A,($AC2E) ; {If the current wizard is player controlled jump to $B911 OR A ; #R$B917. $B912 JR Z,$B917 ; } $B914 CALL $CC56 ; @label=RANGED_COMBAT_1 *$B917 CALL $BBCC ; $B91A CALL $BBB0 ; Wait for keypress $B91D LD HL,$C37D ; {Set the graphic to cursor 2 ($5C7B). $B920 LD ($5C7B),HL ; } @label=RANGED_COMBAT_2_SELECT_TARGET *$B923 LD A,($AC2E) ; {If the current wizard is player controlled jump to $B926 OR A ; #R$B92E. $B927 JR Z,$B92E ; } $B929 CALL $CCCB ; $B92C JR $B934 ; @label=RANGED_COMBAT_3 *$B92E CALL $BC96 ; User key input. $B931 CALL $02BF ; Keyboard ROM subroutine. @label=RANGED_COMBAT_4_DID_USER_CANCEL *$B934 CP $4B ; {If the user pressed anything other than K jump to $B936 JR NZ,$B94B ; #R$B94B.} $B938 LD A,$41 ; {Draw the border in blue on black ($41). $B93A LD ($5C8F),A ; $B93D CALL $BB57 ; } $B940 CALL $BED7 ; Clear the message bar. $B943 LD HL,$C2B1 ; $B946 CALL $C2F9 ; $B949 EI ; $B94A RET ; @label=RANGED_COMBAT_5_CHECK_RANGE *$B94B CP $53 ; {If the user pressed anything other than S jump back to $B94D JR NZ,$B923 ; #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 the colours to cyan on black ($45). $B978 LD ($5C8F),A ; } $B97B LD A,$35 ; {Print the message with ID $35 (OUT OF RANGE) at screen $B97D LD BC,$1600 ; position $1600. $B980 CALL $BAFB ; } $B983 CALL $BBCC ; $B986 CALL $BBB0 ; Wait for keypress $B989 JR $B923 ; @label=RANGED_COMBAT_6_CHECK_LOS *$B98B XOR A ; $B98C LD ($B754),A ; $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 the colours to cyan on black ($45). $B9A4 LD ($5C8F),A ; } $B9A7 CALL $BED7 ; Clear the message bar. $B9AA LD A,$3C ; {Print the message with ID $3C (NO LINE OF SIGHT) at $B9AC LD BC,$1600 ; screen position $1600. $B9AF CALL $BAFB ; } $B9B2 CALL $BBCC ; $B9B5 CALL $BBB0 ; Wait for keypress $B9B8 JP $B923 ; @label=RANGED_COMBAT_7 *$B9BB LD HL,$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 ; $B9D4 LD ($C2F3),HL ; $B9D7 JR $B9E4 ; @label=RANGED_COMBAT_8 *$B9D9 LD A,(HL) ; $B9DA CP $15 ; $B9DC JR NZ,$B9E2 ; $B9DE LD A,$02 ; $B9E0 JR $B9E4 ; @label=RANGED_COMBAT_9 *$B9E2 LD A,$01 ; @label=RANGED_COMBAT_10 *$B9E4 LD ($B60B),A ; $B9E7 CALL $C2F6 ; $B9EA CALL $B626 ; $B9ED CALL $C0DD ; $B9F0 HALT ; $B9F1 DI ; $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 ; $BA07 LD A,$47 ; {Set the colours to white on black ($47). $BA09 LD ($5C8F),A ; } $BA0C LD A,($B60B) ; $BA0F CP $04 ; $BA11 JR NZ,$BA21 ; $BA13 LD HL,$C243 ; $BA16 LD ($C2F3),HL ; $BA19 LD HL,$C123 ; $BA1C LD A,$46 ; {Set the colours to yellow on black ($46). $BA1E LD ($5C8F),A ; } @label=RANGED_COMBAT_11 *$BA21 PUSH HL ; $BA22 CALL $C2F6 ; $BA25 POP HL ; $BA26 LD DE,$0020 ; $BA29 LD B,$09 ; @label=RANGED_COMBAT_12 *$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 ; @label=RANGED_COMBAT_13 *$BA5E LD HL,($AC12) ; {A = ID of the target object. $BA61 LD A,(HL) ; } $BA62 CP $24 ; {If A == $24 (Magic Wood), jump to #R$BA72. $BA64 JR Z,$BA72 ; } $BA66 CP $25 ; {If A == $25 (Shadow Wood), jump to #R$BA72. $BA68 JR Z,$BA72 ; } $BA6A CP $29 ; {If A >= $29 (Wizard) jump to #R$BA72. $BA6C JP P,$BA72 ; } $BA6F CP $23 ; {If the target is pointing at anything from $23 to $28, $BA71 RET P ; return. TODO What's going on here?} @label=RANGED_COMBAT_14 *$BA72 JP $B168 ; ; Variable - Temp variable for routine at #R$BA77. @label=TEMP_VAR_FOR_BA77 b$BA75 DEFB $BD,$E0 ; Routine at BA77 ; ; Used by the routines at #R$98DB and #R$B8DD. @label=ROUTINE_BA77 c$BA77 DI ; $BA78 LD HL,$E01F ; {Going to loop through every space in the arena table 1. $BA7B LD B,$9F ; *$BA7D PUSH BC ; } $BA7E LD ($BA75),HL ; Save current index to #R$BA75 $BA81 LD A,(HL) ; {If the space contains magic fire call #R$BABE. $BA82 CP $23 ; $BA84 CALL Z,$BABE ; } $BA87 CP $1D ; {If the space contains a ghost call #R$BABE. $BA89 CALL Z,$BABE ; } $BA8C CP $1F ; {If the space contains a wraith call #R$BABE. $BA8E CALL Z,$BABE ; } $BA91 LD DE,$0141 ; {HL = the corresponding space in arena table 3 $BA94 ADD HL,DE ; } $BA95 LD A,(HL) ; {If table 3 contains the value 4 call #R$BABE. TODO Why? $BA96 CP $04 ; } $BA98 CALL Z,$BABE ; $BA9B XOR A ; $BA9C LD HL,($BA75) ; {HL = current space - cursor (TODO starting position?) $BA9F LD DE,($AC12) ; $BAA3 SBC HL,DE ; } $BAA5 CALL Z,$BABE ; If same space call #R$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 ; ; Routine at BABE ; ; Used by the routine at #R$BA77. @label=ROUTINE_BABE c$BABE PUSH AF ; $BABF LD HL,($BA75) ; $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 ; ; Prints a single character, as set in A? TODO Check ; ; Used by the routines at #R$89B0, #R$89F9, #R$9168, #R$9385, #R$94A7, #R$967A, ; #R$ACED, #R$AF0D, #R$B8DD, #R$BAEE, #R$BC96, #R$C3B3, #R$C5FC and #R$C612. @label=PRINT_SINGLE_CHAR c$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 ; ; Routine at BAEE ; ; Used by the routines at #R$87EF and #R$BAFB. @label=ROUTINE_BAEE_PRINT_WORD c$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 ; ; Print message to screen ; ; Prints one of the messages starting at #R$CFCB (described in the table at ; #R$CDD3). ; . ; Used by the routines at #R$89F9, #R$8F8B, #R$9168, #R$9385, #R$94A7, #R$967A, ; #R$97A3, #R$981A, #R$9C59, #R$AC36, #R$ACED, #R$AF0D, #R$B0A8, #R$B168, ; #R$B8DD, #R$BC96, #R$BEB2, #R$BED7, #R$C3B3, #R$C5FC and #R$C612. @label=PRINT_MESSAGE_2 c$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 ; Data block at BB55 @label=VAR_BB55 b$BB55 DEFB $15,$BB ; Draw the border. ; ; The colours used are stored in system variable $5C36, which should be set ; before calling this routine. ; . ; Used by the routines at #R$89F9, #R$9168, #R$94A7, #R$B8DD, #R$C0D8 and ; #R$C3B3. @label=DRAW_BORDER 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 ; ; Wait for a user keypress, if the current wizard is not a computer player. ; What's the difference between this and #R$BBCC? ; ; Used by the routines at #R$94A7, #R$95C7, #R$981A, #R$9C59, #R$AC36, #R$B0A8, ; #R$B168, #R$B8DD and #R$C3B3. @label=WAIT_FOR_KEYPRESS_1 c$BBB0 PUSH HL ; $BBB1 PUSH DE ; $BBB2 PUSH BC ; $BBB3 LD A,($AC2E) ; {If the current wizard is computer controlled jump to $BBB6 OR A ; #R$BBC8. $BBB7 JR NZ,$BBC8 ; } *$BBB9 PUSH BC ; $BBBA CALL $028E ; Keyboard scanning ROM subroutine. $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 ; Set $5C76 (the seed for RND) to A *$BBC8 POP BC ; $BBC9 POP DE ; $BBCA POP HL ; $BBCB RET ; ; Wait for a user keypress, if the current wizard is not a computer player. ; What's the difference between this and #R$BBB0? ; ; Used by the routines at #R$9168, #R$92BE, #R$9385, #R$94A7, #R$981A, #R$99F1, ; #R$9C59, #R$AC36, #R$AF0D, #R$B0A8, #R$B168, #R$B8DD and #R$C3B3. @label=WAIT_FOR_KEYPRESS_2 c$BBCC PUSH HL ; $BBCD PUSH DE ; $BBCE PUSH BC ; $BBCF LD A,($AC2E) ; {If the current wizard is computer controlled jump to $BBD2 OR A ; #R$BBE3. $BBD3 JR NZ,$BBE3 ; } *$BBD5 PUSH BC ; $BBD6 CALL $028E ; Keyboard scanning ROM subroutine. $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 ; Set $5C76 (the seed for RND) to A *$BBE3 POP BC ; $BBE4 POP DE ; $BBE5 POP HL ; $BBE6 RET ; ; Check for cursor move keypresses. ; ; Used by the routines at #R$ACED and #R$BC96. @label=MOVE_CURSOR_CHECK c$BBE7 PUSH HL ; $BBE8 PUSH DE ; $BBE9 LD A,$08 ; $BBEB LD ($5C6A),A ; $BBEE PUSH BC ; $BBEF LD A,($AC2E) ; {If the current wizard is computer controlled jump to $BBF2 OR A ; #R$CDC0. $BBF3 JP NZ,$CDC0 ; } $BBF6 CALL $02BF ; Keyboard ROM subroutine. ; This entry point is used by the routine at #R$CDB8. @label=MOVE_CURSOR_CHECK_UP *$BBF9 POP BC ; $BBFA LD ($AC32),A ; $BBFD CP $57 ; Key W $BBFF JR NZ,$BC09 ; $BC01 LD A,$02 ; $BC03 LD ($AC02),A ; $BC06 CALL $BC6C ; Move cursor up. @label=MOVE_CURSOR_CHECK_DOWN *$BC09 CP $58 ; Key X $BC0B JR NZ,$BC15 ; $BC0D LD A,$02 ; $BC0F LD ($AC02),A ; $BC12 CALL $BC72 ; Move cursor down. @label=MOVE_CURSOR_CHECK_LEFT *$BC15 CP $41 ; Key A $BC17 JR NZ,$BC21 ; $BC19 LD A,$02 ; $BC1B LD ($AC02),A ; $BC1E CALL $BC7D ; Move cursor left. @label=MOVE_CURSOR_CHECK_RIGHT *$BC21 CP $44 ; Key D $BC23 JR NZ,$BC2D ; $BC25 LD A,$02 ; $BC27 LD ($AC02),A ; $BC2A CALL $BC83 ; Move cursor right. @label=MOVE_CURSOR_CHECK_UP_LEFT *$BC2D CP $51 ; Key Q $BC2F JR NZ,$BC3C ; $BC31 LD A,$03 ; $BC33 LD ($AC02),A ; $BC36 CALL $BC7D ; Move cursor left. $BC39 CALL $BC6C ; Move cursor up. @label=MOVE_CURSOR_CHECK_UP_RIGHT *$BC3C CP $45 ; Key E $BC3E JR NZ,$BC4B ; $BC40 LD A,$03 ; $BC42 LD ($AC02),A ; $BC45 CALL $BC83 ; Move cursor right. $BC48 CALL $BC6C ; Move cursor up. @label=MOVE_CURSOR_CHECK_DOWN_LEFT *$BC4B CP $5A ; Key Z $BC4D JR NZ,$BC5A ; $BC4F LD A,$03 ; $BC51 LD ($AC02),A ; $BC54 CALL $BC72 ; Move cursor down. $BC57 CALL $BC7D ; Move cursor left. @label=MOVE_CURSOR_CHECK_DOWN_RIGHT *$BC5A CP $43 ; Key C $BC5C JR NZ,$BC69 ; $BC5E LD A,$03 ; $BC60 LD ($AC02),A ; $BC63 CALL $BC83 ; Move cursor right. $BC66 CALL $BC72 ; Move cursor down. @label=MOVE_CURSOR_CHECK_RETURN *$BC69 POP DE ; $BC6A POP HL ; $BC6B RET ; ; Move cursor up. ; ; Used by the routine at #R$BBE7. @label=MOVE_CURSOR_UP c$BC6C DEC B ; $BC6D JR NZ,$BC70 ; $BC6F INC B ; *$BC70 JR $BC8C ; ; Move cursor down. ; ; Used by the routine at #R$BBE7. @label=MOVE_CURSOR_DOWN c$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 ; ; Move cursor left. ; ; Used by the routine at #R$BBE7. @label=MOVE_CURSOR_LEFT c$BC7D DEC C ; $BC7E JR NZ,$BC81 ; $BC80 INC C ; *$BC81 JR $BC8C ; ; Move cursor right. ; ; Used by the routine at #R$BBE7. @label=MOVE_CURSOR_RIGHT c$BC83 INC C ; $BC84 PUSH AF ; $BC85 LD A,C ; $BC86 CP $10 ; $BC88 JR NZ,$BC8B ; $BC8A DEC C ; *$BC8B POP AF ; ; This entry point is used by the routines at #R$BC6C, #R$BC72 and #R$BC7D. *$BC8C RET ; ; Routine at BC8D ; ; Used by the routines at #R$9E38 and #R$BDA5. @label=ROUTINE_BC8D c$BC8D SLA B ; $BC8F DEC B ; $BC90 SLA C ; $BC92 DEC C ; $BC93 RET ; ; Variable - X-Y coordinates. The first byte holds the number of spaces in from ; the left, and the next holds the spaces from the top. @label=XY_COORDS b$BC94 DEFB $0F,$0A ; Keyboard input. ; ; Used by the routines at #R$84F7, #R$85F6, #R$92BE, #R$981A, #R$99F1, #R$9C59, ; #R$9DE0, #R$ACC6, #R$B0A8 and #R$B8DD. @label=KEY_INPUT c$BC96 CALL $02BF ; Keyboard ROM subroutine. $BC99 CP $49 ; {If the key pressed was 'I' fall through, otherwise jump $BC9B JR NZ,$BCA3 ; to #R$BCA3.} $BC9D CALL $C3B3 ; Display the 'I' key info page. $BCA0 HALT ; $BCA1 JR $BCE5 ; *$BCA3 CALL $02BF ; Keyboard ROM subroutine. $BCA6 CP $39 ; {If the user pressed 9 or higher jump to #R$BCE5. $BCA8 JP P,$BCE5 ; } $BCAB CP $31 ; {If the user pressed anything lower than 1 jump to $BCAD JP M,$BCE5 ; #R$BCE5.} $BCB0 SUB $31 ; User pressed a number key. Subtract $31 to convert the ; key code into the corresponding wizard ID (first wizard ; = 0, etc.) $BCB2 LD HL,$AC0F ; HL = mem address containing the number of wizards in the ; game (#R$AC0F). $BCB5 CP (HL) ; $BCB6 JP P,$BCE5 ; If it's too big to be a wizard ID, jump to #R$BCE5. $BCB9 LD ($D391),A ; Set #R$D391, storing the ID of the wizard whose ; creations we want to identify $BCBC CALL $C0DD ; $BCBF HALT ; *$BCC0 CALL $D392 ; Flash the backgrounds of the creatures controlled by the ; wizard whose number was pressed. $BCC3 LD A,($D391) ; $BCC6 ADD A,$29 ; $BCC8 LD BC,$1600 ; $BCCB LD HL,$5C8F ; $BCCE LD (HL),$46 ; $BCD0 CALL $BAFB ; $BCD3 LD A,$5F ; {Print the message with ID $5F ('S CREATIONS). $BCD5 CALL $BAFB ; } $BCD8 CALL $028E ; Keyboard scanning ROM subroutine. $BCDB INC E ; $BCDC JR NZ,$BCC0 ; $BCDE CALL $BED7 ; Clear the message bar. $BCE1 CALL $C0DD ; $BCE4 HALT ; *$BCE5 LD BC,($BC94) ; $BCE9 PUSH BC ; $BCEA CALL $BBE7 ; $BCED POP HL ; $BCEE PUSH BC ; $BCEF XOR A ; $BCF0 SBC HL,BC ; $BCF2 CALL NZ,$BED7 ; $BCF5 POP BC ; $BCF6 LD ($BC94),BC ; $BCFA CALL $BDA5 ; $BCFD CALL $BDD1 ; Maybe moving the cursor to a new position. $BD00 LD ($AC12),HL ; $BD03 LD HL,($AC12) ; $BD06 LD DE,$01E1 ; {Add $01E1 to HL to get the corresponding location in $BD09 ADD HL,DE ; arena data table 4.} $BD0A LD A,(HL) ; A = data in table 4 at the cursor position $BD0B LD ($AC10),A ; Populate #R$AC10, which holds creature data flags $BD0E LD HL,($AC12) ; $BD11 LD A,$45 ; {Set the colours to cyan on black ($45). $BD13 LD ($5C8F),A ; } $BD16 LD A,(HL) ; $BD17 OR A ; $BD18 JR Z,$BD88 ; $BD1A LD BC,$1600 ; $BD1D CALL $BAFB ; $BD20 LD A,$44 ; {Set the colours to green on black ($44). $BD22 LD ($5C8F),A ; } $BD25 LD A,($AC10) ; $BD28 BIT 3,A ; $BD2A JR Z,$BD33 ; $BD2C LD A,$31 ; {Print the message with ID $31 ((ASLEEP)). Note - never $BD2E CALL $BAFB ; used in game.} $BD31 JR Z,$BD88 ; *$BD33 LD DE,$0141 ; {Add $01E1 to HL to get the corresponding location in $BD36 ADD HL,DE ; arena data table 3.} $BD37 LD A,(HL) ; A = status value from the current cursor location in ; arena table 3. $BD38 CP $04 ; {If A != 0, jump to #R$BD43. $BD3A JR NZ,$BD43 ; } $BD3C LD A,$32 ; {The creature at the space is dead. Print the message $BD3E CALL $BAFB ; with ID $32 ((DEAD)).} $BD41 JR $BD88 ; *$BD43 LD DE,$0140 ; {HL = HL + $0140, becoming the location in arena table 5 $BD46 ADD HL,DE ; } $BD47 LD A,$47 ; {Set the colours to white on black ($47). $BD49 LD ($5C8F),A ; } $BD4C LD A,(HL) ; $BD4D OR A ; $BD4E JR NZ,$BD5D ; $BD50 LD DE,$00A0 ; $BD53 ADD HL,DE ; $BD54 LD A,(HL) ; $BD55 OR A ; $BD56 JR Z,$BD62 ; $BD58 LD A,$43 ; {Set the colours to magenta on black ($43). $BD5A LD ($5C8F),A ; } *$BD5D LD A,$23 ; {Print the # character. $BD5F CALL $BAD6 ; } *$BD62 LD HL,($AC12) ; {A = ID of creature at cursor. $BD65 LD A,(HL) ; } $BD66 CP $29 ; {If A >= $29 (i.e. not a creature) jump to #R$BD88. $BD68 JP P,$BD88 ; } $BD6B LD DE,$01E1 ; {HL = HL + $01E1, so that it points to the corresponding $BD6E ADD HL,DE ; location in arena table 4.} $BD6F LD A,$46 ; {Set the colours to yellow on black ($46). $BD71 LD ($5C8F),A ; } $BD74 LD A,$28 ; A = $28 (left bracket character) $BD76 PUSH HL ; $BD77 CALL $BAD6 ; Print the ( character. $BD7A POP HL ; $BD7B LD A,(HL) ; A = data about the creature under the cursor $BD7C AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $BD7E ADD A,$29 ; A = A + $29, becoming the wizard's creature ID $BD80 CALL $BAFB ; Print the wizard's name. $BD83 LD A,$29 ; A = $29 (right bracket character) $BD85 CALL $BAD6 ; Print the ) character. *$BD88 LD B,$3C ; *$BD8A PUSH BC ; $BD8B LD B,$F8 ; *$BD8D DJNZ $BD8D ; $BD8F POP BC ; $BD90 DJNZ $BD8A ; $BD92 CALL $BDA5 ; $BD95 LD HL,($AC12) ; $BD98 LD A,(HL) ; $BD99 OR A ; $BD9A RET Z ; $BD9B HALT ; $BD9C HALT ; $BD9D HALT ; $BD9E LD DE,$00A1 ; $BDA1 ADD HL,DE ; $BDA2 LD (HL),$01 ; $BDA4 RET ; ; Prints the square cursor to the screen. ; ; Used by the routine at #R$BC96. @label=PRINT_CURSOR c$BDA5 LD A,$02 ; $BDA7 CALL $1601 ; Chan-open ROM subroutine. $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 ; ; Convert XY coords stored in BC to a memory address in arena table 1, which ; gets stored in HL. ; ; Used by the routines at #R$ACED, #R$BC96 and #R$BE52. @label=CONVERT_XY_COORDS c$BDD1 PUSH BC ; $BDD2 DEC B ; $BDD3 DEC C ; $BDD4 SLA B ; $BDD6 SLA B ; $BDD8 SLA B ; $BDDA SLA B ; $BDDC LD A,B ; $BDDD ADD A,C ; $BDDE LD C,A ; $BDDF LD B,$00 ; $BDE1 LD HL,$E01F ; $BDE4 ADD HL,BC ; HL = HL + BC, now pointing at a cell in arena table 1. $BDE5 POP BC ; BC = the XY coords again $BDE6 RET ; ; Gets data about an object in the arena and saves it into memory. ; ; Used by the routine at #R$ACED. @label=FETCH_OBJECT_DATA c$BDE7 LD HL,($AC12) ; $BDEA LD ($AC14),HL ; ; This entry point is used by the routine at #R$ACED. *$BDED LD HL,($AC12) ; $BDF0 LD A,(HL) ; $BDF1 LD ($AC0C),A ; Set selected creature ID (#R$AC0C) to A $BDF4 LD DE,$01E1 ; {Add $01E1 to HL to get the corresponding location in $BDF7 ADD HL,DE ; arena data table 4.} $BDF8 LD A,(HL) ; A = data in table 4 at the cursor position $BDF9 LD ($AC10),A ; Populate #R$AC10, which holds creature data flags $BDFC LD DE,$00A0 ; {A = data about the creature at arena table 5. $BDFF ADD HL,DE ; $BE00 LD A,(HL) ; } $BE01 LD ($AC09),A ; Populate #R$AC09, which holds creature data flags from ; arena table 5 $BE04 ADD HL,DE ; {A = data about the creature at arena table 6. $BE05 LD A,(HL) ; } $BE06 LD ($AC08),A ; Populate #R$AC08, which holds creature data flags from ; arena table 6 $BE09 RET ; ; Get creature data ; ; Given a creature ID and an offset pointing to a particular piece of data ; about a creature, set A to the piece of data. ; . ; #TABLE(default,centre) ; { =h Offset (hex) | =h Offset (dec) | =h Data } ; { $00 | 00 | First char of name } ; { $0D | 13 | Combat } ; { $0E | 14 | Ranged Combat } ; { $0F | 15 | Range } ; { $10 | 16 | Defence } ; { $11 | 17 | Movement allowance } ; { $12 | 18 | Manoeuvre rating } ; { $13 | 19 | Magic resistance } ; { $14 | 20 | Wizard only - no of spells? TODO } ; { $15 | 21 | Chaos/law value - and wizard "ability"? TODO} { $16 | 22 | TODO ; ??? } ; TABLE# ; . ; Used by the routines at #R$859C, #R$92F9, #R$9C59, #R$9CA9, #R$9E38, #R$A075, ; #R$ACED, #R$AF0D, #R$B168, #R$C3B3, #R$C612 and #R$CBB9. ; ; I:D: The creature ID ; I:E: The offset detailing which piece of data to fetch ; O:A: Contains the data item @label=GET_CREATURE_DATA c$BE0A PUSH HL ; $BE0B PUSH BC ; $BE0C LD HL,$E3E0 ; #R$E3E0 is the reference table describing where to get ; data on each creature. $BE0F LD B,$00 ; {Set BC to the creature ID. $BE11 LD C,D ; } $BE12 DEC C ; {Decrement C and shift left (double it) to get how many $BE13 SLA C ; bytes to skip down the table.} $BE15 ADD HL,BC ; Add BC to HL. HL will now point at the first byte of the ; pair indicating the creature's data location. $BE16 LD C,(HL) ; {Set BC to the address for the creature's data. $BE17 INC HL ; $BE18 LD B,(HL) ; } $BE19 LD H,$00 ; {Set HL to the offset we should use: E $BE1B LD L,E ; } $BE1C ADD HL,BC ; {Add BC to HL to get the memory location of the data we $BE1D LD A,(HL) ; want, and load the data into A.} $BE1E POP BC ; $BE1F POP HL ; $BE20 RET ; ; Check for adjacent enemies. If one is found, record its ID in #R$AC06. ; ; Used by the routines at #R$ACED and #R$AF0D. @label=CHECK_FOR_ADJACENT_ENEMIES c$BE21 PUSH AF ; $BE22 XOR A ; {Set adjacent enemy ID (#R$AC06) to 0. $BE23 LD ($AC06),A ; } $BE26 PUSH HL ; $BE27 PUSH DE ; $BE28 PUSH BC ; $BE29 LD BC,($BC94) ; BC = XY coords of the selected creature. B stores the ; distance from the top and C the distance from the left. ; Both start at 1. $BE2D DEC C ; {Check for adjacent enemy to the left. $BE2E CALL $BE52 ; } $BE31 DEC B ; {Check for adjacent enemy to the top left. $BE32 CALL $BE52 ; } $BE35 INC C ; {Check for adjacent enemy to the top. $BE36 CALL $BE52 ; } $BE39 INC C ; {Check for adjacent enemy to the top right. $BE3A CALL $BE52 ; } $BE3D INC B ; {Check for adjacent enemy to the right. $BE3E CALL $BE52 ; } $BE41 INC B ; {Check for adjacent enemy to the bottom right. $BE42 CALL $BE52 ; } $BE45 DEC C ; {Check for adjacent enemy to the bottom. $BE46 CALL $BE52 ; } $BE49 DEC C ; {Check for adjacent enemy to the bottom left. $BE4A CALL $BE52 ; } $BE4D POP BC ; $BE4E POP DE ; $BE4F POP HL ; $BE50 POP AF ; $BE51 RET ; ; Checks for adjacent enemies in a single square at the XY coordinates stored ; in BC. ; ; Used by the routine at #R$BE21. @label=CHECK_FOR_ADJACENT_ENEMIES_AT_XY c$BE52 LD A,B ; {If we're checking off the edge of the arena (top), $BE53 OR A ; return. $BE54 RET Z ; } $BE55 LD A,C ; {If we're checking off the edge of the arena (left), $BE56 OR A ; return. $BE57 RET Z ; } $BE58 LD A,$0F ; {If we're checking off the edge of the arena (right), $BE5A CP C ; return. $BE5B RET M ; } $BE5C LD A,$0A ; {If we're checking off the edge of the arena (bottom), $BE5E CP B ; return. $BE5F RET M ; } $BE60 CALL $BDD1 ; Convert the XY coords in BC to a mem address in arena ; table 1 and store in HL. $BE63 LD A,(HL) ; A = the creature ID at the space we're investigating. $BE64 OR A ; {If A == 0, return. $BE65 RET Z ; } $BE66 PUSH HL ; $BE67 LD DE,$0141 ; {A = object data in arena table 3 $BE6A ADD HL,DE ; $BE6B LD A,(HL) ; } $BE6C CP $04 ; {If data in table 3 equals 4 (i.e. it's a dead $BE6E POP HL ; creature), return. $BE6F RET Z ; } $BE70 LD A,(HL) ; A = creature ID. $BE71 CP $22 ; {If A >= $22 (i.e. a blob or tree or wall, and not a $BE73 JP P,$BE86 ; moving creature) jump to #R$BE86.} $BE76 LD DE,$01E1 ; {A = corresponding data in arena table 4. $BE79 ADD HL,DE ; $BE7A LD A,(HL) ; } $BE7B AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $BE7D INC A ; {If the creature is owned by the wizard whose turn it $BE7E LD HL,($AC0E) ; currently is, return. Both are incremented before $BE81 INC L ; comparison so that we can use the zero flag. $BE82 CP L ; $BE83 RET Z ; } $BE84 JR $BE90 ; *$BE86 SUB $29 ; {If the adjacent object isn't that of a wizard, return. $BE88 RET M ; } $BE89 INC A ; {There's an adjacent wizard. Return if it's the wizard $BE8A LD HL,($AC0E) ; that controls the selected creature. $BE8D INC L ; $BE8E CP L ; $BE8F RET Z ; } *$BE90 LD ($AC06),A ; There's an adjacent enemy. Record it in #R$AC06. $BE93 RET ; ; Gets a random num between 0 and 9 inclusive, and loads it into A. ; ; Used by the routines at #R$95C7, #R$9760, #R$9975, #R$9C59, #R$9CA9, #R$9E38, ; #R$9F50, #R$A075, #R$ACED and #R$B168. @label=GET_RANDOM_NUM_0_TO_9 c$BE94 PUSH HL ; $BE95 PUSH DE ; *$BE96 LD A,R ; TODO R register - perhaps generating random number? $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 ; HL = $5C76 (the seed for RND) $BEA7 ADD A,(HL) ; $BEA8 AND $0F ; $BEAA CP $0A ; $BEAC JP P,$BE96 ; $BEAF POP DE ; $BEB0 POP HL ; $BEB1 RET ; ; Engaged to enemy ; ; Used by the routines at #R$ACED and #R$AF0D. @label=ENGAGED_TO_ENEMY c$BEB2 PUSH AF ; $BEB3 PUSH BC ; $BEB4 XOR A ; Set #R$AC03 (the select square range) to 0. $BEB5 LD ($AC03),A ; $BEB8 LD A,$01 ; {Set #R$AC07 to indicate that the creature is engaged in $BEBA LD ($AC07),A ; combat.} $BEBD LD A,$46 ; {Set the colours to yellow on black ($46). $BEBF LD ($5C8F),A ; } $BEC2 LD A,$34 ; {Print the message with ID $34 (ENGAGED TO ENEMY) at $BEC4 LD BC,$1600 ; screen position $1600. Clear the message bar. $BEC7 CALL $BED7 ; $BECA CALL $BAFB ; } $BECD LD HL,$C289 ; $BED0 CALL $C2F9 ; $BED3 EI ; $BED4 POP BC ; $BED5 POP AF ; $BED6 RET ; ; Clear the message bar. ; ; Used by the routines at #R$84F7, #R$85F6, #R$8F8B, #R$9385, #R$95C7, #R$96F3, ; #R$97A3, #R$981A, #R$9C59, #R$9DE0, #R$AC36, #R$ACC6, #R$ACED, #R$AF0D, ; #R$B0A8, #R$B168, #R$B8DD, #R$BC96 and #R$BEB2. @label=CLEAR_MESSAGE_BAR c$BED7 PUSH AF ; $BED8 PUSH DE ; $BED9 PUSH HL ; $BEDA PUSH BC ; $BEDB LD A,$01 ; {Print the message with ID $01 (empty string) at screen $BEDD LD BC,$1600 ; position $1600. $BEE0 CALL $BAFB ; } $BEE3 POP BC ; $BEE4 POP HL ; $BEE5 POP DE ; $BEE6 POP AF ; $BEE7 RET ; ; Variable - the distance between two coordinates @label=VAR_DISTANCE b$BEE8 DEFB $02 ; Variable - maybe the spell casting source location coordinates @label=VAR_MAYBE_SPELL_SOURCE_COORDS b$BEE9 DEFB $07,$06 ; Variable - maybe the spell casting destination coordinates @label=VAR_MAYBE_SPELL_DESTINATION_COORDS b$BEEB DEFB $07,$05 ; Variable - temp variable used by get distance function (#R$BEEF) TODO X and Y ; diffs? @label=VAR_TEMP_GET_DISTANCE_1 b$BEED DEFB $00 ; Variable - temp variable used by get distance function (#R$BEEF) @label=VAR_TEMP_GET_DISTANCE_2 b$BEEE DEFB $01 ; Gets the distance between two coordinates at #R$BEE9 and #R$BEEB and saves ; the result at #R$BEE8. ; ; Used by the routines at #R$9786, #R$B0A8, #R$B8DD, #R$C67A, #R$C7BC, #R$C8C7, ; #R$C955, #R$CA7C, #R$CBC7 and #R$CBCC. @label=GET_DISTANCE c$BEEF PUSH BC ; $BEF0 PUSH HL ; $BEF1 PUSH DE ; $BEF2 PUSH AF ; $BEF3 XOR A ; $BEF4 LD HL,($BEE9) ; $BEF7 LD DE,($BEEB) ; $BEFB LD A,D ; $BEFC CP H ; $BEFD JP M,$BF06 ; $BF00 SUB H ; $BF01 LD ($BEEE),A ; $BF04 JR $BF0B ; *$BF06 LD A,H ; $BF07 SUB D ; $BF08 LD ($BEEE),A ; *$BF0B LD A,E ; $BF0C CP L ; $BF0D JP M,$BF16 ; $BF10 SUB L ; $BF11 LD ($BEED),A ; $BF14 JR $BF1B ; *$BF16 LD A,L ; $BF17 SUB E ; $BF18 LD ($BEED),A ; *$BF1B LD HL,($BEED) ; $BF1E LD A,H ; $BF1F CP L ; $BF20 JP M,$BF29 ; $BF23 SLA H ; $BF25 LD A,H ; $BF26 ADD A,L ; $BF27 JR $BF2D ; *$BF29 SLA L ; $BF2B LD A,L ; $BF2C ADD A,H ; *$BF2D LD E,A ; $BF2E LD ($BEE8),A ; $BF31 POP AF ; $BF32 CP E ; $BF33 POP DE ; $BF34 POP HL ; $BF35 POP BC ; $BF36 RET ; ; Graphics - star animation ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($BF37+n*$20)-(($BF37+n*$20)+$18)-8(star_animationn*.png) //) @label=GRAPHICS_STAR_ANIMATION b$BF37 DEFB $01,$40,$00,$00,$01,$05,$03,$8F ; {Frame 1 $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 ; {Frame 2 $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 ; {Frame 3 $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 ; {Frame 4 $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 ; } ; Graphics - circle animation ; ; #HTML(#FOR(0,7)//n/ ; #UDGARRAY2;($BFB7+n*$20)-(($BFB7+n*$20)+$18)-8(circle_animationn*.png) //) @label=GRAPHICS_CIRCLE_ANIMATION b$BFB7 DEFB $00,$00,$00,$00,$00,$00,$00,$01 ; {Frame 1 $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 ; {Frame 2 $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 ; {Frame 3 $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 ; {Frame 4 $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 ; {Frame 5 $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 ; {Frame 6 $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 ; {Frame 7 $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 ; {Frame 8 $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 ; Data block at C0BF b$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 ; Data block at C0D7 @label=VAR_C0D7 b$C0D7 DEFB $00 ; Routine at C0D8 - maybe marks valid squares for casting creatures in arena? ; ; Used by the routine at #R$B8DD. @label=MAYBE_MARK_ARENA_SQUARES c$C0D8 LD A,$01 ; $C0DA LD ($C0D7),A ; ; This entry point is used by the routines at #R$836A, #R$839C, #R$83D0, ; #R$8404, #R$8438, #R$846A, #R$86C3, #R$8F8B, #R$92BE, #R$95C7, #R$981A, ; #R$98DB, #R$9A52, #R$9ADD, #R$9C59, #R$9CA9, #R$9E38, #R$9F50, #R$A075, ; #R$A18A, #R$AC36, #R$ACC6, #R$B3C9, #R$B8DD, #R$BC96, #R$C3B3 and #R$C710. *$C0DD DI ; $C0DE LD B,$A0 ; $C0E0 LD HL,$E01F ; *$C0E3 LD A,(HL) ; $C0E4 OR A ; $C0E5 JR NZ,$C0FF ; $C0E7 PUSH HL ; $C0E8 LD DE,$E01F ; $C0EB SBC HL,DE ; $C0ED LD A,L ; $C0EE INC A ; $C0EF AND $0F ; $C0F1 POP HL ; $C0F2 JR Z,$C0FF ; $C0F4 LD A,$01 ; $C0F6 LD (HL),A ; $C0F7 LD DE,$0141 ; {Add $0141 to HL to point it at the corresponding space $C0FA ADD HL,DE ; in arena table 3.} $C0FB XOR A ; $C0FC LD (HL),A ; $C0FD SBC HL,DE ; *$C0FF INC HL ; $C100 DJNZ $C0E3 ; $C102 LD HL,$E0C0 ; {Set all of arena table 2 to contain the value 1. TODO $C105 LD DE,$E0C1 ; Why? $C108 LD BC,$009F ; $C10B LD (HL),$01 ; $C10D LDIR ; } $C10F LD A,($C0D7) ; $C112 OR A ; $C113 JR NZ,$C11D ; $C115 LD A,$41 ; {Draw the border in blue on black ($41). $C117 LD ($5C8F),A ; $C11A CALL $BB57 ; } *$C11D XOR A ; $C11E LD ($C0D7),A ; $C121 EI ; $C122 RET ; ; Graphics - dragon fire animation ; ; #HTML(#FOR(0,8)//n/ ; #UDGARRAY2;($C123+n*$20)-(($C123+n*$20)+$18)-8(dragon_firen*.png) //) @label=GRAPHICS_DRAGON_FIRE 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 ; Data block at C22B b$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 ; Data block at C243 @label=VAR_C243_MAYBE_TABLE b$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 ; Data block at C26B @label=VAR_C26B_MAYBE_TABLE b$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 ; Data block at C293 @label=VAR_C293_MAYBE_SOUND_EFFECT b$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 ; Sound effect - TODO identify @label=SOUND_EFFECT_C2BB b$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 ; Sound effect - menu chirp @label=SOUND_EFFECT_MENU_CHIRP b$C2E3 DEFB $14,$04,$17,$2D,$38,$3F,$04,$FD $C2EB DEFB $FD,$C6,$93,$04,$04,$E2,$B0 ; Data block at C2F2 @label=VAR_C2F2_MAYBE_SOUND_EFFECT b$C2F2 DEFB $30 ; Data block at C2F3 @label=SOUND_EFFECT_C2F3 b$C2F3 DEFB $9D,$C2,$00 ; Play sound effect. ; ; Used by the routines at #R$9A52, #R$9C59, #R$9CA9, #R$9E38, #R$A075, #R$A18A ; and #R$B8DD. @label=SOUND_EFFECT c$C2F6 LD HL,($C2F3) ; ; This entry point is used by the routines at #R$84F7, #R$85F6, #R$89B0, ; #R$89F9, #R$8F8B, #R$9168, #R$9385, #R$94A7, #R$96D1, #R$981A, #R$99F1, ; #R$9C59, #R$9DE0, #R$A075, #R$ACC6, #R$ACED, #R$AF0D, #R$B0A8, #R$B168, ; #R$B375, #R$B3C9, #R$B8DD, #R$BEB2 and #R$C3B3. *$C2F9 LD DE,$C2E8 ; $C2FC LD BC,$000A ; $C2FF LDIR ; ; This entry point is used by the routines at #R$9A52, #R$9C59, #R$9CA9, ; #R$9E38, #R$A18A, #R$B375, #R$B3C9, #R$B7D3 and #R$B8DD. *$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 ; ; Routine at C33A ; ; Used by the routine at #R$C2F6. @label=ROUTINE_C33A c$C33A DJNZ $C33A ; $C33C RET ; ; Graphics - cursor1 ; ; #HTML(#UDGARRAY2;$C33D-$C355-8(cursor1.png)) @label=GRAPHICS_CURSOR_1 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 ; Graphics - cursor - wings ; ; #HTML(#UDGARRAY2;$C35D-$C375-8(cursor_wings.png)) @label=GRAPHICS_CURSOR_WINGS b$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 ; Graphics - cursor2 ; ; #HTML(#UDGARRAY2;$C37D-$C395-8(cursor2.png)) @label=GRAPHICS_CURSOR_2 b$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 ; Data block at C39D @label=VAR_C39D b$C39D DEFB $00 ; Data block at C39E @label=VAR_C39E b$C39E DEFB $00 ; Data block at C39F @label=VAR_C39F b$C39F DEFB $00 ; Data block at C3A0 @label=VAR_C3A0 b$C3A0 DEFB $00 ; Data block at C3A1 @label=VAR_C3A1 b$C3A1 DEFB $00 ; Data block at C3A2 @label=VAR_C3A2 b$C3A2 DEFB $00 ; Data block at C3A3 @label=VAR_C3A3 b$C3A3 DEFB $00 ; Variable - current chaos/law world tendency. Positive indicates lawful, ; negative indicates chaotic. @label=CHAOS_LAW_LEVEL b$C3A4 DEFB $00 ; Data block at C3A5 @label=VAR_C3A5_MAYBE_TABLE b$C3A5 DEFB $04,$06,$04,$08,$15,$08,$04,$0A $C3AD DEFB $04,$0C,$04,$0E,$04,$10 ; Display the 'I' key information screen ; ; Used by the routines at #R$92BE, #R$94A7, #R$ACED, #R$B0A8 and #R$BC96. @label=DISPLAY_CREATURE_INFO c$C3B3 DI ; Disable interrupts. $C3B4 PUSH HL ; {Save the register states. $C3B5 PUSH DE ; $C3B6 PUSH BC ; $C3B7 PUSH AF ; } $C3B8 LD HL,($AC12) ; {Load A with a byte representing the object at the $C3BB LD A,(HL) ; current location. (See game state info table at ; #R$E01F.)} $C3BC OR A ; {If A is zero, there's nothing there and we can return $C3BD JP Z,$C5E8 ; without doing anything.} $C3C0 LD ($C39F),A ; $C3C3 LD HL,$C39E ; $C3C6 RES 1,(HL) ; $C3C8 CP $29 ; $C3CA JP M,$C3CF ; $C3CD SET 1,(HL) ; @label=DISPLAY_CREATURE_INFO_1 *$C3CF LD DE,$0281 ; {A = the creature's data from arena table 5. $C3D2 LD HL,($AC12) ; $C3D5 ADD HL,DE ; $C3D6 LD A,(HL) ; } $C3D7 OR A ; {If A == 0 jump to #R$C3E2. $C3D8 JR Z,$C3E2 ; } $C3DA LD ($C39D),A ; $C3DD LD HL,$C39E ; $C3E0 SET 2,(HL) ; @label=DISPLAY_CREATURE_INFO_2 *$C3E2 CALL $C5EE ; Clear the screen. $C3E5 LD HL,$C2E3 ; $C3E8 CALL $C2F9 ; $C3EB LD A,$44 ; {Draw the border in green on black ($44). $C3ED LD ($5C8F),A ; $C3F0 CALL $BB57 ; } $C3F3 LD A,$60 ; {Set the colours to black on green ($60). $C3F5 LD ($5C8F),A ; } $C3F8 LD A,$3D ; {Print the message with ID $3D (PRESS ANY KEY) at screen $C3FA LD BC,$1600 ; position $1600. $C3FD CALL $BAFB ; } $C400 LD A,$46 ; {Set the colours to yellow on black ($46). $C402 LD ($5C8F),A ; } $C405 LD BC,$0204 ; $C408 LD A,($C39F) ; $C40B CALL $BAFB ; $C40E XOR A ; $C40F LD ($C3A0),A ; $C412 LD HL,$C39E ; $C415 BIT 1,(HL) ; $C417 JR Z,$C479 ; $C419 LD BC,$0404 ; $C41C LD A,($C39F) ; $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 ; $C42C BIT 1,A ; $C42E JR Z,$C435 ; $C430 LD A,$3E ; $C432 CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_3 *$C435 LD HL,$C3A1 ; $C438 BIT 2,(HL) ; $C43A JR Z,$C441 ; $C43C LD A,$3F ; $C43E CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_4 *$C441 LD A,($C3A1) ; $C444 AND $C0 ; $C446 CP $C0 ; $C448 JR NZ,$C44F ; $C44A LD A,$40 ; $C44C CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_5 *$C44F LD A,($C3A1) ; $C452 AND $C0 ; $C454 CP $40 ; $C456 JR NZ,$C45D ; $C458 LD A,$41 ; $C45A CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_6 *$C45D LD A,($C3A1) ; $C460 BIT 5,A ; $C462 JR Z,$C469 ; $C464 LD A,$42 ; $C466 CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_7 *$C469 LD A,($C3A1) ; $C46C BIT 3,A ; $C46E JP Z,$C51B ; $C471 LD A,$43 ; $C473 CALL $C5FC ; $C476 JP $C51B ; @label=DISPLAY_CREATURE_INFO_8 *$C479 INC C ; $C47A LD A,($C39F) ; $C47D LD D,A ; $C47E LD E,$15 ; {A = the creature's chaos/law value. $C480 CALL $BE0A ; } $C483 OR A ; $C484 JR Z,$C4B8 ; $C486 PUSH AF ; $C487 JP M,$C4A1 ; $C48A LD A,$45 ; {Set the colours to cyan on black ($45). $C48C LD ($5C8F),A ; } $C48F LD A,$47 ; {Print the message with ID $47 ((LAW). $C491 CALL $BAFB ; } $C494 POP AF ; $C495 ADD A,$30 ; $C497 CALL $BAD6 ; $C49A LD A,$29 ; $C49C CALL $BAD6 ; $C49F JR $C4B8 ; @label=DISPLAY_CREATURE_INFO_9 *$C4A1 LD A,$43 ; {Set the colours to magenta on black ($43). $C4A3 LD ($5C8F),A ; } $C4A6 LD A,$46 ; {Print the message with ID $46 ((CHAOS). $C4A8 CALL $BAFB ; } $C4AB POP AF ; $C4AC NEG ; $C4AE ADD A,$30 ; $C4B0 CALL $BAD6 ; $C4B3 LD A,$29 ; $C4B5 CALL $BAD6 ; @label=DISPLAY_CREATURE_INFO_10 *$C4B8 LD A,$44 ; {Set the colours to green on black ($44). $C4BA LD ($5C8F),A ; } $C4BD LD BC,$0404 ; $C4C0 LD A,($C39F) ; $C4C3 CP $10 ; $C4C5 JP M,$C4D2 ; $C4C8 CP $16 ; $C4CA JP P,$C4D2 ; $C4CD LD A,$44 ; $C4CF CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_11 *$C4D2 LD A,($C39D) ; $C4D5 OR A ; $C4D6 JR Z,$C4EC ; $C4D8 PUSH AF ; $C4D9 LD A,$28 ; $C4DB CALL $BAD6 ; $C4DE POP AF ; $C4DF CALL $BAFB ; $C4E2 LD A,$29 ; $C4E4 CALL $BAD6 ; $C4E7 LD A,$01 ; $C4E9 LD ($C3A0),A ; @label=DISPLAY_CREATURE_INFO_12 *$C4EC LD A,($C39F) ; $C4EF CP $13 ; $C4F1 JP M,$C4FE ; $C4F4 CP $1E ; $C4F6 JP P,$C4FE ; $C4F9 LD A,$42 ; $C4FB CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_13 *$C4FE LD HL,($AC12) ; $C501 LD DE,$01E1 ; $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 ; @label=DISPLAY_CREATURE_INFO_14 *$C516 LD A,$45 ; $C518 CALL $C5FC ; @label=DISPLAY_CREATURE_INFO_15 *$C51B LD A,$45 ; {Set the colours to cyan on black ($45). $C51D LD ($5C8F),A ; } $C520 LD A,$48 ; $C522 LD ($C3A3),A ; $C525 LD A,$0D ; $C527 LD ($C3A2),A ; $C52A LD HL,$C3A5 ; $C52D LD B,$07 ; @label=DISPLAY_CREATURE_INFO_16 *$C52F PUSH BC ; $C530 LD C,(HL) ; $C531 INC HL ; $C532 LD B,(HL) ; $C533 INC HL ; $C534 PUSH HL ; $C535 CALL $C612 ; $C538 POP HL ; $C539 POP BC ; $C53A DJNZ $C52F ; $C53C LD A,($C39E) ; $C53F BIT 0,A ; $C541 JR Z,$C56E ; $C543 LD A,$45 ; {Set the colours to cyan on black ($45). $C545 LD ($5C8F),A ; } $C548 LD A,$4F ; {Print the message with ID $4F (CASTING CHANCE=) at $C54A LD BC,$1204 ; screen position $1204. $C54D CALL $BAFB ; } $C550 LD A,($FFFF) ; $C553 INC A ; $C554 CP $0A ; $C556 JR NZ,$C55F ; $C558 LD A,$50 ; {Print the message with ID $50 (10). $C55A CALL $BAFB ; } $C55D JR $C564 ; @label=DISPLAY_CREATURE_INFO_17 *$C55F ADD A,$30 ; {Add $30 to get the character map code for the first $C561 CALL $BAD6 ; digit in the casting chance, and print it.)} @label=DISPLAY_CREATURE_INFO_18 *$C564 LD A,$30 ; {Print "0". $C566 CALL $BAD6 ; } $C569 LD A,$25 ; {Print "%". $C56B CALL $BAD6 ; } @label=DISPLAY_CREATURE_INFO_19 *$C56E LD A,($C39E) ; $C571 BIT 1,A ; $C573 JR Z,$C5C1 ; $C575 LD A,$46 ; {Set the colours to yellow on black ($46). $C577 LD ($5C8F),A ; } $C57A LD A,$51 ; {Print the message with ID $51 (SPELLS=) at screen $C57C LD BC,$1204 ; position $1204. $C57F CALL $BAFB ; } $C582 LD A,($C39F) ; $C585 LD D,A ; $C586 LD E,$14 ; {A = the wizard's spells value. $C588 CALL $BE0A ; } $C58B CP $0A ; {If A < 10 jump to #R$C5A6. $C58D JP M,$C5A6 ; } $C590 CP $14 ; {If A == 20 jump to #R$C59D. $C592 JR NZ,$C59D ; } $C594 LD A,$32 ; {Print "2". $C596 CALL $BAD6 ; } $C599 LD A,$00 ; $C59B JR $C5A6 ; @label=DISPLAY_CREATURE_INFO_20 *$C59D SUB $0A ; $C59F PUSH AF ; $C5A0 LD A,$31 ; $C5A2 CALL $BAD6 ; $C5A5 POP AF ; @label=DISPLAY_CREATURE_INFO_21 *$C5A6 ADD A,$30 ; $C5A8 CALL $BAD6 ; $C5AB LD BC,$120E ; {Print the message with ID $52 (ABILITY=) at screen $C5AE LD A,$52 ; position $120E. $C5B0 CALL $BAFB ; } $C5B3 LD A,($C39F) ; $C5B6 LD D,A ; $C5B7 LD E,$15 ; $C5B9 CALL $BE0A ; {A = ... TODO usually the creature's chaos/law value, $C5BC ADD A,$30 ; but when it's a wizard?} $C5BE CALL $BAD6 ; @label=DISPLAY_CREATURE_INFO_22 *$C5C1 LD A,($C39D) ; $C5C4 OR A ; $C5C5 JR Z,$C5DC ; $C5C7 LD HL,$C39E ; $C5CA RES 1,(HL) ; $C5CC LD ($C39F),A ; $C5CF XOR A ; $C5D0 LD ($C39D),A ; $C5D3 CALL $BBCC ; $C5D6 CALL $BBB0 ; Wait for keypress $C5D9 JP $C3E2 ; @label=DISPLAY_CREATURE_INFO_23 *$C5DC CALL $BBCC ; $C5DF CALL $BBB0 ; Wait for keypress $C5E2 CALL $C5EE ; Clear the screen. $C5E5 CALL $C0DD ; @label=DISPLAY_CREATURE_INFO_24 *$C5E8 POP HL ; {Restore the register states. $C5E9 POP DE ; $C5EA POP BC ; $C5EB POP AF ; } $C5EC EI ; Re-enable interrupts. $C5ED RET ; ; Clear screen. ; ; Used by the routines at #R$89F9, #R$9168, #R$92BE, #R$9385, #R$94A7, #R$95C7 ; and #R$C3B3. @label=CLEAR_SCREEN c$C5EE LD HL,$4000 ; $C5F1 LD DE,$4001 ; $C5F4 LD BC,$1AFF ; $C5F7 LD (HL),$00 ; $C5F9 LDIR ; $C5FB RET ; ; Routine at C5FC ; ; Used by the routine at #R$C3B3. @label=ROUTINE_C5FC c$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 ; ; Routine at C612 ; ; Used by the routine at #R$C3B3. @label=ROUTINE_C612 c$C612 LD A,($C3A3) ; $C615 PUSH AF ; $C616 CALL $BAFB ; $C619 POP AF ; $C61A INC A ; $C61B LD ($C3A3),A ; $C61E LD A,$47 ; {Set the colours to white on black ($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 ; {Set the colours to cyan on black ($45). $C639 LD ($5C8F),A ; } $C63C RET ; ; Routine at C63D ; ; Used by the routine at #R$C9D4. @label=ROUTINE_C63D c$C63D PUSH HL ; $C63E LD HL,($AC12) ; $C641 CALL $C703 ; $C644 LD A,L ; $C645 CP $10 ; $C647 POP HL ; $C648 RET ; ; Variable - maybe wizard location @label=MAYBE_WIZ_LOCATION b$C649 DEFB $BD,$E0 ; Variable - temp variable for shuffle TODO Why? @label=TEMP_VARIABLE_FOR_SHUFFLE b$C64B DEFB $0B ; Unknown purpose - shuffles computer player's spells around. TODO Why? ; ; Used by the routines at #R$84F7, #R$85F6, #R$96F3, #R$9A95, #R$9B76, #R$C78D, ; #R$C8C7, #R$C955, #R$CA19, #R$CA92, #R$CBC7, #R$CBCC and #R$CC56. @label=SHUFFLE_INVENTORY_MAYBE 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 @label=TEMP_VAR_C679 b$C679 DEFB $12 ; Routine at C67A ; ; Used by the routines at #R$C7BC, #R$CC56 and #R$CD92. @label=ROUTINE_C67A c$C67A LD HL,($AC12) ; $C67D LD A,(HL) ; $C67E OR A ; $C67F JR Z,$C6D2 ; $C681 LD DE,$0141 ; $C684 ADD HL,DE ; $C685 LD A,(HL) ; $C686 CP $04 ; $C688 JR Z,$C6D2 ; $C68A LD HL,($AC12) ; $C68D LD DE,$01E1 ; {A = corresponding data in arena table 4. $C690 ADD HL,DE ; $C691 LD A,(HL) ; } $C692 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $C694 LD HL,($AC0E) ; $C697 CP L ; $C698 JR Z,$C6D2 ; $C69A LD HL,($AC12) ; $C69D LD A,(HL) ; $C69E LD E,A ; $C69F DEC E ; $C6A0 DEC E ; $C6A1 LD D,$00 ; $C6A3 LD HL,$C6D4 ; $C6A6 ADD HL,DE ; $C6A7 LD A,(HL) ; $C6A8 LD ($C679),A ; $C6AB LD HL,($AC12) ; $C6AE CALL $C703 ; $C6B1 LD ($BEE9),HL ; $C6B4 LD HL,($AC14) ; $C6B7 CALL $C703 ; $C6BA LD ($BEEB),HL ; $C6BD CALL $BEEF ; $C6C0 LD A,($BEE8) ; $C6C3 LD E,A ; $C6C4 LD A,($C679) ; $C6C7 ADD A,$04 ; $C6C9 LD HL,$CC55 ; $C6CC ADD A,(HL) ; $C6CD SUB E ; $C6CE JP M,$C6D2 ; $C6D1 RET ; *$C6D2 XOR A ; $C6D3 RET ; ; Data block at C6D4 @label=VAR_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 ; Routine at C703 ; ; Used by the routines at #R$9786, #R$97D1, #R$980E, #R$9E38, #R$A075, #R$C63D, ; #R$C67A, #R$C710, #R$C7BC, #R$C8C7, #R$C955, #R$C9D4, #R$CA7C, #R$CA92, ; #R$CBC7, #R$CBCC, #R$CCC3 and #R$CD3C. @label=MAYBE_FIND_WIZ_COORDS c$C703 LD ($E005),HL ; $C706 CALL $E007 ; $C709 SRL H ; $C70B INC H ; $C70C SRL L ; $C70E INC L ; $C70F RET ; ; Computer wizard turn. ; ; Used by the routine at #R$AC36. @label=COMP_WIZ_TURN c$C710 LD HL,$AC1E ; $C713 LD A,($AC0E) ; {Point HL to the wizard's value in the table at #R$AC1E. $C716 LD D,$00 ; $C718 LD E,A ; $C719 ADD HL,DE ; } $C71A LD A,(HL) ; {If the wizard's value in the table at #R$AC1E is not $C71B OR A ; zero, jump to #R$C74E. $C71C JP NZ,$C74E ; } $C71F CALL $CA92 ; $C722 LD HL,($C649) ; $C725 LD A,(HL) ; $C726 CP $24 ; {If A == $24, $26 or $27 (IDs of Magic Wood, Magic $C728 JR Z,$C77A ; Castle or Dark Citadel respectively) jump to #R$C77A. $C72A CP $26 ; TODO Maybe getting the wizard to sit in place if in one $C72C JR Z,$C77A ; of these hideouts? $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 ; @label=COMP_WIZ_TURN_1 *$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 ; @label=COMP_WIZ_TURN_2 *$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 ; @label=COMP_WIZ_TURN_3 *$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 @label=VAR_C78B b$C78B DEFB $75,$E0 ; Routine at C78D ; ; Used by the routines at #R$9975 and #R$ACED. @label=ROUTINE_C78D 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 @label=VAR_C7BB b$C7BB DEFB $0B ; Routine at C7BC ; ; Used by the routines at #R$84F7, #R$9A95, #R$9B76 and #R$CA19. @label=ROUTINE_C7BC 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 ; ; Routine at C825 ; ; Used by the routines at #R$C78D and #R$CC56. @label=ROUTINE_C825 c$C825 LD HL,$D3F2 ; $C828 LD ($CD86),HL ; $C82B CALL $CDAA ; $C82E LD HL,$E01F ; $C831 LD ($AC12),HL ; $C834 LD B,$9F ; *$C836 PUSH BC ; $C837 LD HL,($AC12) ; $C83A LD A,(HL) ; $C83B CP $29 ; $C83D CALL P,$C859 ; $C840 LD HL,($AC12) ; $C843 LD DE,$0281 ; $C846 ADD HL,DE ; $C847 LD A,(HL) ; $C848 CP $29 ; $C84A CALL P,$C859 ; $C84D LD HL,($AC12) ; $C850 INC HL ; $C851 LD ($AC12),HL ; $C854 POP BC ; $C855 DJNZ $C836 ; $C857 RET ; ; Data block at C858 @label=VAR_C858 b$C858 DEFB $01 ; Routine at C859 ; ; Used by the routine at #R$C825. @label=ROUTINE_C859 c$C859 SUB $29 ; $C85B LD ($C858),A ; $C85E LD HL,$AC0E ; $C861 CP (HL) ; $C862 RET Z ; $C863 LD HL,($AC12) ; $C866 LD DE,$E01F ; $C869 XOR A ; $C86A SBC HL,DE ; $C86C LD A,L ; $C86D LD HL,($CD86) ; $C870 INC HL ; $C871 LD (HL),A ; $C872 LD HL,$E01F ; $C875 LD B,$9F ; *$C877 PUSH BC ; $C878 PUSH HL ; $C879 LD A,(HL) ; $C87A LD C,A ; $C87B OR A ; $C87C JR Z,$C8A1 ; $C87E CP $26 ; $C880 JP P,$C8A1 ; $C883 LD DE,$01E1 ; {A = corresponding data in arena table 4. $C886 ADD HL,DE ; $C887 LD A,(HL) ; } $C888 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $C88A LD E,A ; $C88B LD A,($C858) ; $C88E CP E ; $C88F JR NZ,$C8A1 ; $C891 LD HL,$C6D4 ; $C894 LD B,$00 ; $C896 ADD HL,BC ; $C897 LD A,(HL) ; $C898 SRL A ; $C89A SRL A ; $C89C LD HL,($CD86) ; $C89F ADD A,(HL) ; $C8A0 LD (HL),A ; *$C8A1 POP HL ; $C8A2 INC HL ; $C8A3 POP BC ; $C8A4 DJNZ $C877 ; $C8A6 LD HL,($CD86) ; $C8A9 LD A,($CC55) ; $C8AC ADD A,(HL) ; $C8AD LD (HL),A ; $C8AE LD HL,($CD86) ; $C8B1 INC HL ; $C8B2 INC HL ; $C8B3 LD ($CD86),HL ; $C8B6 RET ; ; Data block at C8B7 @label=VAR_C8B7 b$C8B7 DEFB $76,$E0 ; Routine at C8B9 ; ; Used by the routines at #R$C78D and #R$CA19. @label=ROUTINE_C8B9 c$C8B9 LD HL,$D3F3 ; $C8BC LD E,(HL) ; $C8BD LD HL,$E01F ; $C8C0 LD D,$00 ; $C8C2 ADD HL,DE ; $C8C3 LD ($C8B7),HL ; $C8C6 RET ; ; Routine at C8C7 ; ; Used by the routines at #R$ACED and #R$C78D. @label=ROUTINE_C8C7 c$C8C7 CALL $CDAA ; $C8CA LD HL,$D3F2 ; $C8CD LD ($CD86),HL ; $C8D0 LD HL,$CD2A ; $C8D3 LD ($CD3A),HL ; $C8D6 LD HL,$CD88 ; $C8D9 LD ($CD90),HL ; $C8DC LD HL,($AC14) ; $C8DF LD ($C78B),HL ; $C8E2 LD B,$08 ; *$C8E4 PUSH BC ; $C8E5 CALL $CD3C ; $C8E8 LD A,($AC14) ; $C8EB OR A ; $C8EC JR Z,$C913 ; $C8EE LD HL,($C8B7) ; $C8F1 CALL $C703 ; $C8F4 LD ($BEE9),HL ; $C8F7 LD HL,($AC14) ; $C8FA CALL $C703 ; $C8FD LD ($BEEB),HL ; $C900 CALL $BEEF ; $C903 LD A,($BEE8) ; $C906 LD HL,($CD86) ; $C909 LD (HL),A ; $C90A LD HL,($CD90) ; $C90D LD A,(HL) ; $C90E LD HL,($CD86) ; $C911 INC HL ; $C912 LD (HL),A ; *$C913 LD HL,($CD90) ; $C916 INC HL ; $C917 LD ($CD90),HL ; $C91A LD HL,($CD86) ; $C91D INC HL ; $C91E INC HL ; $C91F LD ($CD86),HL ; $C922 LD HL,($C78B) ; $C925 LD ($AC14),HL ; $C928 POP BC ; $C929 DJNZ $C8E4 ; $C92B LD HL,$D3F2 ; $C92E LD A,$07 ; $C930 CALL $C64C ; $C933 LD A,$01 ; $C935 LD ($AC30),A ; $C938 LD HL,($C78B) ; $C93B LD ($AC14),HL ; $C93E LD ($AC12),HL ; $C941 CALL $C703 ; $C944 LD ($BC94),HL ; $C947 LD ($AC0A),HL ; $C94A LD HL,$D401 ; $C94D LD ($CD86),HL ; $C950 LD BC,($BC94) ; $C954 RET ; ; Maybe computer wizard movement routine ; ; Used by the routines at #R$9975, #R$9ADD, #R$9B76 and #R$B0A8. @label=MAYBE_COMP_WIZARD_MOVEMENT 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 ; ; Routine at C9D4 @label=ROUTINE_C9D4 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$9975, #R$9ADD, #R$9B76 and ; #R$B0A8. *$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 @label=VAR_CA16 b$CA16 DEFB $65,$E0 ; Data block at CA18 @label=VAR_CA18 b$CA18 DEFB $0F ; Routine at CA19 ; ; Used by the routine at #R$C78D. @label=ROUTINE_CA19 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 ; {A = corresponding data in arena table 4. $CA37 ADD HL,DE ; $CA38 LD A,(HL) ; } $CA39 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $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 ; ; Routine at CA7C ; ; Used by the routines at #R$C955 and #R$CA19. @label=ROUTINE_CA7C 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 ; ; Routine at CA92 ; ; Used by the routines at #R$ACED and #R$C710. @label=ROUTINE_CA92 c$CA92 CALL $CDAA ; $CA95 LD HL,$E01F ; {Going to loop through every space in arena table 1. $CA98 LD B,$9F ; *$CA9A PUSH BC ; $CA9B PUSH HL ; } $CA9C LD DE,$0281 ; {HL = corresponding space in arena table 5. $CA9F ADD HL,DE ; } $CAA0 LD A,(HL) ; A = ID of object in arena table 5 $CAA1 POP HL ; $CAA2 SUB $29 ; {If it's a wizard jump to #R$CAAD. $CAA4 JP P,$CAAD ; } $CAA7 LD A,(HL) ; {A = ID of object in arena table 1. $CAA8 SUB $29 ; } $CAAA JP M,$CAB7 ; If it's not a wizard jump to #R$CAB7. *$CAAD LD E,A ; It's a wizard. Store the ID in E. $CAAE LD A,($AC0E) ; A = current wizard ID (#R$AC0E) $CAB1 CP E ; {If it's not the current wizard jump to #R$CAB7. $CAB2 JR NZ,$CAB7 ; } $CAB4 LD ($AC14),HL ; Set current wizard's location in #R$AC14. *$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) ; A = ID from the space in arena table 1 where the wizard ; is located. $CAD4 CP $13 ; {If A < $13 (indicating a non-flying mount - see the IDs $CAD6 JP M,$CAE9 ; of the creatures at #R$7D60) jump to #R$CAE9.} $CAD9 CP $16 ; {If A >= $16 (indicating either the wizard himself, $CADB JP P,$CAE9 ; possibly hiding in a tree or castle) jump to #R$CAE9.} $CADE CALL $CBB9 ; $CAE1 LD A,$01 ; {Set #R$AC31, indicating that the wizard can fly. $CAE3 LD ($AC31),A ; } $CAE6 JP $CBA2 ; *$CAE9 CP $29 ; {If A < $29, indicating that the wizard is hiding, jump $CAEB JP M,$CB06 ; to #R$CB06.} $CAEE SUB $29 ; {HL = location ofthe current wizard's status value in $CAF0 LD HL,$AC16 ; the table at #R$AC16. $CAF3 LD D,$00 ; $CAF5 LD E,A ; $CAF6 ADD HL,DE ; } $CAF7 BIT 5,(HL) ; {If bit 5 is set (indicating that the wizard has magic $CAF9 JR Z,$CB06 ; wings) continue, otherwise jump to #R$CB06.} $CAFB CALL $CBC7 ; $CAFE LD A,$01 ; {Set #R$AC31, indicating that the wizard can fly. $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 ; {A = corresponding data in arena table 4. $CB47 ADD HL,DE ; $CB48 LD A,(HL) ; } $CB49 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $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 ; ; Unused @label=VAR_CBB8 s$CBB8 DEFS $01 ; Routine at CBB9 ; ; Used by the routine at #R$CA92. @label=ROUTINE_CBB9 c$CBB9 LD D,A ; $CBBA LD E,$11 ; {A = the creature's movement allowance. $CBBC CALL $BE0A ; } $CBBF SLA A ; $CBC1 INC A ; $CBC2 LD ($CBB8),A ; $CBC5 JR $CBCC ; ; Routine at CBC7 ; ; Used by the routine at #R$CA92. @label=ROUTINE_CBC7 c$CBC7 LD A,$0D ; $CBC9 LD ($CBB8),A ; ; Routine at CBCC ; ; Used by the routine at #R$CBB9. @label=ROUTINE_CBCC 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 @label=VAR_CC55 b$CC55 DEFB $00 ; Routine at CC56 ; ; Used by the routines at #R$9C59, #R$9D8A, #R$9EF9 and #R$B8DD. @label=R_CC56_MAYBE_COMP_PICK_TARGET 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 ; ; Routine at CCC3 @label=ROUTINE_CCC3 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 ; {Maybe checking if creature is undead? $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 @label=VAR_CD2A_MAYBE_TABLE b$CD2A DEFB $FF,$FF,$FF,$00,$FF,$01,$00,$01 $CD32 DEFB $01,$01,$01,$00,$01,$FF,$00,$FF ; Data block at CD3A @label=VAR_CD3A b$CD3A DEFB $3A,$CD ; Routine at CD3C ; ; Used by the routines at #R$98F1, #R$9C0F, #R$9F50, #R$C8C7 and #R$CA92. @label=ROUTINE_CD3C 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 ; *$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 ; *$CD7E LD HL,$0000 ; $CD81 LD ($AC14),HL ; $CD84 JR $CD71 ; ; Data block at CD86 @label=VAR_CD86 b$CD86 DEFB $F5,$D3,$51,$57,$45,$44,$43,$58 $CD8E DEFB $5A,$41 ; Data block at CD90 @label=VAR_CD90 b$CD90 DEFB $90,$CD ; Routine at CD92 ; ; Used by the routines at #R$CA92, #R$CBC7 and #R$CBCC. @label=ROUTINE_CD92 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 ; ; Init D3F2 ; ; Used by the routines at #R$C7BC, #R$C825, #R$C8C7, #R$C955, #R$CA92, #R$CBC7 ; and #R$CBCC. @label=MAYBE_INIT_D3F2_STRIPES c$CDAA LD HL,$D3F2 ; {Sets the table at #R$D3F2 to have an alternating $CDAD LD B,$9E ; pattern of 0 and 255 (or -1). TODO Why? *$CDAF LD (HL),$00 ; $CDB1 INC HL ; $CDB2 LD (HL),$FF ; $CDB4 INC HL ; $CDB5 DJNZ $CDAF ; } $CDB7 RET ; ; Routine at CDB8 @label=ROUTINE_CDB8 c$CDB8 LD HL,($CD86) ; $CDBB DEC HL ; $CDBC DEC HL ; $CDBD LD ($CD86),HL ; ; This entry point is used by the routine at #R$BBE7. *$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 ; ; Table - text message information ; ; Lists information about the creatures and the text messages starting at ; #R$CFCB. Organised in sets of 4 bytes. ; . ; #LIST(data) ; { First two bytes (swapped around) list the memory address of the message } ; { Third byte is the length of the message. } ; { The last byte is zero. } ; LIST# @label=TABLE_TEXT_MESSAGES_2 b$CDD3 DEFB $CB,$CF,$20,$00 ; #R$CFCB $00 Empty string $CDD7 DEFB $CB,$CF,$20,$00 ; #R$CFCB $01 Empty string $CDDB DEFB $63,$E4,$0A,$00 ; #R$E463 $02 KING COBRA $CDDF DEFB $D5,$E4,$09,$00 ; #R$E4D5 $03 DIRE WOLF $CDE3 DEFB $21,$E5,$06,$00 ; #R$E521 $04 GOBLIN $CDE7 DEFB $47,$E5,$09,$00 ; #R$E547 $05 CROCODILE $CDEB DEFB $B9,$E5,$04,$00 ; #R$E5B9 $06 FAUN $CDEF DEFB $DF,$E5,$04,$00 ; #R$E5DF $07 LION $CDF3 DEFB $2B,$E6,$03,$00 ; #R$E62B $08 ELF $CDF7 DEFB $77,$E6,$03,$00 ; #R$E677 $09 ORC $CDFB DEFB $9F,$E7,$04,$00 ; #R$E79F $0A BEAR $CDFF DEFB $C5,$E7,$07,$00 ; #R$E7C5 $0B GORILLA $CE03 DEFB $0E,$E8,$04,$00 ; #R$E80E $0C OGRE $CE07 DEFB $C9,$E8,$05,$00 ; #R$E8C9 $0D HYDRA $CE0B DEFB $EF,$E8,$09,$00 ; #R$E8EF $0E GIANT RAT $CE0F DEFB $3B,$E9,$05,$00 ; #R$E93B $0F GIANT $CE13 DEFB $51,$E6,$05,$00 ; #R$E651 $10 HORSE $CE17 DEFB $33,$E7,$07,$00 ; #R$E733 $11 UNICORN $CE1B DEFB $15,$E9,$07,$00 ; #R$E915 $12 CENTAUR $CE1F DEFB $7D,$E8,$07,$00 ; #R$E87D $13 PEGASUS $CE23 DEFB $05,$E6,$07,$00 ; #R$E605 $14 GRYPHON $CE27 DEFB $E6,$E6,$09,$00 ; #R$E6E6 $15 MANTICORE $CE2B DEFB $89,$E4,$03,$00 ; #R$E489 $16 BAT $CE2F DEFB $6D,$E5,$0C,$00 ; #R$E56D $17 GREEN DRAGON $CE33 DEFB $9D,$E6,$0A,$00 ; #R$E69D $18 RED DRAGON $CE37 DEFB $61,$E9,$0D,$00 ; #R$E961 $19 GOLDEN DRAGON $CE3B DEFB $57,$E8,$05,$00 ; #R$E857 $1A HARPY $CE3F DEFB $A3,$E8,$05,$00 ; #R$E8A3 $1B EAGLE $CE43 DEFB $93,$E5,$07,$00 ; #R$E593 $1C VAMPIRE $CE47 DEFB $59,$E7,$05,$00 ; #R$E759 $1D GHOST $CE4B DEFB $FB,$E4,$07,$00 ; #R$E4FB $1E SPECTRE $CE4F DEFB $7C,$E7,$06,$00 ; #R$E77C $1F WRAITH $CE53 DEFB $EB,$E7,$08,$00 ; #R$E7EB $20 SKELETON $CE57 DEFB $34,$E8,$06,$00 ; #R$E834 $21 ZOMBIE $CE5B DEFB $AF,$E4,$04,$00 ; #R$E4AF $22 BLOB $CE5F DEFB $C3,$E6,$04,$00 ; #R$E6C3 $23 FIRE $CE63 DEFB $F3,$E9,$0A,$00 ; #R$E9F3 $24 MAGIC WOOD $CE67 DEFB $D0,$E9,$0B,$00 ; #R$E9D0 $25 SHADOW WOOD $CE6B DEFB $AD,$E9,$0C,$00 ; #R$E9AD $26 MAGIC CASTLE $CE6F DEFB $87,$E9,$0C,$00 ; #R$E987 $27 DARK CITADEL $CE73 DEFB $16,$EA,$04,$00 ; #R$EA16 $28 WALL $CE77 DEFB $39,$EA,$06,$00 ; #R$EA39 $29 $CE7B DEFB $5C,$EA,$07,$00 ; #R$EA5C $2A $CE7F DEFB $7F,$EA,$0A,$00 ; #R$EA7F $2B $CE83 DEFB $A2,$EA,$08,$00 ; #R$EAA2 $2C $CE87 DEFB $C5,$EA,$05,$00 ; #R$EAC5 $2D $CE8B DEFB $E8,$EA,$06,$00 ; #R$EAE8 $2E $CE8F DEFB $0B,$EB,$0A,$00 ; #R$EB0B $2F $CE93 DEFB $2E,$EB,$0C,$00 ; #R$EB2E $30 $CE97 DEFB $EA,$CF,$09,$00 ; #R$CFEA $31 (ASLEEP) $CE9B DEFB $F3,$CF,$07,$00 ; #R$CFF3 $32 (DEAD) $CE9F DEFB $FA,$CF,$20,$00 ; #R$CFFA $33 DISMOUNT WIZARD? (Y OR N) $CEA3 DEFB $1A,$D0,$20,$00 ; #R$D01A $34 ENGAGED TO ENEMY $CEA7 DEFB $3A,$D0,$20,$00 ; #R$D03A $35 OUT OF RANGE $CEAB DEFB $5A,$D0,$0E,$00 ; #R$D05A $36 (FLYING) $CEAF DEFB $68,$D0,$07,$00 ; #R$D068 $37 'S TURN $CEB3 DEFB $6F,$D0,$15,$00 ; #R$D06F $38 MOVEMENT POINTS LEFT= $CEB7 DEFB $84,$D0,$19,$00 ; #R$D084 $39 UNDEAD-CANNOT BE ATTACKED $CEBB DEFB $9E,$D0,$0F,$00 ; #R$D09E $3A MOVEMENT RANGE= $CEBF DEFB $AD,$D0,$14,$00 ; #R$D0AD $3B RANGED COMBAT,RANGE= $CEC3 DEFB $C1,$D0,$10,$00 ; #R$D0C1 $3C NO LINE OF SIGHT $CEC7 DEFB $D1,$D0,$20,$00 ; #R$D0D1 $3D PRESS ANY KEY $CECB DEFB $F1,$D0,$05,$00 ; #R$D0F1 $3E KNIFE $CECF DEFB $F6,$D0,$05,$00 ; #R$D0F6 $3F SWORD $CED3 DEFB $FB,$D0,$06,$00 ; #R$D0FB $40 ARMOUR $CED7 DEFB $01,$D1,$06,$00 ; #R$D101 $41 SHIELD $CEDB DEFB $07,$D1,$06,$00 ; #R$D107 $42 FLYING $CEDF DEFB $0D,$D1,$06,$00 ; #R$D10D $43 SHADOW $CEE3 DEFB $13,$D1,$05,$00 ; #R$D113 $44 MOUNT $CEE7 DEFB $18,$D1,$06,$00 ; #R$D118 $45 UNDEAD $CEEB DEFB $1E,$D1,$07,$00 ; #R$D11E $46 (CHAOS $CEEF DEFB $25,$D1,$05,$00 ; #R$D125 $47 (LAW $CEF3 DEFB $2A,$D1,$07,$00 ; #R$D12A $48 COMBAT= $CEF7 DEFB $31,$D1,$0E,$00 ; #R$D131 $49 RANGED COMBAT= $CEFB DEFB $3F,$D1,$06,$00 ; #R$D13F $4A RANGE= $CEFF DEFB $45,$D1,$08,$00 ; #R$D145 $4B DEFENCE= $CF03 DEFB $4D,$D1,$13,$00 ; #R$D14D $4C MOVEMENT ALLOWANCE= $CF07 DEFB $60,$D1,$11,$00 ; #R$D160 $4D MANOEUVRE RATING= $CF0B DEFB $71,$D1,$11,$00 ; #R$D171 $4E MAGIC RESISTANCE= $CF0F DEFB $82,$D1,$0F,$00 ; #R$D182 $4F CASTING CHANCE= $CF13 DEFB $91,$D1,$02,$00 ; #R$D191 $50 10 $CF17 DEFB $93,$D1,$07,$00 ; #R$D193 $51 SPELLS= $CF1B DEFB $9A,$D1,$08,$00 ; #R$D19A $52 ABILITY= $CF1F DEFB $A2,$D1,$09,$00 ; #R$D1A2 $53 'S SPELLS $CF23 DEFB $AB,$D1,$0B,$00 ; #R$D1AB $54 SPELL FAILS $CF27 DEFB $B6,$D1,$0E,$00 ; #R$D1B6 $55 SPELL SUCCEEDS $CF2B DEFB $C4,$D1,$0D,$00 ; #R$D1C4 $56 IS THE WINNER $CF2F DEFB $D1,$D1,$20,$00 ; #R$D1D1 $57 PRESS KEYS 1 TO 4 $CF33 DEFB $F1,$D1,$20,$00 ; #R$D1F1 $58 PRESS '0' TO RETURN TO MAIN MENU $CF37 DEFB $11,$D2,$10,$00 ; #R$D211 $59 1.EXAMINE SPELLS $CF3B DEFB $21,$D2,$0E,$00 ; #R$D221 $5A 2.SELECT SPELL $CF3F DEFB $2F,$D2,$0F,$00 ; #R$D22F $5B 3.EXAMINE BOARD $CF43 DEFB $3E,$D2,$14,$00 ; #R$D23E $5C 4.CONTINUE WITH GAME $CF47 DEFB $52,$D2,$0A,$00 ; #R$D252 $5D DISBELIEVE $CF4B DEFB $5C,$D2,$18,$00 ; #R$D25C $5E ILLUSION? (PRESS Y OR N) $CF4F DEFB $74,$D2,$0C,$00 ; #R$D274 $5F 'S CREATIONS $CF53 DEFB $80,$D2,$0A,$00 ; #R$D280 $60 MAGIC FIRE $CF57 DEFB $8A,$D2,$0A,$00 ; #R$D28A $61 GOOEY BLOB $CF5B DEFB $94,$D2,$09,$00 ; #R$D294 $62 LIGHTNING $CF5F DEFB $9D,$D2,$09,$00 ; #R$D29D $63 VENGEANCE $CF63 DEFB $A6,$D2,$0A,$00 ; #R$D2A6 $64 DARK POWER $CF67 DEFB $B0,$D2,$06,$00 ; #R$D2B0 $65 DECREE $CF6B DEFB $B6,$D2,$07,$00 ; #R$D2B6 $66 JUSTICE $CF6F DEFB $BD,$D2,$05,$00 ; #R$D2BD $67 LAW-1 $CF73 DEFB $C2,$D2,$05,$00 ; #R$D2C2 $68 LAW-2 $CF77 DEFB $C7,$D2,$07,$00 ; #R$D2C7 $69 CHAOS-1 $CF7B DEFB $CE,$D2,$07,$00 ; #R$D2CE $6A CHAOS-2 $CF7F DEFB $D5,$D2,$0C,$00 ; #R$D2D5 $6B MAGIC SHIELD $CF83 DEFB $E1,$D2,$0C,$00 ; #R$D2E1 $6C MAGIC ARMOUR $CF87 DEFB $ED,$D2,$0B,$00 ; #R$D2ED $6D MAGIC SWORD $CF8B DEFB $F8,$D2,$0B,$00 ; #R$D2F8 $6E MAGIC KNIFE $CF8F DEFB $03,$D3,$09,$00 ; #R$D303 $6F MAGIC BOW $CF93 DEFB $11,$D3,$0A,$00 ; #R$D311 $70 MAGIC BOLT $CF97 DEFB $0C,$D3,$05,$00 ; #R$D30C $71 BLIND $CF9B DEFB $1B,$D3,$07,$00 ; #R$D31B $72 TEMPEST $CF9F DEFB $22,$D3,$0A,$00 ; #R$D322 $73 RAISE DEAD $CFA3 DEFB $2C,$D3,$08,$00 ; #R$D32C $74 TELEPORT $CFA7 DEFB $34,$D3,$0A,$00 ; #R$D334 $75 SUBVERSION $CFAB DEFB $3E,$D3,$07,$00 ; #R$D33E $76 TURMOIL $CFAF DEFB $45,$D3,$0C,$00 ; #R$D345 $77 DEAD REVENGE $CFB3 DEFB $51,$D3,$0C,$00 ; #R$D351 $78 CONSECRATION $CFB7 DEFB $5D,$D3,$06,$00 ; #R$D35D $79 DISPEL $CFBB DEFB $63,$D3,$0D,$00 ; #R$D363 $7A COUNTER SPELL $CFBF DEFB $70,$D3,$0B,$00 ; #R$D370 $7B MAGIC WINGS $CFC3 DEFB $7B,$D3,$0B,$00 ; #R$D37B $7C MAGIC SLEEP $CFC7 DEFB $86,$D3,$0B,$00 ; #R$D386 $7D SHADOW FORM ; (Empty string of characters) @label=STR_EMPTY_STRING t$CFCB DEFM " " ; (ASLEEP) @label=STR_ASLEEP_BRACKETS t$CFEA DEFM " (ASLEEP)" ; (DEAD) @label=STR_DEAD_BRACKETS t$CFF3 DEFM " (DEAD)" ; DISMOUNT WIZARD? (Y OR N) @label=STR_DISMOUNT t$CFFA DEFM "DISMOUNT WIZARD? (Y OR N) " ; ENGAGED TO ENEMY @label=STR_ENGAGED t$D01A DEFM "ENGAGED TO ENEMY " ; OUT OF RANGE @label=STR_OUT_OF_RANGE t$D03A DEFM "OUT OF RANGE " ; (FLYING) @label=STR_FLYING_BRACKETS t$D05A DEFM " (FLYING) " ; 'S TURN @label=STR_S_TURN t$D068 DEFM "'S TURN" ; MOVEMENT POINTS LEFT= @label=STR_MOVE_POINTS_LEFT t$D06F DEFM "MOVEMENT POINTS LEFT=" ; UNDEAD-CANNOT BE ATTACKED @label=STR_UNDEAD_CANNOT_ATTACK t$D084 DEFM "UNDEAD-CANNOT BE ATTACKED " ; MOVEMENT RANGE= @label=STR_MOVEMENT_RANGE t$D09E DEFM "MOVEMENT RANGE=" ; RANGED COMBAT,RANGE= @label=STR_COMBAT_RANGE t$D0AD DEFM "RANGED COMBAT,RANGE=" ; NO LINE OF SIGHT @label=STR_NO_LOS t$D0C1 DEFM "NO LINE OF SIGHT" ; PRESS ANY KEY @label=STR_PRESS_ANY_KEY t$D0D1 DEFM " PRESS ANY KEY " ; KNIFE @label=STR_KNIFE t$D0F1 DEFM "KNIFE" ; SWORD @label=STR_SWORD t$D0F6 DEFM "SWORD" ; ARMOUR @label=STR_ARMOUR t$D0FB DEFM "ARMOUR" ; SHIELD @label=STR_SHIELD t$D101 DEFM "SHIELD" ; FLYING @label=STR_FLYING t$D107 DEFM "FLYING" ; SHADOW @label=STR_SHADOW t$D10D DEFM "SHADOW" ; MOUNT @label=STR_MOUNT t$D113 DEFM "MOUNT" ; UNDEAD @label=STR_UNDEAD t$D118 DEFM "UNDEAD" ; (CHAOS @label=STR_CHAOS t$D11E DEFM "(CHAOS " ; (LAW @label=STR_LAW t$D125 DEFM "(LAW " ; COMBAT= @label=STR_COMBAT t$D12A DEFM "COMBAT=" ; RANGED COMBAT= @label=STR_RANGED_COMBAT t$D131 DEFM "RANGED COMBAT=" ; RANGE= @label=STR_RANGE t$D13F DEFM "RANGE=" ; DEFENCE= @label=STR_DEFENCE t$D145 DEFM "DEFENCE=" ; MOVEMENT ALLOWANCE= @label=STR_MOVEMENT t$D14D DEFM "MOVEMENT ALLOWANCE=" ; MANOEUVRE RATING= @label=STR_MANOEUVRE t$D160 DEFM "MANOEUVRE RATING=" ; MAGIC RESISTANCE= @label=STR_MAGIC_RESISTANCE t$D171 DEFM "MAGIC RESISTANCE=" ; CASTING CHANCE= @label=STR_CHANCE t$D182 DEFM "CASTING CHANCE=" ; 10 @label=STR_10 t$D191 DEFM "10" ; SPELLS= @label=STR_SPELLS t$D193 DEFM "SPELLS=" ; ABILITY= @label=STR_ABILITY t$D19A DEFM "ABILITY=" ; 'S SPELLS @label=STR_S_SPELLS t$D1A2 DEFM "'S SPELLS" ; SPELL FAILS @label=STR_FAILS t$D1AB DEFM "SPELL FAILS" ; SPELL SUCCEEDS @label=STR_SUCCEEDS t$D1B6 DEFM "SPELL SUCCEEDS" ; IS THE WINNER @label=STR_IS_THE_WINNER t$D1C4 DEFM "IS THE WINNER" ; PRESS KEYS 1 TO 4 @label=STR_PRESS_1_TO_4 t$D1D1 DEFM " PRESS KEYS 1 TO 4 " ; PRESS '0' TO RETURN TO MAIN MENU @label=STR_PRESS_0 t$D1F1 DEFM "PRESS '0' TO RETURN TO MAIN MENU" ; 1.EXAMINE SPELLS @label=STR_1_EXAMINE t$D211 DEFM "1.EXAMINE SPELLS" ; 2.SELECT SPELL @label=STR_2_SELECT t$D221 DEFM "2.SELECT SPELL" ; 3.EXAMINE BOARD @label=STR_3_EXAMINE t$D22F DEFM "3.EXAMINE BOARD" ; 4.CONTINUE WITH GAME @label=STR_4_CONTINUE t$D23E DEFM "4.CONTINUE WITH GAME" ; DISBELIEVE @label=STR_DISBELIEVE t$D252 DEFM "DISBELIEVE" ; ILLUSION? (PRESS Y OR N) @label=STR_ILLUSION t$D25C DEFM "ILLUSION? (PRESS Y OR N)" ; 'S CREATIONS @label=STR_S_CREATIONS t$D274 DEFM "'S CREATIONS" ; MAGIC FIRE @label=STR_MAGIC_FIRE t$D280 DEFM "MAGIC FIRE" ; GOOEY BLOB @label=STR_GOOEY_BLOB t$D28A DEFM "GOOEY BLOB" ; LIGHTNING @label=STR_LIGHTNING t$D294 DEFM "LIGHTNING" ; VENGEANCE @label=STR_VENGEANCE t$D29D DEFM "VENGEANCE" ; DARK POWER @label=STR_DARK_POWER t$D2A6 DEFM "DARK POWER" ; DECREE @label=STR_DECREE t$D2B0 DEFM "DECREE" ; JUSTICE @label=STR_JUSTICE t$D2B6 DEFM "JUSTICE" ; LAW-1 @label=STR_LAW_1 t$D2BD DEFM "LAW-1" ; LAW-2 @label=STR_LAW_2 t$D2C2 DEFM "LAW-2" ; CHAOS-1 @label=STR_CHAOS_1 t$D2C7 DEFM "CHAOS-1" ; CHAOS-2 @label=STR_CHAOS_2 t$D2CE DEFM "CHAOS-2" ; MAGIC SHIELD @label=STR_MAGIC_SHIELD t$D2D5 DEFM "MAGIC SHIELD" ; MAGIC ARMOUR @label=STR_MAGIC_ARMOUR t$D2E1 DEFM "MAGIC ARMOUR" ; MAGIC SWORD @label=STR_MAGIC_SWORD t$D2ED DEFM "MAGIC SWORD" ; MAGIC KNIFE @label=STR_MAGIC_KNIFE t$D2F8 DEFM "MAGIC KNIFE" ; MAGIC BOW @label=STR_MAGIC_BOW t$D303 DEFM "MAGIC BOW" ; BLIND @label=STR_BLIND t$D30C DEFM "BLIND" ; MAGIC BOLT @label=STR_MAGIC_BOLT t$D311 DEFM "MAGIC BOLT" ; TEMPEST @label=STR_TEMPEST t$D31B DEFM "TEMPEST" ; RAISE DEAD @label=STR_RAISE_DEAD t$D322 DEFM "RAISE DEAD" ; TELEPORT @label=STR_TELEPORT t$D32C DEFM "TELEPORT" ; SUBVERSION @label=STR_SUBVERSION t$D334 DEFM "SUBVERSION" ; TURMOIL @label=STR_TURMOIL t$D33E DEFM "TURMOIL" ; DEAD REVENGE @label=STR_DEAD_REVENGE t$D345 DEFM "DEAD REVENGE" ; CONSECRATION @label=STR_CONSECRATION t$D351 DEFM "CONSECRATION" ; DISPEL @label=STR_DISPEL t$D35D DEFM "DISPEL" ; COUNTER SPELL @label=STR_COUNTER_SPELL t$D363 DEFM "COUNTER SPELL" ; MAGIC WINGS @label=STR_MAGIC_WINGS t$D370 DEFM "MAGIC WINGS" ; MAGIC SLEEP @label=STR_MAGIC_SLEEP t$D37B DEFM "MAGIC SLEEP" ; SHADOW FORM @label=STR_SHADOW_FORM t$D386 DEFM "SHADOW FORM" ; Variable - used by the routine at #R$D392 when identifying which of the ; creatures are controlled by a particular wizard. @label=IDENTIFY_WIZARD_ID b$D391 DEFB $01 ; Flashes the background of the wizard's creatures to identify them. Used when ; it's the start of a wizard's turn, or when pressing a number key on the ; arena. ; ; Used by the routines at #R$AC36 and #R$BC96. @label=IDENTIFY_WIZARDS_CREATURES c$D392 DI ; $D393 PUSH AF ; $D394 PUSH BC ; $D395 PUSH DE ; $D396 PUSH HL ; $D397 LD HL,$E01F ; HL = first space in arena table 1 $D39A LD B,$9F ; B = $9F. We're going to loop over arena table 1. *$D39C PUSH HL ; $D39D PUSH BC ; $D39E LD A,(HL) ; Get the ID of the creature at the current space. $D39F OR A ; If it's 0 (there's nothing there), jump to #R$D3BE. $D3A0 JR Z,$D3BE ; $D3A2 LD DE,$0141 ; {There was something there. A = the data at $D3A5 ADD HL,DE ; corresponding place in arena table 3. $D3A6 LD A,(HL) ; } $D3A7 CP $04 ; {If the data was $04 (indicating a dead creature) jump $D3A9 JR Z,$D3BE ; to #R$D3BE.} $D3AB LD DE,$00A0 ; {Point HL to the corresponding space in arena table 4. $D3AE ADD HL,DE ; } $D3AF LD A,(HL) ; A = data from arena table 4 $D3B0 LD DE,$01E1 ; {HL is pointed back to another arena table - but is it $D3B3 SBC HL,DE ; ever used?} $D3B5 AND $07 ; Reset everything but the least 3 significant bits, which ; are the ones storing the owning wizard's ID. $D3B7 LD E,A ; {If the wizard whose creatures we're trying to identify $D3B8 LD A,($D391) ; owns the object at the current space, jump to #R$D3C8. $D3BB CP E ; $D3BC JR Z,$D3C8 ; } *$D3BE POP BC ; {Move to the next space and continue the loop, if there $D3BF POP HL ; are more spaces to examine. $D3C0 INC HL ; } $D3C1 DJNZ $D39C ; $D3C3 POP HL ; $D3C4 POP DE ; $D3C5 POP BC ; $D3C6 POP AF ; $D3C7 RET ; *$D3C8 LD ($E005),HL ; $D3CB LD A,$02 ; $D3CD CALL $1601 ; Chan-open ROM subroutine. $D3D0 CALL $E007 ; $D3D3 LD A,$16 ; $D3D5 RST $10 ; $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 ; $D3DF RST $10 ; $D3E0 LD A,$16 ; $D3E2 RST $10 ; $D3E3 LD A,H ; $D3E4 INC A ; $D3E5 RST $10 ; $D3E6 LD A,L ; $D3E7 RST $10 ; $D3E8 LD A,$8F ; $D3EA RST $10 ; $D3EB LD A,$8F ; $D3ED RST $10 ; $D3EE JR $D3BE ; ; Data block at D3F0 b$D3F0 DEFB $FE,$4B ; Mysterious table, seemingly used to decide where computer players move. @label=MAYBE_AI_TABLE b$D3F2 DEFB $3F,$46,$2D,$8A,$18,$46,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D402 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D412 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D422 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D432 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D442 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D452 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D462 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D472 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D482 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D492 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4A2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4B2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4C2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4D2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4E2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D4F2 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D502 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D512 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF $D522 DEFB $00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$CD,$D1,$97,$CD $D532 DEFB $56,$FE,$3E,$00,$32,$8D,$5C,$3E $D53A DEFB $FF,$32,$8E,$5C,$CD,$DD,$C0,$FB $D542 DEFB $76,$3E,$03,$32,$91,$5C,$CD,$D7 $D54A DEFB $BE,$3A,$CE,$97,$47,$C5,$CD,$96 $D552 DEFB $BC,$CD,$BF,$02,$FE,$53,$28,$0D $D55A DEFB $FE,$4B,$20,$F2,$C1,$21,$B1,$C2 $D562 DEFB $CD,$F9,$C2,$FB,$C9,$CD,$CC,$BB $D56A DEFB $CD,$86,$97,$F2,$77,$98,$CD,$D7 $D572 DEFB $BE,$01,$00,$16,$3E,$45,$32,$8F $D57A DEFB $5C,$3E,$35,$CD,$FB,$BA,$CD,$CC $D582 DEFB $BB,$CD,$B0,$BB,$18,$C8,$2A,$12 $D58A DEFB $AC,$7E,$B7,$28,$14,$3A,$7B,$93 $D592 DEFB $FE,$24,$F2,$3F,$98,$2A,$12,$AC $D59A DEFB $11,$41,$01,$19,$7E,$FE,$04,$20 $D5A2 DEFB $AD,$CD,$F1,$98,$20,$A8,$CD,$0F $D5AA DEFB $9C,$20,$A3,$CD,$DB,$98,$28,$19 $D5B2 DEFB $3E,$45,$32,$8F,$5C,$CD,$D7,$BE $D5BA DEFB $3E,$3C,$01,$00,$16,$CD,$FB,$BA $D5C2 DEFB $CD,$CC,$BB,$CD,$B0,$BB,$C3,$3F $D5CA DEFB $98,$CD,$8A,$A1,$3A,$67,$91,$B7 $D5D2 DEFB $28,$13,$CD,$41,$99,$C1,$C5,$78 $D5DA DEFB $FE,$01,$20,$03,$CD,$A3,$97,$C1 $D5E2 DEFB $05,$C2,$3E,$98,$C9,$C1,$CD,$A3 $D5EA DEFB $97,$C9,$AF,$32,$54,$B7,$32,$0B $D5F2 DEFB $B6,$CD,$77,$BA,$CD,$26,$B6,$CD $D5FA DEFB $DD,$C0,$76,$3A,$54,$B7,$B7,$C9 $D602 DEFB $3E,$00,$32,$40,$99,$3A,$7B,$93 $D60A DEFB $FE,$24,$FA,$3B,$99,$FE,$26,$F2 $D612 DEFB $3B,$99,$21,$2A,$CD,$22,$3A,$CD $D61A DEFB $2A,$14,$AC,$22,$8B,$C7,$06,$08 $D622 DEFB $C5,$2A,$12,$AC,$22,$14,$AC,$CD $D62A DEFB $3C,$CD,$2A,$14,$AC,$7C,$85,$28 $D632 DEFB $10,$7E,$FE,$24,$FA,$32,$99,$FE $D63A DEFB $26,$F2,$32,$99,$3E,$01,$32,$40 $D642 DEFB $99,$C1,$10,$DC,$2A,$8B,$C7,$22 $D64A DEFB $14,$AC,$3A,$40,$99,$B7,$C9,$00 $D652 DEFB $2A,$12,$AC,$3A,$7B,$93,$FE,$22 $D65A DEFB $28,$0D,$FE,$23,$28,$09,$7E,$11 $D662 DEFB $21,$03,$19,$77,$3A,$7B,$93,$2A $D66A DEFB $12,$AC,$77,$11,$A1,$00,$19,$36 $D672 DEFB $01,$1B,$19,$36,$00,$19,$3A,$0E $D67A DEFB $AC,$77,$3A,$66,$91,$B7,$28,$02 $D682 DEFB $CB,$E6,$76,$C9,$3E,$01,$32,$CE $D68A DEFB $97,$3A,$2E,$AC,$B7,$20,$04,$CD $D692 DEFB $1A,$98,$C9,$CD,$8D,$C7,$3E,$03 $D69A DEFB $32,$03,$AC,$3A,$7B,$93,$FE,$22 $D6A2 DEFB $FA,$99,$99,$3E,$0D,$32,$03,$AC $D6AA DEFB $CD,$55,$C9,$CD,$DC,$C9,$FE,$4B $D6B2 DEFB $20,$06,$3E,$00,$32,$5F,$97,$C9 $D6BA DEFB $CD,$0E,$98,$28,$EE,$CD,$DB,$98 $D6C2 DEFB $20,$E9,$2A,$12,$AC,$7E,$B7,$28 $D6CA DEFB $09,$11,$41,$01,$19,$7E,$FE,$04 $D6D2 DEFB $20,$D9,$CD,$7A,$96,$CD,$8A,$A1 $D6DA DEFB $3A,$7B,$93,$FE,$22,$F2,$DE,$99 $D6E2 DEFB $CD,$94,$BE,$FE,$02,$F2,$DE,$99 $D6EA DEFB $3E,$01,$32,$66,$91,$CD,$60,$97 $D6F2 DEFB $3A,$67,$91,$B7,$C4,$41,$99,$3E $D6FA DEFB $00,$32,$66,$91,$CD,$A3,$97,$C9 $D702 DEFB $3A,$2E,$AC,$B7,$C2,$95,$9A,$CD $D70A DEFB $96,$BC,$CD,$BF,$02,$FE,$53,$28 $D712 DEFB $0C,$FE,$4B,$20,$F2,$21,$B1,$C2 $D71A DEFB $CD,$F9,$C2,$FB,$C9,$CD,$CC,$BB $D722 DEFB $2A,$12,$AC,$7E,$B7,$28,$E0,$FE $D72A DEFB $22,$F2,$F8,$99,$CD,$21,$9A,$C9 $D732 DEFB $CD,$8A,$A1,$2A,$12,$AC,$3E,$00 $D73A DEFB $32,$67,$91,$11,$E1,$01,$19,$CB $D742 DEFB $66,$28,$11,$11,$A0,$00,$19,$7E $D74A DEFB $2A,$12,$AC,$77,$CD,$52,$9A,$3E $D752 DEFB $01,$32,$67,$91,$CD,$A3,$97,$2A $D75A DEFB $12,$AC,$11,$E1,$01,$19,$CB,$EE $D762 DEFB $C9,$21,$21,$91,$22,$F3,$C2,$CD $D76A DEFB $F6,$C2,$3E,$46,$32,$8F,$5C,$21 $D772 DEFB $45,$A3,$22,$88,$A1,$2A,$12,$AC $D77A DEFB $22,$05,$E0,$CD,$07,$E0,$22,$4C $D782 DEFB $DF,$06,$07,$F3,$C5,$2A,$88,$A1 $D78A DEFB $22,$4A,$DF,$CD,$4E,$DF,$CD,$01 $D792 DEFB $C3,$11,$20,$00,$2A,$88,$A1,$19 $D79A DEFB $22,$88,$A1,$C1,$10,$E6,$CD,$DD $D7A2 DEFB $C0,$FB,$76,$C9,$2A,$14,$AC,$22 $D7AA DEFB $8B,$C7,$CD,$BC,$C7,$2A,$8B,$C7 $D7B2 DEFB $22,$14,$AC,$21,$F2,$D3,$22,$86 $D7BA DEFB $CD,$3A,$BB,$C7,$3C,$CD,$4C,$C6 $D7C2 DEFB $CD,$7E,$A1,$FE,$FF,$20,$06,$3E $D7CA DEFB $00,$32,$5F,$97,$C9,$21,$1F,$E0 $D7D2 DEFB $16,$00,$5F,$19,$22,$12,$AC,$7E $D7DA DEFB $FE,$22,$F2,$B1,$9A,$11,$E1,$01 $D7E2 DEFB $19,$CB,$6E,$20,$DB,$CD,$7A,$96 $D7EA DEFB $CD,$21,$9A,$C9,$3E,$08,$32,$CE $D7F2 DEFB $97,$3A,$7B,$93,$FE,$26,$FA,$EF $D7FA DEFB $9A,$3E,$01,$32,$CE,$97,$3A,$2E $D802 DEFB $AC,$B7,$20,$0B,$3A,$7B ; Data block at D808 @label=VAR_D808 b$D808 DEFB $93,$FE,$24,$28,$23,$CD,$1A,$98 $D810 DEFB $C9,$3A,$7B,$93,$FE,$26,$FA,$1C $D818 DEFB $9B,$2A,$12,$AC,$7E,$FE,$26,$FA $D820 DEFB $1C,$9B,$FE,$28,$F2,$1C,$9B,$3E $D828 DEFB $00,$32,$5F,$97,$C9,$CD,$7A,$96 $D830 DEFB $2A,$14,$AC,$22,$B7,$C8,$3E,$0D $D838 DEFB $32,$03,$AC,$CD,$60,$97,$3A,$CE $D840 DEFB $97,$47,$C5,$CD,$55,$C9,$CD,$DC $D848 DEFB $C9,$FE,$4B,$28,$38,$CD,$0E,$98 $D850 DEFB $28,$F4,$2A,$12,$AC,$7E,$B7,$20 $D858 DEFB $ED,$CD,$F1,$98,$20,$E8,$CD,$DB $D860 DEFB $98,$20,$E3,$CD,$8A,$A1,$3A,$67 $D868 DEFB $91,$B7,$28,$16,$3A,$7B,$93,$2A $D870 DEFB $12,$AC,$77,$11,$E1,$01,$19,$3A $D878 DEFB $0E,$AC,$77,$CD,$DD,$C0,$C1,$10 $D880 DEFB $C1,$C9,$CD,$A3,$97,$C1,$C9,$3E $D888 DEFB $04,$32,$CE,$97,$3A,$2E,$AC,$B7 $D890 DEFB $20,$04,$CD,$1A,$98,$C9,$3E,$09 $D898 DEFB $32,$03,$AC,$2A,$14,$AC,$22,$8B $D8A0 DEFB $C7,$CD,$BC,$C7,$2A,$8B,$C7,$22 $D8A8 DEFB $14,$AC,$21,$F2,$D3,$22,$86,$CD $D8B0 DEFB $3A,$BB,$C7,$3C,$CD,$4C,$C6,$CD $D8B8 DEFB $7E,$A1,$FE,$FF,$20,$06,$3E,$00 $D8C0 DEFB $32,$5F,$97,$C9,$16,$00,$5F,$21 $D8C8 DEFB $1F,$E0,$19,$22,$12,$AC,$22,$B7 $D8D0 DEFB $C8,$7E,$FE,$1E,$F2,$CD,$9B,$FE $D8D8 DEFB $13,$FA,$CD,$9B,$18,$D9,$CD,$60 $D8E0 DEFB $97,$CD,$7A,$96,$06,$04,$C5,$CD $D8E8 DEFB $55,$C9,$CD,$DC,$C9,$FE,$4B,$28 $D8F0 DEFB $22,$CD,$0E,$98,$28,$F4,$2A,$12 $D8F8 DEFB $AC,$7E,$B7,$20,$ED,$CD,$0F,$9C $D900 DEFB $20,$E8,$CD,$DB,$98,$20,$E3,$CD ; Graphics - Top half of symbol set 1 ; ; #HTML(#FOR(0,15)//n/ ; #UDGARRAY2;($D908+n*$08)-(($D908+n*$08)+$04)-8(symbols_1_top_n*.png) //) @label=GRAPHICS_SYMBOLS_1_TOP_HALVES b$D908 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D910 DEFB $30,$30,$30,$30,$30,$30,$30,$00 $D918 DEFB $66,$66,$22,$44,$00,$00,$00,$00 $D920 DEFB $6C,$6C,$FE,$FE,$6C,$6C,$6C,$FE $D928 DEFB $10,$7C,$FE,$D6,$D0,$FC,$7E,$16 $D930 DEFB $46,$A4,$AC,$48,$18,$10,$30,$24 $D938 DEFB $30,$48,$48,$78,$30,$72,$DA,$CC $D940 DEFB $18,$18,$08,$10,$00,$00,$00,$00 $D948 DEFB $0C,$18,$18,$30,$30,$30,$30,$30 $D950 DEFB $60,$30,$30,$18,$18,$18,$18,$18 $D958 DEFB $00,$00,$10,$92,$54,$38,$10,$38 $D960 DEFB $00,$00,$18,$18,$18,$7E,$7E,$18 $D968 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D970 DEFB $00,$00,$00,$00,$00,$FE,$FE,$00 $D978 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D980 DEFB $06,$04,$0C,$08,$18,$10,$30,$20 ; Graphics - Top half of the numbers ; ; #HTML(#FOR(0,9)//n/ ; #UDGARRAY2;($D988+n*$08)-(($D988+n*$08)+$04)-8(numbers_top_n*.png) //) @label=GRAPHICS_NUMBERS_TOP_HALVES b$D988 DEFB $38,$7C,$EE,$C6,$CE,$D6,$E6,$C6 $D990 DEFB $18,$38,$78,$18,$18,$18,$18,$18 $D998 DEFB $38,$7C,$CE,$06,$0E,$3C,$78,$E0 $D9A0 DEFB $38,$7C,$CE,$06,$06,$1C,$06,$06 $D9A8 DEFB $06,$0E,$1E,$36,$66,$C6,$FE,$FE $D9B0 DEFB $FE,$FE,$C0,$F8,$FC,$CE,$06,$06 $D9B8 DEFB $38,$7C,$E6,$C0,$F8,$FC,$EE,$C6 $D9C0 DEFB $FE,$FE,$06,$06,$0C,$0C,$18,$18 $D9C8 DEFB $38,$7C,$EE,$C6,$EE,$7C,$EE,$C6 $D9D0 DEFB $38,$7C,$EE,$C6,$EE,$7E,$3E,$06 ; Graphics - Top half of symbol set 2 ; ; #HTML(#FOR(0,6)//n/ ; #UDGARRAY2;($D9D8+n*$08)-(($D9D8+n*$08)+$04)-8(symbols_2_top_n*.png) //) @label=GRAPHICS_SYMBOLS_2_TOP_HALVES b$D9D8 DEFB $00,$00,$00,$00,$18,$18,$00,$00 $D9E0 DEFB $00,$00,$00,$00,$18,$18,$00,$00 $D9E8 DEFB $00,$00,$04,$0C,$18,$30,$60,$30 $D9F0 DEFB $00,$00,$00,$FE,$FE,$00,$00,$FE $D9F8 DEFB $00,$00,$40,$60,$30,$18,$0C,$18 $DA00 DEFB $38,$7C,$CE,$06,$0E,$1C,$18,$18 $DA08 DEFB $38,$7C,$C6,$92,$AA,$AA,$AA,$94 ; Graphics - Top half of the upper case letters ; ; #HTML(#FOR(0,25)//n/ ; #UDGARRAY2;($DA10+n*$08)-(($DA10+n*$08)+$04)-8(letters_upper_case_top_n*.png) ; //) @label=GRAPHICS_LETTERS_UPPER_CASE_TOP_HALVES b$DA10 DEFB $38,$7C,$EE,$C6,$C6,$FE,$FE,$C6 $DA18 DEFB $FC,$FE,$C6,$C6,$FC,$FE,$C6,$C6 $DA20 DEFB $38,$7C,$E6,$C0,$C0,$C0,$C0,$C0 $DA28 DEFB $F8,$FC,$CE,$C6,$C6,$C6,$C6,$C6 $DA30 DEFB $FE,$FE,$C0,$C0,$F8,$F8,$C0,$C0 $DA38 DEFB $FE,$FE,$C0,$C0,$F8,$F8,$C0,$C0 $DA40 DEFB $38,$7C,$E6,$C0,$C0,$C0,$C0,$C6 $DA48 DEFB $C6,$C6,$C6,$C6,$FE,$FE,$C6,$C6 $DA50 DEFB $FC,$FC,$30,$30,$30,$30,$30,$30 $DA58 DEFB $FE,$FE,$18,$18,$18,$18,$18,$18 $DA60 DEFB $C2,$C6,$CC,$D8,$F0,$E0,$F0,$D8 $DA68 DEFB $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 $DA70 DEFB $C6,$C6,$EE,$FE,$FE,$D6,$C6,$C6 $DA78 DEFB $C6,$C6,$E6,$E6,$F6,$D6,$DE,$CE $DA80 DEFB $38,$7C,$EE,$C6,$C6,$C6,$C6,$C6 $DA88 DEFB $F8,$FC,$CE,$C6,$C6,$CE,$FC,$F8 $DA90 DEFB $38,$7C,$EE,$C6,$C6,$C6,$C6,$C6 $DA98 DEFB $FC,$FE,$C6,$C6,$FE,$FC,$CE,$C6 $DAA0 DEFB $7C,$FE,$C6,$C0,$F8,$7C,$0E,$06 $DAA8 DEFB $FE,$FE,$18,$18,$18,$18,$18,$18 $DAB0 DEFB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6 $DAB8 DEFB $C6,$C6,$C6,$C6,$C6,$6C,$6C,$38 $DAC0 DEFB $C6,$C6,$C6,$C6,$C6,$D6,$FE,$FE $DAC8 DEFB $C6,$C6,$6C,$6C,$38,$38,$38,$6C $DAD0 DEFB $CC,$CC,$CC,$CC,$CC,$FC,$78,$30 $DAD8 DEFB $FE,$FE,$06,$0E,$1C,$38,$70,$E0 ; Graphics - Top half of symbol set 3 ; ; #HTML(#FOR(0,4)//n/ ; #UDGARRAY2;($DAE0+n*$08)-(($DAE0+n*$08)+$04)-8(symbols_3_top_n*.png) //) @label=GRAPHICS_SYMBOLS_3_TOP_HALVES b$DAE0 DEFB $7E,$7E,$60,$60,$60,$60,$60,$60 $DAE8 DEFB $C0,$40,$60,$20,$30,$10,$18,$08 $DAF0 DEFB $7C,$7C,$0C,$0C,$0C,$0C,$0C,$0C $DAF8 DEFB $10,$10,$38,$38,$7C,$54,$10,$10 $DB00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Graphics - Top half of the lower case letters ; ; #R$DB08 represents the pound sign (character map number $60) then the ; following are the top halves of the lower case letters. ; . ; #HTML(#FOR(0,26)//n/ ; #UDGARRAY2;($DB08+n*$08)-(($DB08+n*$08)+$04)-8(letters_lower_case_top_n*.png) ; //) @label=GRAPHICS_LETTERS_LOWER_CASE_TOP_HALVES b$DB08 DEFB $38,$7C,$E6,$C0,$C0,$FC,$7C,$60 $DB10 DEFB $00,$00,$00,$00,$3E,$7E,$E6,$C6 $DB18 DEFB $C0,$C0,$C0,$C0,$F8,$FC,$CE,$C6 $DB20 DEFB $00,$00,$00,$00,$3E,$7E,$E0,$C0 $DB28 DEFB $06,$06,$06,$06,$3E,$7E,$E6,$C6 $DB30 DEFB $00,$00,$00,$00,$38,$7C,$E6,$FE $DB38 DEFB $38,$7C,$E6,$C0,$F8,$F8,$C0,$C0 $DB40 DEFB $00,$00,$00,$00,$3E,$7E,$E6,$C6 $DB48 DEFB $C0,$C0,$C0,$C0,$F8,$FC,$CE,$C6 $DB50 DEFB $30,$30,$00,$00,$30,$30,$30,$30 $DB58 DEFB $06,$06,$00,$00,$06,$06,$06,$06 $DB60 DEFB $C0,$C0,$C0,$C0,$C6,$DE,$F8,$E0 $DB68 DEFB $30,$30,$30,$30,$30,$30,$30,$30 $DB70 DEFB $00,$00,$00,$00,$EC,$FE,$FE,$D6 $DB78 DEFB $00,$00,$00,$00,$F8,$FC,$CE,$C6 $DB80 DEFB $00,$00,$00,$00,$38,$7C,$EE,$C6 $DB88 DEFB $00,$00,$00,$00,$F8,$FC,$CE,$C6 $DB90 DEFB $00,$00,$00,$00,$3E,$7E,$E6,$C6 $DB98 DEFB $00,$00,$00,$00,$38,$7C,$E6,$C0 $DBA0 DEFB $00,$00,$00,$00,$7E,$FE,$C0,$7C $DBA8 DEFB $C0,$C0,$C0,$C0,$FC,$FC,$C0,$C0 $DBB0 DEFB $00,$00,$00,$00,$C6,$C6,$C6,$C6 $DBB8 DEFB $00,$00,$00,$00,$C6,$C6,$6C,$6C $DBC0 DEFB $00,$00,$00,$00,$C6,$C6,$C6,$D6 $DBC8 DEFB $00,$00,$00,$00,$C6,$EE,$7C,$38 $DBD0 DEFB $00,$00,$00,$00,$C6,$C6,$C6,$C6 $DBD8 DEFB $00,$00,$00,$00,$FE,$FE,$0C,$18 $DBE0 DEFB $0C,$18,$18,$18,$30,$E0,$30,$18 $DBE8 DEFB $18,$18,$18,$18,$18,$18,$18,$18 $DBF0 DEFB $E0,$30,$30,$30,$18,$0E,$18,$30 $DBF8 DEFB $00,$32,$7E,$4C,$00,$00,$00,$00 $DC00 DEFB $38,$7C,$C6,$92,$AA,$A2,$AA,$92 ; Graphics - Bottom half of symbol set 1 ; ; #HTML(#FOR(0,15)//n/ ; #UDGARRAY2;($DC08+n*$08)-(($DC08+n*$08)+$04)-8(symbols_1_bottom_n*.png) //) @label=GRAPHICS_SYMBOLS_1_BOTTOM_HALVES b$DC08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC10 DEFB $00,$30,$30,$00,$00,$00,$00,$00 $DC18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC20 DEFB $FE,$6C,$6C,$00,$00,$00,$00,$00 $DC28 DEFB $D6,$FE,$7C,$10,$00,$00,$00,$00 $DC30 DEFB $6A,$4A,$C4,$00,$00,$00,$00,$00 $DC38 DEFB $CE,$FA,$72,$00,$00,$00,$00,$00 $DC40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC48 DEFB $18,$18,$0C,$00,$00,$00,$00,$00 $DC50 DEFB $30,$30,$60,$00,$00,$00,$00,$00 $DC58 DEFB $54,$92,$10,$00,$00,$00,$00,$00 $DC60 DEFB $18,$18,$00,$00,$00,$00,$00,$00 $DC68 DEFB $18,$18,$08,$10,$00,$00,$00,$00 $DC70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC78 DEFB $00,$18,$18,$00,$00,$00,$00,$00 $DC80 DEFB $60,$40,$C0,$00,$00,$00,$00,$00 ; Graphics - Bottom half of the numbers ; ; #HTML(#FOR(0,9)//n/ ; #UDGARRAY2;($DC88+n*$08)-(($DC88+n*$08)+$04)-8(numbers_bottom_n*.png) //) @label=GRAPHICS_NUMBERS_BOTTOM_HALVES b$DC88 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DC90 DEFB $18,$7E,$7E,$00,$00,$00,$00,$00 $DC98 DEFB $C0,$FE,$FE,$00,$00,$00,$00,$00 $DCA0 DEFB $CE,$7C,$38,$00,$00,$00,$00,$00 $DCA8 DEFB $06,$06,$06,$00,$00,$00,$00,$00 $DCB0 DEFB $CE,$7C,$38,$00,$00,$00,$00,$00 $DCB8 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DCC0 DEFB $30,$30,$30,$00,$00,$00,$00,$00 $DCC8 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DCD0 DEFB $CE,$7C,$38,$00,$00,$00,$00,$00 ; Graphics - Bottom half of symbol set 2 ; ; #HTML(#FOR(0,6)//n/ ; #UDGARRAY2;($DCD8+n*$08)-(($DCD8+n*$08)+$04)-8(symbols_2_bottom_n*.png) //) @label=GRAPHICS_SYMBOLS_2_BOTTOM_HALVES b$DCD8 DEFB $00,$18,$18,$00,$00,$00,$00,$00 $DCE0 DEFB $00,$18,$18,$08,$10,$00,$00,$00 $DCE8 DEFB $18,$0C,$04,$00,$00,$00,$00,$00 $DCF0 DEFB $FE,$00,$00,$00,$00,$00,$00,$00 $DCF8 DEFB $30,$60,$40,$00,$00,$00,$00,$00 $DD00 DEFB $00,$18,$18,$00,$00,$00,$00,$00 $DD08 DEFB $C0,$7E,$3C,$00,$00,$00,$00,$00 ; Graphics - Bottom half of the upper case letters ; ; #HTML(#FOR(0,25)//n/ ; #UDGARRAY2;($DD10+n*$08)-(($DD10+n*$08)+$04)-8(letters_upper_case_bottom_n*.png) ; //) @label=GRAPHICS_LETTERS_UPPER_CASE_BOTTOM_HALVES b$DD10 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DD18 DEFB $C6,$FE,$FC,$00,$00,$00,$00,$00 $DD20 DEFB $E6,$7C,$38,$00,$00,$00,$00,$00 $DD28 DEFB $CE,$FC,$F8,$00,$00,$00,$00,$00 $DD30 DEFB $C0,$FE,$FE,$00,$00,$00,$00,$00 $DD38 DEFB $C0,$C0,$C0,$00,$00,$00,$00,$00 $DD40 DEFB $E6,$7E,$3E,$00,$00,$00,$00,$00 $DD48 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DD50 DEFB $30,$FC,$FC,$00,$00,$00,$00,$00 $DD58 DEFB $38,$F0,$E0,$00,$00,$00,$00,$00 $DD60 DEFB $CC,$C6,$C2,$00,$00,$00,$00,$00 $DD68 DEFB $C0,$FE,$FE,$00,$00,$00,$00,$00 $DD70 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DD78 DEFB $CE,$C6,$C6,$00,$00,$00,$00,$00 $DD80 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DD88 DEFB $C0,$C0,$C0,$00,$00,$00,$00,$00 $DD90 DEFB $EE,$7C,$38,$0E,$00,$00,$00,$00 $DD98 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DDA0 DEFB $C6,$FE,$7C,$00,$00,$00,$00,$00 $DDA8 DEFB $18,$18,$18,$00,$00,$00,$00,$00 $DDB0 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DDB8 DEFB $38,$10,$10,$00,$00,$00,$00,$00 $DDC0 DEFB $EE,$C6,$C6,$00,$00,$00,$00,$00 $DDC8 DEFB $6C,$C6,$C6,$00,$00,$00,$00,$00 $DDD0 DEFB $30,$30,$30,$00,$00,$00,$00,$00 $DDD8 DEFB $C0,$FE,$FE,$00,$00,$00,$00,$00 $DDE0 DEFB $60,$7E,$7E,$00,$00,$00,$00,$00 ; Graphics - Bottom half of symbol set 3 ; ; #HTML(#FOR(0,4)//n/ ; #UDGARRAY2;($DDE8+n*$08)-(($DDE8+n*$08)+$04)-8(symbols_3_bottom_n*.png) //) @label=GRAPHICS_SYMBOLS_3_BOTTOM_HALVES b$DDE8 DEFB $0C,$04,$06,$00,$00,$00,$00,$00 $DDF0 DEFB $0C,$7C,$7C,$00,$00,$00,$00,$00 $DDF8 DEFB $38,$38,$28,$00,$00,$00,$00,$00 $DE00 DEFB $00,$00,$00,$00,$FF,$FF,$00,$00 $DE08 DEFB $60,$FE,$FE,$00,$00,$00,$00,$00 ; Graphics - Bottom half of the lower case letters ; ; #HTML(#FOR(0,26)//n/ ; #UDGARRAY2;($DE10+n*$08)-(($DE10+n*$08)+$04)-8(letters_lower_case_bottom_n*.png) ; //) @label=GRAPHICS_LETTERS_LOWER_CASE_BOTTOM_HALVES b$DE10 DEFB $E6,$7E,$3E,$00,$00,$00,$00,$00 $DE18 DEFB $CE,$FC,$F8,$00,$00,$00,$00,$00 $DE20 DEFB $E0,$7E,$3E,$00,$00,$00,$00,$00 $DE28 DEFB $E6,$7E,$3E,$00,$00,$00,$00,$00 $DE30 DEFB $E0,$7E,$3C,$00,$00,$00,$00,$00 $DE38 DEFB $C0,$C0,$C0,$00,$00,$00,$00,$00 $DE40 DEFB $E6,$7E,$3E,$06,$CE,$7C,$38,$00 $DE48 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DE50 DEFB $30,$FC,$FC,$00,$00,$00,$00,$00 $DE58 DEFB $06,$06,$06,$06,$CE,$7C,$38,$00 $DE60 DEFB $F8,$DE,$C6,$00,$00,$00,$00,$00 $DE68 DEFB $30,$30,$18,$00,$00,$00,$00,$00 $DE70 DEFB $D6,$C6,$C6,$00,$00,$00,$00,$00 $DE78 DEFB $C6,$C6,$C6,$00,$00,$00,$00,$00 $DE80 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DE88 DEFB $CE,$FC,$F8,$C0,$C0,$C0,$C0,$00 $DE90 DEFB $E6,$7E,$3E,$06,$06,$06,$06,$00 $DE98 DEFB $C0,$C0,$C0,$00,$00,$00,$00,$00 $DEA0 DEFB $06,$FE,$FC,$00,$00,$00,$00,$00 $DEA8 DEFB $E6,$7C,$38,$00,$00,$00,$00,$00 $DEB0 DEFB $EE,$7C,$38,$00,$00,$00,$00,$00 $DEB8 DEFB $38,$38,$10,$00,$00,$00,$00,$00 $DEC0 DEFB $D6,$FE,$6C,$00,$00,$00,$00,$00 $DEC8 DEFB $7C,$EE,$C6,$00,$00,$00,$00,$00 $DED0 DEFB $E6,$7E,$3E,$06,$CE,$7C,$38,$00 $DED8 DEFB $30,$FE,$FE,$00,$00,$00,$00,$00 $DEE0 DEFB $18,$18,$0C,$00,$00,$00,$00,$00 $DEE8 DEFB $18,$18,$18,$00,$00,$00,$00,$00 $DEF0 DEFB $30,$30,$E0,$00,$00,$00,$00,$00 $DEF8 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DF00 DEFB $C6,$7C,$38,$00,$00,$00,$00,$00 $DF08 DEFB $00,$00,$00,$00 ; Routine at DF0C ; ; Used by the routine at #R$FE69. @label=ROUTINE_DF0C c$DF0C JP $DF72 ; ; Routine at DF0F - might be for printing text characters. ; ; Used by the routines at #R$BAD6, #R$BB57 and #R$DF4E. @label=ROUTINE_DF0F_MAYBE_PRINTING_CHARACTERS 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 @label=VAR_DF4A b$DF4A DEFB $14,$FB ; Data block at DF4C @label=VAR_DF4C b$DF4C DEFB $1D,$11 ; Routine at DF4E maybe animation ; ; Used by the routines at #R$90F0, #R$9A52, #R$9C59, #R$9CA9, #R$A18A, #R$B375, ; #R$B3C9, #R$B8DD, #R$BABE and #R$DF72. @label=MAYBE_ANIMATION 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 ; ; Routine at DF72 ; ; Used by the routine at #R$DF0C. @label=ROUTINE_DF72 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 ; Keyboard scanning ROM subroutine. $DF85 POP HL ; $DF86 LD A,D ; $DF87 CP $28 ; $DF89 JR Z,$DF9D ; *$DF8B LD A,(HL) ; $DF8C CP $FF ; $DF8E JR Z,$DF9D ; $DF90 OR A ; $DF91 JR NZ,$DFAA ; *$DF93 LD A,(HL) ; $DF94 CP $01 ; $DF96 JR NZ,$DF9A ; $DF98 XOR A ; $DF99 LD (HL),A ; *$DF9A INC HL ; $DF9B JR $DF8B ; *$DF9D POP HL ; $DF9E LD ($5C36),HL ; $DFA1 POP AF ; $DFA2 LD ($5C8F),A ; $DFA5 POP AF ; $DFA6 POP DE ; $DFA7 POP BC ; $DFA8 POP HL ; $DFA9 RET ; *$DFAA PUSH HL ; $DFAB PUSH AF ; $DFAC LD DE,$00A1 ; $DFAF ADD HL,DE ; $DFB0 LD A,(HL) ; $DFB1 DEC A ; $DFB2 JR Z,$DFB9 ; $DFB4 LD (HL),A ; $DFB5 POP AF ; $DFB6 POP HL ; $DFB7 JR $DF93 ; *$DFB9 POP AF ; $DFBA PUSH HL ; $DFBB LD HL,$E3E0 ; $DFBE DEC A ; $DFBF ADD A,A ; $DFC0 LD B,$00 ; $DFC2 LD C,A ; $DFC3 ADD HL,BC ; $DFC4 LD C,(HL) ; $DFC5 INC HL ; $DFC6 LD B,(HL) ; $DFC7 LD HL,$0016 ; $DFCA ADD HL,BC ; $DFCB LD A,(HL) ; $DFCC EX DE,HL ; $DFCD POP HL ; $DFCE LD (HL),A ; $DFCF LD BC,$00A0 ; $DFD2 ADD HL,BC ; $DFD3 LD A,(HL) ; $DFD4 INC A ; $DFD5 CP $04 ; $DFD7 JR NZ,$DFDA ; $DFD9 XOR A ; *$DFDA CP $05 ; $DFDC JR NZ,$DFDF ; $DFDE DEC A ; *$DFDF LD (HL),A ; $DFE0 EX DE,HL ; $DFE1 INC HL ; $DFE2 LD B,$00 ; $DFE4 LD C,A ; $DFE5 ADD HL,BC ; $DFE6 ADD HL,BC ; $DFE7 ADD HL,BC ; $DFE8 LD C,(HL) ; $DFE9 INC HL ; $DFEA LD B,(HL) ; $DFEB LD ($DF4A),BC ; $DFEF INC HL ; $DFF0 LD A,(HL) ; $DFF1 LD ($5C8F),A ; $DFF4 POP HL ; $DFF5 LD ($E005),HL ; $DFF8 PUSH HL ; $DFF9 CALL $E007 ; $DFFC LD ($DF4C),HL ; $DFFF CALL $DF4E ; $E002 POP HL ; $E003 JR $DF93 ; ; Variable - might be something to do with finding coordinates of something in ; the arena @label=VAR_E005_MAYBE_ARENA_COORDS b$E005 DEFB $AD,$E0 ; Routine at E007 ; ; Used by the routines at #R$9A52, #R$9C59, #R$9CA9, #R$A18A, #R$B375, #R$B3C9, ; #R$B8DD, #R$BABE, #R$C703, #R$D392 and #R$DF72. @label=MAYBE_FIND_ARENA_COORDS c$E007 LD HL,($E005) ; $E00A XOR A ; $E00B LD DE,$E01F ; $E00E SBC HL,DE ; {A = HL - DE, to get how many spaces to count from $E010 LD A,L ; #R$E01F before reaching the address that was in HL.} $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 ; ; Arena Table 1 - game state information ; ; The board is 15x10. Each row here represents a row on the board, and each ; byte here represents the ID of something on the board (with the exception of ; the 16th byte, which is presumably there to make the maths easier - note how ; by using 16 bytes in each row, the hex addresses are simplified). As wizards, ; creatures etc are moved around the arena, their IDs are moved around these ; addresses. @label=ARENA_STATE_1 b$E01F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E02F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E03F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E04F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E05F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E06F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E07F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E08F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E09F DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E0AF DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Data block at E0BF b$E0BF DEFB $FF ; Arena Table 2 - ??? @label=ARENA_STATE_2 b$E0C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E0D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E0E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E0F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E100 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E110 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E120 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E130 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E140 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E150 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Arena Table 3 - TODO maybe records current animation frame, from 0-3? ; ; A value of 4 indicates that the creature is dead. @label=ARENA_STATE_3 b$E160 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E170 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E180 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E190 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E1F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Arena Table 4 - records data about the objects in the arena. ; ; #TABLE(default,centre) ; { =h Bit | =h Use } ; { 7 | Set if the object has moved (or if fire/blob, spread) this turn. } ; { 6 | Tracks whether the creature at that space is undead through being ; brought back to life with the raise dead spell. } ; { 5 | Set if the creature has been disbelieved before and proved to be real. ; } ; { 4 | Set if the creature is an illusion. } ; { 3 | Whether the creature is asleep. Never used in game. See #R$BC96. } ; { 2,1,0 | ID of the wizard that controls the object at this space. } ; TABLE# @label=ARENA_STATE_4 b$E200 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E210 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E220 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E230 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E240 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E250 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E260 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E270 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E280 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E290 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Arena Table 5 - Contains the wizard's ID if he's hiding in a magic tree or ; castle, or on a mount. @label=ARENA_STATE_5 b$E2A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E2B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E2C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E2D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E2E0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E2F0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E300 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E310 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E320 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E330 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Arena Table 6 - records data about the objects in the arena. ; ; #TABLE(default,centre) ; { =h Bit | =h Use } ; { 7 | ??? } ; { 6 | Tracks whether the creature at that space is undead through being ; brought back to life with the raise dead spell. TODO Mistake? Isn't this in ; table 4? Or in both? } ; { 5 | ??? } ; { 4 | ??? } ; { 3 | ??? } ; { 2 | ??? } ; { 1 | ??? } ; { 0 | ??? } ; TABLE# @label=ARENA_STATE_6 b$E340 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E350 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E360 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E370 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E380 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E390 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E3A0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E3B0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E3C0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 $E3D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Table - locations of creature, object and wizard data. ; ; Contains the address at which to find the data about a creature, object or ; wizard. If you offset from #R$E3E0 you get the creature IDs matching the ; spells at #R$7D60. @label=TABLE_CREATURE_DATA_ADDRESSES b$E3E0 DEFB $40,$E4 ; #R$E440 $01 01 Blank string $E3E2 DEFB $63,$E4 ; #R$E463 $02 02 $E3E4 DEFB $D5,$E4 ; #R$E4D5 $03 03 $E3E6 DEFB $21,$E5 ; #R$E521 $04 04 $E3E8 DEFB $47,$E5 ; #R$E547 $05 05 $E3EA DEFB $B9,$E5 ; #R$E5B9 $06 06 $E3EC DEFB $DF,$E5 ; #R$E5DF $07 07 $E3EE DEFB $2B,$E6 ; #R$E62B $08 08 $E3F0 DEFB $77,$E6 ; #R$E677 $09 09 $E3F2 DEFB $9F,$E7 ; #R$E79F $0A 10 $E3F4 DEFB $C5,$E7 ; #R$E7C5 $0B 11 $E3F6 DEFB $0E,$E8 ; #R$E80E $0C 12 $E3F8 DEFB $C9,$E8 ; #R$E8C9 $0D 13 $E3FA DEFB $EF,$E8 ; #R$E8EF $0E 14 $E3FC DEFB $3B,$E9 ; #R$E93B $0F 15 $E3FE DEFB $51,$E6 ; #R$E651 $10 16 $E400 DEFB $33,$E7 ; #R$E733 $11 17 $E402 DEFB $15,$E9 ; #R$E915 $12 18 $E404 DEFB $7D,$E8 ; #R$E87D $13 19 $E406 DEFB $05,$E6 ; #R$E605 $14 20 $E408 DEFB $E6,$E6 ; #R$E6E6 $15 21 $E40A DEFB $89,$E4 ; #R$E489 $16 22 $E40C DEFB $6D,$E5 ; #R$E56D $17 23 $E40E DEFB $9D,$E6 ; #R$E69D $18 24 $E410 DEFB $61,$E9 ; #R$E961 $19 25 $E412 DEFB $57,$E8 ; #R$E857 $1A 26 $E414 DEFB $A3,$E8 ; #R$E8A3 $1B 27 $E416 DEFB $93,$E5 ; #R$E593 $1C 28 $E418 DEFB $59,$E7 ; #R$E759 $1D 29 $E41A DEFB $FB,$E4 ; #R$E4FB $1E 30 $E41C DEFB $7C,$E7 ; #R$E77C $1F 31 $E41E DEFB $EB,$E7 ; #R$E7EB $20 32 $E420 DEFB $34,$E8 ; #R$E834 $21 33 $E422 DEFB $AF,$E4 ; #R$E4AF $22 34 $E424 DEFB $C3,$E6 ; #R$E6C3 $23 35 $E426 DEFB $F3,$E9 ; #R$E9F3 $24 36 $E428 DEFB $D0,$E9 ; #R$E9D0 $25 37 $E42A DEFB $AD,$E9 ; #R$E9AD $26 38 $E42C DEFB $87,$E9 ; #R$E987 $27 39 $E42E DEFB $16,$EA ; #R$EA16 $28 40 $E430 DEFB $39,$EA ; #R$EA39 $29 41 Wizard 1 name $E432 DEFB $5C,$EA ; #R$EA5C $2A 42 Wizard 2 name $E434 DEFB $7F,$EA ; #R$EA7F $2B 43 Wizard 3 name $E436 DEFB $A2,$EA ; #R$EAA2 $2C 44 Wizard 4 name $E438 DEFB $C5,$EA ; #R$EAC5 $2D 45 Wizard 5 name $E43A DEFB $E8,$EA ; #R$EAE8 $2E 46 Wizard 6 name $E43C DEFB $0B,$EB ; #R$EB0B $2F 47 Wizard 7 name $E43E DEFB $2E,$EB ; #R$EB2E $30 48 Wizard 8 name ; Blank string @label=STRING_BLANK t$E440 DEFM " " ; Data block at E44D b$E44D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E455 DEFB $00,$01,$51,$EB,$45,$51,$EB,$45 $E45D DEFB $51,$EB,$45,$51,$EB,$45 ; Creature name: KING COBRA @label=NAME_KING_COBRA t$E463 DEFM "KING COBRA " ; Creature data: KING COBRA b$E470 DEFB $04,$00,$00,$01,$01,$06,$01,$08,$01,$1E ; Creature graphics data: KING COBRA b$E47A DEFB $71,$EB,$44 ; #R$EB71 $E47D DEFB $91,$EB,$44 $E480 DEFB $B3,$EB,$44 $E483 DEFB $91,$EB,$44 $E486 DEFB $53,$EC,$44 ; #R$EC53 ; Creature name: BAT @label=NAME_BAT t$E489 DEFM "BAT " ; Creature data: BAT b$E496 DEFB $01,$00,$00,$01,$05,$09,$04,$07,$FF,$08 ; Creature graphics data: BAT b$E4A0 DEFB $F3,$EB,$47 ; #R$EBF3 $E4A3 DEFB $13,$EC,$47 $E4A6 DEFB $33,$EC,$47 $E4A9 DEFB $13,$EC,$47 $E4AC DEFB $D3,$EB,$47 ; Creature name: BLOB @label=NAME_BLOB t$E4AF DEFM "BLOB " ; Creature data: BLOB b$E4BC DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$28 ; Creature graphics data: BLOB b$E4C6 DEFB $73,$EC,$44 ; #R$EC73 $E4C9 DEFB $93,$EC,$44 $E4CC DEFB $B3,$EC,$44 $E4CF DEFB $93,$EC,$44 $E4D2 DEFB $D3,$EC,$04 ; Creature name: DIRE WOLF @label=NAME_DIRE_WOLF t$E4D5 DEFM "DIRE WOLF " ; Creature data: DIRE WOLF b$E4E2 DEFB $03,$00,$00,$02,$03,$07,$02,$08,$FF,$0C ; Creature graphics data: DIRE WOLF b$E4EC DEFB $F3,$EC,$46 ; #R$ECF3 $E4EF DEFB $13,$ED,$46 $E4F2 DEFB $33,$ED,$46 $E4F5 DEFB $13,$ED,$46 $E4F8 DEFB $53,$ED,$46 ; Creature name: SPECTRE @label=NAME_SPECTRE t$E4FB DEFM "SPECTRE " ; Creature data: SPECTRE b$E508 DEFB $04,$00,$00,$02,$01,$06,$04,$05,$FF,$0F ; Creature graphics data: SPECTRE b$E512 DEFB $73,$ED,$47 ; #R$ED73 $E515 DEFB $73,$ED,$45 $E518 DEFB $73,$ED,$43 $E51B DEFB $73,$ED,$41 $E51E DEFB $93,$ED,$05 ; Creature name: GOBLIN @label=NAME_GOBLIN t$E521 DEFM "GOBLIN " ; Creature data: GOBLIN b$E52E DEFB $02,$00,$00,$04,$01,$04,$04,$08,$FF,$0C ; Creature graphics data: GOBLIN b$E538 DEFB $B3,$ED,$43 ; #R$EDB3 $E53B DEFB $D3,$ED,$43 $E53E DEFB $F3,$ED,$43 $E541 DEFB $D3,$ED,$43 $E544 DEFB $13,$EE,$43 ; Creature name: CROCODILE @label=NAME_CROCODILE t$E547 DEFM "CROCODILE " ; Creature data: CROCODILE b$E554 DEFB $05,$00,$00,$06,$01,$02,$02,$07,$00,$22 ; Creature graphics data: CROCODILE b$E55E DEFB $33,$EE,$44 ; #R$EE33 $E561 DEFB $53,$EE,$44 $E564 DEFB $73,$EE,$44 $E567 DEFB $53,$EE,$44 $E56A DEFB $93,$EE,$44 ; Creature name: GREEN DRAGON @label=NAME_GREEN_DRAGON t$E56D DEFM "GREEN DRAGON " ; Creature data: GREEN DRAGON b$E57A DEFB $05,$04,$06,$08,$03,$04,$04,$00,$FF,$20 ; Creature graphics data: GREEN DRAGON b$E584 DEFB $B3,$EE,$44 ; #R$EEB3 $E587 DEFB $D3,$EE,$44 $E58A DEFB $F3,$EE,$44 $E58D DEFB $D3,$EE,$44 $E590 DEFB $13,$EF,$44 ; Creature name: VAMPIRE @label=NAME_VAMPIRE t$E593 DEFM "VAMPIRE " ; Creature data: VAMPIRE b$E5A0 DEFB $06,$00,$00,$08,$04,$06,$05,$01,$FE,$28 ; Creature graphics data: VAMPIRE b$E5AA DEFB $33,$EF,$42 ; #R$EF33 $E5AD DEFB $53,$EF,$42 $E5B0 DEFB $73,$EF,$42 $E5B3 DEFB $53,$EF,$42 $E5B6 DEFB $93,$EF,$42 ; Creature name: FAUN @label=NAME_FAUN t$E5B9 DEFM "FAUN " ; Creature data: FAUN b$E5C6 DEFB $03,$00,$00,$02,$01,$07,$08,$07,$FF,$14 ; Creature graphics data: FAUN b$E5D0 DEFB $B3,$EF,$47 ; #R$EFB3 $E5D3 DEFB $D3,$EF,$47 $E5D6 DEFB $F3,$EF,$47 $E5D9 DEFB $D3,$EF,$47 $E5DC DEFB $13,$F0,$47 ; Creature name: LION @label=NAME_LION t$E5DF DEFM "LION " ; Creature data: LION b$E5EC DEFB $06,$00,$00,$04,$04,$08,$03,$05,$01,$26 ; Creature graphics data: LION b$E5F6 DEFB $33,$F0,$46 ; #R$F033 $E5F9 DEFB $53,$F0,$46 $E5FC DEFB $73,$F0,$46 $E5FF DEFB $53,$F0,$46 $E602 DEFB $93,$F0,$46 ; Creature name: GRYPHON @label=NAME_GRYPHON t$E605 DEFM "GRYPHON " ; Creature data: GRYPHON b$E612 DEFB $03,$00,$00,$05,$05,$05,$06,$05,$01,$0A ; Creature graphics data: GRYPHON b$E61C DEFB $B3,$F0,$07 ; #R$F0B3 $E61F DEFB $D3,$F0,$07 $E622 DEFB $F3,$F0,$07 $E625 DEFB $D3,$F0,$07 $E628 DEFB $13,$F1,$07 ; Creature name: ELF @label=NAME_ELF t$E62B DEFM "ELF " ; Creature data: ELF b$E638 DEFB $01,$02,$06,$02,$01,$05,$07,$06,$02,$1A ; Creature graphics data: ELF b$E642 DEFB $33,$F1,$44 ; #R$F133 $E645 DEFB $53,$F1,$44 $E648 DEFB $73,$F1,$44 $E64B DEFB $93,$F1,$44 $E64E DEFB $B3,$F1,$44 ; Creature name: HORSE @label=NAME_HORSE t$E651 DEFM "HORSE " ; Creature data: HORSE b$E65E DEFB $01,$00,$00,$03,$04,$08,$01,$08,$01,$15 ; Creature graphics data: HORSE b$E668 DEFB $D3,$F1,$06 ; #R$F1D3 $E66B DEFB $F3,$F1,$06 $E66E DEFB $13,$F2,$06 $E671 DEFB $F3,$F1,$06 $E674 DEFB $33,$F2,$06 ; Creature name: ORC @label=NAME_ORC t$E677 DEFM "ORC " ; Creature data: ORC b$E684 DEFB $02,$00,$00,$01,$01,$04,$04,$09,$FF,$15 ; Creature graphics data: ORC b$E68E DEFB $53,$F2,$45 ; #R$F253 $E691 DEFB $73,$F2,$45 $E694 DEFB $93,$F2,$45 $E697 DEFB $73,$F2,$45 $E69A DEFB $B3,$F2,$45 ; Creature name: RED DRAGON @label=NAME_RED_DRAGON t$E69D DEFM "RED DRAGON " ; Creature data: RED DRAGON b$E6AA DEFB $07,$03,$05,$09,$03,$04,$05,$00,$FE,$22 ; Creature graphics data: RED DRAGON b$E6B4 DEFB $D3,$F2,$42 ; #R$F2D3 $E6B7 DEFB $F3,$F2,$42 $E6BA DEFB $13,$F3,$42 $E6BD DEFB $F3,$F2,$42 $E6C0 DEFB $13,$EF,$42 ; Object name: FIRE @label=NAME_FIRE t$E6C3 DEFM "FIRE " ; Object data: FIRE b$E6D0 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$0C ; Object graphics data: FIRE b$E6DA DEFB $33,$F3,$46 ; #R$F333 $E6DD DEFB $93,$F3,$46 $E6E0 DEFB $73,$F3,$46 $E6E3 DEFB $53,$F3,$46 ; Creature name: MANTICORE @label=NAME_MANTICORE t$E6E6 DEFM "MANTICORE " ; Creature data: MANTICORE b$E6F3 DEFB $03,$01,$03,$06,$05,$06,$08,$03,$FF,$0D ; Creature graphics data: MANTICORE b$E6FD DEFB $B3,$F3,$46 ; #R$F3B3 $E700 DEFB $D3,$F3,$46 $E703 DEFB $F3,$F3,$46 $E706 DEFB $D3,$F3,$46 $E709 DEFB $13,$F4,$46 $E70C DEFB $00 ; Creature name: TROLL @label=NAME_TROLL t$E70D DEFM "TROLL " ; Creature data: TROLL b$E71A DEFB $04,$00,$00,$08,$01,$01,$04,$06,$FF,$16 ; Creature graphics data: TROLL b$E724 DEFB $33,$F4,$04 ; #R$F433 $E727 DEFB $53,$F4,$04 $E72A DEFB $73,$F4,$04 $E72D DEFB $53,$F4,$04 $E730 DEFB $93,$F4,$04 ; Creature name: UNICORN @label=NAME_UNICORN t$E733 DEFM "UNICORN " ; Creature data: UNICORN b$E740 DEFB $05,$00,$00,$04,$04,$09,$07,$05,$02,$10 ; Creature graphics data: UNICORN b$E74A DEFB $B3,$F4,$45 ; #R$F4B3 $E74D DEFB $D3,$F4,$45 $E750 DEFB $F3,$F4,$45 $E753 DEFB $D3,$F4,$45 $E756 DEFB $13,$F5,$45 ; Creature name: GHOST @label=NAME_GHOST t$E759 DEFM "GHOST " ; Creature data: GHOST b$E766 DEFB $01,$00,$00,$03,$02,$09,$06,$04,$FF,$0F ; Creature graphics data: GHOST b$E770 DEFB $33,$F5,$05 ; #R$F533 $E773 DEFB $53,$F5,$45 $E776 DEFB $73,$F5,$05 $E779 DEFB $93,$F5,$45 ; Creature name: WRAITH @label=NAME_WRAITH t$E77C DEFM "WRAITH " ; Creature data: WRAITH b$E789 DEFB $05,$00,$00,$05,$02,$04,$05,$04,$FF,$0A ; Creature graphics data: WRAITH b$E793 DEFB $B3,$F5,$45 ; #R$F5B3 $E796 DEFB $D3,$F5,$45 $E799 DEFB $13,$F6,$45 $E79C DEFB $F3,$F5,$45 ; Creature name: BEAR @label=NAME_BEAR t$E79F DEFM "BEAR " ; Creature data: BEAR b$E7AC DEFB $06,$00,$00,$07,$02,$06,$02,$05,$01,$17 ; Creature graphics data: BEAR b$E7B6 DEFB $33,$F6,$42 ; #R$F633 $E7B9 DEFB $53,$F6,$42 $E7BC DEFB $74,$F6,$42 $E7BF DEFB $74,$F6,$42 $E7C2 DEFB $94,$F6,$42 ; Creature name: GORILLA @label=NAME_GORILLA t$E7C5 DEFM "GORILLA " ; Creature data: GORILLA b$E7D2 DEFB $06,$00,$00,$05,$01,$04,$02,$06,$00,$12 ; Creature graphics data: GORILLA b$E7DC DEFB $B4,$F6,$06 ; #R$F6B4 $E7DF DEFB $D4,$F6,$06 $E7E2 DEFB $F4,$F6,$06 $E7E5 DEFB $D4,$F6,$06 $E7E8 DEFB $14,$F7,$06 ; Creature name: SKELETON @label=NAME_SKELETON t$E7EB DEFM "SKELETON " ; Creature data: SKELETON b$E7F8 DEFB $03,$00,$00,$02,$01,$03,$04,$06,$FF,$11 ; Creature graphics data: SKELETON b$E802 DEFB $34,$F7,$47 ; #R$F734 $E805 DEFB $54,$F7,$47 $E808 DEFB $74,$F7,$47 $E80B DEFB $54,$F7,$47 ; Creature name: OGRE @label=NAME_OGRE t$E80E DEFM "OGRE " ; Creature data: OGRE b$E81B DEFB $04,$00,$00,$07,$01,$03,$06,$06,$FF,$17 ; Creature graphics data: OGRE b$E825 DEFB $94,$F7,$42 ; #R$F794 $E828 DEFB $B4,$F7,$42 $E82B DEFB $D4,$F7,$42 $E82E DEFB $B4,$F7,$42 $E831 DEFB $F4,$F7,$42 ; Creature name: ZOMBIE @label=NAME_ZOMBIE t$E834 DEFM "ZOMBIE " ; Creature data: ZOMBIE b$E841 DEFB $01,$00,$00,$01,$01,$02,$03,$08,$FF,$19 ; Creature graphics data: ZOMBIE b$E84B DEFB $14,$F8,$45 ; #R$F814 $E84E DEFB $34,$F8,$45 $E851 DEFB $54,$F8,$45 $E854 DEFB $74,$F8,$45 ; Creature name: HARPY @label=NAME_HARPY t$E857 DEFM "HARPY " ; Creature data: HARPY b$E864 DEFB $04,$00,$00,$02,$05,$08,$05,$05,$FF,$0D ; Creature graphics data: HARPY b$E86E DEFB $94,$F8,$45 ; #R$F894 $E871 DEFB $B4,$F8,$45 $E874 DEFB $D4,$F8,$45 $E877 DEFB $B4,$F8,$45 $E87A DEFB $F4,$F8,$45 ; Creature name: PEGASUS @label=NAME_PEGASUS t$E87D DEFM "PEGASUS " ; Creature data: PEGASUS b$E88A DEFB $02,$00,$00,$04,$05,$06,$07,$05,$02,$10 ; Creature graphics data: PEGASUS b$E894 DEFB $14,$F9,$47 ; #R$F914 $E897 DEFB $34,$F9,$47 $E89A DEFB $54,$F9,$47 $E89D DEFB $34,$F9,$47 $E8A0 DEFB $74,$F9,$47 ; Creature name: EAGLE @label=NAME_EAGLE t$E8A3 DEFM "EAGLE " ; Creature data: EAGLE b$E8B0 DEFB $03,$00,$00,$03,$06,$08,$02,$06,$01,$0E ; Creature graphics data: EAGLE b$E8BA DEFB $94,$F9,$46 ; #R$F994 $E8BD DEFB $B4,$F9,$46 $E8C0 DEFB $D4,$F9,$46 $E8C3 DEFB $B4,$F9,$46 $E8C6 DEFB $F4,$F9,$46 ; Creature name: HYDRA @label=NAME_HYDRA t$E8C9 DEFM "HYDRA " ; Creature data: HYDRA b$E8D6 DEFB $07,$00,$00,$08,$01,$04,$06,$04,$FF,$24 ; Creature graphics data: HYDRA b$E8E0 DEFB $14,$FA,$44 ; #R$FA14 $E8E3 DEFB $34,$FA,$44 $E8E6 DEFB $54,$FA,$44 $E8E9 DEFB $34,$FA,$44 $E8EC DEFB $74,$FA,$44 ; Creature name: GIANT RAT @label=NAME_GIANT_RAT t$E8EF DEFM "GIANT RAT " ; Creature data: GIANT RAT b$E8FC DEFB $01,$00,$00,$01,$03,$08,$02,$09,$00,$0D ; Creature graphics data: GIANT RAT b$E906 DEFB $94,$FA,$07 ; #R$FA94 $E909 DEFB $B4,$FA,$07 $E90C DEFB $D4,$FA,$07 $E90F DEFB $B4,$FA,$07 $E912 DEFB $F4,$FA,$07 ; Creature name: CENTAUR @label=NAME_CENTAUR t$E915 DEFM "CENTAUR " ; Creature data: CENTAUR b$E922 DEFB $01,$02,$04,$03,$04,$05,$05,$06,$01,$17 ; Creature graphics data: CENTAUR b$E92C DEFB $14,$FB,$06 ; #R$FB14 $E92F DEFB $34,$FB,$06 $E932 DEFB $54,$FB,$06 $E935 DEFB $34,$FB,$06 $E938 DEFB $74,$FB,$06 ; Creature name: GIANT @label=NAME_GIANT t$E93B DEFM "GIANT " ; Creature data: GIANT b$E948 DEFB $09,$00,$00,$07,$02,$06,$05,$03,$01,$17 ; Creature graphics data: GIANT b$E952 DEFB $94,$FB,$05 ; #R$FB94 $E955 DEFB $B4,$FB,$05 $E958 DEFB $D4,$FB,$05 $E95B DEFB $B4,$FB,$05 $E95E DEFB $F4,$FB,$05 ; Creature name: GOLDEN DRAGON @label=NAME_GOLDEN_DRAGON t$E961 DEFM "GOLDEN DRAGON" ; Creature data: GOLDEN DRAGON b$E96E DEFB $09,$05,$04,$09,$03,$05,$05,$00,$02,$1B ; Creature graphics data: GOLDEN DRAGON b$E978 DEFB $14,$FC,$46 ; #R$FC14 $E97B DEFB $34,$FC,$46 $E97E DEFB $54,$FC,$46 $E981 DEFB $34,$FC,$46 $E984 DEFB $74,$FC,$46 ; Object name: DARK CITADEL @label=NAME_DARK_CITADEL t$E987 DEFM "DARK CITADEL " ; Object data: DARK CITADEL b$E994 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$32 ; Object graphics data: DARK CITADEL b$E99E DEFB $94,$FC,$43 ; #R$FC94 $E9A1 DEFB $94,$FC,$43 $E9A4 DEFB $94,$FC,$03 $E9A7 DEFB $94,$FC,$03 $E9AA DEFB $94,$FC,$03 ; Object name: MAGIC CASTLE @label=NAME_MAGIC_CASTLE t$E9AD DEFM "MAGIC CASTLE " ; Object data: MAGIC CASTLE b$E9BA DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$32 ; Object graphics data: MAGIC CASTLE b$E9C4 DEFB $B4,$FC,$45 ; #R$FCB4 $E9C7 DEFB $B4,$FC,$05 $E9CA DEFB $B4,$FC,$45 $E9CD DEFB $B4,$FC,$05 ; Object name: SHADOW WOOD @label=NAME_SHADOW_WOOD t$E9D0 DEFM "SHADOW WOOD " ; Object data: SHADOW WOOD b$E9DD DEFB $02,$00,$00,$04,$00,$00,$09,$04,$FE,$1E ; Object graphics data: SHADOW WOOD b$E9E7 DEFB $D4,$FC,$05 ; #R$FCD4 $E9EA DEFB $D4,$FC,$05 $E9ED DEFB $D4,$FC,$45 $E9F0 DEFB $D4,$FC,$45 ; Object name: MAGIC WOOD @label=NAME_MAGIC_WOOD t$E9F3 DEFM "MAGIC WOOD " ; Object data: MAGIC WOOD b$EA00 DEFB $00,$00,$00,$05,$00,$00,$09,$06,$02,$FA ; Object graphics data: MAGIC WOOD b$EA0A DEFB $F4,$FC,$04 ; #R$FCF4 $EA0D DEFB $F4,$FC,$44 $EA10 DEFB $F4,$FC,$06 $EA13 DEFB $F4,$FC,$46 ; Object name: WALL @label=NAME_WALL t$EA16 DEFM "WALL " ; Object data: WALL b$EA23 DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$1E ; Object graphics data: WALL b$EA2D DEFB $14,$FD,$72 ; #R$FD14 $EA30 DEFB $14,$FD,$72 $EA33 DEFB $14,$FD,$72 $EA36 DEFB $14,$FD,$72 ; Wizard 1 name: JULIANLL by default, will be overwritten after name entry ; screen @label=NAME_WIZ_1 t$EA39 DEFM "JULIANLL " ; Wizard 1 data: JULIANLL b$EA46 DEFB $01,$00,$00,$01,$01,$03,$07,$0B,$00,$1E ; Wizard 1 graphics data: JULIANLL. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_1 b$EA50 DEFB $34,$FD,$42 ; #R$FD34 $EA53 DEFB $34,$FD,$42 $EA56 DEFB $34,$FD,$42 $EA59 DEFB $34,$FD,$42 ; Wizard 2 name: GANDALFRT by default, will be overwritten after name entry ; screen @label=NAME_WIZ_2 t$EA5C DEFM "GANDALFRT " ; Wizard 2 data: GANDALFRT b$EA69 DEFB $01,$00,$00,$01,$01,$03,$06,$0F,$00,$1E ; Wizard 2 graphics data: GANDALFRT. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_2 b$EA73 DEFB $54,$FD,$43 ; #R$FD54 $EA76 DEFB $54,$FD,$43 $EA79 DEFB $54,$FD,$43 $EA7C DEFB $54,$FD,$43 ; Wizard 3 name: GREATFOGEY by default, will be overwritten after name entry ; screen @label=NAME_WIZ_3 t$EA7F DEFM "GREATFOGEY " ; Wizard 3 data: GREATFOGEY b$EA8C DEFB $03,$00,$00,$03,$01,$05,$06,$00,$00,$1E ; Wizard 3 graphics data: GREATFOGEY. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_3 b$EA96 DEFB $74,$FD,$44 ; #R$FD74 $EA99 DEFB $74,$FD,$44 $EA9C DEFB $74,$FD,$44 $EA9F DEFB $74,$FD,$44 ; Wizard 4 name: DYERARTI by default, will be overwritten after name entry ; screen @label=NAME_WIZ_4 t$EAA2 DEFM "DYERARTI " ; Wizard 4 data: DYERARTI b$EAAF DEFB $01,$00,$00,$02,$01,$06,$07,$00,$00,$1E ; Wizard 4 graphics data: DYERARTI. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_4 b$EAB9 DEFB $94,$FD,$45 ; #R$FD94 $EABC DEFB $94,$FD,$45 $EABF DEFB $94,$FD,$45 $EAC2 DEFB $94,$FD,$45 ; Wizard 5 name: GOWIN by default, will be overwritten after name entry screen @label=NAME_WIZ_5 t$EAC5 DEFM "GOWIN " ; Wizard 5 data: GOWIN b$EAD2 DEFB $02,$00,$00,$02,$01,$05,$00,$00,$00,$1E ; Wizard 5 graphics data: GOWIN. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_5 b$EADC DEFB $B4,$FD,$46 ; #R$FDB4 $EADF DEFB $B4,$FD,$46 $EAE2 DEFB $B4,$FD,$46 $EAE5 DEFB $B4,$FD,$46 ; Wizard 6 name: MERLIN by default, will be overwritten after name entry screen @label=NAME_WIZ_6 t$EAE8 DEFM "MERLIN " ; Wizard 6 data: MERLIN b$EAF5 DEFB $01,$00,$00,$04,$01,$04,$00,$00,$00,$1E ; Wizard 6 graphics data: MERLIN. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_6 b$EAFF DEFB $D4,$FD,$47 ; #R$FDD4 $EB02 DEFB $D4,$FD,$47 $EB05 DEFB $D4,$FD,$47 $EB08 DEFB $D4,$FD,$47 ; Wizard 7 name: ILIAN RANE by default, will be overwritten after name entry ; screen @label=NAME_WIZ_7 t$EB0B DEFM "ILIAN RANE " ; Wizard 7 data: ILIAN RANE b$EB18 DEFB $01,$00,$00,$02,$01,$04,$00,$00,$00,$1E ; Wizard 7 graphics data: ILIAN RANE. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_7 b$EB22 DEFB $F4,$FD,$06 ; #R$FDF4 $EB25 DEFB $F4,$FD,$06 $EB28 DEFB $F4,$FD,$06 $EB2B DEFB $F4,$FD,$06 ; Wizard 8 name: ASIMONO ZARK by default, will be overwritten after name entry ; screen @label=NAME_WIZ_8 t$EB2E DEFM "ASIMONO ZARK " ; Wizard 8 data: ASIMONO ZARK b$EB3B DEFB $03,$00,$00,$02,$01,$06,$00,$00,$00,$1E ; Wizard 8 graphics data: ASIMONO ZARK. ; ; Will be overwritten when choosing the wizard graphics or when a wizard status ; spell is cast. @label=GRAPH_WIZ_8 b$EB45 DEFB $14,$FE,$05 ; #R$FE14 $EB48 DEFB $14,$FE,$05 $EB4B DEFB $14,$FE,$05 $EB4E DEFB $14,$FE,$05 ; Data block at EB51 @label=VAR_EB51_MAYBE_TABLE b$EB51 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB59 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB61 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EB69 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Graphics - King Cobra ; ; There seem to be two bytes in the middle that shouldn't be there. ; . ; #HTML(#FOR(0,1)//n/ ; #UDGARRAY2;($EB71+n*$20)-(($EB71+n*$20)+$18)-8(king_cobran*.png) // ; #FOR(2,2)//n/ ; #UDGARRAY2;($EB71+2+n*$20)-(($EB71+2+n*$20)+$18)-8(king_cobran*.png) //) @label=GRAPHICS_KING_COBRA b$EB71 DEFB $00,$00,$00,$00,$01,$00,$00,$00 $EB79 DEFB $00,$00,$00,$00,$80,$80,$80,$80 $EB81 DEFB $00,$03,$04,$04,$03,$00,$00,$00 $EB89 DEFB $80,$00,$60,$10,$E0,$00,$00,$00 $EB91 DEFB $00,$00,$00,$00,$00,$03,$01,$00 $EB99 DEFB $00,$00,$00,$00,$00,$00,$00,$80 $EBA1 DEFB $00,$03,$04,$04,$03,$00,$00,$00 $EBA9 DEFB $80,$00,$60,$10,$E0,$00,$00,$00 $EBB1 DEFB $73,$F2,$00,$00,$00,$00,$00,$00 $EBB9 DEFB $07,$08,$00,$00,$00,$00,$00,$00 $EBC1 DEFB $00,$80,$00,$03,$04,$04,$03,$00 $EBC9 DEFB $00,$00,$80,$00,$60,$10,$E0,$00 $EBD1 DEFB $00,$00 ; Graphics - Bat (Dead) ; ; #HTML(#UDGARRAY2;($EBD3)-($EBD3+$18)-8(bat_deadn*.png)) @label=GRAPHICS_BAT_DEAD b$EBD3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EBDB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EBE3 DEFB $00,$00,$00,$00,$01,$13,$0C,$00 $EBEB DEFB $00,$00,$00,$00,$00,$90,$60,$00 ; Graphics - Bat ; ; #HTML(#FOR(0,2)//n/ #UDGARRAY2;($EBF3+n*$20)-(($EBF3+n*$20)+$18)-8(batn*.png) ; //) @label=GRAPHICS_BAT b$EBF3 DEFB $00,$00,$00,$00,$00,$00,$0C,$13 $EBFB DEFB $00,$00,$00,$00,$00,$00,$60,$90 $EC03 DEFB $01,$00,$00,$00,$00,$00,$00,$00 $EC0B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC13 DEFB $00,$00,$00,$00,$00,$00,$00,$0F $EC1B DEFB $00,$00,$00,$00,$00,$00,$00,$E0 $EC23 DEFB $11,$00,$00,$00,$00,$00,$00,$00 $EC2B DEFB $10,$00,$00,$00,$00,$00,$00,$00 $EC33 DEFB $00,$00,$00,$00,$00,$00,$00,$03 $EC3B DEFB $00,$00,$00,$00,$00,$00,$00,$80 $EC43 DEFB $05,$18,$00,$00,$00,$00,$00,$00 $EC4B DEFB $40,$30,$00,$00,$00,$00,$00,$00 ; Graphics - Dead King Cobra ; ; #HTML(#UDGARRAY2;($EC53)-($EC53+$18)-8(king_cobra3n*.png)) @label=GRAPHICS_KING_COBRA_DEAD b$EC53 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC5B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EC63 DEFB $00,$1E,$20,$18,$07,$00,$00,$00 $EC6B DEFB $00,$00,$38,$C4,$00,$00,$00,$00 ; Graphics - Gooey Blob ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EC73+n*$20)-(($EC73+n*$20)+$18)-8(gooey_blobn*.png) //) @label=GRAPHICS_GOOEY_BLOB b$EC73 DEFB $01,$03,$07,$07,$03,$33,$7F,$FF $EC7B DEFB $80,$C0,$E0,$E0,$C0,$CC,$FF,$FF $EC83 DEFB $FF,$7F,$39,$03,$07,$0F,$0F,$06 $EC8B DEFB $CC,$E0,$FC,$BE,$9E,$8C,$00,$00 $EC93 DEFB $00,$01,$03,$03,$03,$01,$19,$7F $EC9B DEFB $00,$80,$C0,$C0,$C0,$98,$FE,$FE $ECA3 DEFB $7F,$19,$01,$03,$07,$07,$03,$00 $ECAB DEFB $E0,$F0,$BE,$9E,$8C,$80,$00,$00 $ECB3 DEFB $00,$00,$01,$03,$03,$01,$19,$3F $ECBB DEFB $00,$00,$80,$C0,$C0,$98,$FC,$FC $ECC3 DEFB $3F,$19,$03,$07,$07,$03,$00,$00 $ECCB DEFB $E0,$F0,$BC,$9C,$00,$00,$00,$00 $ECD3 DEFB $00,$00,$00,$00,$00,$00,$00,$0C $ECDB DEFB $00,$00,$00,$00,$00,$00,$00,$60 $ECE3 DEFB $1A,$37,$3E,$6B,$7F,$00,$00,$00 $ECEB DEFB $E0,$B0,$F0,$A8,$FE,$00,$00,$00 ; Graphics - Dire Wolf ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($ECF3+n*$20)-(($ECF3+n*$20)+$18)-8(dire_wolfn*.png) //) @label=GRAPHICS_DIRE_WOLF b$ECF3 DEFB $00,$00,$00,$00,$08,$78,$1C,$27 $ECFB DEFB $00,$00,$00,$00,$00,$08,$08,$F0 $ED03 DEFB $0F,$0A,$09,$05,$00,$00,$00,$00 $ED0B DEFB $F0,$28,$48,$50,$00,$00,$00,$00 $ED13 DEFB $00,$00,$00,$00,$08,$78,$1C,$27 $ED1B DEFB $00,$00,$00,$00,$00,$04,$08,$F0 $ED23 DEFB $0F,$0C,$14,$14,$00,$00,$00,$00 $ED2B DEFB $F0,$28,$28,$24,$00,$00,$00,$00 $ED33 DEFB $00,$00,$00,$00,$08,$78,$3C,$27 $ED3B DEFB $00,$00,$00,$00,$00,$00,$0C,$F0 $ED43 DEFB $0F,$0C,$28,$08,$00,$00,$00,$00 $ED4B DEFB $F0,$1C,$12,$08,$00,$00,$00,$00 $ED53 DEFB $00,$00,$00,$00,$00,$00,$00,$04 $ED5B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $ED63 DEFB $05,$22,$1B,$7F,$00,$00,$00,$00 $ED6B DEFB $8A,$0C,$F0,$FE,$00,$00,$00,$00 ; Graphics - Spectre ; ; #HTML(#FOR(0,1)//n/ ; #UDGARRAY2;($ED73+n*$20)-(($ED73+n*$20)+$18)-8(spectren*.png) //) @label=GRAPHICS_SPECTRE b$ED73 DEFB $00,$00,$00,$40,$20,$11,$0A,$07 $ED7B DEFB $00,$00,$00,$60,$60,$F0,$F0,$E0 $ED83 DEFB $00,$00,$01,$01,$01,$03,$00,$00 $ED8B DEFB $E0,$F0,$B0,$10,$10,$18,$00,$00 $ED93 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $ED9B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EDA3 DEFB $00,$00,$00,$01,$37,$3F,$00,$00 $EDAB DEFB $00,$00,$00,$00,$C4,$FC,$00,$00 ; Graphics - Goblin ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EDB3+n*$20)-(($EDB3+n*$20)+$18)-8(goblinn*.png) //) @label=GRAPHICS_GOBLIN b$EDB3 DEFB $00,$00,$00,$61,$71,$37,$1F,$1B $EDBB DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $EDC3 DEFB $03,$07,$06,$06,$06,$0E,$00,$00 $EDCB DEFB $C8,$E0,$60,$60,$60,$E0,$00,$00 $EDD3 DEFB $00,$30,$30,$31,$31,$1F,$1F,$03 $EDDB DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $EDE3 DEFB $03,$07,$06,$06,$06,$0E,$00,$00 $EDEB DEFB $C8,$E0,$60,$60,$60,$E0,$00,$00 $EDF3 DEFB $00,$06,$0C,$0D,$19,$1F,$0F,$03 $EDFB DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $EE03 DEFB $03,$07,$06,$06,$06,$0E,$00,$00 $EE0B DEFB $C8,$E0,$60,$60,$60,$E0,$00,$00 $EE13 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE1B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE23 DEFB $00,$00,$00,$11,$3B,$3F,$00,$00 $EE2B DEFB $00,$00,$00,$E2,$FE,$FE,$00,$00 ; Graphics - Crocodile ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EE33+n*$20)-(($EE33+n*$20)+$18)-8(crocodilen*.png) //) @label=GRAPHICS_CROCODILE b$EE33 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE3B DEFB $00,$00,$00,$00,$00,$00,$00,$0C $EE43 DEFB $00,$01,$0F,$1F,$35,$01,$00,$00 $EE4B DEFB $02,$FC,$F8,$24,$04,$00,$00,$00 $EE53 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE5B DEFB $00,$00,$00,$00,$00,$00,$00,$0C $EE63 DEFB $00,$1D,$7F,$1F,$35,$01,$00,$00 $EE6B DEFB $02,$FC,$F8,$24,$04,$00,$00,$00 $EE73 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE7B DEFB $00,$00,$00,$00,$00,$00,$00,$0C $EE83 DEFB $70,$1D,$0F,$1F,$35,$01,$00,$00 $EE8B DEFB $02,$FC,$F8,$24,$04,$00,$00,$00 $EE93 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE9B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EEA3 DEFB $00,$20,$19,$0F,$7F,$00,$00,$00 $EEAB DEFB $10,$0C,$26,$FE,$FC,$00,$00,$00 ; Graphics - Green Dragon ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EEB3+n*$20)-(($EEB3+n*$20)+$18)-8(green_dragonn*.png) //) @label=GRAPHICS_GREEN_DRAGON b$EEB3 DEFB $00,$F1,$18,$3C,$4C,$19,$31,$73 $EEBB DEFB $00,$C0,$E0,$F0,$F0,$F8,$E4,$00 $EEC3 DEFB $7A,$7F,$3F,$1F,$14,$14,$24,$08 $EECB DEFB $70,$F8,$FE,$F9,$2D,$25,$44,$08 $EED3 DEFB $60,$18,$0C,$3E,$06,$0C,$38,$71 $EEDB DEFB $00,$00,$40,$70,$78,$FC,$FE,$C0 $EEE3 DEFB $7B,$7F,$3F,$1F,$14,$14,$24,$08 $EEEB DEFB $70,$F8,$FE,$F9,$2D,$25,$44,$08 $EEF3 DEFB $18,$06,$03,$1F,$03,$0E,$38,$70 $EEFB DEFB $00,$00,$00,$00,$10,$3C,$7E,$F8 $EF03 DEFB $7B,$7F,$3F,$1F,$14,$14,$24,$08 $EF0B DEFB $F0,$F8,$FE,$F9,$2D,$25,$44,$08 $EF13 DEFB $00,$00,$00,$00,$00,$00,$00,$3C $EF1B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF23 DEFB $73,$E8,$C5,$E7,$7F,$3F,$00,$00 $EF2B DEFB $08,$28,$9A,$F9,$FD,$FE,$00,$00 ; Graphics - Vampire ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EF33+n*$20)-(($EF33+n*$20)+$18)-8(vampiren*.png) //) @label=GRAPHICS_VAMPIRE b$EF33 DEFB $00,$00,$00,$00,$01,$01,$03,$03 $EF3B DEFB $00,$00,$00,$00,$80,$80,$C0,$C0 $EF43 DEFB $07,$07,$07,$0F,$0A,$02,$00,$00 $EF4B DEFB $E0,$E0,$F0,$F0,$48,$40,$00,$00 $EF53 DEFB $00,$00,$00,$00,$01,$01,$03,$03 $EF5B DEFB $00,$00,$00,$00,$80,$80,$C0,$E0 $EF63 DEFB $03,$07,$07,$06,$02,$02,$00,$00 $EF6B DEFB $F0,$F0,$F8,$5C,$40,$40,$00,$00 $EF73 DEFB $00,$00,$00,$00,$01,$01,$03,$03 $EF7B DEFB $00,$00,$00,$00,$80,$80,$C0,$E0 $EF83 DEFB $03,$03,$07,$06,$02,$02,$00,$00 $EF8B DEFB $F0,$F8,$CC,$44,$40,$40,$00,$00 $EF93 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF9B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EFA3 DEFB $02,$02,$02,$03,$37,$3F,$00,$00 $EFAB DEFB $00,$00,$00,$80,$E4,$FC,$00,$00 ; Graphics - Faun ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($EFB3+n*$20)-(($EFB3+n*$20)+$18)-8(faunn*.png) //) @label=GRAPHICS_FAUN b$EFB3 DEFB $00,$00,$01,$01,$01,$23,$15,$09 $EFBB DEFB $00,$00,$40,$80,$80,$C0,$A0,$90 $EFC3 DEFB $03,$03,$03,$01,$01,$02,$00,$00 $EFCB DEFB $C0,$C0,$60,$20,$20,$40,$00,$00 $EFD3 DEFB $00,$00,$01,$11,$11,$0B,$0D,$01 $EFDB DEFB $00,$00,$40,$80,$80,$C0,$A0,$90 $EFE3 DEFB $03,$03,$03,$01,$01,$02,$00,$00 $EFEB DEFB $C0,$C0,$60,$20,$20,$40,$00,$00 $EFF3 DEFB $00,$00,$05,$05,$09,$0F,$01,$01 $EFFB DEFB $00,$00,$40,$80,$80,$C0,$A0,$90 $F003 DEFB $03,$03,$03,$01,$01,$02,$00,$00 $F00B DEFB $C0,$C0,$60,$20,$20,$40,$00,$00 $F013 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F01B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F023 DEFB $00,$00,$00,$01,$37,$7F,$00,$00 $F02B DEFB $00,$00,$04,$38,$E2,$FC,$00,$00 ; Graphics - Lion ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F033+n*$20)-(($F033+n*$20)+$18)-8(lionn*.png) //) @label=GRAPHICS_LION b$F033 DEFB $00,$00,$00,$00,$18,$7E,$7F,$3F $F03B DEFB $00,$00,$00,$00,$00,$00,$F0,$F8 $F043 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F04B DEFB $FC,$2C,$24,$44,$08,$00,$00,$00 $F053 DEFB $00,$00,$00,$18,$7C,$3E,$7F,$3F $F05B DEFB $00,$00,$00,$00,$00,$00,$F0,$F8 $F063 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F06B DEFB $FC,$2C,$24,$44,$08,$00,$00,$00 $F073 DEFB $00,$00,$00,$2C,$1C,$1E,$3F,$1F $F07B DEFB $00,$00,$00,$00,$00,$00,$F0,$F8 $F083 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F08B DEFB $FC,$2C,$24,$44,$08,$00,$00,$00 $F093 DEFB $00,$00,$00,$00,$00,$00,$00,$04 $F09B DEFB $00,$00,$00,$00,$00,$00,$00,$22 $F0A3 DEFB $09,$1A,$7F,$7F,$3F,$1C,$00,$00 $F0AB DEFB $92,$14,$FC,$FC,$F8,$00,$00,$00 ; Graphics - Gryphon ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F0B3+n*$20)-(($F0B3+n*$20)+$18)-8(gryphonn*.png) //) @label=GRAPHICS_GRYPHON b$F0B3 DEFB $00,$00,$03,$30,$79,$0D,$07,$03 $F0BB DEFB $00,$80,$C0,$C6,$8F,$98,$F0,$E0 $F0C3 DEFB $03,$03,$02,$02,$02,$00,$00,$00 $F0CB DEFB $F0,$D0,$50,$50,$40,$00,$00,$00 $F0D3 DEFB $00,$01,$07,$03,$01,$01,$0F,$7F $F0DB DEFB $00,$00,$80,$80,$80,$80,$F8,$FF $F0E3 DEFB $03,$03,$02,$02,$02,$00,$00,$00 $F0EB DEFB $F0,$D0,$50,$50,$40,$00,$00,$00 $F0F3 DEFB $00,$02,$0F,$03,$05,$01,$07,$0F $F0FB DEFB $00,$00,$00,$00,$80,$80,$F0,$F8 $F103 DEFB $1F,$33,$42,$02,$02,$00,$00,$00 $F10B DEFB $FC,$D6,$51,$50,$40,$00,$00,$00 $F113 DEFB $00,$00,$00,$00,$00,$00,$00,$11 $F11B DEFB $00,$00,$00,$00,$00,$00,$00,$08 $F123 DEFB $3A,$62,$73,$3F,$1F,$07,$00,$00 $F12B DEFB $08,$18,$F0,$F8,$FE,$C0,$00,$00 ; Graphics - Elf ; ; #HTML(#FOR(0,4)//n/ #UDGARRAY2;($F133+n*$20)-(($F133+n*$20)+$18)-8(elfn*.png) ; //) @label=GRAPHICS_ELF b$F133 DEFB $00,$00,$02,$06,$06,$3F,$06,$06 $F13B DEFB $00,$00,$00,$C0,$C0,$C0,$C0,$C0 $F143 DEFB $02,$00,$01,$01,$02,$02,$00,$00 $F14B DEFB $C0,$C0,$40,$40,$40,$40,$00,$00 $F153 DEFB $00,$00,$02,$05,$05,$1F,$05,$05 $F15B DEFB $00,$00,$00,$C0,$C0,$E0,$C0,$C0 $F163 DEFB $02,$00,$01,$01,$02,$02,$00,$00 $F16B DEFB $C0,$C0,$40,$40,$40,$40,$00,$00 $F173 DEFB $00,$00,$02,$05,$04,$0F,$04,$05 $F17B DEFB $00,$00,$00,$C0,$C0,$F0,$C0,$C0 $F183 DEFB $02,$00,$01,$01,$02,$02,$00,$00 $F18B DEFB $C0,$C0,$40,$40,$40,$40,$00,$00 $F193 DEFB $00,$00,$02,$04,$04,$F7,$04,$04 $F19B DEFB $00,$00,$00,$C0,$C0,$F0,$E0,$C0 $F1A3 DEFB $02,$00,$01,$01,$02,$02,$00,$00 $F1AB DEFB $C0,$C0,$40,$40,$40,$40,$00,$00 $F1B3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F1BB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F1C3 DEFB $00,$00,$03,$04,$1B,$1F,$00,$00 $F1CB DEFB $00,$00,$E0,$90,$E4,$FC,$00,$00 ; Graphics - Horse ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F1D3+n*$20)-(($F1D3+n*$20)+$18)-8(horsen*.png) //) @label=GRAPHICS_HORSE b$F1D3 DEFB $00,$00,$00,$00,$30,$78,$DF,$1F $F1DB DEFB $00,$00,$00,$00,$00,$00,$EC,$F2 $F1E3 DEFB $0F,$14,$14,$12,$0A,$00,$00,$00 $F1EB DEFB $F0,$28,$28,$48,$50,$00,$00,$00 $F1F3 DEFB $00,$00,$00,$00,$30,$78,$DF,$1F $F1FB DEFB $00,$00,$00,$00,$00,$00,$EC,$F2 $F203 DEFB $0F,$14,$14,$24,$08,$00,$00,$00 $F20B DEFB $F0,$28,$28,$24,$20,$00,$00,$00 $F213 DEFB $00,$00,$00,$00,$30,$78,$DF,$1F $F21B DEFB $00,$00,$00,$00,$00,$00,$EC,$F2 $F223 DEFB $0F,$34,$44,$08,$08,$00,$00,$00 $F22B DEFB $F0,$2C,$22,$10,$10,$00,$00,$00 $F233 DEFB $00,$00,$00,$00,$00,$00,$00,$02 $F23B DEFB $00,$00,$00,$00,$00,$00,$00,$09 $F243 DEFB $04,$15,$33,$7F,$7F,$00,$00,$00 $F24B DEFB $CA,$0A,$FC,$FC,$FB,$00,$00,$00 ; Graphics - Orc ; ; #HTML(#FOR(0,3)//n/ #UDGARRAY2;($F253+n*$20)-(($F253+n*$20)+$18)-8(orcn*.png) ; //) @label=GRAPHICS_ORC b$F253 DEFB $00,$00,$00,$01,$01,$40,$23,$15 $F25B DEFB $00,$00,$80,$80,$80,$B0,$78,$78 $F263 DEFB $09,$01,$02,$02,$06,$00,$00,$00 $F26B DEFB $B0,$C0,$40,$40,$C0,$00,$00,$00 $F273 DEFB $00,$00,$00,$11,$11,$10,$13,$0D $F27B DEFB $00,$00,$80,$80,$80,$B0,$78,$78 $F283 DEFB $01,$01,$02,$02,$06,$00,$00,$00 $F28B DEFB $B0,$C0,$40,$40,$C0,$00,$00,$00 $F293 DEFB $00,$00,$02,$05,$05,$08,$0F,$01 $F29B DEFB $00,$00,$80,$80,$80,$B0,$78,$78 $F2A3 DEFB $01,$01,$02,$02,$06,$00,$00,$00 $F2AB DEFB $B0,$C0,$40,$40,$C0,$00,$00,$00 $F2B3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F2BB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F2C3 DEFB $00,$00,$01,$1B,$1F,$00,$00,$00 $F2CB DEFB $00,$00,$C0,$E4,$FC,$00,$00,$00 ; Graphics - Red Dragon ; ; #HTML(#FOR(0,2)//n/ ; #UDGARRAY2;($F2D3+n*$20)-(($F2D3+n*$20)+$18)-8(red_dragonn*.png) //) @label=GRAPHICS_RED_DRAGON b$F2D3 DEFB $00,$00,$00,$10,$F8,$18,$31,$31 $F2DB DEFB $00,$00,$00,$00,$80,$C0,$E2,$F2 $F2E3 DEFB $3B,$1E,$0F,$17,$15,$24,$08,$01 $F2EB DEFB $8A,$02,$E1,$F1,$F9,$79,$3A,$FC $F2F3 DEFB $00,$70,$08,$7C,$0C,$18,$18,$1D $F2FB DEFB $00,$00,$00,$80,$E0,$F0,$FD,$C1 $F303 DEFB $0F,$1F,$27,$29,$08,$00,$00,$01 $F30B DEFB $01,$C2,$E2,$F2,$79,$79,$3A,$FC $F313 DEFB $30,$0C,$06,$0E,$3C,$0C,$0E,$1F $F31B DEFB $00,$00,$20,$38,$3E,$78,$C2,$82 $F323 DEFB $23,$45,$08,$08,$00,$00,$00,$01 $F32B DEFB $C2,$E1,$F1,$F9,$7A,$7A,$3A,$FC ; Graphics - Fire ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F333+n*$20)-(($F333+n*$20)+$18)-8(firen*.png) //) @label=GRAPHICS_FIRE b$F333 DEFB $20,$20,$21,$03,$05,$04,$04,$02 $F33B DEFB $04,$84,$00,$00,$00,$80,$44,$48 $F343 DEFB $12,$22,$32,$54,$4B,$27,$1F,$00 $F34B DEFB $48,$54,$92,$92,$6A,$9C,$F8,$00 $F353 DEFB $00,$00,$20,$30,$11,$11,$01,$41 $F35B DEFB $00,$00,$04,$04,$08,$80,$58,$54 $F363 DEFB $62,$52,$92,$94,$4B,$24,$1D,$00 $F36B DEFB $54,$52,$8A,$92,$6A,$94,$B8,$00 $F373 DEFB $01,$00,$20,$30,$10,$18,$28,$48 $F37B DEFB $00,$00,$04,$04,$18,$30,$50,$48 $F383 DEFB $8A,$93,$92,$94,$4B,$27,$1F,$00 $F38B DEFB $24,$12,$92,$92,$6A,$9C,$F8,$00 $F393 DEFB $00,$00,$01,$00,$01,$01,$01,$41 $F39B DEFB $00,$80,$00,$00,$00,$80,$58,$54 $F3A3 DEFB $62,$52,$92,$94,$4B,$24,$1D,$00 $F3AB DEFB $54,$52,$8A,$92,$6A,$94,$B8,$00 ; Graphics - Manticore ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F3B3+n*$20)-(($F3B3+n*$20)+$18)-8(manticoren*.png) //) @label=GRAPHICS_MANTICORE b$F3B3 DEFB $07,$08,$08,$65,$65,$3B,$3F,$3F $F3BB DEFB $80,$FC,$F0,$C5,$82,$0D,$F0,$F8 $F3C3 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F3CB DEFB $FC,$2C,$24,$44,$08,$00,$00,$00 $F3D3 DEFB $00,$00,$00,$67,$68,$3B,$3F,$3F $F3DB DEFB $00,$00,$00,$05,$FE,$CD,$F0,$F8 $F3E3 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F3EB DEFB $FC,$2C,$24,$44,$08,$00,$00,$00 $F3F3 DEFB $00,$00,$00,$60,$60,$3B,$3F,$3F $F3FB DEFB $00,$00,$00,$05,$02,$0D,$F0,$F8 $F403 DEFB $1F,$0F,$12,$22,$04,$00,$00,$00 $F40B DEFB $FC,$7C,$24,$44,$08,$00,$00,$00 $F413 DEFB $00,$00,$00,$00,$00,$00,$00,$02 $F41B DEFB $00,$00,$00,$00,$00,$00,$00,$04 $F423 DEFB $14,$0C,$07,$6F,$7F,$03,$00,$00 $F42B DEFB $32,$0A,$FC,$FC,$FF,$E0,$00,$00 ; Graphics - Troll ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F433+n*$20)-(($F433+n*$20)+$18)-8(trolln*.png) //) @label=GRAPHICS_TROLL b$F433 DEFB $00,$00,$03,$03,$01,$FF,$4F,$07 $F43B DEFB $00,$00,$80,$80,$00,$E0,$F0,$D8 $F443 DEFB $03,$03,$06,$06,$06,$0F,$00,$00 $F44B DEFB $CC,$C0,$C0,$C0,$C0,$C0,$00,$00 $F453 DEFB $00,$00,$23,$33,$19,$0F,$07,$07 $F45B DEFB $00,$00,$80,$80,$00,$E0,$F0,$D8 $F463 DEFB $03,$03,$06,$06,$06,$0F,$00,$00 $F46B DEFB $CC,$C0,$C0,$C0,$C0,$C0,$00,$00 $F473 DEFB $00,$08,$1B,$0B,$0D,$0F,$07,$07 $F47B DEFB $00,$00,$80,$80,$00,$E0,$F0,$D8 $F483 DEFB $03,$03,$06,$06,$06,$0F,$00,$00 $F48B DEFB $CC,$C0,$C0,$C0,$C0,$C0,$00,$00 $F493 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F49B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F4A3 DEFB $00,$00,$00,$03,$37,$3F,$00,$00 $F4AB DEFB $00,$00,$00,$C4,$FC,$FC,$00,$00 ; Graphics - Unicorn ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F4B3+n*$20)-(($F4B3+n*$20)+$18)-8(unicornn*.png) //) @label=GRAPHICS_UNICORN b$F4B3 DEFB $00,$00,$40,$20,$18,$3C,$6F,$0F $F4BB DEFB $00,$00,$00,$00,$00,$00,$F6,$F9 $F4C3 DEFB $07,$0A,$0A,$09,$05,$00,$00,$00 $F4CB DEFB $F8,$14,$14,$24,$28,$00,$00,$00 $F4D3 DEFB $00,$00,$40,$20,$18,$3C,$6F,$0F $F4DB DEFB $00,$00,$00,$00,$00,$00,$F7,$F8 $F4E3 DEFB $07,$0A,$0A,$12,$04,$00,$00,$00 $F4EB DEFB $F8,$14,$14,$12,$10,$00,$00,$00 $F4F3 DEFB $00,$00,$40,$20,$18,$3C,$6F,$0F $F4FB DEFB $00,$00,$00,$00,$00,$01,$F6,$F8 $F503 DEFB $07,$1A,$22,$04,$04,$00,$00,$00 $F50B DEFB $F8,$16,$11,$08,$08,$00,$00,$00 $F513 DEFB $00,$00,$00,$00,$00,$00,$00,$01 $F51B DEFB $00,$00,$00,$00,$00,$00,$00,$09 $F523 DEFB $02,$8A,$59,$3F,$3F,$00,$00,$00 $F52B DEFB $6A,$8A,$FC,$FC,$FB,$00,$00,$00 ; Graphics - Ghost ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F533+n*$20)-(($F533+n*$20)+$18)-8(ghostn*.png) //) @label=GRAPHICS_GHOST b$F533 DEFB $00,$00,$40,$47,$69,$F9,$FF,$CE $F53B DEFB $00,$04,$0C,$CE,$3E,$3E,$E3,$43 $F543 DEFB $CE,$4F,$45,$05,$40,$02,$02,$00 $F54B DEFB $41,$60,$E1,$61,$D0,$80,$10,$44 $F553 DEFB $00,$00,$00,$07,$09,$79,$FF,$FE $F55B DEFB $00,$00,$04,$CC,$3C,$3E,$EE,$47 $F563 DEFB $CE,$0E,$47,$43,$04,$45,$00,$02 $F56B DEFB $40,$40,$60,$A1,$21,$90,$80,$10 $F573 DEFB $00,$00,$00,$07,$09,$19,$3F,$FE $F57B DEFB $00,$00,$00,$C0,$24,$3C,$FE,$7E $F583 DEFB $CE,$CE,$4E,$07,$43,$44,$04,$40 $F58B DEFB $63,$40,$40,$60,$A0,$A1,$00,$90 $F593 DEFB $00,$00,$00,$07,$49,$79,$FF,$FE $F59B DEFB $00,$00,$04,$C4,$2C,$3E,$9A,$66 $F5A3 DEFB $8E,$0E,$07,$03,$00,$00,$44,$04 $F5AB DEFB $43,$41,$40,$E0,$40,$80,$01,$20 ; Graphics - Wraith ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2;($F5B3+n*$20)-(($F5B3+n*$20)+$18)-8(wraithn*.png) //) @label=GRAPHICS_WRAITH b$F5B3 DEFB $00,$00,$00,$00,$00,$11,$0A,$04 $F5BB DEFB $00,$00,$00,$C0,$C0,$E0,$D0,$D0 $F5C3 DEFB $00,$01,$01,$02,$02,$00,$00,$00 $F5CB DEFB $C0,$20,$20,$10,$10,$00,$00,$00 $F5D3 DEFB $00,$00,$01,$01,$3B,$2E,$35,$1B $F5DB DEFB $00,$00,$E0,$20,$30,$18,$28,$28 $F5E3 DEFB $0F,$02,$06,$05,$05,$07,$00,$00 $F5EB DEFB $38,$D0,$D8,$E8,$28,$38,$00,$00 $F5F3 DEFB $07,$04,$FC,$80,$80,$91,$8A,$84 $F5FB DEFB $F8,$08,$0C,$C6,$C2,$E2,$D2,$D2 $F603 DEFB $C0,$61,$31,$12,$12,$10,$10,$1F $F60B DEFB $C2,$22,$22,$12,$12,$02,$02,$FE $F613 DEFB $00,$03,$02,$7E,$44,$40,$40,$60 $F61B DEFB $00,$F0,$10,$18,$0C,$04,$04,$04 $F623 DEFB $30,$1C,$08,$08,$08,$08,$0F,$00 $F62B DEFB $04,$0C,$04,$04,$C4,$C4,$FC,$00 ; Graphics - Bear ; ; There seems to be a byte at F673 that shouldn't be there. ; . ; #HTML(#FOR(0,1)//n/ ; #UDGARRAY2,$42;($F633+n*$20)-(($F633+n*$20)+$18)-8(bearn*.png) // ; #FOR(2,3)//n/ ; #UDGARRAY2,$42;($F633+1+n*$20)-(($F633+1+n*$20)+$18)-8(bearn*.png) //) @label=GRAPHICS_BEAR b$F633 DEFB $00,$00,$03,$07,$03,$01,$0D,$07 $F63B DEFB $00,$00,$00,$80,$C0,$C0,$E0,$E0 $F643 DEFB $03,$01,$03,$03,$03,$03,$00,$00 $F64B DEFB $E0,$E0,$E0,$60,$60,$60,$00,$00 $F653 DEFB $00,$00,$03,$07,$03,$01,$07,$1F $F65B DEFB $00,$00,$00,$80,$C0,$C0,$E0,$E0 $F663 DEFB $11,$01,$03,$03,$03,$03,$00,$00 $F66B DEFB $E0,$E0,$E0,$60,$60,$60,$00,$00 $F673 DEFB $00,$00,$00,$03,$07,$03,$01,$03 $F67B DEFB $07,$00,$00,$00,$80,$C0,$C0,$E0 $F683 DEFB $E0,$0D,$09,$03,$03,$03,$03,$00 $F68B DEFB $00,$E0,$E0,$E0,$60,$60,$60,$00 $F693 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F69B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F6A3 DEFB $00,$00,$00,$27,$7F,$7F,$3F,$00 $F6AB DEFB $00,$00,$C0,$80,$E2,$FE,$FE,$00 $F6B3 DEFB $00 ; Graphics - Gorilla ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$06;($F6B4+n*$20)-(($F6B4+n*$20)+$18)-8(gorillan*.png) //) @label=GRAPHICS_GORILLA b$F6B4 DEFB $00,$00,$19,$33,$33,$3E,$1E,$07 $F6BC DEFB $00,$00,$80,$80,$80,$F8,$F8,$20 $F6C4 DEFB $03,$03,$07,$0E,$0C,$1C,$00,$00 $F6CC DEFB $C0,$C0,$E0,$70,$30,$38,$00,$00 $F6D4 DEFB $00,$00,$01,$07,$0D,$1F,$0F,$07 $F6DC DEFB $00,$00,$80,$E0,$B0,$F8,$F0,$E0 $F6E4 DEFB $03,$03,$07,$0E,$0C,$1C,$00,$00 $F6EC DEFB $C0,$C0,$E0,$70,$30,$38,$00,$00 $F6F4 DEFB $00,$00,$01,$01,$01,$1F,$1F,$04 $F6FC DEFB $00,$00,$98,$CC,$CC,$7C,$78,$E0 $F704 DEFB $03,$03,$07,$0E,$0C,$1C,$00,$00 $F70C DEFB $C0,$C0,$E0,$70,$30,$38,$00,$00 $F714 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F71C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F724 DEFB $00,$00,$01,$37,$3F,$3F,$00,$00 $F72C DEFB $00,$00,$80,$E2,$FE,$FE,$00,$00 ; Graphics - Skeleton ; ; #HTML(#FOR(0,2)//n/ ; #UDGARRAY2,$47;($F734+n*$20)-(($F734+n*$20)+$18)-8(skeletonn*.png) //) @label=GRAPHICS_SKELETON b$F734 DEFB $00,$01,$01,$00,$03,$05,$09,$F0 $F73C DEFB $00,$80,$88,$88,$F0,$C0,$C0,$80 $F744 DEFB $01,$01,$01,$01,$01,$01,$03,$00 $F74C DEFB $C0,$20,$10,$10,$20,$40,$20,$00 $F754 DEFB $00,$01,$01,$00,$03,$45,$29,$10 $F75C DEFB $00,$80,$80,$80,$FC,$C0,$C0,$80 $F764 DEFB $01,$01,$02,$02,$02,$01,$03,$00 $F76C DEFB $C0,$40,$20,$20,$20,$40,$60,$00 $F774 DEFB $00,$01,$11,$10,$17,$19,$01,$00 $F77C DEFB $00,$80,$80,$80,$F0,$C8,$C8,$80 $F784 DEFB $01,$02,$04,$04,$02,$01,$02,$00 $F78C DEFB $C0,$40,$40,$40,$40,$40,$60,$00 ; Graphics - Ogre ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$42;($F794+n*$20)-(($F794+n*$20)+$18)-8(ogren*.png) //) @label=GRAPHICS_OGRE b$F794 DEFB $00,$00,$00,$01,$01,$07,$4F,$FB $F79C DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $F7A4 DEFB $F3,$43,$07,$06,$06,$0E,$00,$00 $F7AC DEFB $C8,$E0,$F0,$30,$38,$00,$00,$00 $F7B4 DEFB $00,$00,$00,$61,$71,$3F,$1F,$03 $F7BC DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $F7C4 DEFB $03,$03,$07,$06,$06,$0E,$00,$00 $F7CC DEFB $C8,$C0,$E0,$60,$60,$70,$00,$00 $F7D4 DEFB $00,$00,$18,$3D,$19,$1F,$0F,$03 $F7DC DEFB $00,$00,$00,$80,$80,$E0,$F0,$D8 $F7E4 DEFB $03,$07,$0F,$0C,$1C,$00,$00,$00 $F7EC DEFB $C8,$C0,$E0,$60,$60,$70,$00,$00 $F7F4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F7FC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F804 DEFB $00,$00,$01,$1B,$1F,$1F,$00,$00 $F80C DEFB $00,$00,$80,$E4,$FC,$FC,$00,$00 ; Graphics - Zombie ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$45;($F814+n*$20)-(($F814+n*$20)+$18)-8(zombien*.png) //) @label=GRAPHICS_ZOMBIE b$F814 DEFB $00,$00,$01,$01,$00,$1F,$01,$01 $F81C DEFB $00,$00,$80,$80,$80,$80,$80,$80 $F824 DEFB $01,$02,$04,$04,$04,$0C,$00,$00 $F82C DEFB $80,$80,$80,$40,$20,$40,$00,$00 $F834 DEFB $00,$00,$01,$01,$00,$1F,$01,$01 $F83C DEFB $00,$00,$80,$80,$80,$80,$80,$80 $F844 DEFB $01,$02,$02,$02,$02,$06,$00,$00 $F84C DEFB $80,$80,$80,$70,$10,$00,$00,$00 $F854 DEFB $00,$00,$01,$01,$00,$1F,$01,$01 $F85C DEFB $00,$00,$80,$80,$80,$80,$80,$80 $F864 DEFB $01,$01,$01,$01,$01,$03,$00,$00 $F86C DEFB $80,$00,$00,$E0,$20,$00,$00,$00 $F874 DEFB $00,$00,$01,$01,$00,$1F,$01,$01 $F87C DEFB $00,$00,$80,$80,$80,$80,$80,$80 $F884 DEFB $01,$02,$04,$02,$01,$03,$00,$00 $F88C DEFB $80,$80,$80,$80,$80,$80,$00,$00 ; Graphics - Harpy ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$45;($F894+n*$20)-(($F894+n*$20)+$18)-8(harpyn*.png) //) @label=GRAPHICS_HARPY b$F894 DEFB $00,$00,$01,$02,$1A,$1A,$0F,$07 $F89C DEFB $00,$00,$E0,$7C,$78,$E0,$C0,$00 $F8A4 DEFB $07,$03,$01,$02,$04,$00,$00,$00 $F8AC DEFB $80,$C0,$F0,$40,$40,$80,$00,$00 $F8B4 DEFB $00,$00,$00,$00,$18,$1B,$0F,$07 $F8BC DEFB $00,$00,$00,$00,$00,$C0,$F8,$C0 $F8C4 DEFB $07,$03,$01,$02,$04,$00,$00,$00 $F8CC DEFB $80,$C0,$F0,$40,$40,$80,$00,$00 $F8D4 DEFB $00,$00,$00,$00,$18,$18,$0F,$07 $F8DC DEFB $00,$00,$00,$00,$00,$00,$00,$80 $F8E4 DEFB $07,$03,$01,$02,$04,$00,$00,$00 $F8EC DEFB $C0,$F8,$F0,$40,$40,$80,$00,$00 $F8F4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F8FC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F904 DEFB $00,$01,$00,$33,$3F,$07,$01,$00 $F90C DEFB $00,$20,$A0,$F0,$FC,$80,$E0,$00 ; Graphics - Pegasus ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$47;($F914+n*$20)-(($F914+n*$20)+$18)-8(pegasusn*.png) //) @label=GRAPHICS_PEGASUS b$F914 DEFB $00,$00,$01,$01,$31,$7B,$DF,$1F $F91C DEFB $00,$FC,$F8,$E0,$80,$00,$EC,$F2 $F924 DEFB $0F,$14,$14,$12,$0A,$00,$00,$00 $F92C DEFB $F0,$28,$28,$48,$50,$00,$00,$00 $F934 DEFB $00,$00,$00,$00,$30,$7B,$DF,$1F $F93C DEFB $00,$00,$00,$00,$FC,$C0,$EE,$F0 $F944 DEFB $0F,$14,$14,$24,$08,$00,$00,$00 $F94C DEFB $F0,$28,$28,$24,$20,$00,$00,$00 $F954 DEFB $00,$00,$00,$00,$30,$7B,$DF,$1F $F95C DEFB $00,$00,$00,$00,$00,$00,$EE,$F0 $F964 DEFB $0F,$35,$44,$08,$08,$00,$00,$00 $F96C DEFB $F0,$FC,$3E,$10,$10,$00,$00,$00 $F974 DEFB $00,$00,$00,$00,$00,$00,$00,$02 $F97C DEFB $00,$00,$00,$00,$00,$00,$00,$12 $F984 DEFB $04,$15,$33,$7F,$7F,$03,$00,$00 $F98C DEFB $D4,$14,$F8,$F8,$F6,$E0,$F8,$00 ; Graphics - Eagle ; ; #HTML(#FOR(0,3)//n/ ; #UDGARRAY2,$46;($F994+n*$20)-(($F994+n*$20)+$18)-8(eaglen*.png) //) @label=GRAPHICS_EAGLE b$F994 DEFB $00,$00,$00,$00,$38,$6C,$07,$03 $F99C DEFB $00,$00,$00,$00,$00,$78,$EC,$80 $F9A4 DEFB $06,$02,$00,$00,$00,$00,$00,$00 $F9AC DEFB $80,$80,$00,$00,$00,$00,$00,$00 $F9B4 DEFB $00,$00,$00,$00,$00,$00,$03,$1F $F9BC DEFB $00,$00,$00,$00,$00,$00,$80,$E0 $F9C4 DEFB $7E,$02,$00,$00,$00,$00,$00,$00 $F9CC DEFB $F8,$9E,$00,$00,$00,$00,$00,$00 $F9D4 DEFB $00,$00,$00,$00,$00,$00,$03,$0F $F9DC DEFB $00,$00,$00,$00,$00,$00,$80,$E0 $F9E4 DEFB $1E,$3A,$30,$00,$00,$00,$00,$00 $F9EC DEFB $F0,$B8,$1C,$0C,$00,$00,$00,$00 $F9F4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F9FC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FA04 DEFB $00,$70,$3D,$0F,$0F,$11,$00,$00 $FA0C DEFB $00,$00,$00,$40,$80,$E0,$78,$00 ; Graphics - Hydra ; ; #HTML(#FOR(0,3)//n/#UDGARRAY2,$44;($FA14+n*$20)-(($FA14+n*$20)+$18)-8(hydran*.png) ; //) @label=GRAPHICS_HYDRA b$FA14 DEFB $00,$36,$12,$12,$CA,$4A,$3F,$07 $FA1C DEFB $00,$C0,$40,$40,$98,$88,$30,$C0 $FA24 DEFB $0E,$1C,$19,$18,$1C,$0F,$07,$00 $FA2C DEFB $00,$F8,$3C,$0C,$1C,$F8,$F0,$00 $FA34 DEFB $00,$0D,$64,$24,$12,$CA,$7F,$07 $FA3C DEFB $00,$80,$80,$B0,$90,$90,$20,$C0 $FA44 DEFB $0E,$1C,$19,$18,$1C,$0F,$07,$00 $FA4C DEFB $00,$F8,$3C,$0C,$1C,$F8,$F0,$00 $FA54 DEFB $00,$03,$19,$09,$64,$32,$CF,$77 $FA5C DEFB $00,$00,$60,$20,$A0,$A0,$40,$80 $FA64 DEFB $0E,$1C,$19,$18,$1C,$0F,$07,$00 $FA6C DEFB $00,$F8,$3C,$0C,$1C,$F8,$F0,$00 $FA74 DEFB $00,$00,$00,$00,$00,$05,$56,$7F $FA7C DEFB $00,$00,$00,$00,$00,$00,$20,$E8 $FA84 DEFB $1F,$38,$71,$62,$60,$7F,$3F,$00 $FA8C DEFB $F8,$00,$FC,$7E,$06,$FE,$F8,$00 ; Graphics - Giant Rat ; ; #HTML(#FOR(0,3)//n/#UDGARRAY2,$07;($FA94+n*$20)-(($FA94+n*$20)+$18)-8(giant_ratn*.png) ; //) @label=GRAPHICS_GIANT_RAT b$FA94 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FA9C DEFB $00,$00,$00,$00,$00,$00,$0C,$92 $FAA4 DEFB $00,$1F,$7F,$FF,$11,$20,$00,$00 $FAAC DEFB $61,$01,$82,$FC,$80,$40,$00,$00 $FAB4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FABC DEFB $00,$00,$00,$00,$00,$0C,$12,$21 $FAC4 DEFB $00,$1F,$7F,$FF,$10,$10,$00,$00 $FACC DEFB $21,$01,$82,$FC,$80,$80,$00,$00 $FAD4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FADC DEFB $00,$00,$00,$00,$00,$0C,$12,$11 $FAE4 DEFB $00,$1F,$7F,$FF,$11,$0A,$00,$00 $FAEC DEFB $09,$01,$82,$FC,$00,$00,$00,$00 $FAF4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FAFC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FB04 DEFB $08,$10,$1F,$FF,$7F,$00,$01,$02 $FB0C DEFB $00,$C0,$00,$80,$FE,$01,$FE,$00 ; Graphics - Centaur ; ; #HTML(#FOR(0,3)//n/#UDGARRAY2,$06;($FB14+n*$20)-(($FB14+n*$20)+$18)-8(centaurn*.png) ; //) @label=GRAPHICS_CENTAUR b$FB14 DEFB $00,$00,$2C,$4C,$44,$7C,$4E,$4F $FB1C DEFB $00,$00,$00,$00,$00,$00,$00,$F6 $FB24 DEFB $2F,$07,$0A,$0A,$09,$05,$00,$00 $FB2C DEFB $F9,$F8,$14,$14,$24,$28,$00,$00 $FB34 DEFB $00,$00,$2C,$4C,$44,$7C,$4E,$4F $FB3C DEFB $00,$00,$00,$00,$00,$00,$00,$F6 $FB44 DEFB $2F,$07,$0A,$0A,$12,$04,$00,$00 $FB4C DEFB $F9,$F8,$14,$14,$12,$10,$00,$00 $FB54 DEFB $00,$00,$2C,$4C,$44,$7C,$4E,$4F $FB5C DEFB $00,$00,$00,$00,$00,$00,$00,$F6 $FB64 DEFB $2F,$07,$1A,$22,$04,$04,$00,$00 $FB6C DEFB $F9,$F8,$16,$11,$08,$08,$00,$00 $FB74 DEFB $00,$00,$00,$00,$00,$00,$00,$02 $FB7C DEFB $00,$00,$00,$00,$00,$00,$00,$09 $FB84 DEFB $04,$05,$03,$6F,$7F,$00,$00,$00 $FB8C DEFB $CA,$0A,$FC,$FC,$97,$00,$00,$00 ; Graphics - Giant ; ; #HTML(#FOR(0,3)//n/#UDGARRAY2,$05;($FB94+n*$20)-(($FB94+n*$20)+$18)-8(giantn*.png) ; //) @label=GRAPHICS_GIANT b$FB94 DEFB $00,$00,$03,$07,$07,$0F,$FD,$F9 $FB9C DEFB $C0,$C0,$F0,$F8,$F8,$EC,$E4,$E6 $FBA4 DEFB $03,$03,$03,$03,$03,$03,$03,$07 $FBAC DEFB $F2,$F0,$30,$30,$30,$30,$30,$70 $FBB4 DEFB $00,$00,$43,$E7,$7F,$3D,$19,$01 $FBBC DEFB $C0,$C0,$F0,$F8,$F8,$EC,$E4,$E6 $FBC4 DEFB $03,$03,$03,$03,$03,$03,$03,$07 $FBCC DEFB $F2,$F0,$30,$30,$30,$30,$30,$70 $FBD4 DEFB $30,$30,$33,$37,$3F,$1D,$01,$01 $FBDC DEFB $C0,$C0,$F0,$F8,$F8,$EC,$E4,$E6 $FBE4 DEFB $03,$03,$03,$03,$03,$03,$03,$07 $FBEC DEFB $F2,$F0,$30,$30,$30,$30,$30,$70 $FBF4 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FBFC DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC04 DEFB $00,$00,$00,$0F,$DF,$FF,$00,$00 $FC0C DEFB $00,$00,$00,$C1,$FF,$FF,$00,$00 ; Graphics - Golden Dragon ; ; #HTML(#FOR(0,3)//n/#UDGARRAY2,$46;($FC14+n*$20)-(($FC14+n*$20)+$18)-8(golden_dragonn*.png) ; //) @label=GRAPHICS_GOLDEN_DRAGON b$FC14 DEFB $00,$17,$30,$71,$71,$FB,$FB,$CF $FC1C DEFB $80,$D0,$D8,$9C,$9C,$3E,$3E,$66 $FC24 DEFB $87,$03,$03,$02,$04,$04,$00,$00 $FC2C DEFB $F2,$F8,$D4,$52,$52,$42,$04,$F8 $FC34 DEFB $1A,$07,$1B,$43,$63,$73,$FB,$FF $FC3C DEFB $00,$00,$00,$04,$0C,$1C,$3E,$7E $FC44 DEFB $C7,$83,$03,$02,$04,$04,$00,$00 $FC4C DEFB $F6,$FA,$D4,$52,$52,$42,$04,$F8 $FC54 DEFB $68,$1C,$1C,$66,$06,$83,$C3,$F3 $FC5C DEFB $00,$00,$00,$00,$00,$02,$06,$1E $FC64 DEFB $FF,$FF,$63,$42,$04,$04,$00,$00 $FC6C DEFB $FE,$FE,$DC,$56,$52,$42,$04,$F8 $FC74 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC7C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC84 DEFB $04,$A5,$A3,$7F,$7F,$03,$00,$00 $FC8C DEFB $92,$0A,$FC,$FF,$FF,$C0,$F8,$00 ; Graphics - Dark Citadel ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2,$43;($FC94+n*$20)-(($FC94+n*$20)+$18)-8(dark_citadeln*.png) ; //) @label=GRAPHICS_DARK_CITADEL b$FC94 DEFB $10,$10,$38,$38,$7C,$7C,$38,$39 $FC9C DEFB $08,$08,$1C,$1C,$3E,$3E,$1C,$9C $FCA4 DEFB $3B,$7F,$FF,$CE,$CC,$CC,$FC,$FC $FCAC DEFB $DC,$FE,$FF,$73,$33,$33,$3F,$3F ; Graphics - Magic Castle ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2,$45;($FCB4+n*$20)-(($FCB4+n*$20)+$18)-8(magic_castlen*.png) ; //) @label=GRAPHICS_MAGIC_CASTLE b$FCB4 DEFB $0A,$0E,$0A,$0A,$0A,$CE,$CE,$CE $FCBC DEFB $50,$70,$50,$50,$50,$73,$73,$73 $FCC4 DEFB $CE,$FF,$7F,$36,$36,$36,$3E,$7F $FCCC DEFB $7F,$FF,$FE,$6C,$6C,$6C,$7C,$FE ; Graphics - Shadow Wood ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2,$45;($FCD4+n*$20)-(($FCD4+n*$20)+$18)-8(shadow_woodn*.png) ; //) @label=GRAPHICS_SHADOW_WOOD b$FCD4 DEFB $05,$02,$24,$14,$0C,$56,$23,$25 $FCDC DEFB $00,$20,$B8,$40,$88,$A6,$A8,$F0 $FCE4 DEFB $09,$09,$01,$01,$01,$03,$05,$00 $FCEC DEFB $88,$84,$80,$80,$A0,$D0,$48,$00 ; Graphics - Magic Wood ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2,$44;($FCF4+n*$20)-(($FCF4+n*$20)+$18)-8(magic_woodn*.png) ; //) @label=GRAPHICS_MAGIC_WOOD b$FCF4 DEFB $02,$15,$2A,$55,$2A,$55,$2A,$15 $FCFC DEFB $80,$50,$A8,$54,$A8,$54,$A8,$D0 $FD04 DEFB $0B,$01,$01,$01,$01,$03,$07,$00 $FD0C DEFB $A0,$80,$80,$80,$80,$C0,$E0,$00 ; Graphics - Wall ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2,$72;($FD14+n*$20)-(($FD14+n*$20)+$18)-8(walln*.png) ; //) @label=GRAPHICS_WALL b$FD14 DEFB $00,$EE,$EE,$00,$BB,$BB,$00,$EE $FD1C DEFB $00,$EE,$EE,$00,$BB,$BB,$00,$EE $FD24 DEFB $EE,$00,$BB,$BB,$00,$EE,$EE,$00 $FD2C DEFB $EE,$00,$BB,$BB,$00,$EE,$EE,$00 ; Graphics - Wizard 1 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FD34+n*$20)-(($FD34+n*$20)+$18)-8(wizard1.png) ; //) @label=GRAPHICS_WIZ_1 b$FD34 DEFB $00,$00,$01,$01,$07,$0F,$3B,$1B $FD3C DEFB $00,$00,$80,$80,$FE,$9C,$8C,$84 $FD44 DEFB $13,$13,$03,$03,$07,$1F,$00,$00 $FD4C DEFB $80,$C0,$C0,$C0,$E0,$E0,$00,$00 ; Graphics - Wizard 2 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FD54+n*$20)-(($FD54+n*$20)+$18)-8(wizard2.png) ; //) @label=GRAPHICS_WIZ_2 b$FD54 DEFB $00,$00,$01,$11,$13,$17,$1B,$13 $FD5C DEFB $00,$00,$80,$80,$C0,$E2,$94,$88 $FD64 DEFB $13,$13,$12,$12,$12,$12,$00,$00 $FD6C DEFB $80,$C0,$40,$40,$40,$40,$00,$00 ; Graphics - Wizard 3 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FD74+n*$20)-(($FD74+n*$20)+$18)-8(wizard3.png) ; //) @label=GRAPHICS_WIZ_3 b$FD74 DEFB $00,$00,$01,$01,$03,$07,$07,$03 $FD7C DEFB $00,$00,$80,$80,$80,$C0,$F8,$B0 $FD84 DEFB $03,$03,$07,$07,$0F,$03,$00,$00 $FD8C DEFB $90,$C0,$C0,$C0,$60,$00,$00,$00 ; Graphics - Wizard 4 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FD94+n*$20)-(($FD94+n*$20)+$18)-8(wizard4.png) ; //) @label=GRAPHICS_WIZ_4 b$FD94 DEFB $00,$00,$01,$01,$3F,$0F,$01,$01 $FD9C DEFB $00,$00,$80,$80,$C0,$E0,$F0,$D8 $FDA4 DEFB $03,$07,$06,$06,$06,$0E,$00,$00 $FDAC DEFB $C8,$C0,$C0,$C0,$60,$E0,$00,$00 ; Graphics - Wizard 5 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FDB4+n*$20)-(($FDB4+n*$20)+$18)-8(wizard5.png) ; //) @label=GRAPHICS_WIZ_5 b$FDB4 DEFB $00,$00,$01,$01,$00,$43,$25,$19 $FDBC DEFB $00,$00,$80,$80,$80,$E0,$D0,$C8 $FDC4 DEFB $09,$05,$03,$07,$04,$0C,$00,$00 $FDCC DEFB $C8,$C0,$60,$30,$90,$58,$00,$00 ; Graphics - Wizard 6 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FDD4+n*$20)-(($FDD4+n*$20)+$18)-8(wizard6.png) ; //) @label=GRAPHICS_WIZ_6 b$FDD4 DEFB $00,$00,$01,$01,$00,$1F,$0C,$08 $FDDC DEFB $00,$00,$80,$80,$80,$C0,$E2,$D4 $FDE4 DEFB $01,$03,$03,$03,$03,$00,$00,$00 $FDEC DEFB $C8,$D0,$E0,$E0,$F0,$FC,$00,$00 ; Graphics - Wizard 7 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FDF4+n*$20)-(($FDF4+n*$20)+$18)-8(wizard7.png) ; //) @label=GRAPHICS_WIZ_7 b$FDF4 DEFB $00,$18,$19,$0D,$0E,$07,$03,$03 $FDFC DEFB $00,$18,$98,$B0,$70,$E0,$C0,$C0 $FE04 DEFB $03,$03,$07,$07,$07,$0F,$00,$00 $FE0C DEFB $C0,$C0,$C0,$C0,$C0,$E0,$00,$00 ; Graphics - Wizard 8 ; ; #HTML(#FOR(0,0)//n/#UDGARRAY2;($FE14+n*$20)-(($FE14+n*$20)+$18)-8(wizard8.png) ; //) @label=GRAPHICS_WIZ_8 b$FE14 DEFB $00,$00,$01,$01,$00,$41,$23,$15 $FE1C DEFB $00,$00,$80,$80,$80,$80,$C0,$A0 $FE24 DEFB $09,$03,$02,$02,$02,$06,$00,$00 $FE2C DEFB $C0,$80,$80,$40,$20,$40,$00,$00 ; Data block at FE14 b$FE34 DEFB $C8,$1C,$00,$00,$47,$FE,$01,$43 $FE3C DEFB $33,$34,$5F,$C4,$E8,$1C,$00,$00 $FE44 DEFB $53,$FE,$01,$43,$33,$35,$5F,$B1 $FE4C DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FE54 DEFB $00,$00 ; Routine at FE56 ; ; Used by the routines at #R$89F9, #R$92BE, #R$95C7 and #R$981A. @label=ROUTINE_FE56 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. @label=ROUTINE_FE60 c$FE60 LD A,$3E ; $FE62 LD I,A ; $FE64 IM 1 ; $FE66 RET ; ; Unused s$FE67 DEFS $02 ; Routine at FE69 @label=ROUTINE_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 ; Data block at FF58 b$FF58 DEFB $00,$3C,$42,$42,$7E,$42,$42,$00 $FF60 DEFB $00,$7C,$42,$7C,$42,$42,$7C,$00 $FF68 DEFB $00,$3C,$42,$40,$40,$42,$3C,$00 $FF70 DEFB $00,$78,$44,$42,$42,$44,$78,$00 $FF78 DEFB $00,$7E,$40,$7C,$40,$40,$7E,$00 $FF80 DEFB $00,$7E,$40,$7C,$40,$40,$40,$00 $FF88 DEFB $00,$3C,$42,$40,$4E,$42,$3C,$00 $FF90 DEFB $00,$42,$42,$7E,$42,$42,$42,$00 $FF98 DEFB $00,$3E,$08,$08,$08,$08,$3E,$00 $FFA0 DEFB $00,$02,$02,$02,$42,$42,$3C,$00 $FFA8 DEFB $00,$44,$48,$70,$48,$44,$42,$00 $FFB0 DEFB $00,$40,$40,$40,$40,$40,$7E,$00 $FFB8 DEFB $00,$42,$66,$5A,$42,$42,$42,$00 $FFC0 DEFB $00,$42,$62,$52,$4A,$46,$42,$00 $FFC8 DEFB $00,$3C,$42,$42,$42,$42,$3C,$00 $FFD0 DEFB $00,$7C,$42,$42,$7C,$40,$40,$00 $FFD8 DEFB $00,$3C,$42,$42,$52,$4A,$3C,$00 $FFE0 DEFB $00,$7C,$42,$42,$7C,$44,$42,$00 $FFE8 DEFB $00,$3C,$40,$3C,$02,$42,$3C,$00 $FFF0 DEFB $00,$FE,$10,$10,$10,$10,$10,$00 $FFF8 DEFB $00,$42,$42,$42,$42,$00,$01,$02