| Scuba Dive | Disassembly |
|
|||||
| 4000 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | Pixels | |||
| 4020 | DEFB $00,$00,$00,$00,$07,$80,$00,$04,$00,$00,$0C,$70,$00,$D2,$C0,$00,$02,$00,$00,$00,$B1,$60,$00,$1E,$00,$F8,$0B,$00,$00,$80,$00,$00 | ||||
| 4040 | DEFB $00,$00,$00,$00,$47,$E0,$00,$70,$00,$00,$78,$3C,$00,$7F,$C0,$00,$FF,$F8,$00,$00,$F0,$3F,$00,$0C,$00,$C7,$FC,$00,$FF,$80,$00,$00 | ||||
| 4060 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4080 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 40A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$19,$00,$00,$00,$00,$00,$00 | ||||
| 40C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$BF,$F0,$07,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$BC,$C0,$00,$00,$00,$00,$00,$3F | ||||
| 40E0 | DEFB $00,$00,$00,$00,$07,$FF,$DF,$FF,$FF,$F8,$0F,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$C2,$00,$00,$00,$00,$00,$3F,$BF | ||||
| 4100 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4120 | DEFB $00,$00,$00,$00,$0F,$D0,$00,$0F,$E0,$00,$1C,$F8,$00,$FF,$F0,$00,$1F,$80,$00,$00,$7F,$F4,$00,$3E,$00,$F0,$1F,$00,$FF,$F8,$00,$00 | ||||
| 4140 | DEFB $00,$00,$00,$00,$C3,$E0,$00,$38,$00,$00,$70,$18,$00,$AB,$70,$00,$7F,$F0,$00,$00,$70,$1F,$00,$0E,$00,$FF,$FC,$00,$F8,$00,$00,$00 | ||||
| 4160 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4180 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 41A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 41C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$7F,$FF,$FF,$F8,$7F,$FE,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$71,$80,$00,$00,$00,$00,$00,$FF | ||||
| 41E0 | DEFB $00,$00,$00,$00,$0F,$FF,$BF,$FF,$FF,$E0,$03,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$C2,$00,$00,$00,$00,$00,$3C,$7F | ||||
| 4200 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4220 | DEFB $00,$00,$00,$00,$7F,$F8,$00,$0F,$F0,$00,$18,$DC,$00,$76,$F0,$00,$3F,$C0,$00,$00,$7F,$FE,$00,$0F,$00,$78,$1E,$00,$FF,$F0,$00,$00 | ||||
| 4240 | DEFB $00,$00,$00,$00,$61,$F8,$00,$7C,$0C,$00,$FC,$38,$00,$F0,$78,$00,$7E,$78,$00,$00,$78,$3F,$00,$0E,$00,$FF,$F8,$00,$60,$00,$00,$00 | ||||
| 4260 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4280 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$F0,$00,$00,$00,$00,$00,$00 | ||||
| 42A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$36,$00,$00,$00,$00,$00,$00 | ||||
| 42C0 | DEFB $00,$00,$00,$00,$00,$00,$1F,$FF,$FF,$FF,$FF,$FF,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$71,$00,$00,$00,$00,$00,$01,$FF | ||||
| 42E0 | DEFB $00,$00,$00,$00,$1F,$FF,$7B,$FF,$FE,$80,$01,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$09,$E6,$00,$00,$00,$00,$00,$73,$FF | ||||
| 4300 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4320 | DEFB $00,$00,$00,$00,$7F,$FF,$00,$7F,$F8,$00,$78,$FC,$00,$70,$FC,$00,$3F,$F0,$00,$00,$7F,$FE,$00,$1E,$00,$7C,$3E,$00,$67,$F0,$00,$00 | ||||
| 4340 | DEFB $00,$00,$00,$00,$7F,$FC,$00,$7F,$74,$00,$7F,$30,$00,$F8,$7C,$00,$7A,$38,$00,$00,$70,$7F,$00,$1E,$00,$7F,$F8,$00,$70,$00,$00,$00 | ||||
| 4360 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4380 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FC,$00,$00,$00,$00,$00,$00 | ||||
| 43A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$06,$66,$00,$00,$00,$00,$00,$00 | ||||
| 43C0 | DEFB $00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$F8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$F1,$00,$00,$00,$00,$00,$03,$FF | ||||
| 43E0 | DEFB $00,$00,$00,$00,$7F,$FE,$FB,$FF,$F2,$80,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$09,$FE,$00,$00,$00,$00,$00,$C7,$FF | ||||
| 4400 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4420 | DEFB $00,$00,$00,$00,$7F,$FE,$00,$3E,$70,$00,$78,$38,$00,$F0,$F8,$00,$7D,$E0,$00,$00,$FD,$BF,$00,$0F,$00,$FE,$7F,$00,$E0,$78,$00,$00 | ||||
| 4440 | DEFB $00,$00,$00,$00,$7F,$FC,$00,$7F,$F8,$00,$7F,$F8,$00,$70,$F8,$00,$18,$78,$00,$00,$F1,$FF,$00,$0F,$00,$3F,$F0,$00,$76,$80,$00,$00 | ||||
| 4460 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4480 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$54,$00,$00,$00,$00,$00,$00 | ||||
| 44A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0B,$E4,$00,$00,$00,$00,$00,$00 | ||||
| 44C0 | DEFB $00,$00,$00,$00,$00,$07,$FB,$FF,$FF,$FF,$FF,$FF,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$F2,$00,$00,$00,$00,$00,$07,$FF | ||||
| 44E0 | DEFB $00,$00,$00,$00,$FF,$FD,$F7,$FF,$FF,$00,$00,$7E,$00,$00,$00,$00,$00,$00,$00,$03,$F8,$00,$00,$09,$F9,$00,$00,$00,$00,$00,$9F,$FF | ||||
| 4500 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4520 | DEFB $00,$00,$00,$00,$3E,$DE,$00,$78,$30,$00,$F8,$3C,$00,$F9,$E0,$00,$78,$78,$00,$00,$78,$3E,$00,$0E,$00,$FE,$3F,$00,$60,$00,$00,$00 | ||||
| 4540 | DEFB $00,$00,$00,$00,$7F,$FC,$00,$1F,$F8,$00,$3F,$FC,$00,$7C,$F0,$00,$70,$38,$00,$00,$7F,$FE,$00,$0E,$00,$1F,$F8,$00,$7F,$E0,$00,$00 | ||||
| 4560 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4580 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$34,$00,$00,$00,$00,$00,$00 | ||||
| 45A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$13,$E8,$00,$00,$00,$00,$00,$03 | ||||
| 45C0 | DEFB $00,$00,$00,$00,$00,$3F,$F3,$FF,$FF,$FF,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$F6,$00,$00,$00,$00,$00,$0F,$FB | ||||
| 45E0 | DEFB $00,$00,$00,$01,$FF,$FB,$F7,$FE,$1F,$00,$00,$7E,$00,$00,$00,$00,$00,$00,$00,$1F,$FE,$00,$00,$09,$F9,$80,$00,$00,$00,$00,$FF,$FF | ||||
| 4600 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4620 | DEFB $00,$00,$00,$00,$7E,$0E,$00,$70,$00,$00,$70,$18,$00,$7F,$E0,$00,$F8,$F8,$00,$00,$78,$3F,$00,$0E,$00,$7E,$7C,$00,$60,$00,$00,$00 | ||||
| 4640 | DEFB $00,$00,$00,$00,$7F,$F0,$00,$07,$E0,$00,$1F,$F0,$00,$7F,$E0,$00,$E0,$70,$00,$00,$7F,$FC,$00,$7F,$00,$1F,$F0,$00,$3F,$F0,$00,$00 | ||||
| 4660 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4680 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$00,$00,$00,$00,$00,$00 | ||||
| 46A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$1F,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$67,$30,$00,$00,$00,$00,$00,$07 | ||||
| 46C0 | DEFB $00,$00,$00,$00,$01,$FF,$EF,$FF,$FF,$FF,$FF,$FF,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$FE,$00,$00,$00,$00,$00,$0F,$E7 | ||||
| 46E0 | DEFB $00,$00,$00,$03,$FF,$CF,$FF,$F8,$03,$00,$00,$3E,$00,$00,$00,$00,$00,$00,$00,$60,$7F,$00,$00,$0F,$F9,$E0,$00,$00,$00,$03,$FF,$FF | ||||
| 4700 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4720 | DEFB $00,$00,$00,$00,$7F,$02,$00,$E0,$00,$00,$78,$38,$00,$7F,$80,$00,$7B,$F0,$00,$00,$FC,$3F,$00,$0C,$00,$7E,$FC,$00,$6E,$00,$00,$00 | ||||
| 4740 | DEFB $00,$00,$00,$00,$1D,$98,$00,$02,$80,$00,$00,$C0,$00,$50,$40,$00,$60,$78,$00,$00,$CC,$EC,$00,$38,$00,$0A,$E0,$00,$01,$C0,$00,$00 | ||||
| 4760 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 4780 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$19,$00,$00,$00,$00,$00,$00 | ||||
| 47A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F0,$00,$7F,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$BE,$60,$00,$00,$00,$00,$00,$0F | ||||
| 47C0 | DEFB $00,$00,$00,$00,$03,$FF,$CF,$FF,$FF,$FF,$3F,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$E2,$00,$00,$00,$00,$00,$1F,$DF | ||||
| 47E0 | DEFB $00,$00,$00,$03,$FF,$BF,$EF,$E0,$00,$00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$8F,$0F,$80,$F0,$04,$F0,$F0,$00,$00,$00,$0F,$FF,$FF | ||||
| 4800 | DEFB $00,$00,$00,$0F,$FF,$FF,$EF,$80,$00,$00,$00,$1C,$00,$00,$00,$00,$00,$00,$01,$FF,$C3,$0F,$FC,$04,$FE,$78,$00,$00,$01,$FF,$FF,$FF | ||||
| 4820 | DEFB $00,$00,$00,$FF,$FF,$EE,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$58,$1F,$FE,$F3,$81,$6C,$00,$FF,$FC,$08,$C4,$FE,$1F,$00 | ||||
| 4840 | DEFB $7F,$FF,$FF,$FF,$FF,$FC,$00,$3F,$FF,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$17,$7F,$BF,$F7,$F9,$09,$F0,$00,$1F,$90,$FD,$FF,$F9,$BF | ||||
| 4860 | DEFB $00,$00,$00,$7F,$34,$8F,$FF,$FF,$FF,$FF,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7E,$73,$C3,$FB,$CF,$BF,$FF,$FF,$FC,$B4,$E7,$FF | ||||
| 4880 | DEFB $00,$00,$00,$00,$0F,$FF,$FF,$FF,$FE,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$7F,$E7,$F7,$BF,$DF,$BE,$00,$00,$0A,$5F,$4F,$E0 | ||||
| 48A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$37,$F0,$00,$00,$00,$00,$00,$00,$00,$BF,$F7,$CF,$DF,$FB,$FE,$70,$00,$3D,$E0,$3C,$00 | ||||
| 48C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$EF,$80,$00,$00,$00,$01,$FF,$F8,$3B,$FF,$7E,$7F,$FF,$1B,$EF,$00,$16,$61,$E0,$00 | ||||
| 48E0 | DEFB $00,$00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$DF,$FF,$DF,$EF,$FF,$CF,$FF,$FF,$B9,$FB,$A7,$F3,$DD,$C0,$00,$1B,$F9,$00,$00 | ||||
| 4900 | DEFB $00,$00,$00,$0F,$FF,$F5,$EF,$00,$00,$00,$00,$1C,$00,$00,$00,$00,$00,$00,$03,$FF,$F9,$9F,$FE,$02,$BE,$7F,$00,$00,$0F,$FF,$FF,$F3 | ||||
| 4920 | DEFB $00,$00,$00,$FF,$FF,$ED,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$47,$BE,$FF,$F0,$60,$88,$00,$1F,$FF,$3F,$CF,$FC,$77,$00 | ||||
| 4940 | DEFB $FF,$FF,$FF,$FF,$FF,$C0,$3F,$FC,$FF,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$FF,$7F,$EF,$FD,$F0,$F8,$00,$FC,$10,$F9,$FF,$CF,$D3 | ||||
| 4960 | DEFB $00,$00,$00,$1F,$EB,$3F,$FF,$FF,$FF,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FE,$F7,$C1,$FD,$E7,$D3,$FF,$04,$13,$F0,$BF,$FF | ||||
| 4980 | DEFB $00,$00,$00,$00,$07,$FF,$FF,$FF,$FD,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7F,$E7,$F7,$9F,$EF,$BF,$00,$00,$12,$9E,$5F,$C0 | ||||
| 49A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FB,$F0,$00,$00,$00,$00,$00,$00,$00,$DF,$F7,$CF,$DF,$FB,$F8,$F0,$00,$2D,$E0,$FC,$00 | ||||
| 49C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$F7,$C0,$00,$00,$00,$07,$FF,$FF,$8F,$FF,$7E,$FE,$FE,$0F,$1F,$00,$16,$77,$E0,$00 | ||||
| 49E0 | DEFB $00,$00,$00,$42,$00,$78,$42,$7C,$7E,$40,$40,$00,$07,$DF,$FF,$BF,$EF,$FF,$0F,$FF,$FF,$BB,$F4,$27,$E7,$BD,$80,$00,$6F,$F9,$00,$00 | ||||
| 4A00 | DEFB $00,$00,$00,$1F,$FF,$11,$DC,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$0F,$FF,$FF,$7F,$FF,$01,$8F,$8F,$F0,$0F,$FF,$FF,$FF,$F7 | ||||
| 4A20 | DEFB $00,$00,$00,$FF,$FF,$EB,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$5E,$7D,$FD,$F0,$03,$10,$00,$00,$FF,$FF,$FF,$E1,$87,$FF | ||||
| 4A40 | DEFB $00,$3F,$FF,$FF,$FF,$01,$FF,$FA,$FF,$FF,$80,$00,$00,$00,$00,$00,$00,$00,$7D,$FE,$FF,$CF,$FB,$3E,$FC,$FF,$04,$10,$F9,$BF,$DF,$E0 | ||||
| 4A60 | DEFB $00,$00,$00,$0F,$F4,$7F,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$BE,$EE,$40,$FD,$F3,$E0,$C2,$04,$1F,$E3,$AF,$FF | ||||
| 4A80 | DEFB $00,$00,$00,$00,$00,$FF,$FF,$FF,$F8,$0F,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7F,$E7,$E7,$9F,$EF,$DF,$80,$00,$17,$3C,$4F,$80 | ||||
| 4AA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F9,$F8,$00,$00,$00,$00,$00,$00,$00,$5F,$F7,$CF,$FF,$FD,$F3,$F0,$00,$2D,$E0,$7C,$00 | ||||
| 4AC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$F7,$E0,$00,$00,$00,$1F,$FF,$FF,$F0,$FE,$7E,$FE,$79,$98,$7F,$00,$17,$3F,$C0,$00 | ||||
| 4AE0 | DEFB $00,$00,$00,$99,$00,$44,$42,$42,$40,$40,$40,$00,$03,$EF,$FF,$BF,$EF,$FF,$BF,$FF,$FF,$BF,$F7,$F3,$C0,$7E,$00,$00,$9F,$FF,$C0,$00 | ||||
| 4B00 | DEFB $00,$00,$00,$1F,$FF,$ED,$B8,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$13,$FF,$FE,$F8,$0F,$C0,$CF,$C3,$FF,$FF,$FF,$FF,$FF,$27 | ||||
| 4B20 | DEFB $00,$00,$01,$FF,$FF,$E7,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$4E,$FB,$FB,$EF,$E4,$70,$00,$00,$1F,$FF,$FF,$87,$3F,$10 | ||||
| 4B40 | DEFB $00,$03,$FF,$FF,$FE,$3F,$FF,$FD,$FE,$FF,$C0,$00,$00,$00,$00,$00,$00,$00,$9D,$EF,$FF,$9F,$CF,$5C,$7E,$40,$04,$3F,$C2,$4E,$FF,$E0 | ||||
| 4B60 | DEFB $00,$00,$00,$07,$F4,$FF,$FF,$D4,$55,$FE,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$3C,$FE,$E0,$FE,$F3,$E0,$C2,$04,$72,$EF,$AF,$FF | ||||
| 4B80 | DEFB $00,$00,$00,$00,$00,$3F,$FF,$FF,$F0,$01,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7F,$E7,$E7,$DF,$F7,$FF,$80,$00,$1F,$7C,$4F,$80 | ||||
| 4BA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FC,$F8,$00,$00,$00,$00,$00,$00,$00,$5F,$F7,$CF,$BF,$FD,$F7,$E8,$00,$2D,$E0,$78,$00 | ||||
| 4BC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$FB,$F0,$00,$00,$00,$FF,$FF,$FF,$FC,$FE,$FD,$FF,$37,$03,$FE,$00,$0F,$DF,$80,$00 | ||||
| 4BE0 | DEFB $00,$00,$00,$A1,$00,$42,$42,$42,$7C,$40,$40,$00,$01,$F7,$FF,$DF,$FF,$FF,$BF,$FF,$FF,$B7,$E7,$F0,$01,$FE,$00,$03,$BF,$EE,$40,$00 | ||||
| 4C00 | DEFB $00,$00,$00,$3F,$FF,$F9,$B0,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$2C,$FF,$FD,$E0,$03,$C0,$6F,$E3,$FF,$FF,$FF,$FF,$F4,$DF | ||||
| 4C20 | DEFB $00,$00,$03,$BF,$FF,$E7,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$5D,$F7,$FB,$F0,$28,$BC,$00,$00,$00,$FF,$FF,$FB,$87,$10 | ||||
| 4C40 | DEFB $00,$00,$3C,$FF,$FC,$7F,$FF,$FF,$FC,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$9D,$FD,$FF,$80,$0F,$A2,$7F,$43,$07,$FF,$DD,$3D,$FF,$F7 | ||||
| 4C60 | DEFB $00,$00,$00,$03,$F4,$FF,$F8,$00,$00,$5C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$B3,$FD,$F4,$7F,$79,$F7,$FF,$FF,$84,$CF,$7F,$FF | ||||
| 4C80 | DEFB $00,$00,$00,$00,$00,$0F,$FF,$FF,$80,$00,$78,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7F,$E7,$E7,$DF,$F7,$FF,$80,$00,$2F,$78,$9F,$80 | ||||
| 4CA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$FE,$7C,$00,$00,$00,$00,$00,$00,$00,$3F,$F7,$DF,$BF,$FD,$EF,$D8,$00,$2D,$E0,$78,$00 | ||||
| 4CC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FD,$F8,$00,$00,$0B,$FF,$FF,$FF,$FE,$3C,$FD,$FF,$0F,$2F,$FE,$00,$0B,$9F,$80,$00 | ||||
| 4CE0 | DEFB $00,$00,$00,$A1,$00,$42,$42,$7C,$40,$40,$40,$00,$01,$FB,$FF,$BF,$F7,$FF,$7F,$1F,$FF,$E7,$EF,$FE,$05,$FE,$00,$04,$FC,$26,$40,$00 | ||||
| 4D00 | DEFB $00,$00,$00,$7F,$FF,$F7,$70,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$26,$7F,$FB,$80,$03,$C0,$38,$F4,$3F,$FF,$FF,$FF,$84,$BF | ||||
| 4D20 | DEFB $00,$00,$03,$BF,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3B,$EF,$E7,$E0,$13,$07,$00,$00,$00,$00,$07,$CF,$FF,$11 | ||||
| 4D40 | DEFB $00,$00,$03,$1F,$FF,$FF,$FF,$FF,$F9,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$5D,$FC,$FF,$7C,$0F,$D1,$3F,$FF,$C7,$FF,$B1,$DF,$FF,$F8 | ||||
| 4D60 | DEFB $00,$00,$00,$01,$E4,$FF,$C3,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0E,$CB,$F9,$F2,$7F,$BC,$F8,$07,$F0,$05,$DF,$4F,$FF | ||||
| 4D80 | DEFB $00,$00,$00,$00,$00,$00,$FF,$FC,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$03,$7F,$F7,$E7,$DF,$F3,$FF,$80,$00,$2D,$70,$BF,$00 | ||||
| 4DA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$3E,$00,$00,$00,$00,$00,$00,$00,$3F,$F7,$9F,$BF,$FE,$1F,$B8,$00,$2F,$E1,$F0,$00 | ||||
| 4DC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7E,$FC,$00,$00,$77,$FF,$FF,$FF,$FF,$3D,$FD,$FE,$2C,$67,$FC,$00,$0B,$FF,$00,$00 | ||||
| 4DE0 | DEFB $00,$00,$00,$99,$00,$44,$42,$44,$40,$40,$40,$00,$00,$FB,$FF,$DF,$FB,$FF,$7E,$60,$7F,$AF,$EF,$FF,$1F,$FF,$00,$09,$F8,$36,$20,$00 | ||||
| 4E00 | DEFB $00,$00,$00,$7F,$FF,$E7,$E0,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$55,$80,$07,$30,$01,$80,$04,$3E,$26,$3F,$FF,$C8,$07,$BF | ||||
| 4E20 | DEFB $00,$00,$03,$7F,$FF,$FF,$F0,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$27,$DF,$DF,$E0,$17,$6B,$C0,$00,$00,$00,$7F,$C3,$8F,$FF | ||||
| 4E40 | DEFB $00,$00,$01,$F3,$F0,$FF,$FF,$FF,$FF,$FF,$E0,$00,$00,$00,$00,$00,$00,$00,$73,$F0,$FF,$78,$0F,$E8,$9F,$FF,$FF,$FF,$6F,$17,$FF,$78 | ||||
| 4E60 | DEFB $00,$00,$00,$00,$7E,$FF,$FF,$F5,$00,$1C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$E3,$F3,$F6,$3F,$BC,$78,$00,$00,$07,$5F,$7F,$FC | ||||
| 4E80 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$02,$0E,$20,$00,$00,$00,$00,$00,$00,$01,$BF,$F7,$EF,$DF,$FB,$FF,$80,$00,$29,$70,$9E,$00 | ||||
| 4EA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F,$BF,$00,$00,$00,$00,$00,$00,$00,$3F,$FF,$9F,$03,$FF,$1E,$72,$00,$2E,$E1,$F0,$00 | ||||
| 4EC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$FE,$00,$03,$F7,$FF,$FF,$80,$00,$3D,$FB,$F8,$E4,$F3,$F8,$00,$0F,$FF,$00,$00 | ||||
| 4EE0 | DEFB $00,$00,$00,$42,$00,$78,$3C,$42,$7E,$7E,$7E,$00,$00,$7D,$FF,$DF,$F9,$FF,$7C,$F8,$0F,$CF,$BF,$FF,$CE,$FF,$00,$1F,$E0,$13,$20,$00 | ||||
| 4F00 | DEFB $00,$00,$00,$FF,$FF,$EE,$E0,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$59,$80,$3F,$BC,$01,$58,$03,$3F,$FC,$E8,$FF,$88,$FF,$7F | ||||
| 4F20 | DEFB $00,$3F,$C7,$FF,$FF,$FF,$FF,$FF,$FC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$2F,$BF,$FF,$A7,$FD,$6B,$E0,$00,$00,$03,$FF,$C7,$AF,$FF | ||||
| 4F40 | DEFB $00,$00,$00,$FC,$F2,$47,$FF,$FF,$FF,$FF,$C0,$00,$00,$00,$00,$00,$00,$00,$01,$E0,$7F,$78,$87,$F6,$8F,$FF,$FF,$FF,$99,$5F,$FF,$7C | ||||
| 4F60 | DEFB $00,$00,$00,$00,$3F,$7F,$FF,$FF,$95,$3E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$7F,$F3,$F7,$3F,$DE,$7C,$00,$00,$0B,$5F,$4F,$F0 | ||||
| 4F80 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$2F,$F0,$00,$00,$00,$00,$00,$00,$01,$BF,$F7,$EF,$DF,$FB,$FF,$20,$00,$29,$F0,$7E,$00 | ||||
| 4FA0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$DF,$00,$00,$00,$00,$00,$7F,$00,$2F,$FF,$3F,$7C,$00,$5D,$F7,$00,$16,$E1,$F0,$00 | ||||
| 4FC0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$FF,$C1,$DF,$EF,$FF,$F3,$FF,$FF,$FD,$FB,$E1,$F1,$EB,$F0,$00,$09,$FD,$00,$00 | ||||
| 4FE0 | DEFB $00,$00,$00,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3F,$78,$EF,$FD,$F8,$7B,$FF,$E7,$DF,$BF,$FF,$F2,$7F,$00,$7F,$80,$13,$20,$00 | ||||
| 5000 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$C0,$00,$FE,$F0,$79,$FF,$F0,$9F,$FF,$FF,$FE,$7F,$00,$7E,$00,$13,$E0,$00 | ||||
| 5020 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$EF,$C7,$F9,$FF,$FF,$FE,$F8,$1E,$00,$00,$07,$90,$00 | ||||
| 5040 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$9E,$60,$00,$00,$00,$00,$17,$FC,$00,$1F,$80,$00 | ||||
| 5060 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FE,$1F,$EF,$F7,$FD,$0C,$00,$00,$00,$00,$0F,$3F,$C0,$00,$00 | ||||
| 5080 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FD,$00,$00,$07,$1F,$FF,$FF,$F9,$FC,$00,$00,$C0,$00,$00,$00,$00 | ||||
| 50A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$60,$7F,$FF,$FF,$FE,$FF,$FC,$FF,$FE,$00,$00,$00,$00,$00,$00 | ||||
| 50C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 50E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5100 | DEFB $3C,$3C,$7E,$FE,$42,$3C,$7C,$7E,$00,$18,$3C,$3C,$3C,$02,$00,$00,$00,$00,$3C,$7F,$FD,$3F,$BF,$FF,$FE,$7F,$03,$FC,$00,$0F,$90,$00 | ||||
| 5120 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F7,$EF,$F3,$FF,$FF,$FE,$F8,$1C,$00,$00,$09,$30,$00 | ||||
| 5140 | DEFB $00,$00,$00,$00,$00,$00,$7C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$44,$F0,$00,$00,$00,$00,$09,$C8,$00,$79,$00,$00 | ||||
| 5160 | DEFB $42,$3E,$44,$7E,$00,$7C,$3E,$3C,$42,$3C,$7C,$78,$3C,$3C,$42,$00,$0F,$FF,$E3,$EF,$FC,$7D,$27,$00,$00,$00,$00,$0F,$E3,$00,$00,$00 | ||||
| 5180 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FD,$00,$0F,$60,$7F,$EE,$7F,$F9,$FC,$00,$00,$C0,$00,$00,$00,$00 | ||||
| 51A0 | DEFB $00,$00,$00,$40,$3C,$3C,$78,$3E,$42,$3C,$00,$00,$00,$00,$03,$FC,$1E,$E0,$7F,$FF,$FF,$FF,$7F,$FE,$FB,$FE,$00,$00,$00,$00,$00,$00 | ||||
| 51C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 51E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5200 | DEFB $40,$42,$40,$10,$42,$42,$42,$40,$00,$28,$42,$42,$42,$00,$00,$00,$00,$00,$3D,$9F,$FD,$3F,$AF,$FF,$FE,$7F,$02,$78,$00,$0C,$90,$00 | ||||
| 5220 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FB,$DF,$F7,$FF,$FF,$FE,$F0,$3C,$00,$00,$09,$F0,$00 | ||||
| 5240 | DEFB $00,$00,$00,$00,$00,$00,$42,$44,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$20,$F0,$00,$00,$00,$00,$06,$18,$00,$59,$00,$00 | ||||
| 5260 | DEFB $66,$08,$48,$40,$00,$42,$08,$42,$42,$42,$42,$44,$40,$42,$62,$00,$1F,$FF,$FF,$DF,$FD,$9D,$2F,$80,$00,$00,$00,$13,$3C,$00,$00,$00 | ||||
| 5280 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FD,$00,$1F,$F0,$FD,$EF,$FF,$F9,$FE,$00,$00,$40,$00,$00,$00,$00 | ||||
| 52A0 | DEFB $00,$00,$00,$40,$42,$42,$44,$08,$62,$42,$00,$00,$00,$00,$07,$F3,$E1,$E0,$7F,$E7,$FF,$FF,$7F,$FF,$FB,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 52C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 52E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5300 | DEFB $3C,$42,$7C,$10,$42,$42,$42,$7C,$00,$08,$42,$3C,$0C,$00,$00,$00,$00,$00,$1E,$CF,$FB,$7F,$27,$FF,$FE,$7F,$02,$C0,$00,$0C,$F0,$00 | ||||
| 5320 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7D,$BF,$C7,$FF,$FF,$FD,$C0,$3C,$70,$00,$0F,$20,$00 | ||||
| 5340 | DEFB $00,$00,$00,$00,$00,$00,$7C,$44,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$14,$F8,$00,$00,$00,$00,$03,$E0,$01,$F6,$00,$00 | ||||
| 5360 | DEFB $5A,$08,$70,$7C,$00,$42,$08,$40,$7E,$42,$42,$42,$3C,$42,$52,$00,$7F,$C0,$1F,$DF,$DE,$ED,$4F,$C0,$00,$00,$00,$3F,$30,$00,$00,$00 | ||||
| 5380 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FC,$00,$7F,$EF,$FF,$E7,$FF,$FD,$FF,$E0,$00,$40,$00,$00,$00,$00 | ||||
| 53A0 | DEFB $00,$00,$00,$40,$42,$42,$42,$08,$52,$40,$00,$00,$00,$00,$07,$EF,$FF,$C0,$7F,$FB,$FF,$FF,$BF,$FF,$FB,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 53C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 53E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5400 | DEFB $02,$42,$40,$10,$42,$7E,$7C,$40,$00,$08,$3E,$42,$02,$00,$00,$00,$00,$00,$1F,$63,$FA,$FE,$63,$FF,$FE,$FE,$07,$C0,$00,$0F,$90,$00 | ||||
| 5420 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3E,$7F,$C0,$FF,$FF,$FD,$C0,$3C,$18,$00,$0F,$20,$00 | ||||
| 5440 | DEFB $00,$00,$00,$00,$00,$00,$42,$44,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$E0,$03,$8E,$F8,$00,$00,$00,$00,$00,$00,$03,$E4,$00,$00 | ||||
| 5460 | DEFB $42,$08,$48,$40,$00,$7C,$08,$40,$42,$7E,$7C,$42,$02,$42,$4A,$00,$FF,$7F,$F3,$DF,$CF,$F1,$4F,$FD,$30,$00,$00,$33,$C0,$00,$00,$00 | ||||
| 5480 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$37,$FE,$00,$7F,$F3,$FB,$F7,$FF,$FD,$FF,$F0,$00,$00,$00,$00,$00,$00 | ||||
| 54A0 | DEFB $00,$00,$00,$40,$42,$7E,$42,$08,$4A,$4E,$00,$00,$00,$00,$0F,$FF,$FE,$00,$7F,$F9,$FF,$FF,$BF,$FF,$FB,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 54C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 54E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5500 | DEFB $42,$42,$40,$10,$5A,$42,$44,$40,$00,$08,$02,$42,$42,$00,$00,$00,$00,$00,$0F,$B9,$F5,$FE,$78,$FF,$C8,$FE,$0F,$80,$00,$0C,$90,$00 | ||||
| 5520 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$BF,$80,$1F,$FF,$FD,$00,$3C,$0C,$00,$0B,$E0,$00 | ||||
| 5540 | DEFB $00,$00,$00,$00,$00,$00,$42,$3C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FC,$07,$C7,$FF,$F0,$00,$00,$00,$00,$00,$1F,$F8,$00,$00 | ||||
| 5560 | DEFB $42,$08,$44,$40,$00,$44,$08,$42,$42,$42,$44,$44,$42,$42,$46,$01,$FE,$FF,$FF,$1F,$F7,$FD,$4F,$F7,$F8,$00,$00,$4F,$00,$00,$00,$00 | ||||
| 5580 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3E,$CF,$40,$7F,$F9,$F7,$FB,$FF,$FC,$FF,$F8,$00,$00,$00,$00,$00,$00 | ||||
| 55A0 | DEFB $00,$00,$00,$40,$42,$42,$44,$08,$46,$42,$00,$00,$00,$00,$0F,$BF,$31,$00,$7F,$FC,$FF,$FF,$DF,$FF,$F7,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 55C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 55E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5600 | DEFB $3C,$3C,$40,$10,$24,$42,$42,$7E,$00,$3E,$3C,$3C,$3C,$00,$00,$00,$00,$00,$07,$BC,$39,$FE,$FE,$F8,$00,$FC,$0B,$00,$00,$04,$90,$00 | ||||
| 5620 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$BF,$00,$03,$FF,$F8,$00,$3C,$14,$00,$12,$40,$00 | ||||
| 5640 | DEFB $00,$00,$00,$00,$00,$00,$7C,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FE,$07,$EF,$FF,$C8,$00,$00,$00,$00,$00,$E6,$30,$00,$00 | ||||
| 5660 | DEFB $42,$3E,$42,$7E,$00,$42,$3E,$3C,$42,$42,$42,$78,$3C,$3C,$42,$03,$FD,$FF,$FF,$0F,$A5,$1C,$CF,$F3,$F8,$00,$00,$78,$00,$00,$00,$00 | ||||
| 5680 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$07,$A0,$7F,$FE,$0F,$FD,$FF,$FC,$FF,$FC,$00,$00,$00,$00,$00,$00 | ||||
| 56A0 | DEFB $00,$00,$00,$7E,$3C,$42,$78,$3E,$42,$3C,$00,$00,$00,$00,$0F,$FD,$00,$00,$FF,$FE,$7F,$FF,$DF,$FF,$F7,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 56C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 56E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5700 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$DF,$03,$FD,$FF,$20,$3E,$FC,$0F,$00,$00,$05,$F0,$00 | ||||
| 5720 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$3F,$20,$00,$FF,$E0,$00,$36,$14,$00,$1E,$C0,$00 | ||||
| 5740 | DEFB $00,$00,$00,$00,$00,$00,$00,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$FF,$0F,$F7,$FC,$6E,$00,$00,$00,$00,$00,$3E,$60,$00,$00 | ||||
| 5760 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$FD,$8F,$F8,$0F,$6E,$0F,$DF,$F1,$FC,$01,$00,$50,$00,$00,$00,$00 | ||||
| 5780 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$E7,$A0,$7F,$FF,$FF,$FC,$FF,$FC,$FF,$FE,$00,$00,$00,$00,$00,$00 | ||||
| 57A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$7B,$00,$00,$FF,$FF,$3F,$FF,$DF,$FF,$F7,$FF,$00,$00,$00,$00,$00,$00 | ||||
| 57C0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 57E0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||||
| 5800 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41 | Attributes | |||
| 5820 | DEFB $41,$41,$41,$41,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$41,$41 | ||||
| 5840 | DEFB $41,$41,$41,$41,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$46,$41,$41 | ||||
| 5860 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41 | ||||
| 5880 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$43,$43,$41,$41,$41,$41,$41,$41 | ||||
| 58A0 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$43,$43,$41,$41,$41,$41,$41,$43 | ||||
| 58C0 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$43,$43,$43,$41,$41,$41,$41,$43,$43 | ||||
| 58E0 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$43,$43,$43,$41,$41,$41,$43,$43,$43 | ||||
| 5900 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$43,$43,$43,$43 | ||||
| 5920 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$43,$43 | ||||
| 5940 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$43,$43 | ||||
| 5960 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$43,$43 | ||||
| 5980 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$42,$42,$41,$43,$43,$43,$43 | ||||
| 59A0 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$41,$41,$41,$41,$41,$42,$41,$42,$42,$42,$42,$42,$42,$42,$41,$43,$43,$43,$41 | ||||
| 59C0 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$41,$43,$43,$43,$41 | ||||
| 59E0 | DEFB $41,$41,$41,$45,$45,$45,$45,$45,$45,$45,$45,$41,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$41 | ||||
| 5A00 | DEFB $45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$41 | ||||
| 5A20 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$42,$42,$42,$42,$42,$42,$42,$42,$43,$43,$43,$43,$43,$41 | ||||
| 5A40 | DEFB $41,$41,$41,$41,$41,$41,$45,$45,$41,$41,$41,$41,$41,$41,$41,$41,$41,$47,$47,$42,$42,$42,$47,$41,$41,$41,$43,$43,$43,$43,$43,$41 | ||||
| 5A60 | DEFB $45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$41,$43,$43,$43,$41,$41 | ||||
| 5A80 | DEFB $41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$41,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$41,$43,$41,$41,$41,$41 | ||||
| 5AA0 | DEFB $41,$41,$41,$C4,$C4,$C4,$C4,$C4,$C4,$C4,$41,$41,$41,$41,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$47,$41,$41,$41,$41,$41,$41 | ||||
| 5AC0 | DEFB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F | ||||
| 5AE0 | DEFB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F | ||||
|
|
||||
| 5B00 | DEFB $00 | Shell/object progress counter: level-gen counts placed objects (stops at 100); play decrements on shell pickup; clear-check vs $08 | ||
| 5B01 | DEFW $0000 | Saved tunnel start position (scratch in cave carvers CarveTunnelLeft/CarveTunnelRight) | ||
| 5B03 | DEFW $0000 | Screen position on mini-map (H = row, L = column) | ||
| RANDOM | 5B05 | DEFW $0167 | Current number in pseudo-random sequence, see routine NextRandom | |
| 5B07 | DEFW $0000 | Working pointer during mini-map generation (PrepareMiniMap) | ||
| 5B09 | DEFB $00 | Working counter during mini-map generation (PrepareMiniMap) | ||
| 5B0A | DEFB $00 | Working counter during mini-map generation (PrepareMiniMap) | ||
| 5B0B | DEFW $0000 | Screen scroll / viewport position on the 256x256 map, in pixels | ||
| 5B0D | DEFB $08 | Delay value: 7 / 5 / 3 / 1, depending on LEVEL | ||
| 5B0E | DEFB $08 | Delay value for Octopus: 10 / 8 / 6 / 4, depending on LEVEL | ||
| 5B0F | DEFB $00 | Chest counter: level-gen counts chests still to place (from 3); play increments on chest pickup; clear-check vs 3 (all collected) | ||
| LEVEL | 5B10 | DEFB $04 | Game level selected: 1..4 | |
| 5B11 | DEFW $0000 | Saved object-list end pointer (scratch in B3A0) | ||
| 5B13 | DEFB $19 | Number of Meduza objects: 13 / 17 / 21 / 25, depending on LEVEL | ||
| 5B14 | DEFB $1E | Number of Round fishes: 13 / 17 / 21 / 25, depending on LEVEL | ||
| NumRecsI | 5B15 | DEFB $38 | Number of 21-byte records (27 / 35 / 43 / 51), group I; starts at C4F0 | |
| NumRecsII | 5B16 | DEFB $1E | Number of 26-byte records (18 / 22 / 26 / 31), group II; starts at (L5B1F) | |
| NumRecsIII | 5B17 | DEFB $32 | Number of 26-byte records (26 / 34 / 42 / 50), group III; starts at (L5B21) | |
| NumRecsIV | 5B18 | DEFB $14 | Number of 26-byte records (5 / 10 / 15 / 20), group IV; starts at (L5B23) | |
| NumRecsV | 5B19 | DEFB $46 | Number of 28-byte records (12 / 27 / 42 / 57), group V | |
| 5B1A | DEFB $02 | Delay value for depth row-band 0 (read by BDEA, passed to C4D5) | ||
| 5B1B | DEFB $02 | Delay value for depth row-band 1 (read by BDEA) | ||
| 5B1C | DEFB $02 | Delay value for depth row-band 2 (read by BDEA) | ||
| 5B1D | DEFB $02 | Delay value for depth row-band 3 (read by BDEA) | ||
| 5B1E | DEFB $05 | Delay value for depth row-band 4 (read by BDEA) | ||
| RecsAddrII | 5B1F | DEFW $0000 | Address of 26-byte records in block C4F0; NumRecsII is number of records | |
| RecsAddrIII | 5B21 | DEFW $0000 | Address of 26-byte records in block C4F0; NumRecsIII is number of records | |
| RecsAddrIV | 5B23 | DEFW $0000 | Address of 26-byte records in block C4F0; NumRecsIV is number of records | |
| DelayVal | 5B25 | DEFW $0001 | Delay value 150 / 100 / 50 / 1, depending on LEVEL, see C4D5 | |
| 5B27 | DEFW $0000,$0000,$0000,$0000 | 14 bytes copied from DDF0 + ([Game level] - 1) * 16 | ||
| 5B2F | DEFW $0000,$0000,$0000 | |||
| 5B35 | DEFW $DF45 | Alternate draw-buffer address, swapped with B7B9 each frame | ||
| LIVES | 5B37 | DEFB $03 | Number of lives | |
| 5B38 | DEFW $FEFE | Port for Clockwise key | ||
| 5B3A | DEFB $04 | Bit mask for Clockwise key | ||
| 5B3B | DEFW $FEFE | Port for Anticlockwise key | ||
| 5B3D | DEFB $02 | Bit mask for Anticlockwise key | ||
| 5B3E | DEFW $7FFE | Port for Accelerate key | ||
| 5B40 | DEFB $01 | Bit mask for Accelerate key | ||
| 5B41 | DEFW $7FFE | Port for Decelerate key | ||
| 5B43 | DEFB $02 | Bit mask for Decelerate key | ||
| SCORE | 5B44 | DEFW $03E8 | Score value | |
| 5B46 | DEFW $0000 | Pearls collected this game (incremented on shell pickup; stored to hi-score PEARLS column) | ||
| 5B48 | DEFW $0000 | Chests collected this game (incremented on chest pickup; stored to hi-score CHESTS column) | ||
| 5B4A | DEFB $00 | Screen attribute, see routine ClearScreenFillAttr | ||
| HISCORE | 5B4B | DEFW $0000 | High score value | |
|
|
||||
| 5B4D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5B5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5B6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5B7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5B8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5B9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BCD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BDD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BED | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5BFD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C05 | DEFB $00,$00,$00 | |||
| 5C08 | DEFB $00 | LAST-K - Last key pressed | ||
| 5C09 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C19 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C29 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C39 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C49 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C59 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C69 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C79 | DEFB $00,$00 | |||
| 5C7B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C8B | DEFB $00,$00 | |||
| 5C8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5C9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5CAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5CBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01 | |||
| 5CCD | DEFB $5F,$00,$FD,$32,$34,$35,$37,$35,$0E,$00,$00,$FF,$5F,$00,$3A,$D9 | |||
| 5CDD | DEFB $30,$0E,$00,$00,$00,$00,$00,$3A,$DA,$30,$0E,$00,$00,$00,$00,$00 | |||
| 5CED | DEFB $3A,$E7,$31,$0E,$00,$00,$01,$00,$00,$3A,$FB,$3A,$EF,$22,$22,$AF | |||
| 5CFD | DEFB $3A,$F5,$AC,$32,$0E,$00,$00,$02,$00,$00,$2C,$30,$0E,$00,$00,$00 | |||
| 5D0D | DEFB $00,$00,$3B,$3A,$EF,$22,$22,$AF,$3A,$F5,$AC,$32,$0E,$00,$00,$02 | |||
| 5D1D | DEFB $00,$00,$2C,$30,$0E,$00,$00,$00,$00,$00,$3B,$3A,$EF,$22,$22,$AF | |||
| 5D2D | DEFB $0D,$00,$02,$3A,$00,$FA,$C0,$36,$30,$38,$39,$35,$0E,$00,$00,$DF | |||
| 5D3D | DEFB $ED,$00,$CB,$F8,$22,$53,$2F,$44,$20,$53,$43,$4F,$52,$45,$22,$AF | |||
| 5D4D | DEFB $35,$39,$38,$36,$36,$0E,$00,$00,$DA,$E9,$00,$2C,$31,$36,$30,$0E | |||
| 5D5D | DEFB $00,$00,$A0,$00,$00,$3A,$EC,$32,$0E,$00,$00,$02,$00,$00,$0D,$00 | |||
| 5D6D | DEFB $03,$17,$00,$EF,$22,$53,$2F,$44,$20,$53,$43,$4F,$52,$45,$22,$AF | |||
| 5D7D | DEFB $3A,$EC,$32,$0E,$00,$00,$02,$00,$00,$0D,$00,$00,$00,$00,$00,$00 | |||
| 5D8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5D9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DCD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DDD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DED | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5DFD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E0D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E1D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E2D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E3D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E4D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5E9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5EAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5EBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5ECD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5EDD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5EED | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5EFD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F0D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F1D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F2D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F3D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F4D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5F9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FCD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FDD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FED | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| 5FFD | DEFB $00,$00,$00 | |||
|
|
||||||||||
|
Small squid horizontal sprites; width 3 height 1 chars, 24 bytes each
|
||||||||||
| 6000 | DEFB $0F,$00,$00,$50,$91,$C0,$2C,$6F,$E0,$73,$FF,$F8 | ![]() |
||||||||
| 600C | DEFB $99,$6F,$F0,$26,$93,$80,$1C,$80,$00,$03,$00,$00 | |||||||||
| 6018 | DEFB $00,$00,$00,$00,$00,$00,$00,$C2,$70,$3F,$3D,$FC | ![]() |
||||||||
| 6024 | DEFB $5B,$FF,$FF,$FD,$7D,$FE,$03,$C2,$38,$00,$00,$00 | |||||||||
| 6030 | DEFB $00,$00,$00,$00,$00,$00,$00,$02,$70,$70,$ED,$FE | ![]() |
||||||||
| 603C | DEFB $0F,$1F,$FF,$3F,$F5,$FC,$00,$02,$38,$00,$00,$00 | |||||||||
| 6048 | DEFB $9E,$00,$00,$69,$C4,$38,$67,$FB,$FC,$13,$FF,$FE | ![]() |
||||||||
| 6054 | DEFB $0C,$FB,$F8,$31,$84,$E0,$4E,$00,$00,$00,$00,$00 | |||||||||
| 6060 | DEFB $FF | |||||||||
| 6061 | DEFB $00,$58,$00,$00,$A5,$30,$00,$12,$F8,$01,$6F,$FC | ![]() |
||||||||
| 606D | DEFB $00,$8A,$F8,$00,$55,$60,$00,$B4,$00,$00,$08,$00 | |||||||||
| 6079 | DEFB $00,$06,$00,$00,$09,$00,$00,$00,$A8,$00,$03,$5C | ![]() |
||||||||
| 6085 | DEFB $00,$04,$FE,$00,$03,$5C,$00,$04,$A8,$00,$03,$00 | |||||||||
| 6091 | DEFB $00,$00,$C3,$00,$00,$2A,$00,$00,$2C,$00,$00,$1E | ![]() |
||||||||
| 609D | DEFB $00,$00,$3D,$00,$00,$1A,$00,$00,$2A,$00,$01,$C2 | |||||||||
| 60A9 | DEFB $00,$00,$06,$00,$00,$09,$00,$01,$50,$00,$03,$AC | ![]() |
||||||||
| 60B5 | DEFB $00,$07,$F2,$00,$03,$AC,$00,$01,$52,$00,$00,$0C | |||||||||
| 60C1 | DEFB $00,$00,$D0,$00,$65,$28,$00,$FA,$40,$01,$FF,$B4 | ![]() |
||||||||
| 60CD | DEFB $00,$FA,$88,$00,$35,$50,$00,$01,$68,$00,$00,$80 | |||||||||
| 60D9 | DEFB $00,$00,$F0,$03,$89,$0A,$07,$F6,$34,$1F,$FF,$CE | ![]() |
||||||||
| 60E5 | DEFB $0F,$F6,$98,$01,$C9,$64,$00,$01,$38,$00,$00,$C0 | |||||||||
| 60F1 | DEFB $00,$00,$00,$00,$00,$00,$0E,$43,$00,$3F,$BC,$FC | ![]() |
||||||||
| 60FD | DEFB $FF,$FF,$DA,$7F,$BE,$BF,$1C,$43,$C0,$00,$00,$00 | |||||||||
| 6109 | DEFB $00,$00,$00,$00,$00,$00,$0E,$40,$00,$7F,$B7,$0E | ![]() |
||||||||
| 6115 | DEFB $FF,$F8,$F0,$3F,$AF,$FC,$1C,$40,$00,$00,$00,$00 | |||||||||
| 6121 | DEFB $00,$00,$79,$1C,$23,$96,$3F,$DF,$E6,$7F,$FF,$C8 | ![]() |
||||||||
| 612D | DEFB $1F,$DF,$30,$07,$21,$8C,$00,$00,$72,$00,$00,$00 | |||||||||
| 6139 | DEFB $FF | |||||||||
| 613A | DEFB $00,$1A,$00,$0C,$A5,$00,$1F,$48,$00,$3F,$F6,$80 | ![]() |
||||||||
| 6146 | DEFB $1F,$51,$00,$06,$AA,$00,$00,$2D,$00,$00,$10,$00 | |||||||||
| 6152 | DEFB $00,$60,$00,$00,$90,$00,$15,$00,$00,$3A,$C0,$00 | ![]() |
||||||||
| 615E | DEFB $7F,$20,$00,$3A,$C0,$00,$15,$20,$00,$00,$C0,$00 | |||||||||
| 616A | DEFB $43,$80,$00,$54,$00,$00,$58,$00,$00,$BC,$00,$00 | ![]() |
||||||||
| 6176 | DEFB $78,$00,$00,$34,$00,$00,$D4,$00,$00,$83,$00,$00 | |||||||||
| 6182 | DEFB $60,$00,$00,$90,$00,$00,$0A,$80,$00,$35,$C0,$00 | ![]() |
||||||||
| 618E | DEFB $4F,$E0,$00,$35,$C0,$00,$4A,$80,$00,$30,$00,$00 | |||||||||
| 619A | DEFB $0B,$00,$00,$14,$A6,$00,$02,$5F,$00,$2D,$FF,$80 | ![]() |
||||||||
| 61A6 | DEFB $11,$5F,$00,$0A,$AC,$00,$16,$80,$00,$01,$00,$00 | |||||||||
|
Small squid vertical sprites; width 1 height 3 chars, 24 bytes each
|
||||||||||
| 61B2 | DEFB $00,$00,$00,$10,$18,$38,$78,$7C | ![]() |
||||||||
| 61BA | DEFB $7C,$3C,$38,$38,$54,$38,$38,$56 | |||||||||
| 61C2 | DEFB $99,$95,$A6,$AA,$5A,$34,$50,$08 | |||||||||
| 61CA | DEFB $08,$0C,$1C,$1E,$3E,$3E,$3C,$1C | ![]() |
||||||||
| 61D2 | DEFB $1C,$2A,$1C,$1C,$1C,$1C,$2E,$2A | |||||||||
| 61DA | DEFB $1E,$1A,$14,$1C,$1C,$14,$0C,$04 | |||||||||
| 61E2 | DEFB $08,$18,$1C,$1E,$3E,$3E,$3C,$1C | ![]() |
||||||||
| 61EA | DEFB $1C,$2A,$1C,$18,$0C,$14,$14,$14 | |||||||||
| 61F2 | DEFB $0C,$0C,$0C,$0C,$14,$14,$10,$00 | |||||||||
| 61FA | DEFB $00,$10,$30,$78,$78,$7C,$7C,$3C | ![]() |
||||||||
| 6202 | DEFB $38,$38,$54,$38,$38,$38,$78,$7C | |||||||||
| 620A | DEFB $74,$B2,$AA,$CA,$94,$64,$62,$80 | |||||||||
| 6212 | DEFB $FF | |||||||||
| 6213 | DEFB $00,$00,$10,$38,$78,$7C,$3C,$38 | ![]() |
||||||||
| 621B | DEFB $54,$38,$56,$99,$A6,$52,$94,$4A | |||||||||
| 6223 | DEFB $10,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 622B | DEFB $00,$08,$1C,$3E,$1C,$2A,$1C,$2A | ![]() |
||||||||
| 6233 | DEFB $55,$95,$8A,$40,$00,$00,$00,$00 | |||||||||
| 623B | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6243 | DEFB $88,$D7,$38,$7E,$1C,$6A,$81,$81 | ![]() |
||||||||
| 624B | DEFB $01,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6253 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 625B | DEFB $40,$8A,$95,$55,$2A,$1C,$2A,$1C | ![]() |
||||||||
| 6263 | DEFB $3E,$1C,$08,$00,$00,$00,$00,$00 | |||||||||
| 626B | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6273 | DEFB $00,$00,$10,$4A,$94,$52,$A6,$99 | ![]() |
||||||||
| 627B | DEFB $56,$38,$54,$38,$3C,$7C,$78,$38 | |||||||||
| 6283 | DEFB $10,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 628B | DEFB $00,$50,$34,$5A,$AA,$A6,$95,$99 | ![]() |
||||||||
| 6293 | DEFB $56,$38,$38,$54,$38,$38,$3C,$7C | |||||||||
| 629B | DEFB $7C,$78,$38,$18,$10,$00,$00,$00 | |||||||||
| 62A3 | DEFB $04,$0C,$14,$1C,$1C,$14,$1A,$1E | ![]() |
||||||||
| 62AB | DEFB $2A,$2E,$1C,$1C,$1C,$1C,$2A,$1C | |||||||||
| 62B3 | DEFB $1C,$3C,$3E,$3E,$1E,$1C,$0C,$08 | |||||||||
| 62BB | DEFB $00,$10,$14,$14,$0C,$0C,$0C,$0C | ![]() |
||||||||
| 62C3 | DEFB $14,$14,$14,$0C,$18,$1C,$2A,$1C | |||||||||
| 62CB | DEFB $1C,$3C,$3E,$3E,$1E,$1C,$18,$08 | |||||||||
| 62D3 | DEFB $80,$62,$64,$94,$CA,$AA,$B2,$74 | ![]() |
||||||||
| 62DB | DEFB $7C,$78,$38,$38,$38,$54,$38,$38 | |||||||||
| 62E3 | DEFB $3C,$3C,$7C,$78,$78,$30,$10,$00 | |||||||||
| 62EB | DEFB $FF | |||||||||
| 62EC | DEFB $00,$00,$00,$00,$00,$00,$00,$10 | ![]() |
||||||||
| 62F4 | DEFB $4A,$94,$52,$A6,$99,$56,$38,$54 | |||||||||
| 62FC | DEFB $38,$3C,$7C,$78,$38,$10,$00,$00 | |||||||||
| 6304 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 630C | DEFB $00,$00,$00,$00,$40,$8A,$95,$55 | |||||||||
| 6314 | DEFB $2A,$1C,$2A,$1C,$3E,$1C,$08,$00 | |||||||||
| 631C | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 6324 | DEFB $00,$00,$00,$00,$00,$00,$00,$80 | |||||||||
| 632C | DEFB $81,$81,$56,$38,$7E,$1C,$EA,$13 | |||||||||
| 6334 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 633C | DEFB $00,$00,$00,$00,$00,$08,$1C,$3E | |||||||||
| 6344 | DEFB $1C,$2A,$1C,$2A,$55,$95,$8A,$40 | |||||||||
| 634C | DEFB $00,$00,$00,$00,$00,$00,$00,$10 | ![]() |
||||||||
| 6354 | DEFB $38,$78,$7C,$3C,$38,$54,$38,$56 | |||||||||
| 635C | DEFB $99,$A6,$52,$94,$4A,$08,$00,$00 | |||||||||
|
Fish sprites; width 6 height 3 chars, 96 bytes each
|
||||||||||
| 6364 | DEFB $00,$00,$00,$00,$00,$00,$60,$00,$00,$10,$00,$00,$38,$00,$00,$18,$00,$00,$3E,$00,$00,$3C,$00,$00 | ![]() |
||||||||
| 637C | DEFB $1F,$80,$80,$7F,$00,$00,$0F,$E1,$EF,$FF,$FF,$80,$07,$FF,$FF,$FF,$FF,$F8,$0F,$FF,$FF,$FF,$FF,$EF | |||||||||
| 6394 | DEFB $1E,$00,$3F,$FD,$FF,$F8,$18,$00,$71,$FD,$EF,$00,$00,$00,$00,$01,$E0,$C0,$00,$00,$00,$01,$E0,$00 | |||||||||
| 63AC | DEFB $00,$00,$00,$01,$C0,$00,$00,$00,$00,$03,$80,$00,$00,$00,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 63C4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$18,$00,$00,$04,$00,$00,$3C,$00,$00 | ![]() |
||||||||
| 63DC | DEFB $07,$00,$00,$7F,$00,$00,$07,$80,$EF,$FF,$F0,$00,$03,$C1,$FF,$FF,$FF,$80,$03,$EF,$FF,$FF,$FF,$F8 | |||||||||
| 63F4 | DEFB $03,$FF,$FF,$FD,$FF,$EE,$03,$FC,$71,$FD,$EF,$F8,$07,$80,$00,$01,$EF,$00,$06,$00,$00,$03,$C0,$80 | |||||||||
| 640C | DEFB $04,$00,$00,$03,$80,$40,$00,$00,$00,$07,$00,$00,$00,$00,$00,$06,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6424 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$10,$00,$00,$60,$00,$00,$18,$00,$00,$38,$00,$00,$3C,$00,$00 | ![]() |
||||||||
| 643C | DEFB $3E,$00,$80,$7F,$00,$00,$1F,$81,$EF,$FF,$FF,$80,$0F,$EF,$FF,$FF,$FF,$F8,$07,$FF,$FF,$FF,$FF,$EF | |||||||||
| 6454 | DEFB $0F,$FC,$3F,$FE,$FF,$F8,$1E,$00,$71,$FD,$EF,$00,$18,$00,$00,$03,$E0,$C0,$00,$00,$00,$03,$80,$00 | |||||||||
| 646C | DEFB $00,$00,$00,$07,$00,$00,$00,$00,$00,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6484 | DEFB $04,$00,$00,$00,$00,$00,$06,$00,$00,$10,$00,$00,$07,$80,$00,$18,$00,$00,$03,$C0,$00,$3E,$00,$00 | ![]() |
||||||||
| 649C | DEFB $03,$F0,$80,$7F,$FF,$80,$03,$FD,$EF,$FF,$FF,$F8,$03,$FF,$FF,$FF,$FF,$EE,$07,$8F,$FF,$FE,$FF,$F8 | |||||||||
| 64B4 | DEFB $06,$00,$3F,$FD,$FF,$C0,$00,$00,$71,$FD,$E0,$00,$00,$00,$00,$01,$E0,$00,$00,$00,$00,$03,$C0,$00 | |||||||||
| 64CC | DEFB $00,$00,$00,$03,$80,$00,$00,$00,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 64E4 | DEFB $FF | |||||||||
| 64E5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$06,$00,$00,$18,$00,$00,$1C,$00,$00,$3C,$00,$00,$7C | ![]() |
||||||||
| 64FD | DEFB $00,$00,$FE,$01,$01,$F8,$01,$FF,$FF,$F7,$87,$F0,$1F,$FF,$FF,$FF,$FF,$E0,$F7,$FF,$FF,$FF,$FF,$F0 | |||||||||
| 6515 | DEFB $1F,$FF,$BF,$FC,$00,$78,$00,$F7,$BF,$8E,$00,$18,$03,$07,$80,$00,$00,$00,$00,$07,$80,$00,$00,$00 | |||||||||
| 652D | DEFB $00,$03,$80,$00,$00,$00,$00,$01,$C0,$00,$00,$00,$00,$00,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6545 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$18,$00,$00,$00,$00,$00,$3C,$00,$00,$20 | ![]() |
||||||||
| 655D | DEFB $00,$00,$FE,$00,$00,$E0,$00,$0F,$FF,$F7,$01,$E0,$01,$FF,$FF,$FF,$83,$C0,$1F,$FF,$FF,$FF,$F7,$C0 | |||||||||
| 6575 | DEFB $77,$FF,$BF,$FF,$FF,$C0,$1F,$F7,$BF,$8E,$3F,$C0,$00,$F7,$80,$00,$01,$E0,$01,$03,$C0,$00,$00,$60 | |||||||||
| 658D | DEFB $02,$01,$C0,$00,$00,$20,$00,$00,$E0,$00,$00,$00,$00,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 65A5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$18,$00,$00,$06,$00,$00,$3C,$00,$00,$1C | ![]() |
||||||||
| 65BD | DEFB $00,$00,$FE,$01,$00,$7C,$01,$FF,$FF,$F7,$81,$F8,$1F,$FF,$FF,$FF,$F7,$F0,$F7,$FF,$FF,$FF,$FF,$E0 | |||||||||
| 65D5 | DEFB $1F,$FF,$7F,$FC,$3F,$F0,$00,$F7,$BF,$8E,$00,$78,$03,$07,$C0,$00,$00,$18,$00,$01,$C0,$00,$00,$00 | |||||||||
| 65ED | DEFB $00,$00,$E0,$00,$00,$00,$00,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6605 | DEFB $00,$00,$00,$00,$00,$20,$00,$00,$08,$00,$00,$60,$00,$00,$18,$00,$01,$E0,$00,$00,$7C,$00,$03,$C0 | ![]() |
||||||||
| 661D | DEFB $01,$FF,$FE,$01,$0F,$C0,$1F,$FF,$FF,$F7,$BF,$C0,$77,$FF,$FF,$FF,$FF,$C0,$1F,$FF,$7F,$FF,$F1,$E0 | |||||||||
| 6635 | DEFB $03,$FF,$BF,$FC,$00,$60,$00,$07,$BF,$1E,$00,$00,$00,$07,$80,$00,$00,$00,$00,$03,$C0,$00,$00,$00 | |||||||||
| 664D | DEFB $00,$01,$C0,$00,$00,$00,$00,$00,$E0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6665 | DEFB $FF | |||||||||
| 6666 | DEFB $00,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$80,$00,$00,$70,$00,$01,$C0,$00,$00,$78,$00,$03,$E0,$00 | ![]() |
||||||||
| 667E | DEFB $00,$3C,$04,$07,$F8,$00,$00,$3F,$0E,$FF,$FF,$C0,$00,$1F,$FF,$FF,$FF,$F8,$00,$1F,$FF,$FF,$FF,$BC | |||||||||
| 6696 | DEFB $00,$3F,$C1,$FF,$DE,$F8,$00,$78,$00,$CF,$DD,$00,$00,$60,$00,$00,$1B,$E0,$00,$00,$00,$00,$38,$00 | |||||||||
| 66AE | DEFB $00,$00,$00,$00,$70,$00,$00,$00,$00,$00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 66C6 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$04,$00,$00,$00,$60,$00,$0E,$00,$00,$00,$70,$00,$3E,$00 | ![]() |
||||||||
| 66DE | DEFB $00,$00,$38,$00,$FF,$80,$00,$00,$3C,$31,$FF,$F0,$00,$00,$3F,$FF,$FF,$FC,$00,$00,$3F,$FF,$FF,$DE | |||||||||
| 66F6 | DEFB $00,$00,$7F,$FF,$DE,$FE,$00,$00,$60,$1F,$DE,$E2,$00,$00,$40,$08,$1D,$FC,$00,$00,$00,$00,$38,$00 | |||||||||
| 670E | DEFB $00,$00,$00,$00,$30,$38,$00,$00,$00,$00,$60,$18,$00,$00,$00,$00,$40,$08,$00,$00,$00,$00,$00,$00 | |||||||||
| 6726 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C1,$00,$00,$00,$00,$00,$C1,$00,$00,$00,$00,$00,$61,$00 | ![]() |
||||||||
| 673E | DEFB $00,$00,$00,$00,$79,$80,$00,$00,$00,$00,$73,$C0,$00,$00,$00,$00,$6F,$F0,$00,$00,$00,$00,$5B,$D8 | |||||||||
| 6756 | DEFB $00,$00,$00,$00,$5F,$F8,$00,$00,$00,$00,$2C,$34,$00,$00,$00,$00,$77,$EC,$00,$00,$00,$00,$F0,$1E | |||||||||
| 676E | DEFB $00,$00,$00,$01,$C0,$0E,$00,$00,$00,$03,$80,$03,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00 | |||||||||
| 6786 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$30,$80,$00,$00,$00,$00,$31,$80,$00,$00,$00,$00,$1B,$E0 | ![]() |
||||||||
| 679E | DEFB $00,$00,$00,$00,$07,$F8,$00,$00,$00,$00,$3F,$FE,$00,$00,$00,$00,$FF,$FF,$00,$00,$00,$01,$EF,$FE | |||||||||
| 67B6 | DEFB $00,$00,$00,$01,$FD,$EE,$00,$00,$00,$01,$1D,$EC,$00,$00,$00,$00,$FE,$E0,$00,$00,$00,$00,$00,$70 | |||||||||
| 67CE | DEFB $00,$00,$00,$00,$70,$30,$00,$00,$00,$00,$60,$18,$00,$00,$00,$00,$40,$08,$00,$00,$00,$00,$00,$00 | |||||||||
| 67E6 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$C0,$00,$00,$00,$01,$80,$C0,$00,$00,$00,$03,$C0,$60 | ![]() |
||||||||
| 67FE | DEFB $00,$00,$00,$0F,$E0,$70,$00,$00,$0F,$FF,$FF,$08,$00,$00,$7F,$FF,$FF,$F6,$00,$00,$F7,$FF,$FF,$FE | |||||||||
| 6816 | DEFB $00,$00,$7F,$FD,$FF,$FC,$00,$00,$07,$FD,$FF,$10,$00,$00,$3C,$BD,$C0,$60,$00,$00,$00,$1C,$00,$60 | |||||||||
| 682E | DEFB $00,$00,$00,$1C,$00,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6846 | DEFB $00,$00,$00,$00,$00,$00,$00,$01,$00,$00,$03,$00,$00,$03,$80,$00,$0E,$00,$00,$07,$C0,$00,$1E,$00 | ![]() |
||||||||
| 685E | DEFB $00,$1F,$E0,$20,$3C,$00,$03,$FF,$FF,$70,$FC,$00,$1F,$FF,$FF,$FF,$F8,$00,$3B,$FF,$FF,$FF,$F8,$00 | |||||||||
| 6876 | DEFB $1F,$7B,$FF,$83,$FC,$00,$00,$BB,$F3,$00,$1E,$00,$07,$D8,$00,$00,$06,$00,$00,$1C,$00,$00,$00,$00 | |||||||||
| 688E | DEFB $00,$0E,$00,$00,$00,$00,$00,$06,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 68A6 | DEFB $00,$00,$00,$00,$00,$00,$00,$20,$00,$03,$00,$00,$00,$70,$00,$06,$00,$00,$00,$7C,$00,$0E,$00,$00 | ![]() |
||||||||
| 68BE | DEFB $01,$FF,$00,$1C,$00,$00,$0F,$FF,$80,$3C,$00,$00,$3F,$FF,$FF,$FC,$00,$00,$7B,$FF,$FF,$FC,$00,$00 | |||||||||
| 68D6 | DEFB $7F,$7B,$FF,$FE,$00,$00,$47,$7B,$F8,$06,$00,$00,$3F,$B8,$00,$02,$00,$00,$00,$1C,$00,$00,$00,$00 | |||||||||
| 68EE | DEFB $1C,$0C,$00,$00,$00,$00,$18,$06,$00,$00,$00,$00,$10,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6906 | DEFB $00,$00,$00,$00,$00,$00,$01,$03,$00,$00,$00,$00,$01,$03,$00,$00,$00,$00,$01,$06,$00,$00,$00,$00 | ![]() |
||||||||
| 691E | DEFB $01,$9E,$00,$00,$00,$00,$03,$CE,$00,$00,$00,$00,$0F,$F6,$00,$00,$00,$00,$1B,$DA,$00,$00,$00,$00 | |||||||||
| 6936 | DEFB $1F,$FA,$00,$00,$00,$00,$2C,$34,$00,$00,$00,$00,$37,$EE,$00,$00,$00,$00,$78,$0F,$00,$00,$00,$00 | |||||||||
| 694E | DEFB $70,$03,$80,$00,$00,$00,$C0,$01,$C0,$00,$00,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6966 | DEFB $00,$00,$00,$00,$00,$00,$01,$0C,$00,$00,$00,$00,$01,$8C,$00,$00,$00,$00,$07,$D8,$00,$00,$00,$00 | ![]() |
||||||||
| 697E | DEFB $1F,$70,$00,$00,$00,$00,$7F,$FC,$00,$00,$00,$00,$FF,$FF,$00,$00,$00,$00,$7F,$F7,$80,$00,$00,$00 | |||||||||
| 6996 | DEFB $77,$BF,$80,$00,$00,$00,$37,$B8,$80,$00,$00,$00,$07,$7F,$00,$00,$00,$00,$0E,$00,$00,$00,$00,$00 | |||||||||
| 69AE | DEFB $0C,$0E,$00,$00,$00,$00,$18,$06,$00,$00,$00,$00,$10,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 69C6 | DEFB $00,$00,$00,$00,$00,$00,$03,$01,$00,$00,$00,$00,$03,$01,$80,$00,$00,$00,$06,$03,$C0,$00,$00,$00 | ![]() |
||||||||
| 69DE | DEFB $0E,$07,$F0,$00,$00,$00,$10,$FF,$FF,$F0,$00,$00,$6F,$FF,$FF,$FE,$00,$00,$7F,$FF,$FF,$EF,$00,$00 | |||||||||
| 69F6 | DEFB $3F,$FF,$BD,$FE,$00,$00,$08,$FF,$BD,$E0,$00,$00,$06,$03,$BD,$3C,$00,$00,$06,$00,$38,$00,$00,$00 | |||||||||
| 6A0E | DEFB $00,$00,$38,$00,$00,$00,$00,$00,$30,$00,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
|
Shark sprites; width 7 height 3 chars, 168 bytes each
|
||||||||||
| 6A26 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$00,$00,$00,$00,$E0,$00,$00 | ![]() |
||||||||
| 6A3B | DEFB $00,$00,$00,$00,$F0,$00,$00,$C0,$00,$00,$00,$F8,$00,$00,$E0,$00,$00,$01,$FC,$00,$00 | |||||||||
| 6A50 | DEFB $F8,$00,$00,$03,$FE,$00,$00,$7C,$00,$00,$1F,$FF,$F0,$00,$7F,$00,$63,$FF,$FF,$FF,$80 | |||||||||
| 6A65 | DEFB $3F,$80,$FF,$FF,$FF,$FF,$F0,$3F,$C3,$FF,$FF,$FF,$AB,$FC,$1F,$FF,$FF,$FF,$FF,$AB,$EF | |||||||||
| 6A7A | DEFB $1F,$FF,$FF,$FF,$FF,$B7,$FE,$1F,$FF,$FF,$FF,$FF,$D7,$E0,$1F,$01,$FF,$FF,$FF,$57,$C0 | |||||||||
| 6A8F | DEFB $1C,$03,$87,$FF,$FF,$57,$80,$38,$00,$0F,$FF,$7E,$57,$80,$70,$00,$03,$1F,$7D,$FF,$C0 | |||||||||
| 6AA4 | DEFB $20,$00,$00,$02,$FB,$C1,$F0,$00,$00,$00,$01,$E0,$00,$00,$00,$00,$00,$03,$C0,$00,$00 | |||||||||
| 6AB9 | DEFB $00,$00,$00,$07,$00,$00,$00,$00,$00,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6ACE | DEFB $00,$00,$00,$00,$C0,$00,$00,$00,$00,$00,$00,$E0,$00,$00,$00,$00,$00,$00,$F0,$00,$00 | ![]() |
||||||||
| 6AE3 | DEFB $00,$00,$00,$00,$F8,$00,$00,$00,$00,$00,$01,$FC,$00,$00,$00,$00,$00,$03,$FE,$00,$00 | |||||||||
| 6AF8 | DEFB $00,$00,$00,$1F,$FF,$E0,$00,$18,$00,$03,$FF,$FF,$FE,$00,$18,$00,$6F,$FF,$FF,$FF,$C0 | |||||||||
| 6B0D | DEFB $1C,$00,$FF,$FF,$FF,$BF,$F0,$1E,$03,$FF,$FF,$FF,$AB,$FC,$0F,$0F,$FF,$FF,$FF,$AB,$EF | |||||||||
| 6B22 | DEFB $0F,$3F,$FF,$FF,$FF,$B7,$FE,$0F,$FF,$FF,$FF,$FF,$57,$E0,$07,$FB,$87,$FF,$FF,$57,$C0 | |||||||||
| 6B37 | DEFB $07,$E0,$0F,$FF,$FF,$57,$80,$07,$80,$03,$1F,$BF,$D7,$C0,$07,$00,$00,$03,$BE,$FF,$F0 | |||||||||
| 6B4C | DEFB $06,$00,$00,$01,$7E,$C0,$00,$06,$00,$00,$00,$7C,$00,$00,$0E,$00,$00,$00,$F0,$00,$00 | |||||||||
| 6B61 | DEFB $0C,$00,$00,$01,$E0,$00,$00,$00,$00,$00,$03,$80,$00,$00,$00,$00,$00,$03,$00,$00,$00 | |||||||||
| 6B76 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$00,$00,$00,$00,$E0,$00,$00 | ![]() |
||||||||
| 6B8B | DEFB $20,$00,$00,$00,$F0,$00,$00,$70,$00,$00,$00,$F8,$00,$00,$7C,$00,$00,$01,$FC,$00,$00 | |||||||||
| 6BA0 | DEFB $3E,$00,$00,$07,$FE,$00,$00,$3F,$00,$00,$1F,$FF,$E0,$00,$1F,$80,$63,$FF,$FF,$FE,$00 | |||||||||
| 6BB5 | DEFB $1F,$C0,$FF,$FF,$FF,$FF,$C0,$0F,$E3,$FF,$FF,$FF,$AF,$F0,$0F,$FF,$FF,$FF,$FF,$AB,$FC | |||||||||
| 6BCA | DEFB $0F,$FF,$FF,$FF,$FF,$AB,$EF,$0F,$FF,$FF,$FF,$FF,$B7,$FE,$0F,$81,$FF,$FF,$FF,$D7,$F0 | |||||||||
| 6BDF | DEFB $1C,$03,$87,$FF,$FF,$57,$80,$38,$00,$0F,$FF,$7E,$57,$F8,$10,$00,$03,$1F,$7D,$FF,$80 | |||||||||
| 6BF4 | DEFB $00,$00,$00,$02,$FB,$C0,$00,$00,$00,$00,$01,$E0,$00,$00,$00,$00,$00,$03,$C0,$00,$00 | |||||||||
| 6C09 | DEFB $00,$00,$00,$07,$00,$00,$00,$00,$00,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6C1E | DEFB $00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$00,$00,$00,$00,$18,$00,$00,$00,$C0,$00,$00 | ![]() |
||||||||
| 6C33 | DEFB $1C,$00,$00,$00,$E0,$00,$00,$1C,$00,$00,$00,$F0,$00,$00,$0E,$00,$00,$00,$F8,$00,$00 | |||||||||
| 6C48 | DEFB $0E,$00,$00,$01,$FC,$00,$00,$0F,$00,$00,$03,$FE,$00,$00,$07,$80,$00,$1F,$FF,$F0,$00 | |||||||||
| 6C5D | DEFB $07,$C0,$63,$FF,$FF,$FF,$80,$07,$E0,$FF,$FF,$FF,$FF,$F0,$07,$F3,$FF,$FF,$FF,$AF,$FC | |||||||||
| 6C72 | DEFB $07,$FF,$FF,$FF,$FF,$AB,$EF,$07,$FF,$FF,$FF,$FF,$FB,$FE,$0E,$1F,$FF,$FF,$FF,$57,$E0 | |||||||||
| 6C87 | DEFB $0C,$00,$FF,$FF,$FF,$57,$C0,$00,$01,$C7,$FF,$FF,$57,$80,$00,$00,$0F,$FF,$FE,$57,$C0 | |||||||||
| 6C9C | DEFB $00,$00,$06,$1E,$FE,$FF,$F0,$00,$00,$00,$01,$F1,$C0,$00,$00,$00,$00,$07,$80,$00,$00 | |||||||||
| 6CB1 | DEFB $00,$00,$00,$1E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6CC6 | DEFB $FF | |||||||||
| 6CC7 | DEFB $00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$0C,$00,$00 | ![]() |
||||||||
| 6CDC | DEFB $00,$30,$00,$00,$0E,$00,$00,$00,$38,$00,$00,$0F,$00,$00,$00,$3E,$00,$00,$0F,$80,$00 | |||||||||
| 6CF1 | DEFB $00,$1F,$00,$00,$0F,$C0,$00,$00,$1F,$C0,$00,$1F,$FC,$00,$00,$0F,$E0,$30,$FF,$FF,$80 | |||||||||
| 6D06 | DEFB $00,$0F,$F0,$3F,$FF,$FF,$F0,$00,$07,$FF,$FF,$FF,$FA,$FC,$00,$07,$FF,$FF,$FF,$FA,$DF | |||||||||
| 6D1B | DEFB $00,$07,$FF,$FF,$FF,$F5,$FF,$00,$07,$C0,$7F,$FF,$F5,$F0,$00,$07,$00,$DF,$FF,$FA,$C0 | |||||||||
| 6D30 | DEFB $00,$0E,$00,$03,$FF,$FA,$80,$00,$1C,$00,$07,$FF,$FF,$00,$00,$08,$00,$03,$1E,$FB,$80 | |||||||||
| 6D45 | DEFB $00,$00,$00,$00,$06,$F8,$F0,$00,$00,$00,$00,$01,$E6,$00,$00,$00,$00,$00,$03,$CE,$00 | |||||||||
| 6D5A | DEFB $00,$00,$00,$00,$07,$1C,$00,$00,$00,$00,$00,$06,$18,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 6D6F | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$20,$00,$00,$00,$00,$00,$00,$20,$00 | ![]() |
||||||||
| 6D84 | DEFB $00,$00,$00,$00,$00,$30,$00,$00,$00,$00,$C0,$00,$30,$00,$00,$00,$00,$E0,$00,$38,$00 | |||||||||
| 6D99 | DEFB $00,$00,$00,$F0,$00,$38,$00,$00,$00,$00,$78,$00,$7C,$00,$00,$00,$00,$7C,$01,$FF,$80 | |||||||||
| 6DAE | DEFB $00,$00,$00,$3E,$27,$FF,$F0,$00,$00,$00,$3F,$3F,$FF,$FE,$00,$00,$00,$1F,$FF,$FF,$BF | |||||||||
| 6DC3 | DEFB $00,$00,$00,$1F,$FF,$FD,$E7,$00,$00,$00,$1F,$FF,$F5,$CC,$00,$00,$00,$1E,$1F,$F7,$10 | |||||||||
| 6DD8 | DEFB $00,$00,$00,$1C,$1F,$FA,$20,$00,$00,$00,$38,$03,$FA,$20,$00,$00,$00,$70,$01,$FF,$10 | |||||||||
| 6DED | DEFB $00,$00,$00,$20,$00,$FC,$F0,$00,$00,$00,$00,$01,$F1,$00,$00,$00,$00,$00,$01,$C0,$F0 | |||||||||
| 6E02 | DEFB $00,$00,$00,$00,$03,$80,$70,$00,$00,$00,$00,$06,$00,$38,$00,$00,$00,$00,$04,$00,$08 | |||||||||
| 6E17 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$08,$00 | ![]() |
||||||||
| 6E2C | DEFB $00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$C0,$18,$00,$00,$00,$00,$00,$C0,$18,$00 | |||||||||
| 6E41 | DEFB $00,$00,$00,$00,$E0,$18,$00,$00,$00,$00,$00,$70,$1C,$00,$00,$00,$00,$00,$78,$3C,$00 | |||||||||
| 6E56 | DEFB $00,$00,$00,$00,$3C,$FF,$00,$00,$00,$00,$00,$3D,$BD,$80,$00,$00,$00,$00,$3D,$FF,$80 | |||||||||
| 6E6B | DEFB $00,$00,$00,$00,$3B,$E7,$C0,$00,$00,$00,$00,$3B,$81,$C0,$00,$00,$00,$00,$76,$00,$60 | |||||||||
| 6E80 | DEFB $00,$00,$00,$00,$74,$00,$20,$00,$00,$00,$00,$64,$00,$20,$00,$00,$00,$00,$DB,$00,$D8 | |||||||||
| 6E95 | DEFB $00,$00,$00,$00,$5C,$C3,$38,$00,$00,$00,$00,$3E,$3C,$7C,$00,$00,$00,$00,$3C,$00,$3C | |||||||||
| 6EAA | DEFB $00,$00,$00,$00,$70,$00,$0E,$00,$00,$00,$00,$C0,$00,$03,$00,$00,$00,$00,$80,$00,$01 | |||||||||
| 6EBF | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$02,$00 | ![]() |
||||||||
| 6ED4 | DEFB $00,$00,$00,$00,$01,$82,$00,$00,$00,$00,$00,$01,$86,$00,$00,$00,$00,$00,$01,$C6,$00 | |||||||||
| 6EE9 | DEFB $00,$00,$00,$00,$00,$E7,$00,$00,$00,$00,$00,$00,$8F,$80,$00,$00,$00,$00,$00,$7F,$F0 | |||||||||
| 6EFE | DEFB $00,$00,$00,$00,$03,$FF,$F8,$00,$00,$00,$00,$1F,$FF,$FC,$00,$00,$00,$00,$3F,$7F,$FE | |||||||||
| 6F13 | DEFB $00,$00,$00,$00,$39,$EF,$FF,$00,$00,$00,$00,$0C,$EB,$FF,$00,$00,$00,$00,$02,$3B,$FE | |||||||||
| 6F28 | DEFB $00,$00,$00,$00,$01,$17,$FC,$00,$00,$00,$00,$01,$17,$F8,$00,$00,$00,$00,$02,$3F,$F0 | |||||||||
| 6F3D | DEFB $00,$00,$00,$00,$03,$CF,$C0,$00,$00,$00,$00,$00,$23,$E0,$00,$00,$00,$00,$03,$C1,$F0 | |||||||||
| 6F52 | DEFB $00,$00,$00,$00,$03,$80,$F0,$00,$00,$00,$00,$07,$00,$78,$00,$00,$00,$00,$04,$00,$18 | |||||||||
| 6F67 | DEFB $00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$18,$00,$00 | ![]() |
||||||||
| 6F7C | DEFB $00,$00,$00,$00,$38,$00,$10,$00,$00,$00,$00,$78,$00,$10,$00,$00,$00,$00,$F8,$00,$10 | |||||||||
| 6F91 | DEFB $00,$00,$00,$01,$F8,$00,$18,$00,$00,$00,$1F,$FC,$00,$0C,$00,$00,$00,$FF,$FF,$86,$0C | |||||||||
| 6FA6 | DEFB $00,$00,$07,$FF,$FF,$FF,$00,$00,$00,$1F,$AF,$FF,$FF,$FC,$00,$00,$7D,$AF,$FF,$FF,$FE | |||||||||
| 6FBB | DEFB $00,$00,$7F,$D7,$FF,$FF,$FC,$00,$00,$07,$D7,$FF,$FF,$30,$00,$00,$01,$AF,$FF,$FD,$8C | |||||||||
| 6FD0 | DEFB $00,$00,$00,$AF,$FF,$E0,$18,$00,$00,$00,$7F,$FF,$F0,$10,$00,$00,$00,$EF,$BC,$60,$10 | |||||||||
| 6FE5 | DEFB $00,$00,$07,$8F,$B0,$00,$00,$00,$00,$00,$33,$C0,$00,$00,$00,$00,$00,$39,$E0,$00,$00 | |||||||||
| 6FFA | DEFB $00,$00,$00,$1C,$70,$00,$00,$00,$00,$00,$0C,$30,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 700F | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$00,$00 | ![]() |
||||||||
| 7024 | DEFB $00,$00,$00,$07,$00,$00,$01,$00,$00,$00,$0F,$00,$00,$01,$00,$00,$00,$1F,$00,$00,$01 | |||||||||
| 7039 | DEFB $00,$00,$00,$3F,$80,$00,$01,$00,$00,$00,$7F,$C0,$00,$03,$00,$00,$0F,$FF,$F8,$00,$03 | |||||||||
| 704E | DEFB $00,$01,$FF,$FF,$FF,$C6,$03,$00,$0F,$FF,$FF,$FF,$FF,$07,$00,$3F,$F5,$FF,$FF,$FF,$CE | |||||||||
| 7063 | DEFB $00,$F7,$D5,$FF,$FF,$FF,$FE,$00,$7F,$DF,$FF,$FF,$FF,$FE,$00,$07,$EA,$FF,$FF,$FF,$FA | |||||||||
| 7078 | DEFB $00,$03,$EA,$FF,$FF,$FF,$03,$00,$01,$EA,$FF,$FF,$E3,$83,$00,$03,$EA,$7F,$FF,$F0,$01 | |||||||||
| 708D | DEFB $00,$0F,$FF,$7F,$78,$60,$00,$00,$00,$03,$8F,$80,$00,$00,$00,$00,$00,$01,$E0,$00,$00 | |||||||||
| 70A2 | DEFB $00,$00,$00,$00,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 70B7 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$00,$00,$00,$00,$00,$07,$00,$00,$00,$00 | ![]() |
||||||||
| 70CC | DEFB $00,$00,$0F,$00,$00,$00,$00,$00,$00,$1F,$00,$00,$00,$03,$00,$00,$3F,$80,$00,$00,$07 | |||||||||
| 70E1 | DEFB $00,$00,$7F,$C0,$00,$00,$1F,$00,$0F,$FF,$F8,$00,$00,$3E,$01,$FF,$FF,$FF,$C6,$00,$FE | |||||||||
| 70F6 | DEFB $0F,$FF,$FF,$FF,$FF,$01,$FC,$3F,$D5,$FF,$FF,$FF,$C3,$FC,$F7,$D5,$FF,$FF,$FF,$FF,$F8 | |||||||||
| 710B | DEFB $7F,$ED,$FF,$FF,$FF,$FF,$F8,$07,$EB,$FF,$FF,$FF,$FF,$F8,$03,$EA,$FF,$FF,$FF,$80,$F8 | |||||||||
| 7120 | DEFB $01,$EA,$FF,$FF,$E1,$C0,$38,$01,$EA,$7E,$FF,$F0,$00,$1C,$03,$FF,$BE,$F8,$C0,$00,$0E | |||||||||
| 7135 | DEFB $0F,$83,$DF,$40,$00,$00,$04,$00,$00,$07,$80,$00,$00,$00,$00,$00,$03,$C0,$00,$00,$00 | |||||||||
| 714A | DEFB $00,$00,$00,$E0,$00,$00,$00,$00,$00,$00,$70,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 715F | DEFB $00,$00,$03,$00,$00,$00,$00,$00,$00,$07,$00,$00,$00,$00,$00,$00,$0F,$00,$00,$00,$00 | ![]() |
||||||||
| 7174 | DEFB $00,$00,$1F,$00,$00,$00,$00,$00,$00,$3F,$80,$00,$00,$00,$00,$00,$7F,$C0,$00,$00,$00 | |||||||||
| 7189 | DEFB $00,$07,$FF,$F8,$00,$00,$00,$00,$7F,$FF,$FF,$C0,$00,$18,$03,$FF,$FF,$FF,$F6,$00,$18 | |||||||||
| 719E | DEFB $0F,$FD,$FF,$FF,$FF,$00,$38,$3F,$D5,$FF,$FF,$FF,$C0,$78,$F7,$D5,$FF,$FF,$FF,$F0,$F0 | |||||||||
| 71B3 | DEFB $7F,$ED,$FF,$FF,$FF,$FC,$F0,$07,$EA,$FF,$FF,$FF,$FF,$F0,$03,$EA,$FF,$FF,$E1,$DF,$E0 | |||||||||
| 71C8 | DEFB $01,$EA,$FF,$FF,$F0,$07,$E0,$03,$EB,$FD,$F8,$C0,$01,$E0,$0F,$FF,$7D,$C0,$00,$00,$E0 | |||||||||
| 71DD | DEFB $00,$03,$7E,$80,$00,$00,$60,$00,$00,$3E,$00,$00,$00,$60,$00,$00,$0F,$00,$00,$00,$70 | |||||||||
| 71F2 | DEFB $00,$00,$07,$80,$00,$00,$30,$00,$00,$01,$C0,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$00 | |||||||||
| 7207 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$00,$00,$00,$00,$00,$07,$00,$00,$00,$00 | ![]() |
||||||||
| 721C | DEFB $00,$00,$0F,$00,$00,$00,$04,$00,$00,$1F,$00,$00,$00,$0E,$00,$00,$3F,$80,$00,$00,$3E | |||||||||
| 7231 | DEFB $00,$00,$7F,$C0,$00,$00,$7C,$00,$07,$FF,$F8,$00,$00,$FC,$00,$7F,$FF,$FF,$C6,$01,$F8 | |||||||||
| 7246 | DEFB $03,$FF,$FF,$FF,$FF,$03,$F8,$0F,$F5,$FF,$FF,$FF,$C7,$F0,$3F,$D5,$FF,$FF,$FF,$FF,$F0 | |||||||||
| 725B | DEFB $F7,$D5,$FF,$FF,$FF,$FF,$F0,$7F,$ED,$FF,$FF,$FF,$FF,$F0,$0F,$EB,$FF,$FF,$FF,$81,$F0 | |||||||||
| 7270 | DEFB $01,$EA,$FF,$FF,$E1,$C0,$38,$1F,$EA,$7E,$FF,$F0,$00,$1C,$01,$FF,$BE,$F8,$C0,$00,$08 | |||||||||
| 7285 | DEFB $00,$03,$DF,$40,$00,$00,$00,$00,$00,$07,$80,$00,$00,$00,$00,$00,$03,$C0,$00,$00,$00 | |||||||||
| 729A | DEFB $00,$00,$00,$E0,$00,$00,$00,$00,$00,$00,$70,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 72AF | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$03,$00,$00,$00,$18 | ![]() |
||||||||
| 72C4 | DEFB $00,$00,$07,$00,$00,$00,$38,$00,$00,$0F,$00,$00,$00,$38,$00,$00,$1F,$00,$00,$00,$70 | |||||||||
| 72D9 | DEFB $00,$00,$3F,$80,$00,$00,$70,$00,$00,$7F,$C0,$00,$00,$F0,$00,$0F,$FF,$F8,$00,$01,$E0 | |||||||||
| 72EE | DEFB $01,$FF,$FF,$FF,$C6,$03,$E0,$0F,$FF,$FF,$FF,$FF,$07,$E0,$3F,$F5,$FF,$FF,$FF,$CF,$E0 | |||||||||
| 7303 | DEFB $F7,$D5,$FF,$FF,$FF,$FF,$E0,$7F,$DF,$FF,$FF,$FF,$FF,$E0,$07,$EA,$FF,$FF,$FF,$F8,$70 | |||||||||
| 7318 | DEFB $03,$EA,$FF,$FF,$FF,$00,$30,$01,$EA,$FF,$FF,$E3,$80,$00,$03,$EA,$7F,$FF,$F0,$00,$00 | |||||||||
| 732D | DEFB $0F,$FF,$7F,$78,$60,$00,$00,$00,$03,$8F,$80,$00,$00,$00,$00,$00,$01,$E0,$00,$00,$00 | |||||||||
| 7342 | DEFB $00,$00,$00,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7357 | DEFB $FF | |||||||||
| 7358 | DEFB $00,$00,$10,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$30,$00,$00,$00,$00 | ![]() |
||||||||
| 736D | DEFB $00,$00,$70,$00,$00,$0C,$00,$00,$00,$F0,$00,$00,$1C,$00,$00,$01,$F0,$00,$00,$78,$00 | |||||||||
| 7382 | DEFB $00,$03,$F0,$00,$00,$F8,$00,$00,$3F,$F8,$00,$03,$F8,$00,$01,$FF,$FF,$0C,$07,$F0,$00 | |||||||||
| 7397 | DEFB $0F,$FF,$FF,$FC,$0F,$F0,$00,$3F,$5F,$FF,$FF,$FF,$E0,$00,$FB,$5F,$FF,$FF,$FF,$E0,$00 | |||||||||
| 73AC | DEFB $FF,$AF,$FF,$FF,$FF,$E0,$00,$0F,$AF,$FF,$FE,$03,$E0,$00,$03,$5F,$FF,$FB,$00,$E0,$00 | |||||||||
| 73C1 | DEFB $01,$5F,$FF,$C0,$00,$70,$00,$00,$FF,$FF,$E0,$00,$38,$00,$01,$DF,$78,$C0,$00,$10,$00 | |||||||||
| 73D6 | DEFB $0F,$1F,$60,$00,$00,$00,$00,$00,$67,$80,$00,$00,$00,$00,$00,$73,$C0,$00,$00,$00,$00 | |||||||||
| 73EB | DEFB $00,$38,$E0,$00,$00,$00,$00,$00,$18,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7400 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00,$04,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 7415 | DEFB $00,$0C,$00,$00,$00,$00,$00,$00,$0C,$00,$03,$00,$00,$00,$00,$1C,$00,$07,$00,$00,$00 | |||||||||
| 742A | DEFB $00,$1C,$00,$0F,$00,$00,$00,$00,$3E,$00,$1E,$00,$00,$00,$01,$FF,$80,$3E,$00,$00,$00 | |||||||||
| 743F | DEFB $0F,$FF,$E4,$7C,$00,$00,$00,$7F,$FF,$FC,$FC,$00,$00,$00,$FD,$FF,$FF,$F8,$00,$00,$00 | |||||||||
| 7454 | DEFB $E7,$BF,$FF,$F8,$00,$00,$00,$33,$AF,$FF,$F8,$00,$00,$00,$08,$EF,$F8,$78,$00,$00,$00 | |||||||||
| 7469 | DEFB $04,$5F,$F8,$38,$00,$00,$00,$04,$5F,$C0,$1C,$00,$00,$00,$08,$FF,$80,$0E,$00,$00,$00 | |||||||||
| 747E | DEFB $0F,$3F,$00,$04,$00,$00,$00,$00,$8F,$80,$00,$00,$00,$00,$0F,$03,$80,$00,$00,$00,$00 | |||||||||
| 7493 | DEFB $0E,$01,$C0,$00,$00,$00,$00,$1C,$00,$60,$00,$00,$00,$00,$10,$00,$20,$00,$00,$00,$00 | |||||||||
| 74A8 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00,$00,$08,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 74BD | DEFB $00,$08,$00,$00,$00,$00,$00,$00,$18,$03,$00,$00,$00,$00,$00,$18,$03,$00,$00,$00,$00 | |||||||||
| 74D2 | DEFB $00,$18,$07,$00,$00,$00,$00,$00,$1C,$0E,$00,$00,$00,$00,$00,$3C,$1E,$00,$00,$00,$00 | |||||||||
| 74E7 | DEFB $00,$FF,$3C,$00,$00,$00,$00,$01,$BD,$BC,$00,$00,$00,$00,$01,$FF,$BC,$00,$00,$00,$00 | |||||||||
| 74FC | DEFB $03,$E7,$DC,$00,$00,$00,$00,$03,$81,$DC,$00,$00,$00,$00,$06,$00,$6E,$00,$00,$00,$00 | |||||||||
| 7511 | DEFB $04,$00,$2E,$00,$00,$00,$00,$04,$00,$26,$00,$00,$00,$00,$1B,$00,$DB,$00,$00,$00,$00 | |||||||||
| 7526 | DEFB $1C,$C3,$3A,$00,$00,$00,$00,$3E,$3C,$7C,$00,$00,$00,$00,$3C,$00,$3C,$00,$00,$00,$00 | |||||||||
| 753B | DEFB $70,$00,$0E,$00,$00,$00,$00,$C0,$00,$03,$00,$00,$00,$00,$80,$00,$01,$00,$00,$00,$00 | |||||||||
| 7550 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 7565 | DEFB $00,$41,$80,$00,$00,$00,$00,$00,$61,$80,$00,$00,$00,$00,$00,$63,$80,$00,$00,$00,$00 | |||||||||
| 757A | DEFB $00,$E7,$00,$00,$00,$00,$00,$01,$F1,$00,$00,$00,$00,$00,$0F,$FE,$00,$00,$00,$00,$00 | |||||||||
| 758F | DEFB $1F,$FF,$C0,$00,$00,$00,$00,$3F,$FF,$F8,$00,$00,$00,$00,$7F,$FE,$FC,$00,$00,$00,$00 | |||||||||
| 75A4 | DEFB $FF,$FB,$9C,$00,$00,$00,$00,$FF,$D7,$30,$00,$00,$00,$00,$7F,$DC,$40,$00,$00,$00,$00 | |||||||||
| 75B9 | DEFB $3F,$E8,$80,$00,$00,$00,$00,$1F,$E8,$80,$00,$00,$00,$00,$0F,$FC,$40,$00,$00,$00,$00 | |||||||||
| 75CE | DEFB $03,$F3,$C0,$00,$00,$00,$00,$07,$C4,$00,$00,$00,$00,$00,$0F,$83,$C0,$00,$00,$00,$00 | |||||||||
| 75E3 | DEFB $0F,$01,$C0,$00,$00,$00,$00,$1E,$00,$E0,$00,$00,$00,$00,$18,$00,$20,$00,$00,$00,$00 | |||||||||
| 75F8 | DEFB $00,$00,$10,$00,$00,$00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$18,$00,$00,$00,$00 | ![]() |
||||||||
| 760D | DEFB $08,$00,$1C,$00,$00,$00,$00,$08,$00,$1E,$00,$00,$00,$00,$08,$00,$1F,$00,$00,$00,$00 | |||||||||
| 7622 | DEFB $18,$00,$1F,$80,$00,$00,$00,$30,$00,$3F,$F8,$00,$00,$00,$30,$61,$FF,$FF,$00,$00,$00 | |||||||||
| 7637 | DEFB $00,$FF,$FF,$FF,$E0,$00,$00,$3F,$FF,$FF,$F5,$F8,$00,$00,$7F,$FF,$FF,$F5,$BE,$00,$00 | |||||||||
| 764C | DEFB $3F,$FF,$FF,$EB,$FE,$00,$00,$0C,$FF,$FF,$EB,$E0,$00,$00,$31,$BF,$FF,$F5,$80,$00,$00 | |||||||||
| 7661 | DEFB $18,$07,$FF,$F5,$00,$00,$00,$08,$0F,$FF,$FE,$00,$00,$00,$08,$06,$3D,$F7,$00,$00,$00 | |||||||||
| 7676 | DEFB $00,$00,$0D,$F1,$E0,$00,$00,$00,$00,$03,$CC,$00,$00,$00,$00,$00,$07,$9C,$00,$00,$00 | |||||||||
| 768B | DEFB $00,$00,$0E,$38,$00,$00,$00,$00,$00,$0C,$30,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 76A0 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$00,$00 | ![]() |
||||||||
| 76B5 | DEFB $80,$00,$00,$E0,$00,$00,$00,$80,$00,$00,$F0,$00,$00,$00,$80,$00,$00,$F8,$00,$00,$00 | |||||||||
| 76CA | DEFB $80,$00,$01,$FC,$00,$00,$00,$C0,$00,$03,$FE,$00,$00,$00,$C0,$00,$1F,$FF,$F0,$00,$00 | |||||||||
| 76DF | DEFB $C0,$63,$FF,$FF,$FF,$80,$00,$E0,$FF,$FF,$FF,$FF,$F0,$00,$73,$FF,$FF,$FF,$AF,$FC,$00 | |||||||||
| 76F4 | DEFB $7F,$FF,$FF,$FF,$AB,$EF,$00,$7F,$FF,$FF,$FF,$FB,$FE,$00,$5F,$FF,$FF,$FF,$57,$E0,$00 | |||||||||
| 7709 | DEFB $C0,$FF,$FF,$FF,$57,$C0,$00,$C1,$C7,$FF,$FF,$57,$80,$00,$80,$0F,$FF,$FE,$57,$C0,$00 | |||||||||
| 771E | DEFB $00,$06,$1E,$FE,$FF,$F0,$00,$00,$00,$01,$F1,$C0,$00,$00,$00,$00,$07,$80,$00,$00,$00 | |||||||||
| 7733 | DEFB $00,$00,$1E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
|
Fish cloud sprites
|
||||||||||
| 7748 | DEFB $00,$00,$00,$1C,$80,$00,$3F,$00,$00,$1E,$80,$00 | ![]() |
||||||||
| 7754 | DEFB $00,$00,$00,$00,$D0,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7760 | DEFB $00,$1B,$3A,$00,$2E,$00,$C0,$1B,$00,$02,$00,$00 | |||||||||
| 776C | DEFB $06,$50,$0C,$1F,$F0,$00,$02,$10,$01,$00,$00,$63 | |||||||||
| 7778 | DEFB $00,$00,$F6,$00,$61,$FC,$00,$00,$F6,$03,$A0,$60 | |||||||||
| 7784 | DEFB $00,$00,$00,$3D,$00,$00,$3D,$06,$00,$00,$00,$00 | |||||||||
| 7790 | DEFB $00,$00,$00,$00,$00,$00,$39,$00,$00,$7E,$00,$00 | ![]() |
||||||||
| 779C | DEFB $3D,$00,$00,$00,$68,$00,$00,$00,$00,$00,$1B,$00 | |||||||||
| 77A8 | DEFB $00,$2E,$1D,$30,$1B,$00,$00,$00,$00,$01,$00,$18 | |||||||||
| 77B4 | DEFB $03,$28,$00,$0F,$F8,$00,$01,$08,$04,$00,$00,$64 | |||||||||
| 77C0 | DEFB $00,$00,$B4,$00,$19,$FC,$00,$00,$F4,$03,$A0,$60 | |||||||||
| 77CC | DEFB $00,$00,$00,$00,$00,$00,$3C,$00,$00,$3C,$06,$00 | |||||||||
| 77D8 | DEFB $00,$00,$00,$00,$00,$00,$1C,$80,$00,$3F,$00,$00 | ![]() |
||||||||
| 77E4 | DEFB $1E,$80,$00,$00,$00,$00,$00,$D0,$00,$00,$00,$00 | |||||||||
| 77F0 | DEFB $00,$36,$00,$00,$5C,$3A,$60,$36,$00,$02,$00,$00 | |||||||||
| 77FC | DEFB $06,$50,$18,$1F,$F0,$00,$02,$10,$01,$00,$00,$63 | |||||||||
| 7808 | DEFB $00,$00,$B6,$00,$31,$FC,$00,$00,$F6,$07,$40,$60 | |||||||||
| 7814 | DEFB $00,$00,$00,$1E,$80,$00,$1E,$83,$00,$00,$00,$00 | |||||||||
| 7820 | DEFB $FF | |||||||||
| 7821 | DEFB $00,$00,$00,$20,$00,$00,$70,$00,$00,$20,$00,$00 | ![]() |
||||||||
| 782D | DEFB $00,$00,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7839 | DEFB $00,$20,$60,$00,$70,$00,$40,$20,$00,$10,$00,$00 | |||||||||
| 7845 | DEFB $10,$00,$00,$38,$00,$08,$44,$00,$80,$00,$01,$00 | |||||||||
| 7851 | DEFB $00,$03,$80,$00,$87,$C0,$00,$03,$80,$04,$01,$00 | |||||||||
| 785D | DEFB $00,$00,$00,$60,$00,$00,$60,$08,$00,$00,$00,$00 | |||||||||
| 7869 | DEFB $00,$00,$00,$9C,$00,$00,$7E,$00,$00,$BC,$00,$00 | ![]() |
||||||||
| 7875 | DEFB $00,$00,$00,$05,$80,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7881 | DEFB $00,$6C,$2E,$00,$3A,$00,$30,$6C,$00,$00,$80,$00 | |||||||||
| 788D | DEFB $14,$C0,$00,$1F,$F0,$06,$10,$82,$00,$00,$03,$18 | |||||||||
| 7899 | DEFB $00,$01,$BC,$00,$C0,$FE,$00,$01,$BC,$05,$C0,$18 | |||||||||
| 78A5 | DEFB $00,$00,$00,$5E,$00,$00,$5E,$0C,$00,$00,$00,$00 | |||||||||
| 78B1 | DEFB $00,$00,$00,$00,$00,$00,$4E,$00,$00,$3F,$00,$00 | ![]() |
||||||||
| 78BD | DEFB $5E,$00,$00,$00,$00,$00,$0B,$00,$00,$00,$6C,$00 | |||||||||
| 78C9 | DEFB $00,$3A,$2E,$00,$6C,$00,$18,$00,$00,$01,$00,$00 | |||||||||
| 78D5 | DEFB $29,$80,$00,$3F,$E0,$06,$21,$00,$00,$00,$01,$00 | |||||||||
| 78E1 | DEFB $00,$01,$8C,$01,$80,$DA,$00,$00,$7F,$00,$00,$DE | |||||||||
| 78ED | DEFB $02,$E0,$0C,$00,$06,$00,$1E,$00,$00,$1E,$00,$00 | |||||||||
| 78F9 | DEFB $00,$00,$00,$4E,$00,$00,$3F,$00,$00,$5E,$00,$00 | ![]() |
||||||||
| 7905 | DEFB $00,$00,$00,$00,$00,$00,$05,$80,$00,$00,$00,$00 | |||||||||
| 7911 | DEFB $00,$D8,$5C,$00,$74,$00,$30,$D8,$00,$00,$00,$00 | |||||||||
| 791D | DEFB $00,$80,$03,$14,$C0,$00,$1F,$F0,$40,$10,$80,$4C | |||||||||
| 7929 | DEFB $01,$80,$5A,$00,$00,$7F,$05,$C0,$5E,$00,$00,$0C | |||||||||
| 7935 | DEFB $00,$00,$00,$2F,$00,$00,$2F,$06,$00,$00,$00,$00 | |||||||||
| 7941 | DEFB $FF | |||||||||
| 7942 | DEFB $00,$00,$00,$01,$00,$00,$03,$80,$00,$01,$00,$00 | ![]() |
||||||||
| 794E | DEFB $00,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 795A | DEFB $00,$10,$06,$00,$38,$00,$08,$10,$00,$00,$00,$00 | |||||||||
| 7966 | DEFB $00,$10,$01,$00,$10,$00,$00,$38,$08,$00,$44,$04 | |||||||||
| 7972 | DEFB $00,$00,$0E,$00,$20,$1F,$00,$00,$0E,$00,$40,$04 | |||||||||
| 797E | DEFB $00,$00,$00,$01,$80,$00,$01,$81,$00,$00,$00,$00 | |||||||||
|
Electric eel horizontal sprites
|
||||||||||
| 798A | DEFB $00,$00,$00,$01,$00,$02,$21,$0F,$C4,$10,$30,$30 | ![]() |
||||||||
| 7996 | DEFB $0C,$C0,$0E,$03,$10,$40,$10,$08,$82,$20,$00,$01 | |||||||||
| 79A2 | DEFB $00,$00,$00,$00,$00,$00,$0E,$00,$08,$31,$80,$74 | ![]() |
||||||||
| 79AE | DEFB $00,$61,$80,$00,$1E,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 79BA | DEFB $00,$00,$00,$00,$00,$00,$00,$3E,$00,$01,$C1,$00 | ![]() |
||||||||
| 79C6 | DEFB $06,$00,$C4,$78,$00,$38,$00,$00,$00,$00,$00,$00 | |||||||||
| 79D2 | DEFB $FF | |||||||||
| 79D3 | DEFB $00,$00,$00,$00,$00,$00,$00,$0F,$3C,$00,$09,$26 | ![]() |
||||||||
| 79DF | DEFB $00,$01,$20,$00,$01,$E0,$00,$00,$00,$00,$00,$00 | |||||||||
| 79EB | DEFB $00,$00,$81,$00,$00,$42,$00,$00,$18,$00,$00,$78 | ![]() |
||||||||
| 79F7 | DEFB $00,$00,$58,$00,$00,$40,$00,$00,$24,$00,$00,$42 | |||||||||
| 7A03 | DEFB $00,$00,$00,$00,$03,$C0,$00,$02,$40,$00,$32,$48 | ![]() |
||||||||
| 7A0F | DEFB $00,$1E,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7A1B | DEFB $00,$00,$00,$40,$00,$80,$23,$F0,$84,$0C,$0C,$08 | ![]() |
||||||||
| 7A27 | DEFB $70,$03,$30,$02,$08,$C0,$41,$10,$08,$80,$00,$04 | |||||||||
| 7A33 | DEFB $00,$00,$00,$00,$00,$00,$10,$00,$70,$2E,$01,$8C | ![]() |
||||||||
| 7A3F | DEFB $01,$86,$00,$00,$78,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7A4B | DEFB $00,$00,$00,$00,$00,$00,$00,$7C,$00,$00,$83,$80 | ![]() |
||||||||
| 7A57 | DEFB $23,$00,$60,$1C,$00,$1E,$00,$00,$00,$00,$00,$00 | |||||||||
| 7A63 | DEFB $FF | |||||||||
| 7A64 | DEFB $00,$00,$00,$00,$00,$00,$3C,$F0,$00,$64,$90,$00 | ![]() |
||||||||
| 7A70 | DEFB $04,$80,$00,$07,$80,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7A7C | DEFB $81,$00,$00,$42,$00,$00,$18,$00,$00,$1E,$00,$00 | ![]() |
||||||||
| 7A88 | DEFB $1A,$00,$00,$02,$00,$00,$24,$00,$00,$42,$00,$00 | |||||||||
| 7A94 | DEFB $00,$00,$00,$03,$C0,$00,$02,$40,$00,$12,$4C,$00 | ![]() |
||||||||
| 7AA0 | DEFB $1E,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
|
Electric eel vertical sprites
|
||||||||||
| 7AAC | DEFB $01,$4A,$28,$08,$10,$10,$24,$22 | ![]() |
||||||||
| 7AB4 | DEFB $20,$20,$20,$22,$14,$10,$08,$08 | |||||||||
| 7ABC | DEFB $64,$04,$08,$08,$12,$21,$00,$00 | |||||||||
| 7AC4 | DEFB $00,$00,$10,$20,$10,$10,$10,$08 | ![]() |
||||||||
| 7ACC | DEFB $08,$04,$04,$04,$04,$08,$08,$10 | |||||||||
| 7AD4 | DEFB $10,$20,$20,$20,$10,$10,$00,$00 | |||||||||
| 7ADC | DEFB $00,$00,$08,$04,$04,$04,$08,$08 | ![]() |
||||||||
| 7AE4 | DEFB $10,$20,$20,$20,$20,$20,$10,$10 | |||||||||
| 7AEC | DEFB $10,$08,$08,$04,$04,$04,$04,$00 | |||||||||
| 7AF4 | DEFB $FF | |||||||||
| 7AF5 | DEFB $00,$00,$21,$12,$08,$08,$04,$64 | ![]() |
||||||||
| 7AFD | DEFB $08,$08,$10,$14,$22,$20,$20,$20 | |||||||||
| 7B05 | DEFB $22,$24,$10,$10,$08,$28,$4A,$01 | |||||||||
| 7B0D | DEFB $00,$00,$10,$10,$20,$20,$20,$10 | ![]() |
||||||||
| 7B15 | DEFB $10,$08,$08,$04,$04,$04,$04,$08 | |||||||||
| 7B1D | DEFB $08,$10,$10,$10,$20,$10,$00,$00 | |||||||||
| 7B25 | DEFB $00,$04,$04,$04,$04,$08,$08,$10 | ![]() |
||||||||
| 7B2D | DEFB $10,$10,$20,$20,$20,$20,$20,$10 | |||||||||
| 7B35 | DEFB $08,$08,$04,$04,$04,$08,$00,$00 | |||||||||
| 7B3D | DEFB $FF | |||||||||
| 7B3E | DEFB $00,$10,$30,$20,$20,$3C,$04,$04 | ![]() |
||||||||
| 7B46 | DEFB $3C,$20,$20,$30,$00,$00,$00,$00 | |||||||||
| 7B4E | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7B56 | DEFB $80,$41,$02,$38,$38,$12,$5D,$80 | ![]() |
||||||||
| 7B5E | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7B66 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7B6E | DEFB $00,$00,$00,$18,$08,$08,$78,$40 | ![]() |
||||||||
| 7B76 | DEFB $40,$78,$08,$08,$18,$10,$00,$00 | |||||||||
| 7B7E | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7B86 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 7B8E | DEFB $00,$00,$00,$00,$30,$20,$20,$3C | |||||||||
| 7B96 | DEFB $04,$04,$3C,$20,$20,$30,$10,$00 | |||||||||
| 7B9E | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 7BA6 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 7BAE | DEFB $80,$5D,$12,$38,$38,$02,$41,$80 | |||||||||
| 7BB6 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 7BBE | DEFB $00,$00,$10,$18,$08,$08,$78,$40 | |||||||||
| 7BC6 | DEFB $40,$78,$08,$08,$18,$00,$00,$00 | |||||||||
|
Long fish sprites
|
||||||||||
| 7BCE | DEFB $00,$0C,$00,$00,$00,$0E,$02,$04,$07,$FF,$FE,$0C,$3D,$FF,$FF,$DC | ![]() |
||||||||
| 7BDE | DEFB $07,$FF,$FF,$FE,$38,$08,$06,$1C,$00,$04,$00,$0C,$00,$00,$00,$00 | |||||||||
| 7BEE | DEFB $00,$0C,$00,$00,$00,$0E,$02,$00,$07,$FF,$FE,$10,$3D,$FF,$FF,$10 | ![]() |
||||||||
| 7BFE | DEFB $3F,$FF,$FF,$B0,$00,$08,$06,$F0,$00,$08,$00,$30,$00,$00,$00,$10 | |||||||||
| 7C0E | DEFB $00,$00,$00,$00,$00,$0C,$00,$04,$00,$0E,$02,$0C,$07,$FF,$FE,$1C | ![]() |
||||||||
| 7C1E | DEFB $3D,$FF,$FF,$F8,$3F,$FF,$FF,$DC,$00,$08,$06,$0C,$00,$04,$00,$00 | |||||||||
| 7C2E | DEFB $00,$00,$00,$10,$00,$0C,$00,$10,$00,$0E,$02,$30,$07,$FF,$FF,$F0 | ![]() |
||||||||
| 7C3E | DEFB $3D,$FF,$FF,$30,$07,$FF,$FE,$10,$38,$0C,$06,$00,$00,$00,$00,$00 | |||||||||
| 7C4E | DEFB $FF | |||||||||
| 7C4F | DEFB $00,$00,$30,$00,$20,$40,$70,$00,$30,$7F,$FF,$E0,$3B,$FF,$FF,$BC | ![]() |
||||||||
| 7C5F | DEFB $1F,$FF,$FF,$E0,$38,$60,$10,$1C,$30,$00,$20,$00,$00,$00,$00,$00 | |||||||||
| 7C6F | DEFB $00,$00,$30,$00,$00,$40,$70,$00,$08,$7F,$FF,$E0,$08,$FF,$FF,$BC | ![]() |
||||||||
| 7C7F | DEFB $0D,$FF,$FF,$FC,$0F,$60,$10,$00,$0C,$00,$10,$00,$08,$00,$00,$00 | |||||||||
| 7C8F | DEFB $00,$00,$00,$00,$20,$00,$30,$00,$30,$40,$70,$00,$38,$7F,$FF,$E0 | ![]() |
||||||||
| 7C9F | DEFB $1F,$FF,$FF,$BC,$3B,$FF,$FF,$FC,$30,$60,$00,$00,$00,$00,$00,$00 | |||||||||
| 7CAF | DEFB $08,$00,$00,$00,$08,$00,$30,$00,$0C,$40,$70,$00,$0F,$FF,$FF,$E0 | ![]() |
||||||||
| 7CBF | DEFB $0C,$FF,$FF,$BC,$08,$7F,$FF,$E0,$00,$60,$30,$1C,$00,$00,$00,$00 | |||||||||
| 7CCF | DEFB $FF | |||||||||
| 7CD0 | DEFB $01,$00,$00,$00,$01,$84,$04,$00,$1F,$FC,$0C,$00,$6F,$FF,$9C,$00 | ![]() |
||||||||
| 7CE0 | DEFB $1F,$FF,$F8,$00,$61,$00,$FC,$00,$01,$00,$0C,$00,$00,$00,$00,$00 | |||||||||
| 7CF0 | DEFB $20,$00,$00,$00,$20,$20,$00,$00,$20,$60,$00,$00,$76,$E0,$00,$00 | ![]() |
||||||||
| 7D00 | DEFB $8B,$C0,$00,$00,$70,$E0,$00,$00,$88,$60,$00,$00,$84,$00,$00,$00 | |||||||||
| 7D10 | DEFB $10,$20,$00,$00,$60,$60,$00,$00,$7F,$FC,$00,$00,$FF,$FB,$00,$00 | ![]() |
||||||||
| 7D20 | DEFB $7F,$FC,$00,$00,$60,$23,$00,$00,$10,$40,$00,$00,$00,$00,$00,$00 | |||||||||
| 7D30 | DEFB $80,$00,$00,$00,$80,$0C,$00,$00,$C4,$1C,$00,$00,$FF,$FF,$F8,$00 | ![]() |
||||||||
| 7D40 | DEFB $EF,$FF,$EF,$00,$87,$FF,$F8,$00,$04,$04,$07,$00,$00,$08,$00,$00 | |||||||||
| 7D50 | DEFB $00,$00,$00,$80,$00,$20,$21,$80,$00,$30,$3F,$F8,$00,$39,$FF,$F6 | ![]() |
||||||||
| 7D60 | DEFB $00,$1F,$FF,$F8,$00,$38,$00,$86,$00,$30,$00,$80,$00,$00,$00,$00 | |||||||||
| 7D70 | DEFB $00,$00,$00,$04,$00,$00,$04,$04,$00,$00,$06,$04,$00,$00,$07,$6E | ![]() |
||||||||
| 7D80 | DEFB $00,$00,$03,$D1,$00,$00,$07,$0E,$00,$00,$06,$11,$00,$00,$00,$21 | |||||||||
| 7D90 | DEFB $00,$00,$04,$08,$00,$00,$06,$06,$00,$00,$3F,$FE,$00,$00,$DF,$FF | ![]() |
||||||||
| 7DA0 | DEFB $00,$00,$3F,$FE,$00,$00,$C4,$06,$00,$00,$02,$08,$00,$00,$00,$00 | |||||||||
| 7DB0 | DEFB $00,$00,$00,$01,$00,$00,$30,$01,$00,$00,$38,$23,$00,$1F,$FF,$FF | ![]() |
||||||||
| 7DC0 | DEFB $00,$F7,$FF,$F7,$00,$1F,$FF,$E1,$00,$E0,$20,$20,$00,$00,$10,$00 | |||||||||
|
Snake fish horizontal sprites
|
||||||||||
| 7DD0 | DEFB $70,$0F,$00,$00,$50,$1F,$00,$38,$98,$19,$81,$EF,$08,$31,$C7,$F0 | ![]() |
||||||||
| 7DE0 | DEFB $0C,$30,$CE,$75,$04,$60,$EC,$1F,$07,$C0,$7C,$00,$03,$80,$38,$00 | |||||||||
| 7DF0 | DEFB $00,$70,$0F,$00,$00,$F8,$1F,$B8,$81,$8C,$3B,$EF,$83,$0E,$30,$F0 | ![]() |
||||||||
| 7E00 | DEFB $43,$06,$70,$75,$46,$07,$60,$1F,$6C,$03,$E0,$00,$38,$01,$C0,$00 | |||||||||
| 7E10 | DEFB $03,$80,$78,$00,$07,$C0,$FC,$00,$06,$61,$DC,$78,$0C,$61,$8C,$EF | ![]() |
||||||||
| 7E20 | DEFB $18,$33,$8F,$F0,$B0,$3B,$07,$9F,$B0,$1F,$00,$00,$60,$0E,$00,$00 | |||||||||
| 7E30 | DEFB $0E,$03,$C0,$00,$1F,$07,$E0,$38,$1B,$0E,$E1,$EF,$33,$0C,$63,$F0 | ![]() |
||||||||
| 7E40 | DEFB $61,$98,$67,$1F,$41,$D8,$76,$00,$80,$F8,$3E,$00,$00,$70,$1C,$00 | |||||||||
| 7E50 | DEFB $FF | |||||||||
| 7E51 | DEFB $00,$00,$C3,$00,$00,$01,$E7,$B8,$00,$43,$67,$EF,$00,$43,$66,$F0 | ![]() |
||||||||
| 7E61 | DEFB $00,$26,$76,$75,$00,$26,$76,$1F,$00,$36,$3C,$00,$00,$1C,$1C,$00 | |||||||||
| 7E71 | DEFB $00,$00,$E1,$C0,$00,$01,$B3,$9E,$00,$01,$B7,$B7,$00,$09,$B6,$3F | ![]() |
||||||||
| 7E81 | DEFB $00,$05,$B6,$20,$00,$05,$B6,$15,$00,$07,$36,$0E,$00,$00,$1C,$00 | |||||||||
| 7E91 | DEFB $00,$00,$00,$03,$00,$00,$00,$F9,$00,$00,$01,$7A,$00,$00,$03,$FE | ![]() |
||||||||
| 7EA1 | DEFB $00,$00,$24,$00,$00,$00,$25,$54,$00,$00,$14,$F8,$00,$00,$1C,$00 | |||||||||
| 7EB1 | DEFB $00,$00,$01,$86,$00,$03,$C3,$C9,$00,$07,$67,$C9,$00,$07,$E6,$C2 | ![]() |
||||||||
| 7EC1 | DEFB $00,$00,$26,$C2,$00,$05,$5E,$6C,$00,$03,$9E,$6C,$00,$00,$0C,$78 | |||||||||
| 7ED1 | DEFB $00,$00,$70,$38,$00,$E0,$F8,$6C,$07,$B0,$D8,$C6,$00,$78,$D8,$C2 | ![]() |
||||||||
| 7EE1 | DEFB $05,$7D,$CD,$81,$07,$CD,$8D,$81,$00,$0F,$87,$80,$00,$07,$03,$00 | |||||||||
| 7EF1 | DEFB $00,$00,$F0,$0E,$1C,$00,$F8,$0A,$F7,$81,$98,$19,$0F,$E3,$8C,$10 | ![]() |
||||||||
| 7F01 | DEFB $AE,$73,$0C,$30,$F8,$37,$06,$20,$00,$3E,$03,$E0,$00,$1C,$01,$C0 | |||||||||
| 7F11 | DEFB $00,$F0,$0E,$00,$1D,$F8,$1F,$00,$F7,$DC,$31,$81,$0F,$0C,$70,$C1 | ![]() |
||||||||
| 7F21 | DEFB $AE,$0E,$60,$C2,$F8,$06,$E0,$62,$00,$07,$C0,$36,$00,$03,$80,$1C | |||||||||
| 7F31 | DEFB $00,$1E,$03,$80,$00,$3F,$03,$E0,$1E,$3B,$86,$60,$F7,$31,$86,$30 | ![]() |
||||||||
| 7F41 | DEFB $0F,$F1,$CC,$18,$F9,$E0,$DC,$0D,$00,$00,$F8,$0D,$00,$00,$70,$06 | |||||||||
| 7F51 | DEFB $00,$03,$C0,$70,$1C,$07,$E0,$F8,$F7,$87,$70,$D8,$0F,$C6,$30,$CC | ![]() |
||||||||
| 7F61 | DEFB $F8,$E6,$19,$16,$00,$6E,$1B,$82,$00,$7C,$1F,$01,$00,$38,$0E,$00 | |||||||||
| 7F71 | DEFB $FF | |||||||||
| 7F72 | DEFB $00,$C3,$00,$00,$1D,$E7,$80,$00,$F7,$E6,$C2,$00,$0F,$66,$C2,$00 | ![]() |
||||||||
| 7F82 | DEFB $AE,$6E,$64,$00,$F8,$6E,$64,$00,$00,$3C,$6C,$00,$00,$38,$38,$00 | |||||||||
| 7F92 | DEFB $03,$87,$00,$00,$79,$CD,$80,$00,$ED,$ED,$80,$00,$FC,$6D,$90,$00 | ![]() |
||||||||
| 7FA2 | DEFB $04,$6D,$A0,$00,$A8,$6D,$90,$00,$70,$6C,$E0,$00,$00,$38,$00,$00 | |||||||||
| 7FB2 | DEFB $C0,$00,$00,$00,$9F,$00,$00,$00,$2E,$80,$00,$00,$7F,$C0,$00,$00 | ![]() |
||||||||
| 7FC2 | DEFB $00,$24,$00,$00,$2A,$A4,$00,$00,$1F,$28,$00,$00,$00,$38,$00,$00 | |||||||||
| 7FD2 | DEFB $61,$80,$00,$00,$93,$C3,$C0,$00,$93,$E6,$E0,$00,$43,$67,$E0,$00 | ![]() |
||||||||
| 7FE2 | DEFB $43,$64,$00,$00,$36,$7A,$A0,$00,$36,$79,$C0,$00,$1E,$30,$00,$00 | |||||||||
| 7FF2 | DEFB $1C,$0E,$00,$00,$36,$1F,$07,$00,$63,$1B,$0D,$E0,$43,$1B,$1E,$00 | ![]() |
||||||||
| 8002 | DEFB $81,$B3,$BE,$A0,$81,$B1,$B3,$E0,$01,$E1,$F0,$00,$00,$C0,$E0,$00 | |||||||||
|
Snake fish vertical sprites
|
||||||||||
| 8012 | DEFB $2C,$24,$2C,$64,$5C,$78,$38,$30 | ![]() |
||||||||
| 801A | DEFB $30,$18,$1E,$0F,$03,$07,$1E,$3C | |||||||||
| 8022 | DEFB $F0,$C0,$C0,$E0,$78,$1C,$06,$03 | |||||||||
| 802A | DEFB $03,$03,$0E,$38,$E0,$80,$C0,$40 | |||||||||
| 8032 | DEFB $2C,$24,$2C,$64,$5C,$78,$38,$70 | ![]() |
||||||||
| 803A | DEFB $E0,$E0,$C0,$E0,$78,$3E,$0F,$03 | |||||||||
| 8042 | DEFB $07,$1E,$3C,$70,$C0,$C0,$C0,$60 | |||||||||
| 804A | DEFB $38,$1C,$06,$03,$01,$03,$0E,$30 | |||||||||
| 8052 | DEFB $14,$14,$14,$34,$2C,$38,$38,$1C | ![]() |
||||||||
| 805A | DEFB $0C,$0C,$7C,$F8,$E0,$C0,$E0,$78 | |||||||||
| 8062 | DEFB $3E,$0F,$03,$07,$0E,$3C,$70,$C0 | |||||||||
| 806A | DEFB $C0,$E0,$70,$18,$0E,$07,$01,$06 | |||||||||
| 8072 | DEFB $28,$28,$28,$68,$58,$70,$30,$30 | ![]() |
||||||||
| 807A | DEFB $38,$1E,$0F,$03,$07,$7E,$FC,$E0 | |||||||||
| 8082 | DEFB $C0,$E0,$70,$3E,$0F,$03,$07,$0E | |||||||||
| 808A | DEFB $7C,$F0,$C0,$E0,$70,$18,$0C,$02 | |||||||||
| 8092 | DEFB $FF | |||||||||
| 8093 | DEFB $2C,$24,$2C,$64,$5C,$78,$38,$70 | ![]() |
||||||||
| 809B | DEFB $E0,$FC,$7F,$03,$0F,$7E,$FC,$C0 | |||||||||
| 80A3 | DEFB $70,$3E,$0F,$01,$03,$0E,$C0,$00 | |||||||||
| 80AB | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 80B3 | DEFB $34,$72,$76,$52,$74,$38,$80,$E0 | ![]() |
||||||||
| 80BB | DEFB $E0,$7E,$3F,$01,$7F,$FE,$80,$FC | |||||||||
| 80C3 | DEFB $7E,$02,$0E,$10,$00,$00,$00,$00 | |||||||||
| 80CB | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 80D3 | DEFB $C0,$90,$34,$52,$76,$72,$76,$52 | ![]() |
||||||||
| 80DB | DEFB $34,$10,$0F,$01,$03,$0C,$00,$00 | |||||||||
| 80E3 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 80EB | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 80F3 | DEFB $60,$98,$86,$67,$01,$07,$7F,$F8 | ![]() |
||||||||
| 80FB | DEFB $E0,$7E,$3F,$07,$06,$38,$74,$52 | |||||||||
| 8103 | DEFB $76,$72,$34,$00,$00,$00,$00,$00 | |||||||||
| 810B | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8113 | DEFB $0C,$30,$60,$C0,$80,$C0,$70,$3E | ![]() |
||||||||
| 811B | DEFB $0F,$03,$0E,$7C,$F0,$C0,$F8,$7E | |||||||||
| 8123 | DEFB $0F,$03,$0F,$1E,$38,$78,$5C,$64 | |||||||||
| 812B | DEFB $2C,$24,$2C,$00,$00,$00,$00,$00 | |||||||||
| 8133 | DEFB $20,$C0,$80,$E0,$38,$0E,$03,$03 | ![]() |
||||||||
| 813B | DEFB $03,$06,$1C,$78,$E0,$C0,$C0,$F0 | |||||||||
| 8143 | DEFB $3C,$1E,$07,$03,$0F,$1E,$18,$30 | |||||||||
| 814B | DEFB $30,$38,$78,$5C,$64,$2C,$24,$2C | |||||||||
| 8153 | DEFB $30,$0E,$03,$01,$03,$06,$1C,$38 | ![]() |
||||||||
| 815B | DEFB $60,$C0,$C0,$C0,$70,$3C,$1E,$07 | |||||||||
| 8163 | DEFB $03,$0F,$3E,$78,$E0,$C0,$E0,$E0 | |||||||||
| 816B | DEFB $70,$38,$78,$5C,$64,$2C,$24,$2C | |||||||||
| 8173 | DEFB $06,$01,$07,$0E,$18,$70,$60,$C0 | ![]() |
||||||||
| 817B | DEFB $C0,$F0,$3C,$0E,$07,$03,$0F,$3E | |||||||||
| 8183 | DEFB $78,$E0,$C0,$E0,$F8,$7C,$0C,$0C | |||||||||
| 818B | DEFB $1C,$38,$38,$2C,$34,$14,$14,$14 | |||||||||
| 8193 | DEFB $02,$0C,$18,$70,$E0,$C0,$F0,$7C | ![]() |
||||||||
| 819B | DEFB $0E,$07,$03,$0F,$3E,$70,$E0,$C0 | |||||||||
| 81A3 | DEFB $E0,$FC,$7E,$07,$03,$0F,$1E,$38 | |||||||||
| 81AB | DEFB $30,$30,$70,$58,$68,$28,$28,$28 | |||||||||
| 81B3 | DEFB $FF | |||||||||
| 81B4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 81BC | DEFB $00,$30,$0E,$03,$01,$0F,$3E,$70 | |||||||||
| 81C4 | DEFB $C0,$FC,$7E,$0F,$03,$7F,$FC,$E0 | |||||||||
| 81CC | DEFB $70,$38,$78,$5C,$64,$2C,$24,$2C | |||||||||
| 81D4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 81DC | DEFB $00,$00,$00,$00,$10,$0E,$02,$7E | |||||||||
| 81E4 | DEFB $FC,$80,$FE,$7F,$01,$3F,$7E,$E0 | |||||||||
| 81EC | DEFB $E0,$80,$38,$74,$52,$76,$72,$34 | |||||||||
| 81F4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 81FC | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8204 | DEFB $00,$00,$0C,$03,$01,$0F,$10,$34 | |||||||||
| 820C | DEFB $52,$76,$72,$76,$52,$34,$90,$C0 | |||||||||
| 8214 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 821C | DEFB $00,$00,$00,$00,$00,$34,$72,$76 | |||||||||
| 8224 | DEFB $52,$74,$3A,$06,$07,$3F,$7E,$E0 | |||||||||
| 822C | DEFB $F8,$7F,$07,$01,$67,$86,$98,$60 | |||||||||
| 8234 | DEFB $00,$00,$00,$00,$00,$2C,$24,$2C | ![]() |
||||||||
| 823C | DEFB $64,$5C,$78,$38,$1E,$0F,$03,$0F | |||||||||
| 8244 | DEFB $7E,$F8,$C0,$F0,$7C,$0E,$03,$0F | |||||||||
| 824C | DEFB $3E,$70,$C0,$80,$C0,$60,$30,$0C | |||||||||
|
Round fish sprites
|
||||||||||
| 8254 | DEFB $00,$18,$3C,$3C,$5F,$FE,$4F,$FF | ![]() |
||||||||
| 825C | DEFB $5F,$FF,$30,$FE,$00,$3E,$00,$1C | |||||||||
| 8264 | DEFB $00,$1C,$07,$FE,$0B,$FF,$09,$FF | ![]() |
||||||||
| 826C | DEFB $0B,$FF,$0C,$FE,$00,$3C,$00,$1C | |||||||||
| 8274 | DEFB $03,$E0,$05,$F0,$08,$F8,$08,$F8 | ![]() |
||||||||
| 827C | DEFB $08,$F8,$08,$F0,$05,$F0,$03,$E0 | |||||||||
| 8284 | DEFB $FF | |||||||||
| 8285 | DEFB $18,$00,$3C,$3C,$7F,$FA,$FF,$F2 | ![]() |
||||||||
| 828D | DEFB $FF,$FA,$7F,$0C,$7C,$00,$38,$00 | |||||||||
| 8295 | DEFB $38,$00,$7F,$E0,$FF,$D0,$FF,$90 | ![]() |
||||||||
| 829D | DEFB $FF,$D0,$7F,$30,$3C,$00,$38,$00 | |||||||||
| 82A5 | DEFB $07,$C0,$0F,$A0,$1F,$10,$1F,$10 | ![]() |
||||||||
| 82AD | DEFB $1F,$10,$0F,$10,$0F,$A0,$07,$C0 | |||||||||
| 82B5 | DEFB $FF | |||||||||
| 82B6 | DEFB $00,$60,$00,$B8,$01,$1C,$02,$0C | ![]() |
||||||||
| 82BE | DEFB $02,$0C,$01,$18,$00,$B8,$00,$60 | |||||||||
| 82C6 | DEFB $00,$F0,$01,$F8,$03,$9C,$03,$0C | ![]() |
||||||||
| 82CE | DEFB $03,$0C,$03,$9C,$01,$F8,$00,$F0 | |||||||||
| 82D6 | DEFB $03,$00,$0E,$80,$1C,$40,$18,$20 | ![]() |
||||||||
| 82DE | DEFB $18,$20,$0C,$40,$0E,$80,$03,$00 | |||||||||
| 82E6 | DEFB $06,$00,$1D,$00,$30,$80,$30,$40 | ![]() |
||||||||
| 82EE | DEFB $30,$40,$18,$80,$1D,$00,$06,$00 | |||||||||
| 82F6 | DEFB $0F,$00,$1F,$80,$39,$C0,$30,$C0 | ![]() |
||||||||
| 82FE | DEFB $30,$C0,$39,$C0,$1F,$80,$0F,$00 | |||||||||
| 8306 | DEFB $01,$80,$02,$E0,$04,$70,$08,$30 | ![]() |
||||||||
| 830E | DEFB $08,$30,$04,$60,$02,$E0,$01,$80 | |||||||||
|
Round fish vertical sprites
|
||||||||||
| 8316 | DEFB $18,$3E,$7F,$FF,$FF,$7E,$3C,$3C | ![]() |
||||||||
| 831E | DEFB $38,$38,$78,$78,$6C,$44,$38,$00 | |||||||||
| 8326 | DEFB $38,$7C,$FF,$FF,$FF,$7E,$7C,$7C | ![]() |
||||||||
| 832E | DEFB $78,$68,$44,$3C,$00,$00,$00,$00 | |||||||||
| 8336 | DEFB $00,$00,$00,$38,$7E,$FF,$FF,$FF | ![]() |
||||||||
| 833E | DEFB $C3,$81,$42,$3C,$00,$00,$00,$00 | |||||||||
| 8346 | DEFB $FF | |||||||||
| 8347 | DEFB $00,$38,$44,$6C,$78,$78,$38,$38 | ![]() |
||||||||
| 834F | DEFB $3C,$3C,$7E,$FF,$FF,$7F,$3E,$18 | |||||||||
| 8357 | DEFB $00,$00,$00,$00,$3C,$44,$68,$78 | ![]() |
||||||||
| 835F | DEFB $7C,$7C,$7E,$FF,$FF,$FF,$7C,$38 | |||||||||
| 8367 | DEFB $00,$00,$00,$00,$3C,$42,$81,$C3 | ![]() |
||||||||
| 836F | DEFB $FF,$FF,$FF,$7E,$38,$00,$00,$00 | |||||||||
| 8377 | DEFB $FF | |||||||||
| 8378 | DEFB $00,$00,$38,$7E,$66,$C3,$81,$42 | ![]() |
||||||||
| 8380 | DEFB $24,$18,$00,$00,$00,$00,$00,$00 | |||||||||
| 8388 | DEFB $00,$00,$3C,$7E,$E7,$C3,$C3,$E7 | ![]() |
||||||||
| 8390 | DEFB $7E,$3C,$00,$00,$00,$00,$00,$00 | |||||||||
| 8398 | DEFB $00,$00,$00,$00,$00,$18,$24,$42 | ![]() |
||||||||
| 83A0 | DEFB $81,$C3,$66,$7E,$38,$00,$00,$00 | |||||||||
| 83A8 | DEFB $00,$00,$00,$00,$00,$00,$18,$24 | ![]() |
||||||||
| 83B0 | DEFB $42,$81,$C3,$46,$7E,$38,$00,$00 | |||||||||
| 83B8 | DEFB $00,$00,$00,$00,$00,$00,$3C,$7E | ![]() |
||||||||
| 83C0 | DEFB $E7,$C3,$C3,$E7,$7E,$3C,$00,$00 | |||||||||
| 83C8 | DEFB $00,$00,$00,$00,$38,$7E,$66,$C3 | ![]() |
||||||||
| 83D0 | DEFB $81,$42,$24,$18,$00,$00,$00,$00 | |||||||||
|
Squid sprites; width 7 height 2 chars; 112 bytes each
|
||||||||||
| 83D8 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$7C,$18,$00,$00,$00,$00,$03,$83,$A4,$00,$00,$00 | ![]() |
||||||||
| 83ED | DEFB $00,$0C,$18,$73,$1D,$C0,$00,$00,$30,$67,$BF,$ED,$FC,$00,$00,$43,$3C,$FB,$FB,$FF,$30 | |||||||||
| 8402 | DEFB $00,$98,$C7,$9F,$FB,$FF,$DC,$01,$87,$1C,$F3,$FD,$FF,$EF,$03,$80,$F3,$6D,$20,$00,$38 | |||||||||
| 8417 | DEFB $07,$01,$8C,$B0,$C0,$00,$00,$0E,$06,$71,$40,$00,$00,$00,$1C,$19,$8F,$80,$00,$00,$00 | |||||||||
| 842C | DEFB $00,$62,$14,$00,$00,$00,$00,$1F,$80,$28,$00,$00,$00,$00,$3E,$00,$24,$00,$00,$00,$00 | |||||||||
| 8441 | DEFB $00,$00,$10,$00,$00,$00,$00 | |||||||||
| 8448 | DEFB $00,$03,$C0,$00,$00,$00,$00,$00,$07,$30,$00,$00,$00,$00,$00,$18,$88,$00,$00,$00,$00 | ![]() |
||||||||
| 845D | DEFB $00,$60,$84,$00,$00,$00,$00,$F9,$86,$63,$38,$00,$00,$00,$7E,$31,$B8,$C6,$3B,$F8,$60 | |||||||||
| 8472 | DEFB $00,$0E,$CF,$7F,$D7,$FF,$B8,$00,$03,$B9,$F7,$F7,$FF,$DC,$00,$04,$6E,$7F,$FB,$FE,$70 | |||||||||
| 8487 | DEFB $00,$08,$39,$E7,$FB,$80,$00,$00,$30,$E2,$3C,$80,$00,$00,$00,$C3,$04,$C3,$00,$00,$00 | |||||||||
| 849C | DEFB $3F,$0C,$0B,$00,$00,$00,$00,$7C,$00,$1C,$00,$00,$00,$00,$00,$01,$60,$00,$00,$00,$00 | |||||||||
| 84B1 | DEFB $00,$00,$C0,$00,$00,$00,$00 | |||||||||
| 84B8 | DEFB $70,$01,$C0,$00,$00,$00,$00,$38,$06,$30,$00,$00,$00,$00,$1E,$08,$08,$00,$00,$00,$00 | ![]() |
||||||||
| 84CD | DEFB $06,$12,$04,$00,$00,$00,$00,$02,$61,$E2,$00,$00,$00,$00,$31,$86,$19,$00,$00,$00,$00 | |||||||||
| 84E2 | DEFB $00,$31,$86,$B0,$00,$00,$E0,$00,$0F,$71,$EC,$3B,$FF,$B8,$00,$07,$8C,$7F,$D7,$FF,$70 | |||||||||
| 84F7 | DEFB $F8,$08,$E3,$B7,$F7,$FC,$C0,$7E,$30,$3F,$FF,$FB,$F0,$00,$01,$C1,$CC,$F7,$FB,$80,$00 | |||||||||
| 850C | DEFB $00,$03,$03,$9D,$00,$00,$00,$00,$04,$CC,$66,$00,$00,$00,$00,$00,$31,$80,$00,$00,$00 | |||||||||
| 8521 | DEFB $00,$01,$CE,$00,$00,$00,$00 | |||||||||
| 8528 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 853D | DEFB $00,$07,$80,$00,$00,$00,$00,$7C,$38,$78,$06,$00,$00,$00,$3F,$C2,$37,$99,$80,$00,$00 | |||||||||
| 8552 | DEFB $00,$31,$8C,$70,$67,$70,$00,$00,$0E,$73,$CF,$FB,$7F,$9C,$08,$01,$CF,$76,$FE,$FF,$F7 | |||||||||
| 8567 | DEFB $0C,$00,$3D,$CF,$FE,$FF,$EE,$0E,$00,$73,$F9,$FF,$7E,$18,$07,$07,$8F,$0F,$08,$00,$00 | |||||||||
| 857C | DEFB $03,$B8,$71,$F0,$90,$00,$00,$01,$C1,$BE,$E0,$60,$00,$00,$00,$02,$43,$00,$00,$00,$00 | |||||||||
| 8591 | DEFB $00,$00,$2C,$00,$00,$00,$00 | |||||||||
| 8598 | DEFB $FF | |||||||||
| 8599 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1E,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 85AE | DEFB $00,$0F,$81,$00,$00,$00,$00,$00,$00,$79,$38,$60,$00,$00,$00,$00,$07,$C6,$91,$BC,$30 | |||||||||
| 85C3 | DEFB $00,$00,$00,$C1,$FE,$BF,$DC,$00,$00,$07,$2C,$3F,$7F,$EE,$00,$00,$00,$FB,$EB,$7F,$38 | |||||||||
| 85D8 | DEFB $00,$00,$03,$8F,$3F,$B0,$00,$00,$00,$1C,$35,$D4,$00,$00,$00,$00,$61,$CE,$08,$00,$00 | |||||||||
| 85ED | DEFB $00,$07,$80,$14,$00,$00,$00,$00,$0F,$00,$24,$00,$00,$00,$00,$00,$00,$12,$00,$00,$00 | |||||||||
| 8602 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8609 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F0,$00,$00,$00 | ![]() |
||||||||
| 861E | DEFB $00,$00,$00,$7E,$04,$00,$00,$00,$00,$00,$09,$EA,$D0,$00,$00,$00,$00,$04,$1F,$5E,$20 | |||||||||
| 8633 | DEFB $00,$00,$00,$1E,$F5,$DF,$F8,$00,$00,$00,$03,$FF,$DF,$FE,$00,$00,$00,$07,$5F,$DC,$20 | |||||||||
| 8648 | DEFB $00,$00,$00,$18,$EE,$80,$00,$00,$00,$00,$07,$93,$00,$00,$00,$00,$00,$F9,$24,$00,$00 | |||||||||
| 865D | DEFB $00,$00,$01,$C2,$28,$00,$00,$00,$00,$00,$00,$48,$00,$00,$00,$00,$00,$00,$44,$00,$00 | |||||||||
| 8672 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8679 | DEFB $00,$00,$00,$00,$00,$1C,$09,$00,$00,$00,$00,$00,$0E,$29,$00,$00,$00,$00,$00,$01,$2A | ![]() |
||||||||
| 868E | DEFB $00,$00,$00,$00,$00,$00,$9C,$00,$00,$00,$00,$00,$06,$6C,$00,$00,$00,$00,$00,$01,$18 | |||||||||
| 86A3 | DEFB $00,$00,$00,$00,$00,$0D,$BC,$00,$00,$00,$00,$00,$03,$FF,$00,$00,$00,$00,$00,$0E,$FC | |||||||||
| 86B8 | DEFB $00,$00,$00,$00,$00,$03,$58,$00,$00,$00,$00,$00,$00,$96,$00,$00,$00,$00,$00,$03,$21 | |||||||||
| 86CD | DEFB $00,$00,$00,$00,$00,$3C,$50,$00,$00,$00,$00,$00,$38,$48,$00,$00,$00,$00,$00,$00,$40 | |||||||||
| 86E2 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 86E9 | DEFB $00,$00,$00,$00,$00,$00,$86,$00,$00,$00,$00,$00,$0E,$51,$00,$00,$00,$00,$00,$0F,$A9 | ![]() |
||||||||
| 86FE | DEFB $00,$00,$00,$00,$00,$00,$6A,$00,$00,$00,$00,$00,$00,$2A,$00,$00,$00,$00,$00,$73,$5C | |||||||||
| 8713 | DEFB $00,$00,$00,$00,$01,$FA,$B4,$00,$00,$00,$00,$03,$FD,$F9,$00,$00,$00,$00,$01,$FF,$9A | |||||||||
| 8728 | DEFB $00,$00,$00,$00,$00,$7B,$E4,$00,$00,$00,$00,$00,$03,$9E,$00,$00,$00,$00,$00,$00,$51 | |||||||||
| 873D | DEFB $00,$00,$00,$00,$00,$00,$48,$00,$00,$00,$00,$00,$1E,$24,$00,$00,$00,$00,$00,$1D,$24 | |||||||||
| 8752 | DEFB $00,$00,$00,$00,$00,$00,$C8 | |||||||||
| 8759 | DEFB $00,$00,$00,$00,$00,$00,$1C,$00,$00,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$02 | ![]() |
||||||||
| 876E | DEFB $00,$00,$00,$00,$00,$00,$0C,$00,$00,$00,$00,$00,$00,$F0,$00,$00,$00,$18,$7B,$1F,$60 | |||||||||
| 8783 | DEFB $00,$00,$00,$77,$FA,$F1,$99,$00,$00,$00,$EF,$FF,$BE,$06,$00,$00,$00,$39,$FF,$FB,$38 | |||||||||
| 8798 | DEFB $00,$00,$00,$00,$1B,$FC,$C6,$00,$00,$00,$00,$00,$CF,$30,$00,$00,$00,$00,$00,$36,$CC | |||||||||
| 87AD | DEFB $00,$00,$00,$00,$00,$01,$B2,$00,$00,$00,$00,$00,$00,$4C,$00,$00,$00,$00,$00,$00,$47 | |||||||||
| 87C2 | DEFB $00,$00,$00,$00,$00,$00,$27 | |||||||||
| 87C9 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$60,$1F,$00,$00,$00,$00,$01,$98,$3E | ![]() |
||||||||
| 87DE | DEFB $00,$00,$00,$00,$66,$07,$C0,$00,$00,$00,$01,$99,$90,$00,$00,$18,$7E,$E3,$EE,$67,$00 | |||||||||
| 87F3 | DEFB $00,$77,$FE,$DF,$69,$98,$00,$00,$EF,$FF,$7F,$F0,$03,$80,$00,$39,$FF,$7E,$DF,$1C,$00 | |||||||||
| 8808 | DEFB $00,$00,$0E,$FF,$B5,$F8,$00,$00,$00,$00,$00,$FA,$07,$00,$00,$00,$00,$00,$1F,$C0,$00 | |||||||||
| 881D | DEFB $00,$00,$00,$00,$07,$3F,$FE,$00,$00,$00,$00,$01,$80,$1E,$00,$00,$00,$00,$01,$40,$00 | |||||||||
| 8832 | DEFB $00,$00,$00,$00,$02,$20,$00 | |||||||||
| 8839 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$3E,$00,$00,$00,$00,$00,$25,$C1,$C0,$00 | ![]() |
||||||||
| 884E | DEFB $00,$03,$B8,$CE,$18,$30,$00,$00,$3F,$B7,$FD,$E6,$0C,$00,$0C,$FF,$DF,$DF,$3C,$C2,$00 | |||||||||
| 8863 | DEFB $3B,$FF,$DF,$F9,$E3,$19,$00,$F7,$FF,$BF,$CF,$B8,$E1,$80,$1C,$00,$04,$B6,$CF,$01,$C0 | |||||||||
| 8878 | DEFB $00,$00,$03,$0D,$31,$80,$E0,$00,$00,$00,$02,$8E,$60,$70,$00,$00,$00,$01,$F1,$98,$38 | |||||||||
| 888D | DEFB $00,$00,$00,$00,$28,$46,$00,$00,$00,$00,$00,$14,$01,$F8,$00,$00,$00,$00,$24,$00,$7C | |||||||||
| 88A2 | DEFB $00,$00,$00,$00,$08,$00,$00 | |||||||||
| 88A9 | DEFB $00,$00,$00,$00,$03,$C0,$00,$00,$00,$00,$00,$0C,$E0,$00,$00,$00,$00,$00,$11,$18,$00 | ![]() |
||||||||
| 88BE | DEFB $00,$00,$00,$00,$21,$06,$00,$00,$00,$00,$1C,$C6,$61,$9F,$06,$1F,$DC,$63,$1D,$8C,$7E | |||||||||
| 88D3 | DEFB $1D,$FF,$EB,$FE,$F3,$70,$00,$3B,$FF,$EF,$EF,$9D,$C0,$00,$0E,$7F,$DF,$FE,$76,$20,$00 | |||||||||
| 88E8 | DEFB $00,$01,$DF,$E7,$9C,$10,$00,$00,$00,$01,$3C,$47,$0C,$00,$00,$00,$00,$C3,$20,$C3,$00 | |||||||||
| 88FD | DEFB $00,$00,$00,$00,$D0,$30,$FC,$00,$00,$00,$00,$38,$00,$3E,$00,$00,$00,$00,$06,$80,$00 | |||||||||
| 8912 | DEFB $00,$00,$00,$00,$03,$00,$00 | |||||||||
| 8919 | DEFB $00,$00,$00,$00,$03,$80,$0E,$00,$00,$00,$00,$0C,$60,$1C,$00,$00,$00,$00,$10,$10,$78 | ![]() |
||||||||
| 892E | DEFB $00,$00,$00,$00,$20,$48,$60,$00,$00,$00,$00,$47,$86,$40,$00,$00,$00,$00,$98,$61,$80 | |||||||||
| 8943 | DEFB $07,$00,$00,$0D,$61,$8C,$00,$1D,$FF,$DC,$37,$8E,$F0,$00,$0E,$FF,$EB,$FE,$31,$E0,$00 | |||||||||
| 8958 | DEFB $03,$3F,$EF,$ED,$C7,$10,$1F,$00,$0F,$DF,$FF,$FC,$0C,$7E,$00,$01,$DF,$EF,$33,$83,$80 | |||||||||
| 896D | DEFB $00,$00,$00,$B9,$C0,$C0,$00,$00,$00,$00,$66,$33,$20,$00,$00,$00,$00,$01,$8C,$00,$00 | |||||||||
| 8982 | DEFB $00,$00,$00,$00,$73,$80,$00 | |||||||||
| 8989 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 899E | DEFB $00,$00,$00,$00,$01,$E0,$00,$00,$00,$00,$60,$1E,$1C,$3E,$00,$00,$01,$99,$EC,$43,$FC | |||||||||
| 89B3 | DEFB $00,$0E,$E6,$0E,$33,$8C,$00,$39,$FE,$DF,$F3,$CE,$70,$00,$EF,$FF,$7F,$6E,$F3,$80,$10 | |||||||||
| 89C8 | DEFB $77,$FF,$7F,$F3,$BC,$00,$30,$18,$7E,$FF,$9F,$CE,$00,$70,$00,$00,$10,$F0,$F1,$E0,$E0 | |||||||||
| 89DD | DEFB $00,$00,$09,$0F,$8E,$1D,$C0,$00,$00,$06,$07,$7D,$83,$80,$00,$00,$00,$00,$C2,$40,$00 | |||||||||
| 89F2 | DEFB $00,$00,$00,$00,$34,$00,$00 | |||||||||
| 89F9 | DEFB $FF | |||||||||
| 89FA | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$78,$00 | ![]() |
||||||||
| 8A0F | DEFB $00,$00,$00,$01,$01,$F0,$00,$00,$00,$06,$1D,$1E,$00,$00,$0C,$3D,$89,$63,$E0,$00,$00 | |||||||||
| 8A24 | DEFB $3B,$FD,$7F,$83,$00,$00,$00,$77,$FE,$FC,$34,$E0,$00,$00,$1C,$FE,$D7,$DF,$00,$00,$00 | |||||||||
| 8A39 | DEFB $00,$0D,$FC,$F1,$C0,$00,$00,$00,$00,$2B,$AC,$38,$00,$00,$00,$00,$10,$73,$86,$00,$00 | |||||||||
| 8A4E | DEFB $00,$00,$00,$28,$01,$E0,$00,$00,$00,$00,$24,$00,$F0,$00,$00,$00,$00,$48,$00,$00,$00 | |||||||||
| 8A63 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8A6A | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00,$00,$00 | ![]() |
||||||||
| 8A7F | DEFB $00,$00,$20,$7E,$00,$00,$00,$00,$7B,$57,$90,$00,$00,$00,$05,$FA,$F8,$20,$00,$00,$00 | |||||||||
| 8A94 | DEFB $1F,$FB,$AF,$78,$00,$00,$00,$7F,$FB,$FF,$C0,$00,$00,$00,$07,$FB,$FA,$E0,$00,$00,$00 | |||||||||
| 8AA9 | DEFB $00,$01,$77,$18,$00,$00,$00,$00,$00,$C9,$E0,$00,$00,$00,$00,$00,$24,$9F,$00,$00,$00 | |||||||||
| 8ABE | DEFB $00,$00,$14,$43,$80,$00,$00,$00,$00,$12,$00,$00,$00,$00,$00,$00,$22,$00,$00,$00,$00 | |||||||||
| 8AD3 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8ADA | DEFB $90,$38,$00,$00,$00,$00,$00,$94,$70,$00,$00,$00,$00,$00,$54,$80,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 8AEF | DEFB $39,$00,$00,$00,$00,$00,$00,$36,$60,$00,$00,$00,$00,$00,$18,$80,$00,$00,$00,$00,$00 | |||||||||
| 8B04 | DEFB $3D,$B0,$00,$00,$00,$00,$00,$FF,$C0,$00,$00,$00,$00,$00,$3F,$70,$00,$00,$00,$00,$00 | |||||||||
| 8B19 | DEFB $1A,$C0,$00,$00,$00,$00,$00,$69,$00,$00,$00,$00,$00,$00,$84,$C0,$00,$00,$00,$00,$00 | |||||||||
| 8B2E | DEFB $0A,$3C,$00,$00,$00,$00,$00,$12,$1C,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00 | |||||||||
| 8B43 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8B4A | DEFB $61,$00,$00,$00,$00,$00,$00,$8A,$70,$00,$00,$00,$00,$00,$95,$F0,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 8B5F | DEFB $56,$00,$00,$00,$00,$00,$00,$54,$00,$00,$00,$00,$00,$00,$3A,$EE,$00,$00,$00,$00,$00 | |||||||||
| 8B74 | DEFB $2D,$7F,$80,$00,$00,$00,$00,$1F,$BF,$C0,$00,$00,$00,$00,$19,$FF,$80,$00,$00,$00,$00 | |||||||||
| 8B89 | DEFB $07,$DE,$00,$00,$00,$00,$00,$79,$C0,$00,$00,$00,$00,$00,$8A,$00,$00,$00,$00,$00,$00 | |||||||||
| 8B9E | DEFB $12,$00,$00,$00,$00,$00,$00,$24,$78,$00,$00,$00,$00,$00,$24,$B8,$00,$00,$00,$00,$00 | |||||||||
| 8BB3 | DEFB $13,$00,$00,$00,$00,$00,$00 | |||||||||
| 8BBA | DEFB $38,$00,$00,$00,$00,$00,$00,$30,$00,$00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00 | ![]() |
||||||||
| 8BCF | DEFB $30,$00,$00,$00,$00,$00,$00,$0F,$00,$00,$00,$00,$00,$00,$06,$F8,$FE,$18,$00,$00,$00 | |||||||||
| 8BE4 | DEFB $99,$8F,$5F,$EE,$00,$00,$00,$60,$7D,$FF,$F7,$00,$00,$00,$1C,$DF,$FF,$9C,$00,$00,$00 | |||||||||
| 8BF9 | DEFB $63,$3F,$D8,$00,$00,$00,$00,$0C,$F3,$00,$00,$00,$00,$00,$33,$6C,$00,$00,$00,$00,$00 | |||||||||
| 8C0E | DEFB $4D,$80,$00,$00,$00,$00,$00,$32,$00,$00,$00,$00,$00,$00,$E2,$00,$00,$00,$00,$00,$00 | |||||||||
| 8C23 | DEFB $E4,$00,$00,$00,$00,$00,$00 | |||||||||
| 8C2A | DEFB $00,$00,$00,$00,$00,$00,$00,$F8,$06,$00,$00,$00,$00,$00,$7C,$19,$80,$00,$00,$00,$00 | ![]() |
||||||||
| 8C3F | DEFB $03,$E0,$66,$00,$00,$00,$00,$00,$09,$99,$80,$00,$00,$00,$00,$E6,$77,$C7,$7E,$18,$00 | |||||||||
| 8C54 | DEFB $00,$19,$96,$FB,$7F,$EE,$00,$01,$C0,$0F,$FE,$FF,$F7,$00,$00,$38,$FB,$7E,$FF,$9C,$00 | |||||||||
| 8C69 | DEFB $00,$1F,$AD,$FF,$70,$00,$00,$00,$E0,$5F,$00,$00,$00,$00,$00,$03,$F8,$00,$00,$00,$00 | |||||||||
| 8C7E | DEFB $7F,$FC,$E0,$00,$00,$00,$00,$F0,$01,$80,$00,$00,$00,$00,$00,$02,$80,$00,$00,$00,$00 | |||||||||
| 8C93 | DEFB $00,$04,$40,$00,$00,$00,$00 | |||||||||
|
Boat sprite; width 7 height 3 chars, 168 bytes
|
||||||||||
| SprBoat | 8C9A | DEFB $02,$00,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$02,$00,$04,$00,$00,$00,$00 | ![]() |
|||||||
| 8CAF | DEFB $02,$00,$04,$00,$00,$00,$00,$02,$00,$04,$00,$00,$00,$00,$02,$00,$0F,$FF,$C0,$00,$00 | |||||||||
| 8CC4 | DEFB $02,$00,$18,$87,$00,$00,$00,$02,$00,$30,$86,$00,$00,$00,$02,$00,$70,$84,$31,$8C,$00 | |||||||||
| 8CD9 | DEFB $02,$30,$FF,$FC,$7B,$DE,$30,$FF,$FF,$FF,$FF,$31,$8C,$F8,$79,$55,$55,$55,$7B,$DE,$CE | |||||||||
| 8CEE | DEFB $3E,$AA,$AA,$AB,$7B,$DE,$99,$0F,$FF,$FF,$FF,$7B,$DE,$F9,$03,$FF,$FF,$FF,$FF,$FF,$F9 | |||||||||
| 8D03 | DEFB $00,$FF,$FF,$FF,$FF,$FF,$F9,$00,$3F,$FF,$FF,$FF,$FF,$F9,$00,$07,$FF,$FF,$FF,$FF,$FF | |||||||||
| 8D18 | DEFB $00,$00,$7F,$FF,$FF,$FF,$F9,$00,$00,$03,$FF,$FF,$FF,$F9,$00,$00,$00,$00,$3F,$00,$21 | |||||||||
| 8D2D | DEFB $00,$00,$00,$00,$00,$FC,$28,$00,$00,$00,$00,$00,$03,$F8,$00,$00,$00,$00,$00,$00,$08 | |||||||||
|
Meduza sprites; width 1
|
||||||||||
| 8D42 | DEFB $FF | |||||||||
| 8D43 | DEFB $0C,$3E,$FF,$55,$55,$55,$95,$A5 | ![]() |
||||||||
| 8D4B | DEFB $A4,$94,$48,$48,$08,$08,$08,$04 | |||||||||
| 8D53 | DEFB $0C,$3E,$FF,$A5,$A5,$95,$95,$A5 | ![]() |
||||||||
| 8D5B | DEFB $A5,$95,$54,$44,$08,$08,$08,$08 | |||||||||
| 8D63 | DEFB $0C,$3E,$FF,$55,$55,$95,$A5,$A5 | ![]() |
||||||||
| 8D6B | DEFB $A5,$6A,$8A,$88,$08,$08,$08,$10 | |||||||||
| 8D73 | DEFB $FF | |||||||||
|
Octopus phases 0..4, each phase 4*6*8 = 192 bytes
|
||||||||||
| SprOctopus | 8D74 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | 0 |
|||||||
| 8D84 | DEFB $40,$40,$80,$80,$80,$C0,$40,$60,$00,$02,$02,$02,$06,$1C,$30,$E0 | |||||||||
| 8D94 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8DA4 | DEFB $00,$00,$00,$00,$0E,$1F,$3F,$7F,$00,$00,$00,$00,$00,$80,$C0,$E0 | |||||||||
| 8DB4 | DEFB $20,$31,$11,$19,$0C,$04,$04,$04,$C0,$80,$80,$80,$C0,$C0,$C0,$C0 | |||||||||
| 8DC4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8DD4 | DEFB $7F,$FF,$FF,$FF,$FF,$7F,$7F,$3F,$F7,$FD,$FD,$FF,$FF,$FB,$FD,$F8 | |||||||||
| 8DE4 | DEFB $0D,$09,$8D,$F7,$FB,$F9,$F1,$76,$80,$81,$83,$0E,$F8,$E0,$BF,$F1 | |||||||||
| 8DF4 | DEFB $00,$F8,$9E,$03,$00,$00,$00,$C0,$00,$00,$00,$81,$FE,$00,$00,$00 | |||||||||
| 8E04 | DEFB $0F,$03,$38,$47,$41,$80,$89,$46,$E0,$00,$07,$1D,$72,$C4,$7F,$18 | |||||||||
| 8E14 | DEFB $1B,$4B,$A3,$DB,$77,$DF,$0C,$00,$00,$80,$40,$40,$40,$80,$00,$00 | |||||||||
| 8E24 | DEFB $E0,$70,$18,$0C,$07,$00,$00,$00,$00,$00,$00,$02,$8E,$F8,$00,$00 | |||||||||
| 8E34 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00 | 1 |
||||||||
| 8E44 | DEFB $00,$C0,$20,$00,$80,$C0,$60,$30,$18,$20,$60,$60,$30,$30,$60,$C0 | |||||||||
| 8E54 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8E64 | DEFB $00,$00,$00,$07,$0F,$1F,$3F,$3F,$00,$00,$00,$00,$C0,$E0,$F0,$FB | |||||||||
| 8E74 | DEFB $18,$0C,$04,$06,$03,$01,$03,$86,$C0,$C0,$60,$30,$30,$30,$60,$60 | |||||||||
| 8E84 | DEFB $00,$00,$00,$00,$00,$00,$00,$78,$00,$00,$00,$00,$00,$00,$00,$78 | |||||||||
| 8E94 | DEFB $7F,$7F,$7F,$7F,$3F,$3F,$1F,$07,$FE,$FE,$FF,$FF,$FD,$FE,$FC,$F0 | |||||||||
| 8EA4 | DEFB $84,$C6,$FB,$FD,$FC,$F8,$3B,$0D,$61,$C3,$86,$FC,$F0,$DF,$78,$80 | |||||||||
| 8EB4 | DEFB $CE,$03,$00,$00,$00,$80,$F0,$3C,$C6,$81,$00,$00,$00,$00,$04,$02 | |||||||||
| 8EC4 | DEFB $01,$00,$38,$47,$41,$82,$82,$4C,$80,$07,$1D,$71,$C2,$7F,$04,$19 | |||||||||
| 8ED4 | DEFB $65,$91,$6D,$3B,$DF,$26,$40,$80,$C0,$A0,$A0,$A0,$C0,$00,$00,$00 | |||||||||
| 8EE4 | DEFB $0F,$01,$00,$00,$00,$00,$00,$00,$0C,$F0,$00,$00,$00,$00,$00,$00 | |||||||||
| 8EF4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$04,$04,$0D,$0C,$06,$07 | 2 |
||||||||
| 8F04 | DEFB $00,$00,$81,$82,$02,$06,$06,$06,$00,$80,$40,$40,$00,$00,$00,$00 | |||||||||
| 8F14 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8F24 | DEFB $00,$00,$0E,$1F,$3F,$7F,$7F,$FF,$01,$00,$00,$80,$C0,$E0,$F7,$FD | |||||||||
| 8F34 | DEFB $C3,$73,$19,$0D,$05,$0C,$0C,$0D,$00,$00,$80,$80,$80,$C0,$C3,$86 | |||||||||
| 8F44 | DEFB $00,$00,$00,$00,$07,$FC,$80,$00,$00,$00,$00,$0E,$F1,$00,$00,$00 | |||||||||
| 8F54 | DEFB $FF,$FF,$FF,$7F,$7F,$3F,$0F,$03,$FD,$FF,$FF,$FB,$FD,$F8,$E0,$00 | |||||||||
| 8F64 | DEFB $8D,$F7,$FB,$F9,$F1,$76,$1B,$0B,$8C,$78,$C1,$EF,$B8,$F0,$00,$80 | |||||||||
| 8F74 | DEFB $00,$00,$E0,$3C,$07,$00,$00,$00,$08,$04,$04,$18,$E0,$00,$00,$00 | |||||||||
| 8F84 | DEFB $00,$00,$3C,$43,$41,$82,$82,$4C,$07,$1C,$70,$C1,$7E,$02,$05,$19 | |||||||||
| 8F94 | DEFB $C3,$76,$EE,$FF,$98,$80,$00,$80,$40,$40,$80,$00,$00,$00,$00,$00 | |||||||||
| 8FA4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8FB4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$07,$08,$08,$09,$0C,$06 | 3 |
||||||||
| 8FC4 | DEFB $00,$03,$0C,$88,$88,$08,$0C,$04,$00,$80,$40,$40,$80,$00,$00,$00 | |||||||||
| 8FD4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 8FE4 | DEFB $0E,$1F,$3F,$7F,$7F,$FF,$FF,$FF,$03,$80,$C0,$E0,$F7,$FD,$FD,$FF | |||||||||
| 8FF4 | DEFB $86,$C3,$63,$23,$31,$19,$8D,$F7,$00,$00,$00,$01,$83,$86,$9C,$70 | |||||||||
| 9004 | DEFB $0E,$7B,$C0,$80,$00,$00,$0F,$78,$00,$80,$E8,$10,$18,$E8,$10,$00 | |||||||||
| 9014 | DEFB $FF,$7F,$7F,$3F,$0F,$03,$00,$00,$FF,$FB,$FD,$F8,$E0,$00,$00,$0F | |||||||||
| 9024 | DEFB $FB,$F9,$F1,$76,$1B,$4B,$A3,$13,$C3,$EE,$B8,$F0,$00,$80,$40,$40 | |||||||||
| 9034 | DEFB $C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9044 | DEFB $00,$1E,$23,$40,$41,$82,$82,$4C,$11,$12,$A7,$FC,$04,$04,$04,$19 | |||||||||
| 9054 | DEFB $9F,$F7,$BE,$11,$20,$40,$80,$80,$40,$C0,$40,$80,$00,$00,$00,$00 | |||||||||
| 9064 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9074 | DEFB $00,$00,$00,$00,$00,$00,$00,$0E,$00,$04,$0A,$12,$10,$08,$0C,$06 | 4 |
||||||||
| 9084 | DEFB $18,$24,$22,$22,$30,$10,$18,$0C,$00,$00,$18,$24,$44,$06,$02,$02 | |||||||||
| 9094 | DEFB $00,$00,$00,$00,$1C,$73,$C0,$C0,$00,$00,$00,$00,$00,$00,$80,$00 | |||||||||
| 90A4 | DEFB $1F,$3F,$7F,$7F,$FF,$FF,$FF,$FF,$83,$C0,$E0,$F7,$FF,$FF,$FD,$FF | |||||||||
| 90B4 | DEFB $86,$C6,$63,$23,$33,$99,$CD,$F7,$03,$07,$06,$0E,$1B,$9B,$B3,$76 | |||||||||
| 90C4 | DEFB $80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 90D4 | DEFB $7F,$7F,$3F,$0F,$03,$00,$00,$00,$FB,$FD,$F8,$E0,$00,$00,$00,$07 | |||||||||
| 90E4 | DEFB $FB,$F9,$71,$36,$1B,$0B,$23,$DE,$C6,$EE,$BC,$F0,$00,$80,$40,$40 | |||||||||
| 90F4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9104 | DEFB $00,$0F,$11,$10,$21,$22,$42,$4C,$0C,$18,$B3,$FE,$82,$04,$04,$19 | |||||||||
| 9114 | DEFB $C6,$F7,$DE,$22,$21,$40,$40,$80,$80,$40,$40,$80,$00,$00,$00,$00 | |||||||||
| 9124 | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
|
Relief tiles 8x8 pixels
|
||||||||||
| 9134 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | $00 |
||||||||
| 913C | DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | $01 |
||||||||
| 9144 | DEFB $C0,$F0,$F0,$FC,$FC,$FC,$FE,$FF | $02 |
||||||||
| 914C | DEFB $00,$00,$80,$80,$C0,$C0,$E0,$FE | $03 |
||||||||
| 9154 | DEFB $01,$0F,$1F,$3F,$3F,$7F,$FF,$FF | $04 |
||||||||
| 915C | DEFB $00,$01,$01,$03,$1F,$3F,$3F,$7F | $05 |
||||||||
| 9164 | DEFB $01,$01,$03,$07,$1F,$1F,$7F,$FF | $06 |
||||||||
| 916C | DEFB $00,$00,$01,$03,$07,$07,$07,$3F | $07 |
||||||||
| 9174 | DEFB $FF,$FF,$FE,$FE,$FC,$FC,$F0,$C0 | $08 |
||||||||
| 917C | DEFB $FF,$FC,$D8,$D0,$C0,$80,$80,$00 | $09 |
||||||||
| 9184 | DEFB $FF,$FE,$F8,$F0,$E0,$C0,$80,$00 | $0A |
||||||||
| 918C | DEFB $FE,$FE,$CA,$C0,$80,$80,$80,$00 | $0B |
||||||||
| 9194 | DEFB $7F,$3F,$2F,$07,$07,$07,$03,$01 | $0C |
||||||||
| 919C | DEFB $FF,$FF,$7F,$7F,$3F,$1F,$0F,$03 | $0D |
||||||||
| 91A4 | DEFB $7F,$07,$05,$01,$01,$01,$01,$00 | $0E |
||||||||
| 91AC | DEFB $7F,$7F,$1F,$1F,$07,$07,$03,$03 | $0F |
||||||||
| 91B4 | DEFB $80,$C0,$C0,$C0,$E0,$C0,$80,$00 | $10 |
||||||||
| 91BC | DEFB $00,$80,$C0,$C0,$C0,$80,$80,$00 | $11 |
||||||||
| 91C4 | DEFB $80,$E0,$F0,$F0,$F8,$E0,$E0,$C0 | $12 |
||||||||
| 91CC | DEFB $00,$80,$80,$80,$80,$C0,$E0,$80 | $13 |
||||||||
| 91D4 | DEFB $5E,$0C,$00,$00,$00,$00,$00,$00 | $14 |
||||||||
| 91DC | DEFB $FF,$FE,$3E,$3E,$3E,$1A,$10,$10 | $15 |
||||||||
| 91E4 | DEFB $FF,$3D,$18,$00,$00,$00,$00,$00 | $16 |
||||||||
| 91EC | DEFB $7F,$38,$18,$10,$00,$00,$00,$00 | $17 |
||||||||
| 91F4 | DEFB $01,$03,$03,$07,$07,$03,$03,$00 | $18 |
||||||||
| 91FC | DEFB $00,$00,$07,$01,$03,$03,$01,$01 | $19 |
||||||||
| 9204 | DEFB $01,$07,$1F,$7F,$0F,$03,$01,$01 | $1A |
||||||||
| 920C | DEFB $01,$00,$01,$07,$03,$01,$03,$00 | $1B |
||||||||
| 9214 | DEFB $00,$00,$00,$00,$04,$04,$8C,$DF | $1C |
||||||||
| 921C | DEFB $00,$08,$38,$38,$3C,$7C,$7E,$FF | $1D |
||||||||
| 9224 | DEFB $00,$00,$00,$00,$00,$04,$9E,$FE | $1E |
||||||||
| 922C | DEFB $00,$00,$00,$00,$20,$68,$FA,$FF | $1F |
||||||||
| 9234 | DEFB $7F,$3F,$3F,$3F,$1F,$3F,$7F,$FF | $20 |
||||||||
| 923C | DEFB $FF,$7F,$3F,$3F,$3F,$7F,$7F,$FF | $21 |
||||||||
| 9244 | DEFB $7F,$1F,$0F,$0F,$07,$1F,$1F,$3F | $22 |
||||||||
| 924C | DEFB $FF,$7F,$7F,$7F,$7F,$3F,$1F,$7F | $23 |
||||||||
| 9254 | DEFB $A1,$F3,$FF,$FF,$FF,$FF,$FF,$FF | $24 |
||||||||
| 925C | DEFB $00,$01,$C1,$C1,$C1,$E5,$EF,$EF | $25 |
||||||||
| 9264 | DEFB $00,$C2,$E7,$FF,$FF,$FF,$FF,$FF | $26 |
||||||||
| 926C | DEFB $80,$C7,$E7,$EF,$FF,$FF,$FF,$FF | $27 |
||||||||
| 9274 | DEFB $FE,$FC,$FC,$F8,$F8,$FC,$FC,$FF | $28 |
||||||||
| 927C | DEFB $FF,$FF,$F8,$FE,$FC,$FC,$FE,$FE | $29 |
||||||||
| 9284 | DEFB $FE,$F8,$E0,$80,$F0,$FC,$FE,$FE | $2A |
||||||||
| 928C | DEFB $FE,$FF,$FE,$F8,$FC,$FE,$FC,$FF | $2B |
||||||||
| 9294 | DEFB $FF,$FF,$FF,$FD,$FD,$F9,$71,$20 | $2C |
||||||||
| 929C | DEFB $FF,$F7,$C7,$C7,$C3,$83,$81,$00 | $2D |
||||||||
| 92A4 | DEFB $FF,$FF,$FF,$FF,$FF,$FB,$61,$01 | $2E |
||||||||
| 92AC | DEFB $FF,$FF,$FF,$FF,$DF,$97,$05,$00 | $2F |
||||||||
| 92B4 | DEFB $80,$C0,$F8,$F8,$FA,$FE,$FE,$FF | $30 |
||||||||
| 92BC | DEFB $00,$80,$80,$C0,$C0,$E0,$F8,$FE | $31 |
||||||||
| 92C4 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
|
Scuba diver sprites; width 2 height 2 chars
|
||||||||||
| SprDiver0 | 92CC | DEFB $01,$80,$03,$D0,$03,$D0,$01,$90,$07,$A0,$07,$C0,$07,$80,$07,$80 | ![]() |
|||||||
| 92DC | DEFB $06,$80,$03,$00,$01,$00,$01,$80,$02,$80,$02,$80,$04,$80,$04,$80 | |||||||||
| 92EC | DEFB $01,$80,$03,$D0,$03,$D0,$01,$90,$07,$A0,$07,$C0,$07,$80,$07,$80 | ![]() |
||||||||
| 92FC | DEFB $06,$80,$03,$00,$03,$80,$02,$80,$04,$40,$04,$40,$08,$80,$10,$80 | |||||||||
| 930C | DEFB $03,$00,$07,$A0,$07,$A0,$03,$20,$0F,$40,$0F,$80,$0F,$00,$0F,$00 | ![]() |
||||||||
| 931C | DEFB $0D,$00,$06,$00,$02,$00,$06,$00,$05,$00,$05,$00,$08,$80,$10,$80 | |||||||||
| 932C | DEFB $03,$00,$07,$80,$07,$A0,$03,$20,$0F,$20,$0F,$C0,$0F,$00,$0F,$00 | ![]() |
||||||||
| 933C | DEFB $0D,$00,$06,$00,$02,$00,$02,$00,$02,$00,$06,$00,$06,$00,$06,$00 | |||||||||
| 934C | DEFB $00,$18,$00,$3C,$00,$3D,$00,$BA,$01,$E2,$01,$EC,$03,$F0,$03,$E0 | ![]() |
||||||||
| 935C | DEFB $01,$40,$01,$80,$01,$00,$03,$80,$04,$80,$09,$00,$11,$00,$00,$00 | |||||||||
| 936C | DEFB $00,$18,$00,$3C,$00,$3D,$00,$BA,$01,$E2,$01,$EC,$03,$F0,$03,$E0 | ![]() |
||||||||
| 937C | DEFB $01,$40,$03,$80,$02,$80,$04,$80,$08,$80,$30,$80,$01,$00,$02,$00 | |||||||||
| 938C | DEFB $00,$30,$00,$78,$00,$7A,$01,$74,$03,$C4,$03,$D8,$07,$E0,$07,$C0 | ![]() |
||||||||
| 939C | DEFB $02,$80,$03,$00,$05,$00,$09,$00,$71,$00,$02,$00,$02,$00,$02,$00 | |||||||||
| 93AC | DEFB $00,$30,$00,$78,$00,$78,$01,$70,$03,$C0,$03,$C2,$07,$E4,$07,$D8 | ![]() |
||||||||
| 93BC | DEFB $02,$80,$03,$00,$02,$00,$06,$00,$0C,$00,$1C,$00,$18,$00,$08,$00 | |||||||||
| 93CC | DEFB $00,$00,$00,$00,$00,$18,$00,$3C,$00,$BC,$01,$F8,$03,$E1,$07,$E2 | ![]() |
||||||||
| 93DC | DEFB $05,$9C,$07,$00,$1C,$00,$E4,$00,$18,$00,$60,$00,$C0,$00,$00,$00 | |||||||||
| 93EC | DEFB $00,$00,$00,$00,$00,$18,$00,$3C,$00,$BC,$01,$F8,$03,$E1,$07,$E2 | ![]() |
||||||||
| 93FC | DEFB $05,$9C,$0F,$00,$B4,$00,$6C,$00,$08,$00,$08,$00,$00,$00,$00,$00 | |||||||||
| 940C | DEFB $00,$00,$00,$18,$00,$3C,$00,$BC,$01,$F8,$03,$E1,$07,$E2,$05,$9C | ![]() |
||||||||
| 941C | DEFB $07,$00,$1C,$00,$F8,$00,$18,$00,$10,$00,$10,$00,$20,$00,$00,$00 | |||||||||
| 942C | DEFB $00,$00,$00,$18,$00,$3C,$00,$BC,$01,$F8,$03,$E0,$07,$E2,$05,$94 | ![]() |
||||||||
| 943C | DEFB $0F,$08,$18,$00,$70,$00,$E0,$00,$C0,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 944C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$46,$01,$EF,$03,$FF | ![]() |
||||||||
| 945C | DEFB $07,$F6,$06,$E1,$FF,$3A,$18,$04,$70,$00,$80,$00,$00,$00,$00,$00 | |||||||||
| 946C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$46,$01,$EF,$83,$FF | ![]() |
||||||||
| 947C | DEFB $67,$F6,$1E,$E1,$07,$3A,$0C,$04,$78,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 948C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$46,$01,$EF,$03,$FF,$C7,$F6 | ![]() |
||||||||
| 949C | DEFB $3E,$E1,$0B,$3A,$10,$04,$20,$00,$40,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 94AC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$46,$01,$EF,$03,$FF,$07,$F6 | ![]() |
||||||||
| 94BC | DEFB $06,$E0,$FF,$12,$F8,$0C,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 94CC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C1,$F0,$33,$F6,$0E,$FF | ![]() |
||||||||
| 94DC | DEFB $F9,$FF,$00,$26,$00,$10,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 94EC | DEFB $00,$00,$00,$00,$00,$00,$80,$00,$40,$00,$31,$F0,$0F,$F6,$06,$FF | ![]() |
||||||||
| 94FC | DEFB $CD,$FF,$30,$26,$00,$10,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 950C | DEFB $00,$00,$00,$00,$00,$00,$80,$00,$41,$F0,$3B,$F6,$0E,$FF,$31,$FF | ![]() |
||||||||
| 951C | DEFB $C0,$26,$00,$10,$00,$0E,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 952C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$01,$F0,$E3,$F6,$FE,$FF,$01,$FF | ![]() |
||||||||
| 953C | DEFB $00,$26,$00,$20,$00,$1C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 954C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$20,$00,$11,$C0,$CF,$F0 | ![]() |
||||||||
| 955C | DEFB $3A,$F6,$03,$FF,$00,$6F,$00,$46,$00,$20,$00,$1C,$00,$00,$00,$00 | |||||||||
| 956C | DEFB $00,$00,$00,$00,$20,$00,$20,$00,$20,$00,$50,$00,$59,$C0,$4F,$F0 | ![]() |
||||||||
| 957C | DEFB $32,$F6,$03,$FF,$00,$6F,$00,$46,$00,$20,$00,$1C,$00,$00,$00,$00 | |||||||||
| 958C | DEFB $00,$00,$20,$00,$20,$00,$20,$00,$18,$00,$05,$C0,$FF,$F0,$02,$F6 | ![]() |
||||||||
| 959C | DEFB $03,$FF,$00,$6F,$00,$46,$00,$20,$00,$1C,$00,$00,$00,$00,$00,$00 | |||||||||
| 95AC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$E1,$C0,$EF,$F0,$06,$F6 | ![]() |
||||||||
| 95BC | DEFB $03,$FF,$00,$6F,$00,$46,$00,$40,$00,$30,$00,$00,$00,$00,$00,$00 | |||||||||
| 95CC | DEFB $10,$00,$08,$00,$48,$00,$24,$00,$14,$80,$0F,$C0,$02,$E0,$01,$F8 | ![]() |
||||||||
| 95DC | DEFB $01,$F8,$00,$F0,$00,$F4,$00,$9E,$00,$9E,$00,$8C,$00,$40,$00,$20 | |||||||||
| 95EC | DEFB $04,$00,$04,$00,$14,$00,$12,$00,$12,$80,$1F,$C0,$02,$E0,$01,$F8 | ![]() |
||||||||
| 95FC | DEFB $01,$F8,$00,$F0,$00,$F4,$00,$9E,$00,$9E,$00,$8C,$00,$40,$00,$20 | |||||||||
| 960C | DEFB $10,$00,$10,$00,$10,$00,$88,$00,$65,$00,$1F,$80,$05,$C0,$03,$F0 | ![]() |
||||||||
| 961C | DEFB $03,$F0,$01,$E0,$01,$E8,$01,$3C,$01,$3C,$01,$18,$00,$80,$00,$40 | |||||||||
| 962C | DEFB $30,$00,$30,$00,$38,$00,$18,$00,$0D,$00,$07,$80,$05,$C0,$03,$F0 | ![]() |
||||||||
| 963C | DEFB $03,$F0,$01,$E0,$01,$E8,$01,$3C,$02,$3C,$02,$18,$01,$80,$00,$80 | |||||||||
| 964C | DEFB $01,$00,$09,$00,$09,$00,$05,$00,$05,$00,$03,$00,$03,$C0,$01,$60 | ![]() |
||||||||
| 965C | DEFB $01,$E0,$00,$E0,$01,$F0,$01,$E0,$02,$30,$02,$78,$02,$78,$01,$30 | |||||||||
| 966C | DEFB $08,$80,$08,$80,$08,$80,$09,$00,$05,$00,$05,$00,$03,$C0,$01,$60 | ![]() |
||||||||
| 967C | DEFB $01,$E0,$00,$F0,$01,$F0,$01,$E0,$02,$30,$02,$78,$02,$78,$01,$30 | |||||||||
| 968C | DEFB $22,$00,$22,$00,$14,$00,$14,$00,$0C,$00,$0E,$00,$07,$80,$02,$C0 | ![]() |
||||||||
| 969C | DEFB $03,$C0,$01,$E0,$03,$E0,$03,$C0,$04,$60,$04,$F0,$04,$F0,$02,$60 | |||||||||
| 96AC | DEFB $18,$00,$18,$00,$18,$00,$08,$00,$0C,$00,$0E,$00,$07,$80,$02,$C0 | ![]() |
||||||||
| 96BC | DEFB $03,$C0,$01,$E0,$03,$E0,$07,$C0,$08,$60,$08,$F0,$08,$F0,$00,$60 | |||||||||
| 96CC | DEFB $04,$80,$04,$80,$02,$80,$02,$80,$01,$80,$01,$00,$03,$00,$06,$80 | ![]() |
||||||||
| 96DC | DEFB $07,$80,$07,$80,$07,$C0,$07,$A0,$01,$90,$03,$D0,$03,$D0,$01,$80 | |||||||||
| 96EC | DEFB $10,$80,$08,$80,$04,$40,$04,$40,$02,$80,$03,$80,$03,$00,$06,$80 | ![]() |
||||||||
| 96FC | DEFB $07,$80,$07,$80,$07,$C0,$07,$A0,$01,$90,$03,$D0,$03,$D0,$01,$80 | |||||||||
| 970C | DEFB $10,$80,$08,$80,$05,$00,$05,$00,$06,$00,$02,$00,$06,$00,$0D,$00 | ![]() |
||||||||
| 971C | DEFB $0F,$00,$0F,$00,$0F,$80,$0F,$40,$03,$20,$07,$A0,$07,$A0,$03,$00 | |||||||||
| 972C | DEFB $06,$00,$06,$00,$06,$00,$02,$00,$02,$00,$02,$00,$06,$00,$0D,$00 | ![]() |
||||||||
| 973C | DEFB $0F,$00,$0F,$00,$0F,$C0,$0F,$20,$03,$20,$07,$A0,$07,$A0,$03,$00 | |||||||||
| 974C | DEFB $00,$80,$00,$90,$00,$90,$00,$A0,$00,$A0,$00,$C0,$03,$C0,$06,$80 | ![]() |
||||||||
| 975C | DEFB $07,$80,$0F,$00,$0F,$80,$07,$80,$0C,$40,$1E,$40,$1E,$40,$0C,$80 | |||||||||
| 976C | DEFB $01,$10,$01,$10,$01,$10,$00,$90,$00,$A0,$00,$A0,$03,$C0,$06,$80 | ![]() |
||||||||
| 977C | DEFB $07,$80,$0F,$00,$0F,$80,$07,$80,$0C,$40,$1E,$40,$1E,$40,$0C,$80 | |||||||||
| 978C | DEFB $00,$44,$00,$44,$00,$28,$00,$28,$00,$30,$00,$70,$01,$E0,$03,$40 | ![]() |
||||||||
| 979C | DEFB $03,$C0,$07,$80,$07,$C0,$03,$C0,$06,$20,$0F,$20,$0F,$20,$06,$40 | |||||||||
| 97AC | DEFB $00,$18,$00,$18,$00,$18,$00,$10,$00,$30,$00,$70,$01,$E0,$03,$40 | ![]() |
||||||||
| 97BC | DEFB $03,$C0,$07,$80,$07,$C0,$03,$E0,$06,$10,$0F,$10,$0F,$10,$06,$00 | |||||||||
| 97CC | DEFB $00,$08,$00,$10,$00,$12,$00,$24,$01,$28,$03,$F0,$07,$40,$1F,$80 | ![]() |
||||||||
| 97DC | DEFB $1F,$80,$0F,$00,$2F,$00,$79,$00,$79,$00,$31,$00,$02,$00,$04,$00 | |||||||||
| 97EC | DEFB $00,$20,$00,$20,$00,$28,$00,$48,$01,$48,$03,$F8,$07,$40,$1F,$80 | ![]() |
||||||||
| 97FC | DEFB $1F,$80,$0F,$00,$2F,$00,$79,$00,$79,$00,$31,$00,$02,$00,$04,$00 | |||||||||
| 980C | DEFB $00,$08,$00,$08,$00,$08,$00,$11,$00,$A6,$01,$F8,$03,$A0,$0F,$C0 | ![]() |
||||||||
| 981C | DEFB $0F,$C0,$07,$80,$17,$80,$3C,$80,$3C,$80,$18,$80,$01,$00,$02,$00 | |||||||||
| 982C | DEFB $00,$0C,$00,$0C,$00,$1C,$00,$18,$00,$B0,$01,$E0,$03,$A0,$0F,$C0 | ![]() |
||||||||
| 983C | DEFB $0F,$C0,$07,$80,$17,$80,$3C,$80,$3C,$40,$18,$40,$00,$80,$01,$00 | |||||||||
| 984C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$02,$00,$04,$03,$88,$0F,$F3 | ![]() |
||||||||
| 985C | DEFB $6F,$5C,$FF,$C0,$F6,$00,$62,$00,$04,$00,$38,$00,$00,$00,$00,$00 | |||||||||
| 986C | DEFB $00,$00,$00,$00,$00,$04,$00,$04,$00,$04,$00,$0A,$03,$9A,$0F,$F2 | ![]() |
||||||||
| 987C | DEFB $6F,$4C,$FF,$C0,$F6,$00,$62,$00,$04,$00,$38,$00,$00,$00,$00,$00 | |||||||||
| 988C | DEFB $00,$00,$00,$04,$00,$04,$00,$04,$00,$18,$03,$A0,$0F,$FF,$6F,$40 | ![]() |
||||||||
| 989C | DEFB $FF,$C0,$F6,$00,$62,$00,$04,$00,$38,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 98AC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$87,$0F,$FE,$6F,$60 | ![]() |
||||||||
| 98BC | DEFB $FF,$C0,$F6,$00,$62,$00,$02,$00,$0C,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 98CC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$83,$6F,$CC,$FF,$70 | ![]() |
||||||||
| 98DC | DEFB $FF,$9F,$64,$00,$08,$00,$70,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 98EC | DEFB $00,$00,$00,$00,$00,$00,$00,$01,$00,$02,$0F,$8C,$6F,$F0,$FF,$60 | ![]() |
||||||||
| 98FC | DEFB $FF,$B3,$64,$0C,$08,$00,$70,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 990C | DEFB $00,$00,$00,$00,$00,$00,$00,$01,$0F,$82,$6F,$DC,$FF,$70,$FF,$8C | ![]() |
||||||||
| 991C | DEFB $64,$03,$08,$00,$70,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 992C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$0F,$80,$6F,$C7,$FF,$7F,$FF,$80 | ![]() |
||||||||
| 993C | DEFB $64,$00,$04,$00,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 994C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$62,$00,$F7,$80,$FF,$C0 | ![]() |
||||||||
| 995C | DEFB $6F,$E0,$87,$60,$5C,$FF,$20,$18,$00,$0E,$00,$01,$00,$00,$00,$00 | |||||||||
| 996C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$62,$00,$F7,$80,$FF,$C1 | ![]() |
||||||||
| 997C | DEFB $6F,$E6,$87,$78,$5C,$E0,$20,$30,$00,$1E,$00,$00,$00,$00,$00,$00 | |||||||||
| 998C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$62,$00,$F7,$80,$FF,$C0,$6F,$E3 | ![]() |
||||||||
| 999C | DEFB $87,$7C,$5C,$D0,$20,$18,$00,$04,$00,$02,$00,$00,$00,$00,$00,$00 | |||||||||
| 99AC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$62,$00,$F7,$80,$FF,$C0,$6F,$E0 | ![]() |
||||||||
| 99BC | DEFB $07,$60,$48,$FF,$30,$1F,$00,$03,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 99CC | DEFB $00,$00,$00,$00,$18,$00,$3C,$00,$3D,$00,$1F,$80,$87,$C0,$47,$E0 | ![]() |
||||||||
| 99DC | DEFB $39,$A0,$00,$E0,$00,$38,$00,$27,$00,$18,$00,$06,$00,$03,$00,$00 | |||||||||
| 99EC | DEFB $00,$00,$00,$00,$18,$00,$3C,$00,$3D,$00,$1F,$80,$87,$C0,$47,$E0 | ![]() |
||||||||
| 99FC | DEFB $39,$A0,$00,$F0,$00,$2D,$00,$36,$00,$10,$00,$10,$00,$0E,$00,$00 | |||||||||
| 9A0C | DEFB $00,$00,$18,$00,$3C,$00,$3D,$00,$1F,$80,$87,$C0,$47,$E0,$39,$A0 | ![]() |
||||||||
| 9A1C | DEFB $00,$E0,$00,$38,$00,$1F,$00,$18,$00,$08,$00,$08,$00,$04,$00,$00 | |||||||||
| 9A2C | DEFB $00,$00,$18,$00,$3C,$00,$3D,$00,$1F,$80,$07,$C0,$47,$E0,$29,$A0 | ![]() |
||||||||
| 9A3C | DEFB $10,$F0,$00,$18,$00,$0E,$00,$07,$00,$03,$00,$00,$00,$00,$00,$00 | |||||||||
| 9A4C | DEFB $18,$00,$3C,$00,$BC,$00,$5D,$00,$47,$80,$37,$80,$0F,$C0,$07,$C0 | ![]() |
||||||||
| 9A5C | DEFB $02,$80,$01,$80,$00,$80,$01,$C0,$01,$60,$00,$90,$00,$90,$00,$00 | |||||||||
| 9A6C | DEFB $18,$00,$3C,$00,$BC,$00,$5D,$00,$47,$80,$37,$80,$0F,$C0,$07,$C0 | ![]() |
||||||||
| 9A7C | DEFB $02,$80,$01,$C0,$01,$40,$01,$20,$01,$10,$01,$0C,$00,$80,$00,$40 | |||||||||
| 9A8C | DEFB $0C,$00,$1E,$00,$5E,$00,$2E,$80,$23,$C0,$1B,$C0,$07,$E0,$03,$E0 | ![]() |
||||||||
| 9A9C | DEFB $01,$40,$00,$C0,$00,$A0,$00,$90,$00,$8E,$00,$42,$00,$40,$00,$40 | |||||||||
| 9AAC | DEFB $0C,$00,$1E,$00,$1E,$00,$0E,$80,$03,$C0,$43,$C0,$27,$E0,$1B,$E0 | ![]() |
||||||||
| 9ABC | DEFB $01,$40,$00,$C0,$00,$40,$00,$60,$00,$30,$00,$38,$00,$18,$00,$10 | |||||||||
|
Scuba diver drowned, 4 sprites
|
||||||||||
| SprDrowned | 9ACC | DEFB $00,$C0,$01,$E0,$01,$E0,$00,$C8,$07,$90,$07,$F8,$07,$C0,$07,$00 | ![]() |
|||||||
| 9ADC | DEFB $07,$00,$03,$80,$01,$80,$00,$C0,$00,$60,$00,$50,$00,$28,$00,$20 | |||||||||
| 9AEC | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$F0,$03,$F0,$07,$F6 | ![]() |
||||||||
| 9AFC | DEFB $0E,$7F,$38,$6F,$D0,$26,$20,$60,$40,$A0,$00,$00,$00,$00,$00,$00 | |||||||||
| 9B0C | DEFB $00,$20,$00,$28,$00,$50,$00,$60,$00,$C0,$01,$80,$03,$80,$07,$00 | ![]() |
||||||||
| 9B1C | DEFB $07,$00,$07,$C0,$07,$F8,$07,$90,$00,$C8,$01,$E0,$01,$E0,$00,$C0 | |||||||||
| 9B2C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$80,$0F,$C0,$6F,$E0 | ![]() |
||||||||
| 9B3C | DEFB $FE,$70,$F6,$1C,$64,$0B,$0C,$04,$14,$02,$00,$00,$00,$00,$00,$00 | |||||||||
|
Explosion sprites
|
||||||||||
| SprExplosion | 9B4C | DEFB $01,$00,$01,$00,$10,$10,$08,$20,$00,$00,$20,$08,$00,$00,$00,$00 | ![]() |
|||||||
| 9B5C | DEFB $38,$38,$00,$00,$20,$08,$00,$00,$08,$20,$10,$10,$01,$00,$01,$00 | |||||||||
| 9B6C | DEFB $00,$00,$00,$00,$05,$20,$21,$04,$11,$08,$00,$00,$00,$00,$C0,$03 | ![]() |
||||||||
| 9B7C | DEFB $00,$00,$00,$00,$11,$08,$21,$04,$05,$20,$00,$00,$00,$00,$00,$00 | |||||||||
|
Scuba diver various sprites
|
||||||||||
| 9B8C | DEFB $30,$00,$78,$00,$78,$00,$30,$00,$3C,$00,$FC,$00,$3C,$00,$3C,$00 | ![]() |
||||||||
| 9B9C | DEFB $3C,$00,$78,$00,$60,$00,$E0,$00,$E0,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9BAC | DEFB $00,$00,$00,$00,$01,$80,$03,$C0,$03,$C0,$01,$80,$03,$C0,$03,$C0 | ![]() |
||||||||
| 9BBC | DEFB $03,$C0,$03,$C0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9BCC | DEFB $00,$00,$00,$00,$00,$00,$04,$20,$25,$A0,$13,$C4,$03,$C0,$25,$A0 | ![]() |
||||||||
| 9BDC | DEFB $17,$E4,$07,$E8,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||||||||
| 9BEC | DEFB $80,$00,$40,$01,$00,$00,$80,$00,$40,$01,$00,$02,$04,$20,$04,$20 | ![]() |
||||||||
| 9BFC | DEFB $04,$60,$07,$E0,$07,$C0,$07,$C0,$01,$80,$00,$00,$00,$00,$00,$00 | |||||||||
| 9C0C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$04,$00,$24,$00 | ![]() |
||||||||
| 9C1C | DEFB $28,$00,$1F,$00,$0F,$60,$07,$F0,$07,$F0,$00,$60,$00,$00,$00,$00 | |||||||||
| 9C2C | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$00 | ![]() |
||||||||
| 9C3C | DEFB $08,$00,$2B,$80,$2B,$80,$3F,$B0,$07,$F8,$01,$78,$01,$30,$01,$00 | |||||||||
| 9C4C | DEFB $00,$00,$00,$00 | |||||||||
|
|
||||
| 9C50 | DEFB $00 | $00 = no Octopus, $01 = we have Octopus on the game screen | ||
| 9C51 | DEFW $0000 | Octopus row/column | ||
| 9C53 | DEFW $A41B | ??? | ||
| 9C55 | DEFB $04 | Octopus phase | ||
|
||||||||
|
Renders the 24x24-tile game viewport: for each screen cell, looks up the relief block/tile from the mini-map, copies its 8x8 pixel data to the screen, and sets the attribute (colour) based on depth/relief. Also detects the Octopus spawn tile and remembers its position for later drawing.
|
||||||||
| DrawGameScr | 9C56 | DI | ||||||
| 9C57 | LD DE,$4000 | |||||||
| 9C5A | XOR A | reset "has Octopus" flag | ||||||
| 9C5B | LD ($9C50),A | |||||||
| 9C5E | PUSH IX | |||||||
| 9C60 | PUSH IY | |||||||
| 9C62 | LD IX,$5800 | attribute output pointer | ||||||
| 9C66 | LD B,$03 | Game screen 3 blocks high = 24 tiles | ||||||
| 9C68 | EX DE,HL | |||||||
| DrawGameScr_0 | 9C69 | PUSH BC | ||||||
| 9C6A | LD B,$03 | Game screen 3 blocks wide = 24 tiles | ||||||
| DrawGameScr_1 | 9C6C | PUSH BC | ||||||
| 9C6D | PUSH IX | |||||||
| 9C6F | EX DE,HL | |||||||
| 9C70 | CALL MiniMap_Get | Calc address in MiniMap and Get block number | ||||||
| 9C73 | PUSH AF | |||||||
| 9C74 | EX DE,HL | |||||||
| 9C75 | CP $1C | place for Octopus? | ||||||
| 9C77 | JR NZ,DrawGameScr_2 | |||||||
| 9C79 | LD ($9C51),HL | save the Octopus row/column | ||||||
| 9C7C | PUSH HL | |||||||
| 9C7D | LD HL,$A41B | mark Octopus tile found, use empty sprite placeholder | ||||||
| 9C80 | LD ($9C53),HL | |||||||
| 9C83 | POP HL | |||||||
| 9C84 | LD A,$01 | |||||||
| 9C86 | LD ($9C50),A | |||||||
| DrawGameScr_2 | 9C89 | INC E | wrap map column 0..31 | |||||
| 9C8A | LD A,E | |||||||
| 9C8B | AND $1F | |||||||
| 9C8D | LD E,A | |||||||
| 9C8E | POP AF | |||||||
| 9C8F | PUSH DE | |||||||
| 9C90 | PUSH HL | |||||||
| 9C91 | PUSH HL | |||||||
| 9C92 | LD H,A | block index = tile/8 | ||||||
| 9C93 | LD L,$00 | |||||||
| 9C95 | SRL H | |||||||
| 9C97 | RR L | |||||||
| 9C99 | SRL H | |||||||
| 9C9B | RR L | |||||||
| 9C9D | LD DE,$A4DD | base address for relief blocks, 8x8 tiles each block | ||||||
| 9CA0 | ADD HL,DE | |||||||
| 9CA1 | PUSH HL | |||||||
| 9CA2 | POP IY | |||||||
| 9CA4 | POP HL | |||||||
| 9CA5 | LD B,$08 | height for block of tiles = 8 | ||||||
| DrawGameScr_3 | 9CA7 | PUSH BC | ||||||
| 9CA8 | LD B,$08 | |||||||
| DrawGameScr_4 | 9CAA | PUSH BC | ||||||
| 9CAB | LD A,(IY+$00) | get tile number | ||||||
| 9CAE | PUSH HL | |||||||
| 9CAF | PUSH HL | |||||||
| 9CB0 | AND $7F | |||||||
| 9CB2 | LD L,A | |||||||
| 9CB3 | LD H,$00 | |||||||
| 9CB5 | ADD HL,HL | |||||||
| 9CB6 | ADD HL,HL | |||||||
| 9CB7 | ADD HL,HL | *8 | ||||||
| 9CB8 | LD BC,$9134 | base address for relief tiles, 8x8 pixels each tile | ||||||
| 9CBB | ADD HL,BC | |||||||
| 9CBC | POP DE | |||||||
| 9CBD | LD B,$08 | |||||||
| DrawGameScr_5 | 9CBF | LD A,(HL) | copy tile pixel row to screen | |||||
| 9CC0 | LD (DE),A | |||||||
| 9CC1 | INC HL | |||||||
| 9CC2 | INC D | |||||||
| 9CC3 | DJNZ DrawGameScr_5 | |||||||
| 9CC5 | POP HL | |||||||
| 9CC6 | LD A,($5B04) | check depth zone for water color | ||||||
| 9CC9 | OR A | |||||||
| 9CCA | JR NZ,DrawGameScr_6 | |||||||
| 9CCC | LD A,H | |||||||
| 9CCD | AND $18 | |||||||
| 9CCF | JR NZ,DrawGameScr_6 | |||||||
| 9CD1 | LD C,$29 | surface band colour | ||||||
| 9CD3 | JR DrawGameScr_7 | |||||||
| DrawGameScr_6 | 9CD5 | LD C,$06 | pick colour from tile type | |||||
| 9CD7 | LD A,(IY+$00) | |||||||
| 9CDA | OR A | |||||||
| 9CDB | JR Z,DrawGameScr_7 | |||||||
| 9CDD | CP $32 | |||||||
| 9CDF | JR Z,DrawGameScr_7 | |||||||
| 9CE1 | LD C,$02 | |||||||
| 9CE3 | BIT 7,(IY+$00) | |||||||
| 9CE7 | JR Z,DrawGameScr_7 | |||||||
| 9CE9 | LD C,$06 | |||||||
| DrawGameScr_7 | 9CEB | LD (IX+$00),C | store cell attribute | |||||
| 9CEE | INC IY | |||||||
| 9CF0 | INC IX | |||||||
| 9CF2 | INC L | |||||||
| 9CF3 | POP BC | |||||||
| 9CF4 | DJNZ DrawGameScr_4 | |||||||
| 9CF6 | LD BC,$0018 | advance attribute pointer to next block | ||||||
| 9CF9 | ADD IX,BC | |||||||
| 9CFB | DEC L | |||||||
| 9CFC | LD A,L | |||||||
| 9CFD | AND $F8 | |||||||
| 9CFF | ADD A,$20 | |||||||
| 9D01 | LD L,A | |||||||
| 9D02 | POP BC | |||||||
| 9D03 | DJNZ DrawGameScr_3 | |||||||
| 9D05 | POP HL | |||||||
| 9D06 | LD BC,$0008 | |||||||
| 9D09 | ADD HL,BC | |||||||
| 9D0A | POP DE | |||||||
| 9D0B | POP IX | |||||||
| 9D0D | ADD IX,BC | |||||||
| 9D0F | POP BC | |||||||
| 9D10 | DEC B | |||||||
| 9D11 | JP NZ,DrawGameScr_1 | |||||||
| 9D14 | LD L,$00 | advance to next block row | ||||||
| 9D16 | LD A,H | |||||||
| 9D17 | ADD A,$08 | |||||||
| 9D19 | LD H,A | |||||||
| 9D1A | LD BC,$00E8 | |||||||
| 9D1D | ADD IX,BC | |||||||
| 9D1F | INC D | |||||||
| 9D20 | DEC E | |||||||
| 9D21 | DEC E | |||||||
| 9D22 | DEC E | |||||||
| 9D23 | LD A,E | |||||||
| 9D24 | AND $1F | |||||||
| 9D26 | LD E,A | |||||||
| 9D27 | POP BC | |||||||
| 9D28 | DEC B | |||||||
| 9D29 | JP NZ,DrawGameScr_0 | |||||||
| 9D2C | LD A,($9C50) | |||||||
| 9D2F | OR A | |||||||
| 9D30 | JR Z,DrawGameScr_8 | |||||||
| 9D32 | LD A,($9C55) | |||||||
| 9D35 | CALL ProcessOctopus_2 | Draw Octopus | ||||||
| DrawGameScr_8 | 9D38 | POP IY | ||||||
| 9D3A | POP IX | |||||||
| 9D3C | CALL DrawStatics | Draw static objects on the screen | ||||||
| 9D3F | RET | |||||||
|
Used by the routines at MiniMap_Get and MiniMap_Set.
|
||||||||||||
| MiniMap_Addr | 9D40 | LD A,L | ||||||||||
| 9D41 | LD L,$00 | |||||||||||
| 9D43 | SRL H | |||||||||||
| 9D45 | RR L | |||||||||||
| 9D47 | SRL H | |||||||||||
| 9D49 | RR L | |||||||||||
| 9D4B | SRL H | |||||||||||
| 9D4D | RR L | HL shifted right 3 bits | ||||||||||
| 9D4F | OR L | |||||||||||
| 9D50 | LD L,A | HL := H * 32 + L | ||||||||||
| 9D51 | LD DE,MiniMap | |||||||||||
| 9D54 | ADD HL,DE | HL := MiniMap + H * 32 + L | ||||||||||
| 9D55 | RET | |||||||||||
|
Used by the routines at DrawGameScr, MiniMap_Check, CarveTunnelLeft, CarveTunnelRight and PlaceStaticObjects.
|
||||||||||||
| MiniMap_Get | 9D56 | PUSH HL | ||||||||||
| 9D57 | PUSH DE | |||||||||||
| 9D58 | CALL MiniMap_Addr | Calculate address in MiniMap table | ||||||||||
| 9D5B | LD A,(HL) | |||||||||||
| 9D5C | POP DE | |||||||||||
| 9D5D | POP HL | |||||||||||
| 9D5E | RET | |||||||||||
|
||||||||
|
If column or row is out of range 0..31 - returns flag Z=0; else, gets value from MiniMap table; if this value is $01, returns flag Z=1, in other case flag Z=0
|
||||||||
| MiniMap_Check | 9D5F | PUSH HL | ||||||
| 9D60 | PUSH AF | |||||||
| 9D61 | LD A,L | |||||||
| 9D62 | AND $E0 | Column value out of range 0..31 ? | ||||||
| 9D64 | JR NZ,MiniMap_Check_0 | |||||||
| 9D66 | LD A,H | |||||||
| 9D67 | AND $E0 | Row value out of range 0..31 ? | ||||||
| 9D69 | JR NZ,MiniMap_Check_0 | |||||||
| 9D6B | CALL MiniMap_Get | Calc address in MiniMap and Get | ||||||
| 9D6E | LD L,A | |||||||
| 9D6F | POP AF | |||||||
| 9D70 | DEC L | |||||||
| 9D71 | POP HL | |||||||
| 9D72 | RET | |||||||
| MiniMap_Check_0 | 9D73 | POP AF | ||||||
| 9D74 | LD L,$01 | |||||||
| 9D76 | INC L | |||||||
| 9D77 | POP HL | |||||||
| 9D78 | RET | |||||||
|
||||||||||
| MiniMap_Set | 9D79 | PUSH HL | ||||||||
| 9D7A | PUSH DE | |||||||||
| 9D7B | PUSH AF | |||||||||
| 9D7C | CALL MiniMap_Addr | Calculate address in the mini-map (MiniMap table) | ||||||||
| 9D7F | POP AF | |||||||||
| 9D80 | LD (HL),A | store value in map cell | ||||||||
| 9D81 | POP DE | |||||||||
| 9D82 | POP HL | |||||||||
| 9D83 | RET | |||||||||
|
Used by the routines at PrepareMiniMap, CarveTunnelLeft, CarveTunnelRight, PlaceStaticObjects, SelectRandomObjects, B213, BD83, InitLevel, SpawnObjectGroup and PlaceObjectsRandom.
|
||||||||
|
Calculate next number in pseudo-random sequence
|
||||||||
| NextRandom | 9D84 | LD HL,(RANDOM) | ||||||
| 9D87 | LD D,H | |||||||
| 9D88 | LD E,L | |||||||
| 9D89 | ADD HL,HL | x2 | ||||||
| 9D8A | ADD HL,HL | x4 | ||||||
| 9D8B | ADD HL,HL | x8 | ||||||
| 9D8C | ADD HL,HL | x16 | ||||||
| 9D8D | PUSH HL | |||||||
| 9D8E | ADD HL,HL | x32 | ||||||
| 9D8F | EX (SP),HL | |||||||
| 9D90 | OR A | |||||||
| 9D91 | SBC HL,DE | HL = x15 | ||||||
| 9D93 | POP BC | BC = x32 | ||||||
| 9D94 | ADD HL,BC | x47 | ||||||
| 9D95 | ADD HL,HL | x94 | ||||||
| 9D96 | ADD HL,HL | x188 | ||||||
| 9D97 | ADD HL,HL | x376 | ||||||
| 9D98 | ADD HL,DE | x377 | ||||||
| 9D99 | ADD HL,HL | x754 | ||||||
| 9D9A | ADD HL,HL | x1508 | ||||||
| 9D9B | ADD HL,DE | x1509 | ||||||
| 9D9C | LD DE,$0029 | |||||||
| 9D9F | ADD HL,DE | |||||||
| 9DA0 | LD (RANDOM),HL | (RANDOM) := (RANDOM) * 1509 + 41 | ||||||
| 9DA3 | RET | |||||||
|
|
||||
| 9DA4 | DEFB $AF | |||
|
Used by the routine at PrepareMiniMap.
|
||||||||||||
| FillBlock | 9DA5 | LD (HL),A | ||||||||||
| 9DA6 | INC HL | |||||||||||
| 9DA7 | DJNZ FillBlock | |||||||||||
| 9DA9 | RET | |||||||||||
|
Builds the 32x32 world map: fills border walls and open water, carves the Octopus starting room, then runs the random-walk tunnel carvers (CarveTunnelLeft, CarveTunnelRight) and finally scatters static objects across the result (PlaceStaticObjects).
|
||||
| PrepareMiniMap | 9DAA | LD HL,$ACBF | $ACBF = $AC5D + 3 * 32 + 2: row 3 column 2 | |
| 9DAD | LD B,$1C | |||
| 9DAF | LD A,$16 | |||
| 9DB1 | CALL FillBlock | Fill block at $ACBF with $16 | ||
| 9DB4 | LD (HL),$06 | ($ACDB) <- $06 | ||
| 9DB6 | INC HL | HL = $ACDC | ||
| 9DB7 | LD B,$22 | |||
| 9DB9 | LD A,$01 | |||
| 9DBB | CALL FillBlock | Fill block at $ACDC with $01 | ||
| 9DBE | INC HL | HL = $ACFF | ||
| 9DBF | LD A,$1A | |||
| 9DC1 | LD B,$1C | |||
| 9DC3 | CALL FillBlock | Fill block at $ACFF with $1A | ||
| 9DC6 | INC HL | |||
| 9DC7 | INC HL | |||
| 9DC8 | LD (HL),$02 | |||
| 9DCA | LD HL,$AD3C | |||
| 9DCD | LD (HL),$06 | ($AD3C) <- $06 | ||
| 9DCF | INC HL | |||
| 9DD0 | INC HL | |||
| 9DD1 | INC HL | HL = $AD3F | ||
| 9DD2 | LD B,$1C | |||
| 9DD4 | LD A,$16 | |||
| 9DD6 | CALL FillBlock | Fill block at $AD3F with $16 | ||
| 9DD9 | INC HL | |||
| 9DDA | INC HL | HL = $AD5D; $AD5D = $AC5D + $100: row 8 column 0 | ||
| 9DDB | LD B,$00 | |||
| 9DDD | LD A,$01 | |||
| 9DDF | CALL FillBlock | Fill block at $AD5D with $01, 256 bytes: fill rows 8..15 | ||
| 9DE2 | CALL FillBlock | Fill block at $AE5D with $01, 256 bytes: fill rows 16..23 | ||
| 9DE5 | CALL FillBlock | Fill block at $AF5D with $01, 256 bytes: fill rows 24..31 | ||
| 9DE8 | CALL NextRandom | Random | ||
| 9DEB | LD A,H | |||
| 9DEC | AND $0F | |||
| 9DEE | ADD A,$07 | A = (Random:H) & 15 + 7 => 7..22 | ||
| 9DF0 | LD L,A | column | ||
| 9DF1 | LD H,$03 | row = 3 | ||
| 9DF3 | XOR A | |||
| 9DF4 | CALL MiniMap_Set | Calc address in MiniMap and Set value = 0 | ||
| 9DF7 | INC L | next column; column = 4 | ||
| 9DF8 | CALL MiniMap_Set | Calc address in MiniMap and Set value = 0 | ||
| 9DFB | LD H,$05 | row = 5 | ||
| 9DFD | CALL MiniMap_Set | Calc address in MiniMap and set value = 0 | ||
| 9E00 | DEC L | previous column; column = 3 | ||
| 9E01 | CALL MiniMap_Set | Calc address in MiniMap and Set value = 0 | ||
| 9E04 | DEC H | previous row; row = 4 | ||
| 9E05 | LD A,$1C | $1C = place for Octopus, left block | ||
| 9E07 | CALL MiniMap_Set | Calc address in MiniMap and Set value = $1C | ||
| 9E0A | INC A | = $1D = place for Octopus, right block | ||
| 9E0B | INC L | next column; column = 4 | ||
| 9E0C | CALL MiniMap_Set | Calc address in MiniMap and Set value = $1D | ||
| 9E0F | LD HL,$ACBD | $ACBD = $AC5D + 3 * 32: row 3 column 0 | ||
| 9E12 | LD B,$A0 | |||
| PrepareMiniMap_0 | 9E14 | LD A,(HL) | ||
| 9E15 | CP $02 | |||
| 9E17 | JR Z,PrepareMiniMap_2 | |||
| 9E19 | CP $06 | |||
| 9E1B | JR Z,PrepareMiniMap_2 | |||
| 9E1D | CP $16 | |||
| 9E1F | JR Z,PrepareMiniMap_2 | |||
| 9E21 | CP $1A | |||
| 9E23 | JR Z,PrepareMiniMap_2 | |||
| PrepareMiniMap_1 | 9E25 | INC HL | ||
| 9E26 | DJNZ PrepareMiniMap_0 | |||
| 9E28 | JR PrepareMiniMap_3 | |||
| PrepareMiniMap_2 | 9E2A | PUSH BC | ||
| 9E2B | PUSH HL | |||
| 9E2C | CALL NextRandom | Random | ||
| 9E2F | BIT 5,H | |||
| 9E31 | POP HL | |||
| 9E32 | POP BC | |||
| 9E33 | JR Z,PrepareMiniMap_1 | |||
| 9E35 | INC (HL) | |||
| 9E36 | JR PrepareMiniMap_1 | |||
| PrepareMiniMap_3 | 9E38 | LD A,$02 | ||
| 9E3A | LD ($5B09),A | |||
| 9E3D | CALL NextRandom | Random | ||
| 9E40 | LD A,H | |||
| 9E41 | AND $0F | |||
| 9E43 | ADD A,$07 | |||
| 9E45 | LD L,A | |||
| 9E46 | LD H,$07 | |||
| 9E48 | XOR A | |||
| 9E49 | CALL MiniMap_Set | Calc address in MiniMap and Set value = 0 | ||
| 9E4C | INC L | |||
| 9E4D | CALL MiniMap_Set | Calc address in MiniMap and Set value = 0 | ||
| 9E50 | INC H | |||
| 9E51 | LD A,$1D | $1D = place for Octopus, right block | ||
| 9E53 | CALL MiniMap_Set | Calc address in MiniMap and Set value = $1D | ||
| 9E56 | DEC A | = $1C = place for Octopus, left block | ||
| 9E57 | DEC L | |||
| 9E58 | CALL MiniMap_Set | Calc address in MiniMap and Set value = $1C | ||
| 9E5B | DEC L | |||
| 9E5C | LD ($5B07),HL | |||
| PrepareMiniMap_4 | 9E5F | LD HL,($5B07) | ||
| 9E62 | INC H | |||
| 9E63 | LD ($5B07),HL | |||
| 9E66 | LD A,($5B09) | |||
| 9E69 | LD ($5B0A),A | |||
| 9E6C | LD A,(LEVEL) | Game level 1..4 | ||
| 9E6F | ADD A,A | *2 | ||
| 9E70 | ADD A,A | *4 | ||
| 9E71 | ADD A,$10 | *4 + 16 | ||
| 9E73 | LD C,A | |||
| 9E74 | DEC C | |||
| 9E75 | CP H | |||
| 9E76 | JR NZ,PrepareMiniMap_7 | |||
| 9E78 | DEC H | |||
| 9E79 | LD A,($5B09) | |||
| 9E7C | LD B,A | |||
| PrepareMiniMap_5 | 9E7D | PUSH HL | ||
| 9E7E | PUSH BC | |||
| 9E7F | CALL NextRandom | Random | ||
| 9E82 | LD D,H | |||
| 9E83 | POP BC | |||
| 9E84 | POP HL | |||
| 9E85 | INC L | |||
| 9E86 | LD A,$16 | |||
| 9E88 | BIT 1,D | |||
| 9E8A | JR Z,PrepareMiniMap_6 | |||
| 9E8C | INC A | |||
| PrepareMiniMap_6 | 9E8D | CALL MiniMap_Set | Calc address in MiniMap and Set | |
| 9E90 | DJNZ PrepareMiniMap_5 | |||
| 9E92 | CALL PlaceStaticObjects | Generate static object placements (chests, pearls/shells) across the map | ||
| 9E95 | CALL SelectRandomObjects | Select 8 random objects from the object pool | ||
| 9E98 | RET | |||
| PrepareMiniMap_7 | 9E99 | PUSH HL | ||
| 9E9A | PUSH BC | |||
| 9E9B | CALL NextRandom | Random | ||
| 9E9E | POP BC | |||
| 9E9F | POP DE | |||
| 9EA0 | EX DE,HL | |||
| 9EA1 | LD A,D | |||
| 9EA2 | AND $07 | |||
| 9EA4 | JR NZ,PrepareMiniMap_10 | |||
| PrepareMiniMap_8 | 9EA6 | LD A,$02 | ||
| 9EA8 | BIT 6,D | |||
| 9EAA | JR Z,PrepareMiniMap_9 | |||
| 9EAC | INC A | |||
| PrepareMiniMap_9 | 9EAD | CALL MiniMap_Set | Calc address in MiniMap and Set | |
| 9EB0 | JP PrepareMiniMap_14 | |||
| PrepareMiniMap_10 | 9EB3 | LD A,E | ||
| 9EB4 | AND $C0 | |||
| 9EB6 | JR NZ,PrepareMiniMap_13 | |||
| PrepareMiniMap_11 | 9EB8 | BIT 4,E | ||
| 9EBA | JR Z,PrepareMiniMap_12 | |||
| 9EBC | LD A,L | |||
| 9EBD | OR A | |||
| 9EBE | JR Z,PrepareMiniMap_8 | |||
| 9EC0 | LD A,H | |||
| 9EC1 | CP C | |||
| 9EC2 | JR Z,PrepareMiniMap_12 | |||
| 9EC4 | LD A,$05 | |||
| 9EC6 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9EC9 | DEC L | |||
| 9ECA | LD ($5B07),HL | |||
| 9ECD | INC L | |||
| 9ECE | LD A,($5B0A) | |||
| 9ED1 | INC A | |||
| 9ED2 | LD ($5B0A),A | |||
| 9ED5 | JP PrepareMiniMap_14 | |||
| PrepareMiniMap_12 | 9ED8 | LD A,($5B09) | ||
| 9EDB | ADD A,L | |||
| 9EDC | CP $1E | |||
| 9EDE | JR Z,PrepareMiniMap_8 | |||
| 9EE0 | LD A,($5B0A) | |||
| 9EE3 | DEC A | |||
| 9EE4 | JR Z,PrepareMiniMap_8 | |||
| 9EE6 | LD ($5B0A),A | |||
| 9EE9 | LD A,($5B09) | |||
| 9EEC | DEC A | |||
| 9EED | LD ($5B09),A | |||
| 9EF0 | INC L | |||
| 9EF1 | LD ($5B07),HL | |||
| 9EF4 | LD A,$04 | |||
| 9EF6 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9EF9 | JR PrepareMiniMap_14 | |||
| PrepareMiniMap_13 | 9EFB | DEC L | ||
| 9EFC | CALL MiniMap_Check | Check value in MiniMap table | ||
| 9EFF | PUSH AF | |||
| 9F00 | INC L | |||
| 9F01 | POP AF | |||
| 9F02 | JR NZ,PrepareMiniMap_11 | |||
| 9F04 | LD A,$0B | |||
| 9F06 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9F09 | PUSH BC | |||
| 9F0A | CALL CarveTunnelLeft | Carve tunnel in world map | ||
| 9F0D | POP BC | |||
| PrepareMiniMap_14 | 9F0E | LD A,($5B09) | ||
| 9F11 | LD B,A | |||
| 9F12 | XOR A | |||
| PrepareMiniMap_15 | 9F13 | INC L | ||
| 9F14 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9F17 | DJNZ PrepareMiniMap_15 | |||
| 9F19 | INC L | |||
| 9F1A | PUSH HL | |||
| 9F1B | PUSH BC | |||
| 9F1C | CALL NextRandom | Random | ||
| 9F1F | POP BC | |||
| 9F20 | POP DE | |||
| 9F21 | EX DE,HL | |||
| 9F22 | LD A,D | |||
| 9F23 | AND $07 | |||
| 9F25 | JR NZ,PrepareMiniMap_18 | |||
| PrepareMiniMap_16 | 9F27 | LD A,$06 | ||
| 9F29 | BIT 6,D | |||
| 9F2B | JR NZ,PrepareMiniMap_17 | |||
| 9F2D | INC A | |||
| PrepareMiniMap_17 | 9F2E | CALL MiniMap_Set | Calc address in MiniMap and Set | |
| 9F31 | JP PrepareMiniMap_22 | |||
| PrepareMiniMap_18 | 9F34 | LD A,E | ||
| 9F35 | AND $C0 | |||
| 9F37 | JR NZ,PrepareMiniMap_21 | |||
| PrepareMiniMap_19 | 9F39 | BIT 4,E | ||
| 9F3B | JR Z,PrepareMiniMap_20 | |||
| 9F3D | LD A,($5B0A) | |||
| 9F40 | DEC A | |||
| 9F41 | JR Z,PrepareMiniMap_20 | |||
| 9F43 | LD ($5B0A),A | |||
| 9F46 | DEC L | |||
| 9F47 | LD A,$08 | |||
| 9F49 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9F4C | JP PrepareMiniMap_22 | |||
| PrepareMiniMap_20 | 9F4F | LD A,L | ||
| 9F50 | CP $1E | |||
| 9F52 | JR NC,PrepareMiniMap_16 | |||
| 9F54 | LD A,H | |||
| 9F55 | CP C | |||
| 9F56 | JR Z,PrepareMiniMap_16 | |||
| 9F58 | LD A,$09 | |||
| 9F5A | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9F5D | LD A,($5B0A) | |||
| 9F60 | INC A | |||
| 9F61 | LD ($5B0A),A | |||
| 9F64 | JP PrepareMiniMap_22 | |||
| PrepareMiniMap_21 | 9F67 | INC L | ||
| 9F68 | CALL MiniMap_Check | Check value in MiniMap table | ||
| 9F6B | PUSH AF | |||
| 9F6C | DEC L | |||
| 9F6D | POP AF | |||
| 9F6E | JR NZ,PrepareMiniMap_19 | |||
| 9F70 | LD A,$0A | |||
| 9F72 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9F75 | CALL CarveTunnelRight | Carve tunnel in world map | ||
| PrepareMiniMap_22 | 9F78 | LD A,($5B0A) | ||
| 9F7B | LD ($5B09),A | |||
| 9F7E | JP PrepareMiniMap_4 | |||
|
Used by the routine at PrepareMiniMap.
|
||||
|
Digs a winding cave through the map by stepping one cell at a time, mostly leftward, picking each next direction at random and stopping when it hits the map edge. It opens up solid cells into water and marks the tile borders so the passage stays connected.
|
||||
| CarveTunnelLeft | 9F81 | LD ($5B01),HL | save tunnel start position | |
| CarveTunnelLeft_0 | 9F84 | DEC L | ||
| 9F85 | PUSH HL | |||
| 9F86 | CALL NextRandom | Random | ||
| 9F89 | POP DE | |||
| 9F8A | EX DE,HL | |||
| 9F8B | LD A,D | pick digging direction from random bits | ||
| 9F8C | AND $02 | |||
| 9F8E | JR NZ,CarveTunnelLeft_6 | |||
| CarveTunnelLeft_1 | 9F90 | DEC L | ||
| 9F91 | CALL MiniMap_Check | Check value in MiniMap table | ||
| 9F94 | JR Z,CarveTunnelLeft_4 | |||
| 9F96 | LD A,L | |||
| 9F97 | CP $FF | |||
| 9F99 | JR NZ,CarveTunnelLeft_3 | |||
| 9F9B | LD L,$1F | |||
| 9F9D | CALL MiniMap_Get | Calc address in MiniMap and Get | ||
| 9FA0 | CP $14 | |||
| 9FA2 | JR NZ,CarveTunnelLeft_2 | |||
| 9FA4 | LD A,$0B | |||
| 9FA6 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9FA9 | LD L,$00 | |||
| 9FAB | LD A,$0A | |||
| 9FAD | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9FB0 | LD HL,($5B01) | |||
| 9FB3 | RET | |||
| CarveTunnelLeft_2 | 9FB4 | LD L,$FF | ||
| CarveTunnelLeft_3 | 9FB6 | INC L | ||
| 9FB7 | LD A,$15 | |||
| 9FB9 | CALL MiniMap_Set | Calc address in MiniMap and Set | ||
| 9FBC | LD HL,($5B01) | |||
| 9FBF | RET | |||
| CarveTunnelLeft_4 | 9FC0 | INC L | ||
| 9FC1 | BIT 7,E | branch by random sub-direction | ||
| 9FC3 | JR Z,CarveTunnelLeft_5 | |||
| 9FC5 | DEC H | |||
| 9FC6 | CALL MiniMap_Get | Calc address in MiniMap and Get | ||
| 9FC9 | INC H | |||
| 9FCA | SUB $10 | |||
| 9FCC | JR C,CarveTunnelLeft_5 | |||
| 9FCE | CP $04 | |||
| 9FD0 | JR NC,CarveTunnelLeft_5 | |||
| 9FD2 | LD A,$18 | |||
| 9FD4 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| 9FD7 | DEC H | |||
| 9FD8 | INC A | |||
| 9FD9 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| 9FDC | INC H | |||
| 9FDD | JP CarveTunnelLeft_0 | |||
| CarveTunnelLeft_5 | 9FE0 | LD A,D | ||
| 9FE1 | AND $03 | |||
| 9FE3 | ADD A,$10 | |||
| 9FE5 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| 9FE8 | JP CarveTunnelLeft_0 | |||
| CarveTunnelLeft_6 | 9FEB | BIT 6,E | branch by random sub-direction | |
| 9FED | JR NZ,CarveTunnelLeft_9 | |||
| 9FEF | INC H | |||
| 9FF0 | CALL MiniMap_Check | Check value in MiniMap table | ||
| 9FF3 | JR Z,CarveTunnelLeft_7 | |||
| 9FF5 | DEC H | |||
| 9FF6 | JR CarveTunnelLeft_1 | |||
| CarveTunnelLeft_7 | 9FF8 | DEC L | ||
| 9FF9 | CALL MiniMap_Check | Check value in MiniMap table | ||
| 9FFC | JR Z,CarveTunnelLeft_8 | |||
| 9FFE | INC L | |||
| 9FFF | DEC H | |||
| A000 | JR CarveTunnelLeft_1 | |||
| CarveTunnelLeft_8 | A002 | INC L | ||
| A003 | LD A,$0D | |||
| A005 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A008 | DEC H | |||
| A009 | DEC A | |||
| A00A | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A00D | INC H | |||
| A00E | JP CarveTunnelLeft_0 | |||
| CarveTunnelLeft_9 | A011 | LD A,$09 | stop if reached map edge | |
| A013 | CP H | |||
| A014 | JP Z,CarveTunnelLeft_1 | |||
| A017 | DEC H | |||
| A018 | CALL MiniMap_Check | Check value in MiniMap table | ||
| A01B | JR Z,CarveTunnelLeft_10 | |||
| A01D | INC H | |||
| A01E | JP CarveTunnelLeft_1 | |||
| CarveTunnelLeft_10 | A021 | DEC L | ||
| A022 | CALL MiniMap_Check | Check value in MiniMap table | ||
| A025 | JR Z,CarveTunnelLeft_11 | |||
| A027 | INC L | |||
| A028 | INC H | |||
| A029 | JP CarveTunnelLeft_1 | |||
| CarveTunnelLeft_11 | A02C | LD A,$0E | ||
| A02E | INC L | |||
| A02F | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A032 | INC H | |||
| A033 | INC A | |||
| A034 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A037 | DEC H | |||
| A038 | JP CarveTunnelLeft_0 | |||
|
Used by the routine at PrepareMiniMap.
|
||||
|
Mirror of CarveTunnelLeft: digs a random winding cave the same way but biased rightward, opening solid cells into water and marking tile borders until it reaches the map edge.
|
||||
| CarveTunnelRight | A03B | LD ($5B01),HL | save tunnel start position | |
| CarveTunnelRight_0 | A03E | INC L | ||
| A03F | PUSH HL | |||
| A040 | CALL NextRandom | Random | ||
| A043 | POP DE | |||
| A044 | EX DE,HL | |||
| A045 | LD A,D | pick digging direction from random bits | ||
| A046 | AND $04 | |||
| A048 | JR NZ,CarveTunnelRight_6 | |||
| CarveTunnelRight_1 | A04A | INC L | ||
| A04B | CALL MiniMap_Check | Check value in MiniMap table | ||
| A04E | JR Z,CarveTunnelRight_4 | |||
| A050 | LD A,L | |||
| A051 | AND $1F | |||
| A053 | JR NZ,CarveTunnelRight_3 | |||
| A055 | LD L,A | |||
| A056 | CALL MiniMap_Get | Calc address in MiniMap and Get | ||
| A059 | CP $15 | |||
| A05B | JR NZ,CarveTunnelRight_2 | |||
| A05D | LD A,$0A | |||
| A05F | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A062 | LD L,$1F | |||
| A064 | LD A,$0B | |||
| A066 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A069 | LD HL,($5B01) | |||
| A06C | RET | |||
| CarveTunnelRight_2 | A06D | LD L,$20 | ||
| CarveTunnelRight_3 | A06F | DEC L | ||
| A070 | LD A,$14 | |||
| A072 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A075 | LD HL,($5B01) | |||
| A078 | RET | |||
| CarveTunnelRight_4 | A079 | DEC L | ||
| A07A | BIT 7,E | branch by random sub-direction | ||
| A07C | JR Z,CarveTunnelRight_5 | |||
| A07E | DEC H | |||
| A07F | CALL MiniMap_Get | Calc address in MiniMap and Get | ||
| A082 | INC H | |||
| A083 | SUB $10 | |||
| A085 | JR C,CarveTunnelRight_5 | |||
| A087 | CP $04 | |||
| A089 | JR NC,CarveTunnelRight_5 | |||
| A08B | LD A,$18 | |||
| A08D | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A090 | DEC H | |||
| A091 | LD A,$19 | |||
| A093 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A096 | INC H | |||
| A097 | JP CarveTunnelRight_0 | |||
| CarveTunnelRight_5 | A09A | LD A,D | ||
| A09B | AND $03 | |||
| A09D | ADD A,$10 | |||
| A09F | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A0A2 | JP CarveTunnelRight_0 | |||
| CarveTunnelRight_6 | A0A5 | BIT 6,E | branch by random sub-direction | |
| A0A7 | JR NZ,CarveTunnelRight_9 | |||
| A0A9 | INC H | |||
| A0AA | CALL MiniMap_Check | Check value in MiniMap table | ||
| A0AD | JR Z,CarveTunnelRight_7 | |||
| A0AF | DEC H | |||
| A0B0 | JR CarveTunnelRight_1 | |||
| CarveTunnelRight_7 | A0B2 | INC L | ||
| A0B3 | CALL MiniMap_Check | Check value in MiniMap table | ||
| A0B6 | JR Z,CarveTunnelRight_8 | |||
| A0B8 | DEC L | |||
| A0B9 | DEC H | |||
| A0BA | JR CarveTunnelRight_1 | |||
| CarveTunnelRight_8 | A0BC | DEC L | ||
| A0BD | LD A,$0F | |||
| A0BF | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A0C2 | DEC H | |||
| A0C3 | DEC A | |||
| A0C4 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A0C7 | INC H | |||
| A0C8 | JP CarveTunnelRight_0 | |||
| CarveTunnelRight_9 | A0CB | LD A,$09 | stop if reached map edge | |
| A0CD | CP H | |||
| A0CE | JP Z,CarveTunnelRight_1 | |||
| A0D1 | DEC H | |||
| A0D2 | CALL MiniMap_Check | Check value in MiniMap table | ||
| A0D5 | JR Z,CarveTunnelRight_10 | |||
| A0D7 | INC H | |||
| A0D8 | JP CarveTunnelRight_1 | |||
| CarveTunnelRight_10 | A0DB | INC L | ||
| A0DC | CALL MiniMap_Check | Check value in MiniMap table | ||
| A0DF | JR Z,CarveTunnelRight_11 | |||
| A0E1 | INC H | |||
| A0E2 | DEC L | |||
| A0E3 | JP CarveTunnelRight_1 | |||
| CarveTunnelRight_11 | A0E6 | LD A,$0C | ||
| A0E8 | DEC L | |||
| A0E9 | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A0EC | INC H | |||
| A0ED | INC A | |||
| A0EE | CALL MiniMap_Set | Calc address in MiniMap and Get | ||
| A0F1 | DEC H | |||
| A0F2 | JP CarveTunnelRight_0 | |||
|
Used by the routine at GetTileInBlock.
|
||||||||
| A0F5 | PUSH HL | HL[15:11] -> HL[9:5]; HL[7:3] -> HL[4:0]; as a result, we have HL[9:0] filled with significant bits; 10 bits means 1024 addressed bytes | ||||||
| A0F6 | SRL H | |||||||
| A0F8 | SRL H | |||||||
| A0FA | SRL H | |||||||
| A0FC | SRL H | |||||||
| A0FE | RR L | |||||||
| A100 | SRL H | |||||||
| A102 | RR L | |||||||
| A104 | SRL H | |||||||
| A106 | RR L | |||||||
| A108 | LD DE,MiniMap | index into mini-map row table | ||||||
| A10B | ADD HL,DE | |||||||
| A10C | LD H,(HL) | get relief block number for this row | ||||||
| A10D | POP DE | column bits 0..2 (within-tile column) | ||||||
| A10E | LD A,E | |||||||
| A10F | AND $07 | |||||||
| A111 | LD E,A | |||||||
| A112 | LD A,D | extract row bits 0..2 shifted to top | ||||||
| A113 | RRCA | |||||||
| A114 | RRCA | |||||||
| A115 | RRCA | |||||||
| A116 | AND $E0 | |||||||
| A118 | LD L,A | combine into L | ||||||
| A119 | SRL H | shift block number into position | ||||||
| A11B | RR L | |||||||
| A11D | SRL H | |||||||
| A11F | RR L | |||||||
| A121 | LD A,L | combine block offset with column bits | ||||||
| A122 | OR E | |||||||
| A123 | LD L,A | |||||||
| A124 | LD DE,$A4DD | add relief data base address | ||||||
| A127 | ADD HL,DE | |||||||
| A128 | RET | |||||||
|
||||||||||||
| GetTileInBlock | A129 | PUSH HL | ||||||||||
| A12A | PUSH DE | |||||||||||
| A12B | CALL $A0F5 | Calculate address in relief block | ||||||||||
| A12E | LD A,(HL) | |||||||||||
| A12F | POP DE | |||||||||||
| A130 | POP HL | |||||||||||
| A131 | RET | |||||||||||
|
|
||||
| A132 | DEFB $E5,$D5,$F5,$CD,$F5,$A0,$F1,$5F | |||
| A13A | DEFB $7E,$E6,$3F,$7B,$D1,$E1,$C9,$E5 | |||
| A142 | DEFB $D5,$F5,$CD,$F5,$A0,$F1,$D1,$BE | |||
| A14A | DEFB $E1,$C9 | |||
|
||||||||
| GetScrAttrAddr | A14C | PUSH DE | ||||||
| A14D | LD A,L | save column, clear L for shift | ||||||
| A14E | LD L,$00 | |||||||
| A150 | SRL H | shift row into place | ||||||
| A152 | RR L | |||||||
| A154 | SRL H | |||||||
| A156 | RR L | |||||||
| A158 | SRL H | |||||||
| A15A | RR L | |||||||
| A15C | OR L | combine row offset with column | ||||||
| A15D | LD L,A | |||||||
| A15E | LD DE,$5800 | add attributes base address | ||||||
| A161 | ADD HL,DE | |||||||
| A162 | POP DE | |||||||
| A163 | RET | |||||||
|
Used by the routines at DrawTile16x8, DrawTile8x8, DrawTileXor8x8, DrawTileXor16x8, B470, PrintCharRt, DFD5 and EADE.
|
||||||||||||
| GetScrAddr | A164 | PUSH DE | ||||||||||
| A165 | LD A,H | |||||||||||
| A166 | LD D,A | |||||||||||
| A167 | AND $18 | build screen high byte | ||||||||||
| A169 | SET 6,A | |||||||||||
| A16B | LD H,A | |||||||||||
| A16C | LD A,D | |||||||||||
| A16D | RRCA | extract pixel-row bits | ||||||||||
| A16E | RRCA | |||||||||||
| A16F | RRCA | |||||||||||
| A170 | AND $E0 | |||||||||||
| A172 | OR L | combine with column | ||||||||||
| A173 | LD L,A | |||||||||||
| A174 | POP DE | |||||||||||
| A175 | RET | |||||||||||
|
Used by the routine at DrawStatics.
|
||||||||||
| DrawTile16x8 | A176 | CALL GetScrAddr | Convert char coords HL to ZX screen address | |||||||
| A179 | LD B,$08 | 8 pixel lines | ||||||||
| DrawTile16x8_0 | A17B | LD A,(DE) | write left column byte | |||||||
| A17C | LD (HL),A | |||||||||
| A17D | INC DE | |||||||||
| A17E | INC L | |||||||||
| A17F | LD A,(DE) | write right column byte, next line | ||||||||
| A180 | LD (HL),A | |||||||||
| A181 | DEC L | |||||||||
| A182 | INC H | |||||||||
| A183 | INC DE | |||||||||
| A184 | DJNZ DrawTile16x8_0 | |||||||||
| A186 | RET | |||||||||
|
Used by the routine at DrawStatics.
|
||||||||||
| DrawTile8x8 | A187 | CALL GetScrAddr | Convert char coords HL to ZX screen address | |||||||
| A18A | LD B,$08 | 8 pixel lines | ||||||||
| DrawTile8x8_0 | A18C | LD A,(DE) | write byte, next line | |||||||
| A18D | LD (HL),A | |||||||||
| A18E | INC DE | |||||||||
| A18F | INC H | |||||||||
| A190 | DJNZ DrawTile8x8_0 | |||||||||
| A192 | RET | |||||||||
|
Used by the routine at PrepareMiniMap.
|
||||
|
Scans every mini-map cell, placing two chests at fixed map edges, then walks each cell's 16-tile relief block looking for pairs of open-water tiles, randomly skipping most candidates, and writes a record (position + random attribute) for each accepted spot, up to 100 objects.
|
||||
| PlaceStaticObjects | A193 | LD HL,$20FF | start scan at bottom-right map cell | |
| A196 | LD DE,TableStatics | Table of static objects on the map | ||
| A199 | XOR A | reset placed-object count; init chest counter | ||
| A19A | LD ($5B00),A | |||
| A19D | LD A,$03 | |||
| A19F | LD ($5B0F),A | |||
| PlaceStaticObjects_0 | A1A2 | INC L | advance to next map column | |
| A1A3 | LD A,L | |||
| A1A4 | AND $1F | 0..31 | ||
| A1A6 | JR NZ,PlaceStaticObjects_1 | check column wrapped | ||
| A1A8 | LD L,A | wrap column, advance row | ||
| A1A9 | DEC H | |||
| A1AA | JR NZ,PlaceStaticObjects_1 | |||
| A1AC | LD A,$80 | end of list marker | ||
| A1AE | LD (DE),A | |||
| A1AF | RET | |||
| PlaceStaticObjects_1 | A1B0 | CALL MiniMap_Get | Calc address in MiniMap and Get | |
| A1B3 | LD C,A | |||
| A1B4 | PUSH HL | |||
| A1B5 | CP $14 | check for special tile types | ||
| A1B7 | JR Z,PlaceStaticObjects_2 | |||
| A1B9 | CP $15 | |||
| A1BB | JR NZ,PlaceStaticObjects_4 | |||
| A1BD | LD A,L | only at map column 0 | ||
| A1BE | OR A | |||
| A1BF | JR NZ,PlaceStaticObjects_4 | |||
| A1C1 | LD L,$04 | compute chest spawn coords (left side) | ||
| A1C3 | LD A,H | |||
| A1C4 | ADD A,A | |||
| A1C5 | ADD A,A | |||
| A1C6 | ADD A,A | |||
| A1C7 | ADD A,$04 | |||
| A1C9 | LD H,A | |||
| A1CA | JR PlaceStaticObjects_3 | |||
| PlaceStaticObjects_2 | A1CC | LD A,L | only at map column 31 | |
| A1CD | CP $1F | |||
| A1CF | JR NZ,PlaceStaticObjects_4 | |||
| A1D1 | LD L,$FB | compute chest spawn coords (right side) | ||
| A1D3 | LD A,H | |||
| A1D4 | ADD A,A | |||
| A1D5 | ADD A,A | |||
| A1D6 | ADD A,A | |||
| A1D7 | ADD A,$06 | |||
| A1D9 | LD H,A | |||
| PlaceStaticObjects_3 | A1DA | LD A,($5B0F) | skip if no chests left | |
| A1DD | OR A | |||
| A1DE | JR Z,PlaceStaticObjects_4 | |||
| A1E0 | LD A,$40 | write chest flags byte | ||
| A1E2 | LD (DE),A | |||
| A1E3 | INC DE | |||
| A1E4 | LD A,L | write chest column | ||
| A1E5 | LD (DE),A | |||
| A1E6 | INC DE | |||
| A1E7 | LD A,H | write chest row | ||
| A1E8 | LD (DE),A | |||
| A1E9 | INC DE | |||
| A1EA | LD A,($5B0F) | write chest index | ||
| A1ED | LD (DE),A | |||
| A1EE | INC DE | |||
| A1EF | DEC A | one fewer chest to place | ||
| A1F0 | LD ($5B0F),A | |||
| A1F3 | POP HL | |||
| A1F4 | JR PlaceStaticObjects_0 | |||
| PlaceStaticObjects_4 | A1F6 | LD H,C | compute relief-block scan address | |
| A1F7 | LD L,$C0 | |||
| A1F9 | SRL H | |||
| A1FB | RR L | |||
| A1FD | SRL H | |||
| A1FF | RR L | |||
| A201 | LD BC,$A4DD | add relief data base | ||
| A204 | PUSH HL | |||
| A205 | ADD HL,BC | |||
| A206 | POP BC | |||
| A207 | LD B,$10 | |||
| PlaceStaticObjects_5 | A209 | LD A,(HL) | first tile must be open water | |
| A20A | INC HL | |||
| A20B | INC C | |||
| A20C | SUB $1C | |||
| A20E | JR C,PlaceStaticObjects_7 | |||
| A210 | CP $04 | |||
| A212 | JR NC,PlaceStaticObjects_7 | |||
| A214 | LD A,(HL) | second tile must be open water | ||
| A215 | INC HL | |||
| A216 | INC C | |||
| A217 | SUB $1C | |||
| A219 | JR C,PlaceStaticObjects_7 | |||
| A21B | CP $04 | |||
| A21D | JR NC,PlaceStaticObjects_7 | |||
| A21F | LD A,C | skip 7 of 8 candidate tiles (spacing) | ||
| A220 | AND $07 | |||
| A222 | JR Z,PlaceStaticObjects_7 | |||
| A224 | PUSH HL | |||
| A225 | PUSH DE | |||
| A226 | PUSH BC | |||
| A227 | CALL NextRandom | Random | ||
| A22A | POP BC | random 50% skip | ||
| A22B | POP DE | |||
| A22C | LD A,H | |||
| A22D | POP HL | |||
| A22E | AND $02 | |||
| A230 | JR NZ,PlaceStaticObjects_7 | |||
| A232 | LD A,($5B00) | stop once 100 objects placed | ||
| A235 | INC A | |||
| A236 | CP $64 | |||
| A238 | JR Z,PlaceStaticObjects_7 | |||
| A23A | LD ($5B00),A | store count; write object type flag | ||
| A23D | LD A,$0A | |||
| A23F | LD (DE),A | |||
| A240 | EX (SP),HL | |||
| A241 | LD A,H | |||
| A242 | CP $04 | |||
| A244 | JR C,PlaceStaticObjects_6 | |||
| A246 | LD A,$00 | |||
| A248 | LD (DE),A | |||
| PlaceStaticObjects_6 | A249 | INC DE | compute column bits | |
| A24A | LD A,C | |||
| A24B | DEC A | |||
| A24C | DEC A | |||
| A24D | AND $07 | |||
| A24F | PUSH DE | |||
| A250 | LD D,A | |||
| A251 | LD A,L | |||
| A252 | ADD A,A | |||
| A253 | ADD A,A | |||
| A254 | ADD A,A | |||
| A255 | AND $F8 | |||
| A257 | OR D | |||
| A258 | POP DE | |||
| A259 | LD (DE),A | |||
| A25A | INC DE | |||
| A25B | PUSH DE | |||
| A25C | LD A,H | |||
| A25D | ADD A,A | |||
| A25E | ADD A,A | |||
| A25F | ADD A,A | |||
| A260 | AND $F8 | |||
| A262 | LD D,A | |||
| A263 | LD A,C | |||
| A264 | AND $38 | |||
| A266 | RRCA | |||
| A267 | RRCA | |||
| A268 | RRCA | |||
| A269 | OR D | |||
| A26A | POP DE | |||
| A26B | EX (SP),HL | |||
| A26C | LD (DE),A | |||
| A26D | INC DE | |||
| A26E | LD A,(RANDOM) | get current Random | ||
| A271 | AND $7F | random 0..127 for extra field | ||
| A273 | LD (DE),A | |||
| A274 | INC DE | |||
| A275 | INC HL | |||
| A276 | INC C | |||
| A277 | DEC B | |||
| PlaceStaticObjects_7 | A278 | DJNZ PlaceStaticObjects_5 | ||
| A27A | POP HL | |||
| A27B | JP PlaceStaticObjects_0 | |||
|
|
||||
|
1st byte = flags; 2nd byte = column 0..255, 3rd byte = row 0..255
|
||||
| TableStatics | A27E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||
| A28E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A29E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2AE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2BE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2CE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2DE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2EE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A2FE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A30E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A31E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A32E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A33E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A34E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A35E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A36E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A37E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A38E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A39E | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3AE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3BE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3CE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3DE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3EE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A3FE | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A40C | DEFB $B2,$1D,$EA,$53,$DE,$69,$DE,$01,$53,$48,$46,$B5,$7A,$EA,$5E | |||
|
|
||||
| A41B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A42B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A43B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A44B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A45B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A46B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A47B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A48B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A49B | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4AB | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4BB | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4CB | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4DB | DEFB $00,$00 | |||
|
|
||||
|
Each block has 8*8 = 64 tiles, tiles defined at 9134
|
||||
| A4DD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | $00 |
||
| A4E5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4ED | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4F5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A4FD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A505 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A50D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A515 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A51D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | $01 |
||
| A525 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A52D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A535 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A53D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A545 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A54D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A555 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A55D | DEFB $01,$01,$01,$01,$01,$01,$01,$09 | $02 |
||
| A565 | DEFB $01,$01,$01,$01,$01,$01,$08,$32 | |||
| A56D | DEFB $01,$01,$01,$01,$01,$01,$12,$32 | |||
| A575 | DEFB $01,$01,$01,$01,$01,$0B,$00,$32 | |||
| A57D | DEFB $01,$01,$01,$01,$01,$30,$00,$32 | |||
| A585 | DEFB $01,$01,$01,$01,$01,$01,$31,$32 | |||
| A58D | DEFB $01,$01,$01,$01,$01,$01,$01,$11 | |||
| A595 | DEFB $01,$01,$01,$01,$01,$01,$01,$03 | |||
| A59D | DEFB $01,$01,$01,$01,$01,$01,$01,$29 | $03 |
||
| A5A5 | DEFB $01,$01,$01,$01,$01,$01,$01,$0A | |||
| A5AD | DEFB $01,$01,$01,$09,$15,$16,$17,$00 | |||
| A5B5 | DEFB $01,$01,$01,$02,$00,$04,$26,$03 | |||
| A5BD | DEFB $01,$01,$01,$01,$25,$01,$01,$2A | |||
| A5C5 | DEFB $01,$01,$01,$01,$01,$01,$01,$2B | |||
| A5CD | DEFB $01,$01,$01,$01,$01,$01,$01,$08 | |||
| A5D5 | DEFB $01,$01,$01,$01,$01,$01,$01,$30 | |||
| A5DD | DEFB $12,$00,$00,$00,$00,$00,$00,$00 | $04 |
||
| A5E5 | DEFB $02,$00,$00,$00,$00,$00,$00,$00 | |||
| A5ED | DEFB $01,$27,$30,$00,$00,$00,$00,$00 | |||
| A5F5 | DEFB $01,$01,$01,$31,$00,$00,$00,$00 | |||
| A5FD | DEFB $01,$01,$01,$2B,$00,$00,$00,$00 | |||
| A605 | DEFB $01,$01,$01,$01,$03,$00,$00,$00 | |||
| A60D | DEFB $01,$01,$01,$01,$01,$25,$24,$02 | |||
| A615 | DEFB $01,$01,$01,$01,$01,$01,$01,$28 | |||
| A61D | DEFB $01,$01,$01,$01,$01,$01,$01,$09 | $05 |
||
| A625 | DEFB $01,$01,$01,$01,$0B,$14,$15,$00 | |||
| A62D | DEFB $09,$15,$17,$16,$32,$00,$00,$00 | |||
| A635 | DEFB $13,$32,$32,$32,$00,$00,$00,$00 | |||
| A63D | DEFB $03,$32,$32,$00,$00,$00,$00,$00 | |||
| A645 | DEFB $2A,$32,$00,$00,$00,$00,$00,$00 | |||
| A64D | DEFB $0B,$00,$00,$00,$00,$00,$00,$00 | |||
| A655 | DEFB $13,$00,$00,$00,$00,$00,$00,$00 | |||
| A65D | DEFB $0F,$01,$01,$01,$01,$01,$01,$01 | $06 |
||
| A665 | DEFB $32,$0E,$01,$01,$01,$01,$01,$01 | |||
| A66D | DEFB $32,$00,$14,$15,$16,$0D,$01,$01 | |||
| A675 | DEFB $32,$00,$00,$00,$00,$05,$01,$01 | |||
| A67D | DEFB $32,$00,$1C,$07,$26,$01,$01,$01 | |||
| A685 | DEFB $32,$06,$01,$01,$01,$01,$01,$01 | |||
| A68D | DEFB $07,$01,$01,$01,$01,$01,$01,$01 | |||
| A695 | DEFB $20,$01,$01,$01,$01,$01,$01,$01 | |||
| A69D | DEFB $22,$01,$01,$01,$01,$01,$01,$01 | $07 |
||
| A6A5 | DEFB $21,$01,$01,$01,$01,$01,$01,$01 | |||
| A6AD | DEFB $0C,$01,$09,$14,$16,$17,$0D,$01 | |||
| A6B5 | DEFB $32,$14,$00,$00,$00,$00,$00,$23 | |||
| A6BD | DEFB $32,$00,$00,$00,$00,$00,$00,$0C | |||
| A6C5 | DEFB $32,$06,$27,$03,$00,$00,$00,$19 | |||
| A6CD | DEFB $00,$22,$01,$01,$31,$00,$00,$07 | |||
| A6D5 | DEFB $04,$01,$01,$01,$01,$03,$04,$01 | |||
| A6DD | DEFB $00,$00,$00,$00,$00,$00,$00,$1B | $08 |
||
| A6E5 | DEFB $00,$00,$00,$00,$00,$00,$00,$07 | |||
| A6ED | DEFB $00,$00,$00,$00,$32,$32,$05,$01 | |||
| A6F5 | DEFB $00,$00,$05,$24,$03,$00,$0D,$01 | |||
| A6FD | DEFB $00,$00,$20,$01,$01,$02,$07,$01 | |||
| A705 | DEFB $00,$1A,$01,$01,$01,$01,$01,$01 | |||
| A70D | DEFB $00,$04,$01,$01,$01,$01,$01,$01 | |||
| A715 | DEFB $05,$01,$01,$01,$01,$01,$01,$01 | |||
| A71D | DEFB $22,$01,$01,$01,$01,$01,$01,$01 | $09 |
||
| A725 | DEFB $0D,$01,$01,$01,$01,$01,$01,$01 | |||
| A72D | DEFB $00,$0E,$01,$01,$01,$01,$01,$01 | |||
| A735 | DEFB $00,$00,$0F,$01,$01,$01,$01,$01 | |||
| A73D | DEFB $00,$00,$00,$15,$16,$0F,$01,$01 | |||
| A745 | DEFB $00,$00,$00,$00,$00,$07,$01,$01 | |||
| A74D | DEFB $00,$00,$00,$00,$00,$0C,$01,$01 | |||
| A755 | DEFB $00,$00,$00,$00,$00,$00,$14,$0D | |||
| A75D | DEFB $15,$16,$0D,$2E,$2F,$01,$01,$01 | $0A |
||
| A765 | DEFB $32,$32,$32,$32,$32,$17,$0F,$2C | |||
| A76D | DEFB $32,$32,$32,$00,$00,$00,$00,$00 | |||
| A775 | DEFB $32,$32,$32,$00,$00,$00,$00,$00 | |||
| A77D | DEFB $32,$32,$32,$00,$00,$00,$00,$00 | |||
| A785 | DEFB $32,$32,$32,$00,$00,$00,$00,$00 | |||
| A78D | DEFB $32,$32,$32,$32,$06,$26,$25,$27 | |||
| A795 | DEFB $04,$02,$1E,$04,$01,$01,$01,$01 | |||
| A79D | DEFB $01,$0A,$15,$16,$0D,$01,$01,$09 | $0B |
||
| A7A5 | DEFB $0B,$32,$32,$32,$32,$0C,$0A,$00 | |||
| A7AD | DEFB $00,$00,$00,$00,$00,$32,$32,$32 | |||
| A7B5 | DEFB $00,$00,$00,$00,$00,$32,$32,$32 | |||
| A7BD | DEFB $00,$00,$00,$00,$00,$32,$32,$32 | |||
| A7C5 | DEFB $32,$32,$32,$1D,$32,$32,$32,$32 | |||
| A7CD | DEFB $30,$00,$06,$01,$02,$00,$32,$32 | |||
| A7D5 | DEFB $01,$25,$01,$01,$01,$03,$1E,$1D | |||
| A7DD | DEFB $01,$01,$01,$01,$2D,$01,$01,$01 | $0C |
||
| A7E5 | DEFB $01,$01,$01,$0A,$00,$0D,$2E,$2D | |||
| A7ED | DEFB $09,$14,$15,$00,$00,$00,$00,$00 | |||
| A7F5 | DEFB $02,$32,$00,$00,$00,$00,$00,$00 | |||
| A7FD | DEFB $29,$00,$00,$00,$00,$00,$00,$00 | |||
| A805 | DEFB $2A,$00,$00,$00,$00,$00,$00,$00 | |||
| A80D | DEFB $08,$00,$00,$00,$00,$00,$00,$07 | |||
| A815 | DEFB $10,$00,$00,$00,$00,$00,$18,$01 | |||
| A81D | DEFB $30,$00,$00,$00,$00,$00,$19,$01 | $0D |
||
| A825 | DEFB $0B,$00,$00,$00,$00,$00,$04,$01 | |||
| A82D | DEFB $00,$00,$00,$00,$00,$00,$21,$01 | |||
| A835 | DEFB $00,$00,$00,$00,$00,$07,$01,$01 | |||
| A83D | DEFB $00,$00,$00,$00,$32,$0F,$01,$01 | |||
| A845 | DEFB $00,$00,$00,$32,$32,$32,$23,$01 | |||
| A84D | DEFB $11,$32,$32,$32,$1F,$06,$01,$01 | |||
| A855 | DEFB $24,$27,$02,$05,$01,$01,$01,$01 | |||
| A85D | DEFB $01,$01,$01,$01,$01,$2D,$2E,$01 | $0E |
||
| A865 | DEFB $2E,$2D,$2C,$2F,$0A,$00,$07,$01 | |||
| A86D | DEFB $00,$00,$00,$00,$00,$1A,$01,$01 | |||
| A875 | DEFB $00,$00,$00,$00,$00,$00,$23,$01 | |||
| A87D | DEFB $00,$00,$00,$00,$00,$00,$0F,$01 | |||
| A885 | DEFB $00,$00,$00,$00,$00,$00,$00,$22 | |||
| A88D | DEFB $10,$00,$00,$00,$00,$00,$00,$23 | |||
| A895 | DEFB $27,$00,$00,$00,$00,$00,$00,$0C | |||
| A89D | DEFB $01,$12,$00,$00,$00,$00,$00,$1A | $0F |
||
| A8A5 | DEFB $08,$32,$00,$00,$00,$00,$00,$18 | |||
| A8AD | DEFB $03,$32,$00,$00,$00,$00,$00,$00 | |||
| A8B5 | DEFB $01,$30,$00,$00,$00,$00,$00,$00 | |||
| A8BD | DEFB $01,$01,$27,$02,$00,$00,$00,$00 | |||
| A8C5 | DEFB $01,$01,$01,$01,$03,$00,$1F,$1E | |||
| A8CD | DEFB $01,$01,$01,$01,$01,$24,$01,$01 | |||
| A8D5 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A8DD | DEFB $01,$09,$15,$17,$14,$16,$0C,$01 | $10 |
||
| A8E5 | DEFB $08,$32,$32,$32,$32,$32,$32,$0D | |||
| A8ED | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A8F5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A8FD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A905 | DEFB $32,$32,$32,$32,$07,$26,$31,$32 | |||
| A90D | DEFB $12,$32,$32,$06,$01,$01,$01,$25 | |||
| A915 | DEFB $30,$1D,$05,$01,$01,$01,$01,$01 | |||
| A91D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | $11 |
||
| A925 | DEFB $09,$14,$17,$16,$16,$14,$17,$0E | |||
| A92D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A935 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A93D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A945 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A94D | DEFB $03,$1C,$1F,$1E,$1C,$1E,$1F,$04 | |||
| A955 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A95D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | $12 |
||
| A965 | DEFB $01,$01,$01,$01,$2F,$2E,$2E,$2C | |||
| A96D | DEFB $0C,$2C,$2D,$08,$32,$32,$32,$32 | |||
| A975 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A97D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A985 | DEFB $32,$32,$32,$32,$04,$25,$26,$30 | |||
| A98D | DEFB $24,$25,$26,$27,$01,$01,$01,$01 | |||
| A995 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A99D | DEFB $01,$2D,$0B,$15,$14,$0F,$01,$01 | $13 |
||
| A9A5 | DEFB $09,$32,$32,$32,$32,$00,$0D,$2C | |||
| A9AD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A9B5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| A9BD | DEFB $32,$32,$32,$1D,$02,$32,$32,$32 | |||
| A9C5 | DEFB $32,$04,$26,$01,$2A,$1C,$32,$32 | |||
| A9CD | DEFB $24,$01,$01,$01,$01,$01,$02,$07 | |||
| A9D5 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| A9DD | DEFB $01,$01,$2C,$2E,$2D,$01,$01,$01 | $14 |
||
| A9E5 | DEFB $2C,$09,$00,$00,$00,$0C,$01,$01 | |||
| A9ED | DEFB $32,$32,$32,$32,$00,$00,$15,$0F | |||
| A9F5 | DEFB $32,$32,$32,$32,$00,$00,$00,$06 | |||
| A9FD | DEFB $32,$32,$32,$00,$00,$00,$00,$22 | |||
| AA05 | DEFB $32,$1D,$00,$00,$00,$00,$00,$20 | |||
| AA0D | DEFB $25,$01,$30,$1E,$1F,$1D,$00,$0E | |||
| AA15 | DEFB $01,$01,$01,$01,$01,$01,$03,$07 | |||
| AA1D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | $15 |
||
| AA25 | DEFB $01,$01,$01,$01,$01,$01,$01,$2F | |||
| AA2D | DEFB $01,$2F,$2C,$2D,$0B,$16,$17,$00 | |||
| AA35 | DEFB $2A,$1F,$00,$00,$00,$00,$32,$32 | |||
| AA3D | DEFB $01,$01,$24,$02,$26,$31,$32,$32 | |||
| AA45 | DEFB $01,$01,$01,$01,$01,$01,$30,$00 | |||
| AA4D | DEFB $01,$01,$01,$01,$01,$01,$01,$26 | |||
| AA55 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| AA5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | $16 |
||
| AA65 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AA6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AA75 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AA7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AA85 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AA8D | DEFB $00,$00,$00,$00,$1D,$00,$00,$00 | |||
| AA95 | DEFB $1E,$1F,$1C,$04,$01,$02,$1D,$1C | |||
| AA9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | $17 |
||
| AAA5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AAAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AAB5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AABD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AAC5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AACD | DEFB $00,$00,$1C,$1E,$1F,$1E,$1F,$00 | |||
| AAD5 | DEFB $06,$26,$01,$01,$01,$01,$01,$31 | |||
| AADD | DEFB $01,$08,$00,$00,$00,$00,$0C,$01 | $18 |
||
| AAE5 | DEFB $09,$00,$00,$00,$00,$00,$00,$0D | |||
| AAED | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AAF5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AAFD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB05 | DEFB $00,$00,$00,$1D,$00,$00,$00,$00 | |||
| AB0D | DEFB $30,$1E,$04,$01,$31,$1C,$1F,$07 | |||
| AB15 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| AB1D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | $19 |
||
| AB25 | DEFB $08,$14,$0D,$01,$0B,$16,$0E,$2E | |||
| AB2D | DEFB $00,$00,$00,$15,$00,$00,$00,$00 | |||
| AB35 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB3D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB45 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB4D | DEFB $30,$00,$00,$00,$00,$00,$04,$24 | |||
| AB55 | DEFB $01,$31,$00,$00,$00,$00,$22,$01 | |||
| AB5D | DEFB $0C,$0A,$14,$15,$0F,$01,$08,$17 | $1A |
||
| AB65 | DEFB $00,$00,$00,$00,$00,$16,$00,$00 | |||
| AB6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB75 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB85 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB95 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| AB9D | DEFB $16,$0D,$01,$01,$01,$01,$01,$09 | $1B |
||
| ABA5 | DEFB $00,$00,$0C,$01,$01,$0A,$15,$00 | |||
| ABAD | DEFB $00,$00,$00,$0E,$09,$00,$00,$00 | |||
| ABB5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| ABBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| ABC5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| ABCD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| ABD5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| ABDD | DEFB $30,$00,$00,$00,$00,$00,$00,$00 | $1C place for Octupus, left block |
||
| ABE5 | DEFB $28,$00,$00,$00,$00,$00,$00,$00 | |||
| ABED | DEFB $29,$00,$00,$00,$00,$00,$00,$00 | |||
| ABF5 | DEFB $01,$31,$00,$00,$00,$00,$00,$00 | |||
| ABFD | DEFB $01,$01,$24,$26,$02,$32,$32,$32 | |||
| AC05 | DEFB $01,$01,$01,$08,$16,$32,$32,$32 | |||
| AC0D | DEFB $01,$01,$0A,$32,$32,$32,$32,$32 | |||
| AC15 | DEFB $0B,$17,$32,$32,$32,$32,$32,$32 | |||
| AC1D | DEFB $00,$00,$00,$00,$00,$00,$00,$1A | $1D place for Octupus, right block |
||
| AC25 | DEFB $00,$00,$00,$00,$00,$00,$00,$05 | |||
| AC2D | DEFB $00,$00,$00,$00,$00,$00,$06,$01 | |||
| AC35 | DEFB $18,$26,$27,$24,$24,$26,$01,$01 | |||
| AC3D | DEFB $32,$15,$0C,$01,$01,$01,$01,$01 | |||
| AC45 | DEFB $32,$32,$32,$15,$16,$0F,$01,$01 | |||
| AC4D | DEFB $32,$32,$32,$32,$32,$32,$0D,$01 | |||
| AC55 | DEFB $00,$32,$32,$32,$32,$00,$00,$0C | |||
|
|
||||
|
Each byte is relief block number (see A4DD), each relief block is 8x8 tiles, and tiles are 8x8 pixels. So this mini-map defines the world of 256x256 tiles, or 2048 x 2048 pixels.
|
||||
| MiniMap | AC5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | ||
| AC7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$17 | |||
| AC9D | DEFB $04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$08,$01 | |||
| ACBD | DEFB $01,$04,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$06,$01 | |||
| ACDD | DEFB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 | |||
| ACFD | DEFB $01,$05,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$1A,$09,$01 | |||
| AD1D | DEFB $02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$06 | |||
| AD3D | DEFB $01,$04,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$16,$08,$01 | |||
| AD5D | DEFB $3E,$3F,$08,$52,$3E,$4B,$08,$58,$3F,$31,$08,$72,$3E,$71,$08,$98,$3F,$B3,$00,$C4,$3E,$40,$00,$CA,$3E,$28,$00,$CD,$3E,$15,$08,$D4 | |||
| AD7D | DEFB $3E,$DB,$08,$E0,$3F,$81,$0A,$20,$1F,$64,$0A,$28,$1F,$1D,$0A,$38,$1F,$6B,$0A,$5C,$1E,$36,$0A,$62,$1E,$77,$0A,$65,$1E,$1C,$0A,$8A | |||
| AD9D | DEFB $1E,$2E,$0A,$9A,$1E,$4D,$0A,$AA,$1E,$50,$0A,$AD,$1E,$39,$0A,$B4,$1E,$27,$0A,$B8,$1F,$0C,$0A,$C2,$1E,$65,$0A,$C5,$1E,$02,$0A,$CC | |||
| ADBD | DEFB $1E,$08,$0A,$D4,$1E,$1E,$80,$5A,$1E,$7F,$0A,$5D,$1E,$44,$0A,$62,$1E,$7D,$0A,$65,$1E,$7A,$0A,$68,$1F,$4B,$0A,$70,$1F,$40,$0A,$7A | |||
| ADDD | DEFB $1E,$69,$0A,$7D,$1E,$16,$0A,$80,$1F,$57,$0A,$88,$1F,$7C,$0A,$98,$1F,$72,$0A,$A2,$1E,$23,$80,$05,$5C,$F3,$DD,$00,$00,$00,$00,$00 | |||
| ADFD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AE1D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AE3D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AE5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AE7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AE9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AEBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 | |||
| AEDD | DEFB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01 | |||
| AEFD | DEFB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 | |||
| AF1D | DEFB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 | |||
| AF3D | DEFB $01,$01,$01,$01,$09,$01,$01,$01,$01,$01,$01,$08,$32,$01,$01,$01,$01,$01,$01,$12,$32,$01,$01,$01,$01,$01,$0B,$00,$32,$01,$01,$01 | |||
| AF5D | DEFB $01,$01,$30,$00,$32,$01,$01,$01,$01,$01,$01,$31,$32,$01,$01,$01,$01,$01,$01,$01,$11,$01,$01,$01,$01,$01,$01,$01,$03,$01,$01,$01 | |||
| AF7D | DEFB $01,$01,$01,$01,$29,$01,$01,$01,$01,$01,$01,$01,$0A,$01,$01,$01,$09,$15,$16,$17,$00,$01,$01,$01,$02,$00,$04,$26,$03,$01,$01,$01 | |||
| AF9D | DEFB $01,$25,$01,$01,$2A,$01,$01,$01,$01,$01,$01,$01,$2B,$01,$01,$01,$01,$01,$01,$01,$08,$01,$01,$01,$01,$01,$01,$01,$30,$12,$00,$00 | |||
| AFBD | DEFB $00,$00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00,$01,$27,$30,$00,$00,$00,$00,$00,$01,$01,$01,$31,$00,$00,$00,$00,$01,$01,$01 | |||
| AFDD | DEFB $2B,$00,$00,$00,$00,$01,$01,$01,$01,$03,$00,$00,$00,$01,$01,$01,$01,$01,$25,$24,$02,$01,$01,$01,$01,$01,$01,$01,$28,$01,$01,$01 | |||
| AFFD | DEFB $01,$01,$01,$01,$09,$01,$01,$01,$01,$0B,$14,$15,$00,$09,$15,$17,$16,$32,$00,$00,$00,$13,$32,$32,$32,$00,$00,$00,$00,$03,$32,$32 | |||
| B01D | DEFB $00,$00,$00,$00,$00,$2A,$32,$00,$00,$00,$00,$00,$00,$0B,$00,$00,$00,$00,$00,$00,$00,$13,$00,$00,$00,$00,$00,$00,$00,$0F,$01,$01 | |||
| B03D | DEFB $01,$01,$01,$01,$01,$32,$0E,$01,$01,$01,$01,$01,$01,$32,$00,$14,$15,$16,$0D,$01,$01,$32,$00,$00,$00,$00,$05,$01,$01,$32,$00,$1C | |||
|
|
||||
| B05D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| B065 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| B06D | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
| B075 | DEFB $01,$01,$01,$01,$01,$01,$01,$01 | |||
|
|
||||
| B07D | DEFB $01,$01,$01,$01 | |||
| B081 | DEFB $01,$21,$01,$01 | |||
| B085 | DEFB $01,$01,$01,$01 | |||
| B089 | DEFB $01,$0C,$01,$09 | |||
| B08D | DEFB $14,$16,$17,$0D | |||
| B091 | DEFB $01,$32,$14,$00 | |||
| B095 | DEFB $00,$00,$00,$00 | |||
| B099 | DEFB $23,$32,$00,$00 | |||
| B09D | DEFB $00,$00,$00,$00 | |||
| B0A1 | DEFB $0C,$32,$06,$27 | |||
| B0A5 | DEFB $03,$00,$00,$00 | |||
|
Used by the routine at DrawGameScr.
|
||||
|
Walks the world's static-object table and, for each object that falls inside the current 24x24-tile view, records its on-screen position in the B07D list and draws its sprite (oxygen, pearls, small/big shell, or chest) with the matching colour. The B07D list is what the diver's interaction check later scans.
|
||||
| DrawStatics | B0A9 | LD DE,($5B03) | get Screen position on mini-map | |
| B0AD | LD A,D | multiply scroll position by 8 | ||
| B0AE | RLCA | |||
| B0AF | RLCA | |||
| B0B0 | RLCA | |||
| B0B1 | LD D,A | |||
| B0B2 | LD A,E | |||
| B0B3 | RLCA | |||
| B0B4 | RLCA | |||
| B0B5 | RLCA | |||
| B0B6 | LD E,A | |||
| B0B7 | LD ($5B0B),DE | store screen scroll (pixels) | ||
| B0BB | LD HL,TableStatics | static-object table pointer | ||
| B0BE | DI | output slot table pointer | ||
| B0BF | PUSH IY | |||
| B0C1 | LD IY,$B07D | |||
| DrawStatics_0 | B0C5 | BIT 7,(HL) | check end-of-list marker | |
| B0C7 | JR Z,DrawStatics_1 | |||
| B0C9 | LD (IY+$01),$FF | mark output list end, done | ||
| B0CD | POP IY | |||
| B0CF | RET | |||
| DrawStatics_1 | B0D0 | PUSH HL | save state; clear on-screen flag | |
| B0D1 | PUSH DE | |||
| B0D2 | RES 0,(HL) | |||
| B0D4 | INC HL | check column within 24-tile viewport | ||
| B0D5 | LD A,(HL) | |||
| B0D6 | SUB E | |||
| B0D7 | CP $18 | |||
| B0D9 | JR NC,DrawStatics_4 | |||
| B0DB | LD E,A | check row within 24-tile viewport | ||
| B0DC | INC HL | |||
| B0DD | LD A,(HL) | |||
| B0DE | SUB D | |||
| B0DF | CP $18 | |||
| B0E1 | JR NC,DrawStatics_4 | |||
| B0E3 | LD D,A | save relative row/col; rewind to record start | ||
| B0E4 | PUSH DE | |||
| B0E5 | DEC HL | |||
| B0E6 | DEC HL | |||
| B0E7 | LD (IY+$00),L | write output slot: address+relative coords | ||
| B0EA | LD (IY+$01),H | |||
| B0ED | LD (IY+$02),E | |||
| B0F0 | LD (IY+$03),D | |||
| B0F3 | INC IY | advance output slot pointer | ||
| B0F5 | INC IY | |||
| B0F7 | INC IY | |||
| B0F9 | INC IY | |||
| B0FB | SET 0,(HL) | mark object as on-screen | ||
| B0FD | LD C,$46 | screen attribute for chest | ||
| B0FF | LD DE,$B1B4 | Sprite 16x8 Chest | ||
| B102 | BIT 6,(HL) | check "chest" bit | ||
| B104 | JR NZ,DrawStatics_5 | |||
| B106 | LD C,$47 | screen attribute for oxygen | ||
| B108 | LD DE,$B1AC | Sprite 8x8 Oxygen | ||
| B10B | BIT 5,(HL) | check "oxygen" bit | ||
| B10D | JR NZ,DrawStatics_6 | |||
| B10F | LD C,$07 | screen attribute for shells | ||
| B111 | BIT 1,(HL) | check "big/small" bit | ||
| B113 | JR Z,DrawStatics_2 | |||
| B115 | LD DE,$B1CC | Sprite 8x8 Small shell opened | ||
| B118 | BIT 3,(HL) | check "closed/opened" bit | ||
| B11A | JR Z,DrawStatics_6 | |||
| B11C | LD DE,$B1C4 | Sprite 8x8 Small shell closed | ||
| B11F | JR DrawStatics_6 | |||
| DrawStatics_2 | B121 | LD DE,$B16C | Sprite 16x16 Big shell opened | |
| B124 | BIT 3,(HL) | check "closed/opened" bit | ||
| B126 | JR Z,DrawStatics_3 | |||
| B128 | LD DE,$B18C | Sprite 16x16 Big shell closed | ||
| DrawStatics_3 | B12B | POP HL | ||
| B12C | PUSH HL | save (row, column) | ||
| B12D | CALL GetScrAttrAddr | Get screen attribute address | ||
| B130 | LD (HL),C | set screen attribute | ||
| B131 | INC HL | |||
| B132 | LD (HL),C | set screen attribute | ||
| B133 | PUSH BC | |||
| B134 | LD BC,$0020 | |||
| B137 | OR A | |||
| B138 | SBC HL,BC | one char line upper | ||
| B13A | POP BC | |||
| B13B | LD (HL),C | set screen attribute | ||
| B13C | DEC HL | |||
| B13D | LD (HL),C | set screen attribute | ||
| B13E | POP HL | restore (row, column) | ||
| B13F | PUSH HL | |||
| B140 | CALL DrawTile16x8 | Draw tile 16x8 at the screen | ||
| B143 | POP HL | restore (row, column) | ||
| B144 | DEC H | One char line upper | ||
| B145 | CALL DrawTile16x8 | Draw tile 16x8 at the screen | ||
| DrawStatics_4 | B148 | POP DE | ||
| B149 | POP HL | |||
| B14A | LD BC,$0004 | |||
| B14D | ADD HL,BC | |||
| B14E | JP DrawStatics_0 | |||
| DrawStatics_5 | B151 | LD A,(HL) | ||
| B152 | POP HL | |||
| B153 | PUSH HL | |||
| B154 | CALL GetScrAttrAddr | Get screen attribute address | ||
| B157 | LD (HL),C | set screen attribute | ||
| B158 | INC HL | |||
| B159 | LD (HL),C | set screen attribute | ||
| B15A | POP HL | |||
| B15B | CALL DrawTile16x8 | Draw tile 16x8 at the screen | ||
| B15E | JR DrawStatics_4 | |||
| DrawStatics_6 | B160 | POP HL | ||
| B161 | PUSH HL | |||
| B162 | CALL GetScrAttrAddr | Get screen attribute address | ||
| B165 | LD (HL),C | set screen attribute | ||
| B166 | POP HL | |||
| B167 | CALL DrawTile8x8 | Draw tile 8x8 at the screen | ||
| B16A | JR DrawStatics_4 | |||
|
|
||||
|
Sprite 16x16 Big shell opened; first lower part then upper
|
||||
| B16C | DEFB $60,$1C,$60,$0E,$2C,$1E,$36,$1C | ![]() |
||
| B174 | DEFB $36,$0C,$16,$C4,$0B,$6C,$05,$B8 | |||
| B17C | DEFB $00,$00,$00,$60,$00,$78,$00,$38 | ![]() |
||
| B184 | DEFB $00,$3C,$00,$0E,$40,$36,$40,$3B | |||
|
Sprite 16x16 Big shell closed; first lower part then upper
|
||||
| B18C | DEFB $63,$10,$61,$E0,$2C,$F8,$36,$78 | ![]() |
||
| B194 | DEFB $36,$1C,$16,$C4,$0B,$6C,$05,$B8 | |||
| B19C | DEFB $00,$00,$00,$00,$00,$00,$0C,$00 | ![]() |
||
| B1A4 | DEFB $3F,$00,$0F,$80,$4F,$80,$40,$E0 | |||
|
Sprite 8x8 Oxygen
|
||||
| B1AC | DEFB $30,$10,$7C,$6C,$6C,$6C,$7C,$6C | ![]() |
||
|
Sprite 16x8 Chest
|
||||
| B1B4 | DEFB $0F,$F8,$1F,$FC,$00,$00,$1F,$FC | ![]() |
||
| B1BC | DEFB $1F,$7C,$1F,$7C,$1F,$FC,$1F,$FC | |||
|
Sprite 8x8 Small shell closed
|
||||
| B1C4 | DEFB $00,$00,$00,$7C,$FE,$06,$FE,$7C | ![]() |
||
|
Sprite 8x8 Small shell opened
|
||||
| B1CC | DEFB $02,$03,$03,$03,$03,$03,$FE,$7C | ![]() |
||
|
Used by the routine at PrepareMiniMap.
|
||||
| SelectRandomObjects | B1D4 | PUSH IY | reset selected-count | |
| B1D6 | NOP | |||
| B1D7 | NOP | |||
| B1D8 | NOP | |||
| B1D9 | NOP | |||
| B1DA | XOR A | |||
| B1DB | LD ($B210),A | |||
| SelectRandomObjects_0 | B1DE | LD IY,TableStatics | object pool base address | |
| SelectRandomObjects_1 | B1E2 | CALL NextRandom | Random | |
| B1E5 | LD A,H | random step 3..6 entries | ||
| B1E6 | AND $03 | |||
| B1E8 | ADD A,$03 | |||
| B1EA | LD B,A | |||
| B1EB | LD DE,$0004 | advance IY by random step | ||
| SelectRandomObjects_2 | B1EE | ADD IY,DE | ||
| B1F0 | DJNZ SelectRandomObjects_2 | |||
| B1F2 | LD A,(IY+$02) | check object type/threshold | ||
| B1F5 | CP $48 | |||
| B1F7 | JR C,SelectRandomObjects_0 | reject, pick new random pool start | ||
| B1F9 | LD A,(IY+$00) | check already-selected flag | ||
| B1FC | AND $60 | |||
| B1FE | JR NZ,SelectRandomObjects_1 | already used, retry | ||
| B200 | LD (IY+$00),$20 | mark object selected | ||
| B204 | LD HL,$B210 | increment selected-count | ||
| B207 | INC (HL) | |||
| B208 | LD A,(HL) | check 8 selected | ||
| B209 | CP $08 | |||
| B20B | JR NZ,SelectRandomObjects_1 | not done, pick another | ||
| B20D | POP IY | |||
| B20F | RET | |||
|
|
||||
| B210 | DEFB $00 | ??? | ||
| B211 | DEFB $08 | ??? | ||
| B212 | DEFB $05 | ??? | ||
|
Runs the ambient sea animation each frame: first ticks the Octopus, then, on a level-dependent timer, walks the bubble slots and moves each active bubble one step up the screen, occasionally spawning a new one at a random position and growing small bubbles into big ones as they rise.
|
||||
| B213 | CALL $B2C0 | Octopus delay and process | ||
| B216 | LD HL,$B211 | spawn timer countdown | ||
| B219 | DEC (HL) | |||
| B21A | RET NZ | |||
| B21B | DI | |||
| B21C | LD A,($5B0D) | get value 7 / 5 / 3 / 1, depending on Game level 1..4 | ||
| B21F | LD (HL),A | reset spawn timer | ||
| B220 | LD A,($B212) | get/branch on bubble-position direction | ||
| B223 | BIT 7,A | |||
| B225 | JR NZ,$B230 | |||
| B227 | INC A | advance position, wrap and flip direction | ||
| B228 | CP $07 | |||
| B22A | JR NZ,$B237 | |||
| B22C | SET 7,A | |||
| B22E | JR $B237 | |||
| B230 | DEC A | advance position (reverse), wrap and flip direction | ||
| B231 | CP $83 | |||
| B233 | JR NZ,$B237 | |||
| B235 | RES 7,A | |||
| B237 | LD ($B212),A | store position; bubble-slot table base | ||
| B23A | PUSH IY | |||
| B23C | LD IY,$B079 | |||
| B240 | LD DE,$0004 | record size; screen scroll position | ||
| B243 | LD BC,($5B0B) | |||
| B247 | ADD IY,DE | next slot; get slot's screen address | ||
| B249 | LD L,(IY+$00) | |||
| B24C | LD H,(IY+$01) | |||
| B24F | LD A,$FF | check end-of-table marker | ||
| B251 | CP H | |||
| B252 | JR NZ,$B257 | |||
| B254 | POP IY | |||
| B256 | RET | |||
| B257 | BIT 5,(HL) | skip if slot already active | ||
| B259 | JR NZ,$B247 | |||
| B25B | BIT 6,(HL) | branch by bubble state | ||
| B25D | JR Z,$B276 | |||
| B25F | BIT 3,(HL) | skip if slot unavailable | ||
| B261 | JR NZ,$B247 | |||
| B263 | LD L,(IY+$02) | get slot's attribute-source address | ||
| B266 | LD H,(IY+$03) | |||
| B269 | CALL GetScrAttrAddr | Get screen attribute address | ||
| B26C | LD A,($B212) | attribute value from position | ||
| B26F | AND $07 | |||
| B271 | LD (HL),A | |||
| B272 | INC HL | |||
| B273 | LD (HL),A | |||
| B274 | JR $B240 | |||
| B276 | BIT 3,(HL) | check bubble growth stage | ||
| B278 | JR Z,$B27E | |||
| B27A | BIT 4,(HL) | skip if already at max stage | ||
| B27C | JR NZ,$B247 | |||
| B27E | ADD HL,DE | decrement bubble rise-timer | ||
| B27F | DEC HL | |||
| B280 | DEC (HL) | |||
| B281 | JR Z,$B286 | |||
| B283 | INC HL | |||
| B284 | JR $B247 | |||
| B286 | PUSH HL | save state before random pick | ||
| B287 | PUSH DE | |||
| B288 | PUSH BC | |||
| B289 | CALL NextRandom | Random | ||
| B28C | POP BC | |||
| B28D | POP DE | |||
| B28E | LD A,H | |||
| B28F | POP HL | |||
| B290 | AND $7F | randomize row 128..255 | ||
| B292 | ADD A,$80 | |||
| B294 | LD (HL),A | |||
| B295 | DEC HL | |||
| B296 | LD A,(HL) | |||
| B297 | SUB B | |||
| B298 | LD D,A | |||
| B299 | DEC HL | |||
| B29A | LD A,(HL) | |||
| B29B | SUB C | |||
| B29C | LD E,A | |||
| B29D | DEC HL | toggle bubble size flag | ||
| B29E | LD A,$08 | |||
| B2A0 | XOR (HL) | |||
| B2A1 | LD (HL),A | |||
| B2A2 | BIT 1,(HL) | |||
| B2A4 | PUSH HL | |||
| B2A5 | EX DE,HL | |||
| B2A6 | JR Z,$B2B1 | |||
| B2A8 | LD DE,$B2EE | sprite 8x8 address, 8 bytes | ||
| B2AB | CALL DrawTileXor8x8 | Draw tile 8x8 with XOR | ||
| B2AE | POP HL | |||
| B2AF | JR $B240 | |||
| B2B1 | LD DE,$B2F6 | sprite 16x16 address, 32 bytes | ||
| B2B4 | PUSH HL | |||
| B2B5 | CALL DrawTileXor16x8 | Draw tile 16x8 with XOR | ||
| B2B8 | POP HL | |||
| B2B9 | DEC H | one line upper | ||
| B2BA | CALL DrawTileXor16x8 | Draw tile 16x8 with XOR | ||
| B2BD | POP HL | |||
| B2BE | JR $B240 | |||
|
Used by the routine at B213.
|
||||
| B2C0 | LD HL,$B2CD | |||
| B2C3 | DEC (HL) | |||
| B2C4 | RET NZ | |||
| B2C5 | LD A,($5B0E) | get value 10 / 8 / 6 / 4, depending on Game level 1..4 | ||
| B2C8 | LD (HL),A | |||
| B2C9 | CALL ProcessOctopus | Process Octopus, draw if needed | ||
| B2CC | RET | |||
| B2CD | DEFB $08 | |||
|
Used by the routine at B213.
|
||||||||||
| DrawTileXor8x8 | B2CE | CALL GetScrAddr | Convert char coords HL to ZX screen address | |||||||
| B2D1 | LD B,$08 | tile height 8 pixels | ||||||||
| DrawTileXor8x8_0 | B2D3 | LD A,(DE) | ||||||||
| B2D4 | XOR (HL) | |||||||||
| B2D5 | LD (HL),A | |||||||||
| B2D6 | INC DE | |||||||||
| B2D7 | INC H | |||||||||
| B2D8 | DJNZ DrawTileXor8x8_0 | |||||||||
| B2DA | RET | |||||||||
|
Used by the routine at B213.
|
||||||||||
| DrawTileXor16x8 | B2DB | CALL GetScrAddr | Convert char coords HL to ZX screen address | |||||||
| B2DE | LD B,$08 | tile height 8 pixels | ||||||||
| DrawTileXor16x8_0 | B2E0 | LD A,(DE) | XOR left column byte | |||||||
| B2E1 | XOR (HL) | |||||||||
| B2E2 | LD (HL),A | |||||||||
| B2E3 | INC DE | |||||||||
| B2E4 | INC L | |||||||||
| B2E5 | LD A,(DE) | XOR right column byte | ||||||||
| B2E6 | XOR (HL) | |||||||||
| B2E7 | LD (HL),A | |||||||||
| B2E8 | DEC L | |||||||||
| B2E9 | INC H | next pixel row | ||||||||
| B2EA | INC DE | |||||||||
| B2EB | DJNZ DrawTileXor16x8_0 | |||||||||
| B2ED | RET | |||||||||
|
|
||||
| B2EE | DEFB $02,$03,$03,$7F,$FD,$05,$00,$00 | ![]() |
||
|
|
||||
| B2F6 | DEFB $03,$0C,$01,$EE,$00,$E6,$00,$64 | ![]() |
||
| B2FE | DEFB $00,$10,$00,$00,$00,$00,$00,$00 | |||
| B306 | DEFB $00,$00,$00,$60,$00,$78,$0C,$38 | ![]() |
||
| B30E | DEFB $3F,$3C,$0F,$8E,$0F,$B6,$00,$DB | |||
|
|
||||
| B316 | DEFB $09 | |||
|
Used by the routine at B2C0.
|
||||
| ProcessOctopus | B317 | LD A,($9C50) | skip if Octopus disabled | |
| B31A | OR A | |||
| B31B | RET Z | |||
| B31C | LD HL,$B316 | animation timer countdown | ||
| B31F | DEC (HL) | |||
| B320 | RET NZ | |||
| B321 | LD (HL),$10 | reset timer to 16 | ||
| B323 | LD A,($9C55) | get current phase | ||
| B326 | LD B,A | |||
| B327 | BIT 7,A | branch by direction (retreating vs extending) | ||
| B329 | JR NZ,ProcessOctopus_0 | |||
| B32B | LD A,R | random chance to hold phase | ||
| B32D | JR Z,ProcessOctopus_1 | |||
| B32F | INC B | advance phase, check max reached | ||
| B330 | LD A,$05 | |||
| B332 | CP B | |||
| B333 | JR NZ,ProcessOctopus_1 | |||
| B335 | LD B,$83 | wrap to retreat start | ||
| B337 | JR ProcessOctopus_1 | |||
| ProcessOctopus_0 | B339 | LD A,R | random chance to hold phase | |
| B33B | JR Z,ProcessOctopus_1 | |||
| B33D | DEC B | retreat phase, check min reached | ||
| B33E | LD A,$7F | |||
| B340 | CP B | |||
| B341 | JR NZ,ProcessOctopus_1 | |||
| B343 | LD B,$01 | wrap to extend start | ||
| ProcessOctopus_1 | B345 | LD A,B | ||
|
This entry point is used by the routine at DrawGameScr.
|
||||
| ProcessOctopus_2 | B346 | LD ($9C55),A | store new phase | |
| B349 | LD HL,SprOctopus | Base address for Octopus phases | ||
| B34C | AND $07 | phase index 0..7 | ||
| B34E | LD B,A | |||
| B34F | OR A | skip offset if phase 0 | ||
| B350 | JR Z,ProcessOctopus_4 | |||
| B352 | LD DE,$00C0 | |||
| ProcessOctopus_3 | B355 | ADD HL,DE | advance to phase's sprite block | |
| B356 | DJNZ ProcessOctopus_3 | |||
| ProcessOctopus_4 | B358 | EX DE,HL | ||
| B359 | CALL DrawOctopusSprite | Draw Octopus sprite | ||
| B35C | RET | |||
|
Used by the routine at ProcessOctopus.
|
||||||||
| DrawOctopusSprite | B35D | DI | disable interrupts; save previous IY | |||||
| B35E | PUSH IY | |||||||
| B360 | LD IY,($9C53) | swap in new mask table pointer | ||||||
| B364 | LD ($9C53),DE | |||||||
| B368 | LD HL,($9C51) | get Octopus row/column | ||||||
| B36B | INC HL | skip header; loop 4 column blocks | ||||||
| B36C | INC HL | |||||||
| B36D | LD C,$04 | |||||||
| DrawOctopusSprite_0 | B36F | LD B,$06 | 6 rows per block | |||||
| B371 | PUSH HL | |||||||
| DrawOctopusSprite_1 | B372 | PUSH BC | ||||||
| B373 | LD B,$08 | 8 pixel lines per tile | ||||||
| B375 | PUSH HL | |||||||
| DrawOctopusSprite_2 | B376 | LD A,(DE) | XOR-blit sprite pixel with mask | |||||
| B377 | XOR (HL) | |||||||
| B378 | XOR (IY+$00) | |||||||
| B37B | LD (HL),A | |||||||
| B37C | INC DE | advance sprite, mask, and screen row | ||||||
| B37D | INC IY | |||||||
| B37F | INC H | |||||||
| B380 | DJNZ DrawOctopusSprite_2 | |||||||
| B382 | POP HL | advance to next tile column | ||||||
| B383 | INC L | |||||||
| B384 | POP BC | |||||||
| B385 | DJNZ DrawOctopusSprite_1 | |||||||
| B387 | POP HL | advance to next column block | ||||||
| B388 | LD A,L | |||||||
| B389 | ADD A,$20 | |||||||
| B38B | LD L,A | |||||||
| B38C | DEC C | |||||||
| B38D | JR NZ,DrawOctopusSprite_0 | |||||||
| B38F | POP IY | restore previous IY | ||||||
| B391 | RET | |||||||
|
|
||||
| B392 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| B39A | DEFB $32,$32,$32,$1D,$02,$32 | |||
|
Used by the routine at B470.
|
||||||||||
|
Maintains the object's packed sprite-data list: it works out where the object sits, sums up the space used by earlier entries, and either makes room for the object's data or clears out the slot it vacated, shifting the remaining bytes so the list stays tightly packed.
|
||||||||||
| B3A0 | BIT 4,(IX+$0D) | use default list or record's stored list? | ||||||||
| B3A4 | JR Z,$B3AB | |||||||||
|
This entry point is used by the routine at DFD5.
|
||||||||||
| B3A6 | LD HL,($B7B9) | get default list address | ||||||||
| B3A9 | JR $B3B1 | |||||||||
|
This entry point is used by the routine at DFD5.
|
||||||||||
| B3AB | LD H,(IX+$08) | get record's stored list address | ||||||||
| B3AE | LD L,(IX+$07) | |||||||||
| B3B1 | LD C,(IY+$0A) | get record size | ||||||||
| B3B4 | LD A,(IX+$03) | get record's state/count byte | ||||||||
| B3B7 | OR A | |||||||||
| B3B8 | JR NZ,$B3D6 | |||||||||
| B3BA | SET 6,(IX+$0D) | set removed flag on record | ||||||||
| B3BE | BIT 3,(IX+$0D) | pick byte-shift amount from direction bits | ||||||||
| B3C2 | JR Z,$B3CE | |||||||||
| B3C4 | BIT 7,(IX+$12) | |||||||||
| B3C8 | JR NZ,$B3E9 | |||||||||
| B3CA | LD A,$08 | |||||||||
| B3CC | JR $B3D6 | |||||||||
| B3CE | BIT 7,(IX+$12) | |||||||||
| B3D2 | JR Z,$B3E9 | |||||||||
| B3D4 | LD A,$08 | |||||||||
| B3D6 | LD B,A | |||||||||
| B3D7 | XOR A | |||||||||
| B3D8 | ADD A,(IY+$07) | sum sizes of preceding records | ||||||||
| B3DB | DJNZ $B3D8 | |||||||||
| B3DD | LD B,A | |||||||||
| B3DE | LD C,A | |||||||||
| B3DF | LD A,(IY+$0A) | |||||||||
| B3E2 | SUB C | |||||||||
| B3E3 | LD C,A | |||||||||
| B3E4 | XOR A | |||||||||
| B3E5 | LD (HL),A | zero-fill freed slot | ||||||||
| B3E6 | INC HL | |||||||||
| B3E7 | DJNZ $B3E5 | |||||||||
| B3E9 | PUSH HL | |||||||||
| B3EA | LD D,(IX+$0C) | get record's list-end pointer | ||||||||
| B3ED | LD E,(IX+$0B) | |||||||||
| B3F0 | LD A,(DE) | check for $FF end-of-list marker | ||||||||
| B3F1 | INC A | |||||||||
| B3F2 | JR NZ,$B3FA | |||||||||
| B3F4 | LD D,(IX+$0A) | |||||||||
| B3F7 | LD E,(IX+$09) | |||||||||
| B3FA | LD ($5B11),DE | store updated list-end pointer | ||||||||
| B3FE | LD B,(IY+$0B) | |||||||||
| B401 | PUSH BC | |||||||||
| B402 | LD C,(IY+$06) | |||||||||
| B405 | LD B,$00 | |||||||||
| B407 | EX DE,HL | shift remaining records forward | ||||||||
| B408 | LDIR | |||||||||
| B40A | EX DE,HL | |||||||||
| B40B | LD (HL),$00 | |||||||||
| B40D | INC HL | |||||||||
| B40E | POP BC | |||||||||
| B40F | DJNZ $B401 | |||||||||
| B411 | LD B,C | |||||||||
| B412 | LD A,B | |||||||||
| B413 | OR A | |||||||||
| B414 | JR Z,$B41B | |||||||||
| B416 | XOR A | |||||||||
| B417 | LD (HL),A | zero-fill vacated tail | ||||||||
| B418 | INC HL | |||||||||
| B419 | DJNZ $B417 | |||||||||
| B41B | LD (IX+$0C),D | |||||||||
| B41E | LD (IX+$0B),E | |||||||||
| B421 | LD B,(IX+$02) | X-shift centered (0)? | ||||||||
| B424 | LD A,B | |||||||||
| B425 | OR A | |||||||||
| B426 | JR NZ,$B446 | |||||||||
| B428 | SET 5,(IX+$0D) | mark reached column center | ||||||||
| B42C | BIT 4,(IX+$0D) | |||||||||
| B430 | JR Z,$B43E | |||||||||
| B432 | BIT 7,(IX+$11) | |||||||||
| B436 | JR Z,$B43A | |||||||||
| B438 | POP HL | |||||||||
| B439 | RET | |||||||||
| B43A | LD B,$08 | |||||||||
| B43C | JR $B446 | |||||||||
| B43E | BIT 7,(IX+$11) | |||||||||
| B442 | JR NZ,$B43A | |||||||||
| B444 | JR $B438 | |||||||||
| B446 | LD A,B | check shift count >= 4 | ||||||||
| B447 | CP $04 | |||||||||
| B449 | JR C,$B45C | |||||||||
| B44B | SUB $04 | |||||||||
| B44D | LD C,A | |||||||||
| B44E | LD B,(IY+$0D) | |||||||||
| B451 | POP HL | |||||||||
| B452 | PUSH HL | |||||||||
| B453 | XOR A | |||||||||
| B454 | RRD | shift nibbles right across buffer | ||||||||
| B456 | INC HL | |||||||||
| B457 | DJNZ $B454 | |||||||||
| B459 | LD B,C | |||||||||
| B45A | JR $B446 | |||||||||
| B45C | OR A | |||||||||
| B45D | JR Z,$B438 | |||||||||
| B45F | POP HL | |||||||||
| B460 | PUSH HL | |||||||||
| B461 | PUSH BC | |||||||||
| B462 | LD B,(IY+$0D) | |||||||||
| B465 | OR A | |||||||||
| B466 | RR (HL) | shift bits right across buffer | ||||||||
| B468 | INC HL | |||||||||
| B469 | DJNZ $B466 | |||||||||
| B46B | POP BC | |||||||||
| B46C | DJNZ $B45F | |||||||||
| B46E | POP HL | |||||||||
| B46F | RET | |||||||||
|
||||||||||
|
Draws one object's sprite into the play area, clipping it to the visible window so partly-off-screen objects show only their visible part. It XOR-blits the pixels (so drawing again erases cleanly) and skips columns that fall outside the viewport, setting a collision flag if the sprite overlaps existing pixels.
|
||||||||||
| B470 | BIT 0,(IX+$0D) | rebuild packed list first if flagged | ||||||||
| B474 | JR Z,$B479 | |||||||||
| B476 | CALL $B3A0 | Insert or remove object from packed record list | ||||||||
| B479 | LD D,(IX+$08) | get sprite bitmap address | ||||||||
| B47C | LD E,(IX+$07) | |||||||||
| B47F | BIT 1,(IX+$0D) | skip buffer-clear if still active | ||||||||
| B483 | JR NZ,$B496 | |||||||||
| B485 | PUSH DE | |||||||||
| B486 | LD C,(IY+$09) | get draw-buffer dimensions | ||||||||
| B489 | LD L,(IY+$0A) | |||||||||
| B48C | XOR A | |||||||||
| B48D | LD B,L | clear the draw buffer | ||||||||
| B48E | LD (DE),A | |||||||||
| B48F | INC DE | |||||||||
| B490 | DJNZ $B48E | |||||||||
| B492 | DEC C | |||||||||
| B493 | JR NZ,$B48D | |||||||||
| B495 | POP DE | |||||||||
| B496 | LD HL,($B7B9) | default to previous-frame sprite | ||||||||
| B499 | BIT 0,(IX+$0D) | |||||||||
| B49D | JR NZ,$B4A2 | |||||||||
| B49F | LD HL,$A41B | use empty sprite (hidden) | ||||||||
| B4A2 | LD B,(IY+$07) | get sprite height in rows | ||||||||
| B4A5 | LD A,(IY+$02) | |||||||||
| B4A8 | AND $E0 | |||||||||
| B4AA | JR Z,$B4B4 | |||||||||
| B4AC | INC (IY+$02) | advance past left-clipped columns | ||||||||
| B4AF | INC DE | |||||||||
| B4B0 | INC HL | |||||||||
| B4B1 | DEC B | |||||||||
| B4B2 | JR $B4A5 | |||||||||
| B4B4 | LD A,(IY+$06) | clip against right edge | ||||||||
| B4B7 | ADD A,(IY+$02) | |||||||||
| B4BA | LD C,A | |||||||||
| B4BB | CP $18 | |||||||||
| B4BD | JR C,$B4C4 | |||||||||
| B4BF | DEC C | |||||||||
| B4C0 | DEC B | |||||||||
| B4C1 | LD A,C | |||||||||
| B4C2 | JR $B4BB | |||||||||
| B4C4 | LD (IY+$0E),B | store visible column count | ||||||||
| B4C7 | LD A,(IY+$07) | |||||||||
| B4CA | SUB B | |||||||||
| B4CB | LD (IY+$0F),A | store skipped column count | ||||||||
| B4CE | PUSH IX | |||||||||
| B4D0 | PUSH HL | |||||||||
| B4D1 | POP IX | IX = sprite bitmap pointer | ||||||||
| B4D3 | LD B,(IY+$09) | |||||||||
| B4D6 | PUSH BC | skip fully-clipped top rows | ||||||||
| B4D7 | LD A,(IY+$03) | |||||||||
| B4DA | CP $18 | |||||||||
| B4DC | JR C,$B4F0 | |||||||||
| B4DE | INC (IY+$03) | |||||||||
| B4E1 | POP BC | |||||||||
| B4E2 | DEC B | |||||||||
| B4E3 | PUSH BC | |||||||||
| B4E4 | LD L,(IY+$0A) | |||||||||
| B4E7 | LD H,$00 | |||||||||
| B4E9 | EX DE,HL | |||||||||
| B4EA | ADD HL,DE | |||||||||
| B4EB | ADD IX,DE | |||||||||
| B4ED | EX DE,HL | |||||||||
| B4EE | JR $B4D7 | |||||||||
| B4F0 | LD L,(IY+$02) | |||||||||
| B4F3 | LD H,(IY+$03) | |||||||||
| B4F6 | CALL GetScrAddr | Convert char coords HL to ZX screen address | ||||||||
| B4F9 | LD B,$08 | |||||||||
| B4FB | PUSH BC | |||||||||
| B4FC | PUSH HL | |||||||||
| B4FD | LD B,(IY+$0E) | |||||||||
| B500 | LD A,(DE) | diff screen pixels with sprite data | ||||||||
| B501 | XOR (HL) | |||||||||
| B502 | LD (IY+$07),A | |||||||||
| B505 | CPL | build mask limited to sprite shape | ||||||||
| B506 | AND (IX+$00) | |||||||||
| B509 | LD (DE),A | |||||||||
| B50A | LD A,(IX+$00) | combine sprite pixels with preserved background | ||||||||
| B50D | OR (IY+$07) | |||||||||
| B510 | LD (HL),A | |||||||||
| B511 | INC L | |||||||||
| B512 | INC DE | |||||||||
| B513 | INC IX | |||||||||
| B515 | DJNZ $B500 | |||||||||
| B517 | LD A,(IY+$06) | advance row skip offset | ||||||||
| B51A | INC A | |||||||||
| B51B | LD (IY+$07),A | |||||||||
| B51E | LD L,(IY+$0F) | |||||||||
| B521 | LD H,$00 | |||||||||
| B523 | EX DE,HL | |||||||||
| B524 | ADD HL,DE | |||||||||
| B525 | ADD IX,DE | |||||||||
| B527 | EX DE,HL | |||||||||
| B528 | POP HL | |||||||||
| B529 | INC H | |||||||||
| B52A | POP BC | |||||||||
| B52B | DJNZ $B4FB | |||||||||
| B52D | POP BC | |||||||||
| B52E | INC (IY+$03) | |||||||||
| B531 | LD A,(IY+$03) | |||||||||
| B534 | CP $18 | |||||||||
| B536 | JR NC,$B53A | |||||||||
| B538 | DJNZ $B4D6 | |||||||||
| B53A | POP IX | |||||||||
| B53C | BIT 5,(IX+$0D) | record removal needed (bit5/6)? | ||||||||
| B540 | JR NZ,$B547 | |||||||||
| B542 | BIT 6,(IX+$0D) | |||||||||
| B546 | RET Z | |||||||||
| B547 | LD H,(IX+$08) | get list address for record removal | ||||||||
| B54A | LD L,(IX+$07) | |||||||||
| B54D | LD A,(IX+$02) | |||||||||
| B550 | OR A | |||||||||
| B551 | JR NZ,$B5A4 | |||||||||
| B553 | BIT 7,(IX+$11) | check "moving left" flag | ||||||||
| B557 | JR NZ,$B57E | |||||||||
| B559 | PUSH HL | |||||||||
| B55A | POP DE | |||||||||
| B55B | INC HL | |||||||||
| B55C | LD B,(IY+$09) | |||||||||
| B55F | CALL CopyRecordsFwd | Copy records forward | ||||||||
| B562 | DEC DE | |||||||||
| B563 | XOR A | |||||||||
| B564 | LD (DE),A | |||||||||
|
This entry point is used by the routine at B57E.
|
||||||||||
| B565 | LD A,(IX+$03) | |||||||||
| B568 | OR A | |||||||||
| B569 | RET NZ | |||||||||
| B56A | LD H,(IX+$08) | |||||||||
| B56D | LD L,(IX+$07) | |||||||||
| B570 | JR $B5A4 | |||||||||
|
||||||||||||||
| CopyRecordsFwd | B572 | PUSH BC | ||||||||||||
| B573 | LD C,(IY+$0A) | |||||||||||||
| B576 | LD B,$00 | |||||||||||||
| B578 | LDIR | |||||||||||||
| B57A | POP BC | |||||||||||||
| B57B | DJNZ CopyRecordsFwd | |||||||||||||
| B57D | RET | |||||||||||||
|
Used by the routine at B470.
|
||||||||
| B57E | LD E,(IY+$0A) | get record size | ||||||
| B581 | LD D,$00 | |||||||
| B583 | LD B,(IY+$09) | walk HL to last record | ||||||
| B586 | ADD HL,DE | |||||||
| B587 | DJNZ $B586 | |||||||
| B589 | DEC HL | |||||||
| B58A | LD D,H | DE = last record, HL = one before | ||||||
| B58B | LD E,L | |||||||
| B58C | DEC HL | |||||||
| B58D | LD B,(IY+$09) | |||||||
| B590 | CALL CopyRecordsBck | Copy records backward | ||||||
| B593 | INC DE | clear the freed first slot | ||||||
| B594 | XOR A | |||||||
| B595 | LD (DE),A | |||||||
| B596 | JR $B565 | |||||||
|
||||||||||||||
| CopyRecordsBck | B598 | PUSH BC | ||||||||||||
| B599 | LD C,(IY+$0A) | |||||||||||||
| B59C | LD B,$00 | |||||||||||||
| B59E | LDDR | |||||||||||||
| B5A0 | POP BC | |||||||||||||
| B5A1 | DJNZ CopyRecordsBck | |||||||||||||
| B5A3 | RET | |||||||||||||
|
Used by the routine at B470.
|
||||||||||||
| B5A4 | BIT 7,(IX+$12) | check Y direction (moving up/down) | ||||||||||
| B5A8 | JR NZ,$B5C1 | |||||||||||
| B5AA | PUSH HL | advance target past one record | ||||||||||
| B5AB | LD E,(IY+$0A) | |||||||||||
| B5AE | LD D,$00 | |||||||||||
| B5B0 | ADD HL,DE | |||||||||||
| B5B1 | POP DE | |||||||||||
| B5B2 | LD B,(IY+$08) | number of records to shift | ||||||||||
| B5B5 | CALL CopyRecordsFwd | Copy records forward | ||||||||||
| B5B8 | LD B,(IY+$0A) | |||||||||||
| B5BB | XOR A | |||||||||||
| B5BC | LD (DE),A | |||||||||||
| B5BD | INC DE | |||||||||||
| B5BE | DJNZ $B5BC | |||||||||||
| B5C0 | RET | |||||||||||
| B5C1 | LD E,(IY+$0A) | get record size, count (backward branch) | ||||||||||
| B5C4 | LD D,$00 | |||||||||||
| B5C6 | LD B,(IY+$08) | |||||||||||
| B5C9 | ADD HL,DE | |||||||||||
| B5CA | DJNZ $B5C9 | |||||||||||
| B5CC | DEC HL | |||||||||||
| B5CD | PUSH HL | |||||||||||
| B5CE | ADD HL,DE | |||||||||||
| B5CF | POP DE | |||||||||||
| B5D0 | EX DE,HL | |||||||||||
| B5D1 | LD B,(IY+$08) | |||||||||||
| B5D4 | CALL CopyRecordsBck | Copy records backward | ||||||||||
| B5D7 | LD B,(IY+$0A) | |||||||||||
| B5DA | XOR A | |||||||||||
| B5DB | LD (DE),A | |||||||||||
| B5DC | DEC DE | |||||||||||
| B5DD | DJNZ $B5DB | |||||||||||
| B5DF | RET | |||||||||||
|
||||||||||
|
Works out where an object sits relative to the visible window and whether it fits inside it, flagging it as on- or off-screen. Objects that are visible get a screen slot reserved for their sprite data, and ones that leave the view give their slot back, so only what's on screen uses buffer space.
|
||||||||||
| B5E0 | RES 1,(IX+$0D) | |||||||||
| B5E4 | BIT 0,(IX+$0D) | |||||||||
| B5E8 | JR Z,$B5EE | |||||||||
| B5EA | SET 1,(IX+$0D) | |||||||||
| B5EE | RES 0,(IX+$0D) | |||||||||
| B5F2 | LD HL,($5B0B) | get screen scroll/viewport position | ||||||||
| B5F5 | LD A,(IX+$00) | column relative to viewport | ||||||||
| B5F8 | SUB L | |||||||||
| B5F9 | LD C,A | |||||||||
| B5FA | CP $18 | |||||||||
| B5FC | JR C,$B60A | |||||||||
| B5FE | ADD A,(IY+$06) | |||||||||
| B601 | CP $18 | |||||||||
| B603 | LD A,C | |||||||||
| B604 | JR C,$B60A | |||||||||
| B606 | SET 0,(IX+$0D) | mark column off-screen | ||||||||
| B60A | LD (IY+$02),A | store column in record | ||||||||
| B60D | LD (IY+$00),A | |||||||||
| B610 | LD A,(IX+$01) | row relative to viewport | ||||||||
| B613 | SUB H | |||||||||
| B614 | CP $18 | |||||||||
| B616 | LD C,A | |||||||||
| B617 | JR C,$B62D | |||||||||
| B619 | ADD A,(IY+$08) | |||||||||
| B61C | CP $18 | |||||||||
| B61E | LD A,C | |||||||||
| B61F | JR C,$B62D | |||||||||
| B621 | LD (IY+$01),A | store row in record | ||||||||
| B624 | RES 0,(IX+$0D) | |||||||||
| B628 | LD A,(IX+$0D) | |||||||||
| B62B | JR $B65F | |||||||||
| B62D | LD (IY+$03),A | |||||||||
| B630 | LD (IY+$01),A | |||||||||
| B633 | LD A,(IX+$0D) | |||||||||
| B636 | XOR $01 | toggle on-screen/off-screen state bit | ||||||||
| B638 | LD (IX+$0D),A | |||||||||
| B63B | BIT 0,A | |||||||||
| B63D | JR Z,$B65F | |||||||||
| B63F | BIT 1,A | |||||||||
| B641 | RET NZ | |||||||||
| B642 | LD HL,$B676 | get slot allocation table address | ||||||||
| B645 | XOR A | |||||||||
| B646 | BIT 7,(HL) | check slot free | ||||||||
| B648 | JR Z,$B655 | |||||||||
| B64A | INC HL | |||||||||
| B64B | INC A | |||||||||
| B64C | BIT 4,A | |||||||||
| B64E | JR Z,$B646 | |||||||||
| B650 | SET 7,(IX+$0D) | mark record as having no free slot | ||||||||
| B654 | RET | |||||||||
| B655 | AND $0F | clamp slot index 0..15 | ||||||||
| B657 | OR $F0 | |||||||||
| B659 | LD (IX+$08),A | store allocated slot index | ||||||||
| B65C | SET 7,(HL) | mark slot used | ||||||||
| B65E | RET | |||||||||
| B65F | BIT 1,A | |||||||||
| B661 | RET Z | |||||||||
| B662 | BIT 7,(IX+$0D) | |||||||||
| B666 | RET NZ | |||||||||
| B667 | LD A,(IX+$08) | get slot index to free | ||||||||
| B66A | AND $0F | |||||||||
| B66C | LD HL,$B676 | |||||||||
| B66F | LD E,A | |||||||||
| B670 | LD D,$00 | |||||||||
| B672 | ADD HL,DE | |||||||||
| B673 | RES 7,(HL) | mark slot free | ||||||||
| B675 | RET | |||||||||
|
|
||||
| B676 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| B67E | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
|
||||||||||
| B686 | BIT 5,(IX+$0D) | check vertical-edge flag | ||||||||
| B68A | JR Z,$B6D6 | |||||||||
| B68C | LD L,(IY+$00) | get object screen position | ||||||||
| B68F | LD H,(IY+$01) | |||||||||
| B692 | LD A,$06 | pick highlight color based on move direction | ||||||||
| B694 | XOR (IX+$04) | |||||||||
| B697 | LD C,A | |||||||||
| B698 | BIT 7,(IX+$11) | check "moving left" flag | ||||||||
| B69C | JR NZ,$B6A6 | |||||||||
| B69E | INC (IX+$00) | advance column right | ||||||||
| B6A1 | INC (IY+$00) | |||||||||
| B6A4 | JR $B6B1 | |||||||||
| B6A6 | DEC (IX+$00) | advance column left | ||||||||
| B6A9 | DEC (IY+$00) | |||||||||
| B6AC | LD A,L | compute far edge column | ||||||||
| B6AD | ADD A,(IY+$06) | |||||||||
| B6B0 | LD L,A | |||||||||
| B6B1 | LD B,(IY+$09) | get rows to process | ||||||||
| B6B4 | LD A,H | skip cells outside the 24x24 viewport | ||||||||
| B6B5 | AND $E0 | |||||||||
| B6B7 | JR NZ,$B6D3 | |||||||||
| B6B9 | LD A,H | |||||||||
| B6BA | CP $18 | |||||||||
| B6BC | JR NC,$B6D3 | |||||||||
| B6BE | LD A,L | |||||||||
| B6BF | AND $E0 | |||||||||
| B6C1 | JR NZ,$B6D3 | |||||||||
| B6C3 | LD A,L | |||||||||
| B6C4 | CP $18 | |||||||||
| B6C6 | JR NC,$B6D3 | |||||||||
| B6C8 | PUSH HL | |||||||||
| B6C9 | CALL GetScrAttrAddr | Get screen attribute address | ||||||||
| B6CC | LD A,C | |||||||||
| B6CD | CP (HL) | compare to object's color | ||||||||
| B6CE | JR NZ,$B6D2 | |||||||||
| B6D0 | LD (HL),$06 | paint highlight color | ||||||||
| B6D2 | POP HL | |||||||||
| B6D3 | INC H | |||||||||
| B6D4 | DJNZ $B6B4 | |||||||||
| B6D6 | BIT 6,(IX+$0D) | check horizontal-edge flag | ||||||||
| B6DA | JR Z,$B704 | |||||||||
| B6DC | LD L,(IY+$00) | |||||||||
| B6DF | LD H,(IY+$01) | |||||||||
| B6E2 | LD A,$06 | |||||||||
| B6E4 | XOR (IX+$04) | |||||||||
| B6E7 | LD C,A | |||||||||
| B6E8 | BIT 7,(IX+$12) | check "moving up" flag | ||||||||
| B6EC | JR NZ,$B6F6 | |||||||||
| B6EE | INC (IY+$01) | advance row down | ||||||||
| B6F1 | INC (IX+$01) | |||||||||
| B6F4 | JR $B701 | |||||||||
| B6F6 | DEC (IY+$01) | advance row up | ||||||||
| B6F9 | DEC (IX+$01) | |||||||||
| B6FC | LD A,H | |||||||||
| B6FD | ADD A,(IY+$08) | |||||||||
| B700 | LD H,A | |||||||||
| B701 | CALL $B70F | Screen attribute change for horizontally oriented object | ||||||||
| B704 | LD L,(IY+$00) | reload position/color for common tail | ||||||||
| B707 | LD H,(IY+$01) | |||||||||
| B70A | LD C,$06 | |||||||||
| B70C | JP $B875 | |||||||||
|
||||||||||||
| B70F | LD A,H | skip if row off-grid (bits 5-7 set) | ||||||||||
| B710 | AND $E0 | |||||||||||
| B712 | RET NZ | |||||||||||
| B713 | LD A,H | skip if row >= 24 | ||||||||||
| B714 | CP $18 | |||||||||||
| B716 | RET NC | |||||||||||
| B717 | PUSH HL | |||||||||||
| B718 | LD B,(IY+$07) | get width in columns | ||||||||||
| B71B | LD A,L | skip column if bits 5-7 set | ||||||||||
| B71C | AND $E0 | |||||||||||
| B71E | JR NZ,$B732 | |||||||||||
| B720 | LD A,L | skip if column >= 24 | ||||||||||
| B721 | CP $18 | |||||||||||
| B723 | JR NC,$B732 | |||||||||||
| B725 | PUSH HL | |||||||||||
| B726 | CALL GetScrAttrAddr | Get screen attribute address | ||||||||||
| B729 | LD A,(HL) | compare current attribute to target color | ||||||||||
| B72A | CP C | |||||||||||
| B72B | JR NZ,$B731 | |||||||||||
| B72D | XOR (IX+$04) | flip color based on direction | ||||||||||
| B730 | LD (HL),A | |||||||||||
| B731 | POP HL | |||||||||||
| B732 | INC L | advance to next column | ||||||||||
| B733 | DJNZ $B71B | |||||||||||
| B735 | POP HL | |||||||||||
| B736 | RET | |||||||||||
|
||||||||
| B737 | LD D,(IX+$14) | get object position into DE | ||||||
| B73A | LD E,(IX+$13) | |||||||
| B73D | PUSH DE | IY = object position record | ||||||
| B73E | POP IY | |||||||
| B740 | LD A,(IX+$0E) | reload speed counter from speed factor | ||||||
| B743 | LD (IX+$0F),A | |||||||
| B746 | RES 5,(IX+$0D) | clear off-grid row/column flags | ||||||
| B74A | RES 6,(IX+$0D) | |||||||
| B74E | LD A,(IX+$02) | add last DX to X shift | ||||||
| B751 | ADD A,(IX+$11) | |||||||
| B754 | AND $07 | wrap X shift 0..7 and store | ||||||
| B756 | LD (IX+$02),A | |||||||
| B759 | LD A,(IX+$03) | add last DY to Y shift | ||||||
| B75C | ADD A,(IX+$12) | |||||||
| B75F | AND $07 | wrap Y shift 0..7 and store | ||||||
| B761 | LD (IX+$03),A | |||||||
| B764 | CALL $B5E0 | Clip object position to viewport, allocate/free screen slot | ||||||
| B767 | BIT 0,(IX+$0D) | check off-grid flag | ||||||
| B76B | JR Z,$B77B | |||||||
| B76D | BIT 7,(IX+$0D) | check allocation-failed flag | ||||||
| B771 | JR NZ,$B79E | |||||||
| B773 | CALL $B470 | Draw object sprite, clipped to viewport | ||||||
| B776 | CALL $B686 | Screen attribute change for object edges | ||||||
| B779 | JR $B79E | |||||||
| B77B | LD A,(IX+$02) | reload X shift | ||||||
| B77E | RES 7,(IX+$0D) | |||||||
| B782 | OR A | |||||||
| B783 | JR NZ,$B789 | |||||||
| B785 | SET 5,(IX+$0D) | mark X-centered (no shift) | ||||||
| B789 | LD A,(IX+$03) | |||||||
| B78C | OR A | |||||||
| B78D | JR NZ,$B793 | |||||||
| B78F | SET 6,(IX+$0D) | mark Y-centered (no shift) | ||||||
| B793 | LD A,(IX+$0D) | |||||||
| B796 | AND $60 | check either center flag set | ||||||
| B798 | JR Z,$B79E | |||||||
| B79A | CALL $B686 | Screen attribute change for object edges | ||||||
| B79D | RET | |||||||
| B79E | LD A,(IX+$02) | |||||||
| B7A1 | BIT 2,(IX+$0D) | choose X or Y shift value | ||||||
| B7A5 | JR Z,$B7AA | |||||||
| B7A7 | LD A,(IX+$03) | |||||||
| B7AA | CP $04 | check shift reached midpoint | ||||||
| B7AC | RET NZ | |||||||
| B7AD | LD HL,$B7B8 | address of the return point - put on the stack | ||||||
| B7B0 | PUSH HL | |||||||
| B7B1 | LD H,(IX+$06) | get moving-procedure address | ||||||
| B7B4 | LD L,(IX+$05) | |||||||
| B7B7 | JP (HL) | |||||||
|
Point of return
|
||||||||
| B7B8 | RET | |||||||
|
|
||||
| B7B9 | DEFW $0000 | buffer address ?? | ||
|
||||||||
| B7BB | LD A,(IX+$0D) | mask and store off-grid/center flags | ||||||
| B7BE | AND $9E | |||||||
| B7C0 | LD (IX+$0D),A | |||||||
| B7C3 | LD E,(IX+$13) | get object position into DE | ||||||
| B7C6 | LD D,(IX+$14) | |||||||
| B7C9 | PUSH DE | |||||||
| B7CA | POP IY | now IY = record address in block C092 | ||||||
| B7CC | LD A,(IX+$02) | add last DX to X shift | ||||||
| B7CF | ADD A,(IX+$11) | |||||||
| B7D2 | AND $07 | wrap X shift 0..7 and store | ||||||
| B7D4 | LD (IX+$02),A | |||||||
| B7D7 | LD A,(IX+$03) | add last DY to Y shift | ||||||
| B7DA | ADD A,(IX+$12) | |||||||
| B7DD | AND $07 | wrap Y shift 0..7 and store | ||||||
| B7DF | LD (IX+$03),A | |||||||
| B7E2 | CALL $B5E0 | Clip object position to viewport, allocate/free screen slot | ||||||
| B7E5 | BIT 0,(IX+$0D) | check off-grid flag | ||||||
| B7E9 | JR Z,$B7F9 | |||||||
| B7EB | BIT 7,(IX+$0D) | check allocation-failed flag | ||||||
| B7EF | JR NZ,$B81C | |||||||
| B7F1 | CALL $B470 | Draw object sprite, clipped to viewport | ||||||
| B7F4 | CALL $B837 | Screen attribute change for vertically oriented object | ||||||
| B7F7 | JR $B81C | |||||||
| B7F9 | LD A,(IX+$02) | reload X shift | ||||||
| B7FC | RES 7,(IX+$0D) | |||||||
| B800 | OR A | |||||||
| B801 | JR NZ,$B807 | |||||||
| B803 | SET 5,(IX+$0D) | mark X-centered (no shift) | ||||||
| B807 | LD A,(IX+$03) | |||||||
| B80A | OR A | |||||||
| B80B | JR NZ,$B811 | |||||||
| B80D | SET 6,(IX+$0D) | mark Y-centered (no shift) | ||||||
| B811 | LD A,(IX+$0D) | |||||||
| B814 | AND $60 | check either center flag set | ||||||
| B816 | JR Z,$B81C | |||||||
| B818 | CALL $B686 | Screen attribute change for object edges | ||||||
| B81B | RET | |||||||
| B81C | LD A,(IX+$02) | |||||||
| B81F | BIT 2,(IX+$0D) | choose X or Y shift value | ||||||
| B823 | JR Z,$B828 | |||||||
| B825 | LD A,(IX+$03) | |||||||
| B828 | CP $04 | check shift reached midpoint | ||||||
| B82A | RET NZ | |||||||
| B82B | LD HL,$B836 | |||||||
| B82E | PUSH HL | |||||||
| B82F | LD H,(IX+$06) | get address of moving procedure | ||||||
| B832 | LD L,(IX+$05) | |||||||
| B835 | JP (HL) | run the moving procedure | ||||||
|
|
||||
| B836 | RET | |||
|
||||||||||
| B837 | LD A,$06 | base color value | ||||||||
| B839 | BIT 0,(IX+$0D) | check off-grid flag | ||||||||
| B83D | JR NZ,$B842 | |||||||||
| B83F | XOR (IX+$04) | flip color for direction | ||||||||
| B842 | LD C,A | |||||||||
| B843 | LD L,(IY+$00) | get screen position | ||||||||
| B846 | LD H,(IY+$01) | |||||||||
| B849 | LD A,(IX+$02) | |||||||||
| B84C | OR A | |||||||||
| B84D | JR NZ,$B85F | |||||||||
| B84F | BIT 7,(IX+$11) | check "moving left" flag | ||||||||
| B853 | JR NZ,$B85B | |||||||||
| B855 | INC (IX+$00) | advance column right | ||||||||
| B858 | INC L | |||||||||
| B859 | JR $B85F | |||||||||
| B85B | DEC (IX+$00) | advance column left | ||||||||
| B85E | DEC L | |||||||||
| B85F | LD A,(IX+$03) | |||||||||
| B862 | OR A | |||||||||
| B863 | JR NZ,$B875 | |||||||||
| B865 | BIT 7,(IX+$12) | check "moving up" flag | ||||||||
| B869 | JR NZ,$B871 | |||||||||
| B86B | INC (IX+$01) | advance row down | ||||||||
| B86E | INC H | |||||||||
| B86F | JR $B875 | |||||||||
| B871 | DEC (IX+$01) | advance row up | ||||||||
| B874 | DEC H | |||||||||
|
This entry point is used by the routine at B686.
|
||||||||||
| B875 | LD A,(IY+$09) | set column loop count | ||||||||
| B878 | LD (IY+$0E),A | |||||||||
| B87B | CALL $B70F | Screen attribute change for horizontally oriented object | ||||||||
| B87E | INC H | next row | ||||||||
| B87F | DEC (IY+$0E) | decrement column count | ||||||||
| B882 | JR NZ,$B87B | |||||||||
| B884 | RET | |||||||||
|
||||||||
|
Steers a fish that swims left and right: it probes the relief tiles ahead to see if the way is clear, reversing direction when blocked, then picks the matching sprite and glides one step, alternating between the moving and settled states each call.
|
||||||||
| B885 | BIT 0,(IX+$10) | check "moving" bit | ||||||
| B889 | JP NZ,$B941 | |||||||
| B88C | BIT 7,(IX+$11) | check facing direction | ||||||
| B890 | LD A,(IX+$00) | |||||||
| B893 | JR NZ,$B89C | |||||||
| B895 | INC A | probe tile ahead (right) | ||||||
| B896 | INC A | |||||||
| B897 | ADD A,(IY+$07) | |||||||
| B89A | JR $B89F | |||||||
| B89C | DEC A | probe tile ahead (left) | ||||||
| B89D | DEC A | |||||||
| B89E | DEC A | |||||||
| B89F | LD L,A | |||||||
| B8A0 | LD H,(IX+$01) | |||||||
| B8A3 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||||||
| B8A6 | OR A | |||||||
| B8A7 | JR NZ,$B903 | |||||||
| B8A9 | INC H | |||||||
| B8AA | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||||||
| B8AD | OR A | |||||||
| B8AE | JR NZ,$B903 | |||||||
| B8B0 | BIT 0,(IX+$0D) | check off-grid flag | ||||||
| B8B4 | JR Z,$B8D7 | |||||||
| B8B6 | BIT 7,(IX+$0D) | check allocation-failed flag | ||||||
| B8BA | JR NZ,$B8D7 | |||||||
| B8BC | LD DE,($5B0B) | |||||||
| B8C0 | LD A,H | |||||||
| B8C1 | SUB D | |||||||
| B8C2 | CP $18 | |||||||
| B8C4 | JR NC,$B8D7 | |||||||
| B8C6 | LD D,A | |||||||
| B8C7 | LD A,L | |||||||
| B8C8 | SUB E | |||||||
| B8C9 | CP $18 | |||||||
| B8CB | JR NC,$B8D7 | |||||||
| B8CD | LD L,A | |||||||
| B8CE | LD H,D | |||||||
| B8CF | CALL GetScrAttrAddr | Get screen attribute address | ||||||
| B8D2 | LD A,(HL) | |||||||
| B8D3 | CP $06 | |||||||
| B8D5 | JR NZ,$B903 | |||||||
| B8D7 | LD A,R | get pseudo-random value | ||||||
| B8D9 | JR Z,$B903 | |||||||
| B8DB | LD C,A | |||||||
| B8DC | AND $40 | |||||||
| B8DE | JR Z,$B8E5 | |||||||
| B8E0 | LD (IX+$12),$00 | stop moving (no direction change) | ||||||
| B8E4 | RET | |||||||
| B8E5 | BIT 2,C | |||||||
| B8E7 | JR Z,$B8F6 | |||||||
| B8E9 | LD A,(IX+$01) | |||||||
| B8EC | CP (IX+$15) | compare row to lower bound | ||||||
| B8EF | JR NC,$B8E0 | |||||||
| B8F1 | LD (IX+$12),$01 | set direction = down | ||||||
| B8F5 | RET | |||||||
| B8F6 | LD A,(IX+$16) | compare row to upper bound | ||||||
| B8F9 | CP (IX+$01) | |||||||
| B8FC | JR NC,$B8E0 | |||||||
| B8FE | LD (IX+$12),$FF | set direction = up | ||||||
| B902 | RET | |||||||
| B903 | BIT 7,(IX+$11) | |||||||
| B907 | JR Z,$B917 | |||||||
| B909 | LD A,(IX+$17) | |||||||
| B90C | LD (IX+$18),A | |||||||
| B90F | LD L,(IY+$16) | get target tile offset (facing left) | ||||||
| B912 | LD H,(IY+$17) | |||||||
| B915 | JR $B924 | |||||||
| B917 | XOR A | |||||||
| B918 | SUB (IX+$17) | |||||||
| B91B | LD (IX+$18),A | |||||||
| B91E | LD L,(IY+$14) | get target tile offset (facing right) | ||||||
| B921 | LD H,(IY+$15) | |||||||
| B924 | LD (IX+$0B),L | |||||||
| B927 | LD (IX+$0C),H | |||||||
| B92A | LD (IX+$11),$00 | |||||||
| B92E | LD (IX+$12),$00 | |||||||
| B932 | SET 0,(IX+$10) | set "moving" bit | ||||||
| B936 | LD A,(IY+$0C) | get and store move timer | ||||||
| B939 | LD (IX+$19),A | |||||||
| B93C | SLA (IX+$0E) | double speed while moving | ||||||
| B940 | RET | |||||||
| B941 | DEC (IX+$19) | |||||||
| B944 | RET NZ | |||||||
| B945 | LD A,(IX+$18) | restore facing direction | ||||||
| B948 | LD (IX+$11),A | |||||||
| B94B | BIT 7,A | |||||||
| B94D | JR Z,$B957 | |||||||
| B94F | LD L,(IY+$10) | |||||||
| B952 | LD H,(IY+$11) | |||||||
| B955 | JR $B95D | |||||||
| B957 | LD L,(IY+$12) | |||||||
| B95A | LD H,(IY+$13) | |||||||
| B95D | LD (IX+$09),L | set sprite address | ||||||
| B960 | LD (IX+$0A),H | |||||||
| B963 | LD (IX+$0B),L | set sprite address | ||||||
| B966 | LD (IX+$0C),H | |||||||
| B969 | RES 0,(IX+$10) | clear "moving" bit | ||||||
| B96D | SRL (IX+$0E) | |||||||
| B971 | RET | |||||||
|
|
||||
|
Steers a fish that swims up and down: it probes the relief tiles above or below to see if the way is clear, reversing direction when blocked, then picks the matching sprite and glides one step, alternating between the moving and settled states each call.
|
||||
| B972 | BIT 0,(IX+$10) | check "moving" bit | ||
| B976 | JP NZ,$BA33 | |||
| B979 | BIT 7,(IX+$12) | check facing direction | ||
| B97D | LD A,(IX+$01) | |||
| B980 | JR NZ,$B988 | |||
| B982 | ADD A,(IY+$09) | probe tile ahead (down) | ||
| B985 | INC A | |||
| B986 | JR $B98A | |||
| B988 | DEC A | probe tile ahead (up) | ||
| B989 | DEC A | |||
| B98A | LD H,A | |||
| B98B | LD L,(IX+$00) | |||
| B98E | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| B991 | OR A | |||
| B992 | JR NZ,$B9F9 | |||
| B994 | LD A,L | |||
| B995 | ADD A,(IY+$06) | |||
| B998 | LD L,A | |||
| B999 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| B99C | OR A | |||
| B99D | JR NZ,$B9F9 | |||
| B99F | BIT 0,(IX+$0D) | check off-grid flag | ||
| B9A3 | JR Z,$B9C7 | |||
| B9A5 | BIT 7,(IX+$0D) | check allocation-failed flag | ||
| B9A9 | JR NZ,$B9C7 | |||
| B9AB | LD DE,($5B0B) | |||
| B9AF | LD A,H | |||
| B9B0 | SUB D | |||
| B9B1 | CP $18 | |||
| B9B3 | JR NC,$B9C7 | |||
| B9B5 | LD D,A | |||
| B9B6 | LD A,L | |||
| B9B7 | DEC A | |||
| B9B8 | SUB E | |||
| B9B9 | CP $18 | |||
| B9BB | JR NC,$B9C7 | |||
| B9BD | LD L,A | |||
| B9BE | LD H,D | |||
| B9BF | CALL GetScrAttrAddr | Get screen attribute address | ||
| B9C2 | LD A,(HL) | |||
| B9C3 | CP $06 | |||
| B9C5 | JR NZ,$B9F9 | |||
| B9C7 | LD A,R | get pseudo-random value | ||
| B9C9 | JR Z,$B9F9 | |||
| B9CB | BIT 6,A | |||
| B9CD | JR Z,$B9D4 | |||
| B9CF | LD (IX+$11),$00 | stop moving (no direction change) | ||
| B9D3 | RET | |||
| B9D4 | BIT 2,A | random bit test | ||
| B9D6 | LD C,$01 | |||
| B9D8 | JR Z,$B9E3 | |||
| B9DA | LD C,$FF | set direction = up | ||
| B9DC | LD A,L | |||
| B9DD | SUB (IY+$06) | |||
| B9E0 | SUB $02 | |||
| B9E2 | LD L,A | |||
| B9E3 | INC L | |||
| B9E4 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| B9E7 | OR A | |||
| B9E8 | JR NZ,$B9CF | |||
| B9EA | LD A,H | probe tile below | ||
| B9EB | ADD A,(IY+$08) | |||
| B9EE | LD H,A | |||
| B9EF | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| B9F2 | OR A | |||
| B9F3 | JR NZ,$B9CF | |||
| B9F5 | LD (IX+$11),C | |||
| B9F8 | RET | |||
| B9F9 | BIT 7,(IX+$12) | check facing direction | ||
| B9FD | JR Z,$BA0A | |||
| B9FF | LD A,(IX+$17) | |||
| BA02 | LD L,(IY+$14) | get target tile offset (facing down) | ||
| BA05 | LD H,(IY+$15) | |||
| BA08 | JR $BA14 | |||
| BA0A | XOR A | compute offset (facing up) | ||
| BA0B | SUB (IX+$17) | |||
| BA0E | LD L,(IY+$16) | get target tile offset (facing up) | ||
| BA11 | LD H,(IY+$17) | |||
| BA14 | LD (IX+$18),A | |||
| BA17 | LD (IX+$0B),L | |||
| BA1A | LD (IX+$0C),H | |||
| BA1D | XOR A | |||
| BA1E | LD (IX+$11),A | |||
| BA21 | LD (IX+$12),A | |||
| BA24 | SET 0,(IX+$10) | set "moving" bit | ||
| BA28 | LD A,(IY+$0C) | get and store move timer | ||
| BA2B | LD (IX+$19),A | |||
| BA2E | SLA (IX+$0E) | double speed while moving | ||
| BA32 | RET | |||
| BA33 | DEC (IX+$19) | |||
| BA36 | RET NZ | |||
| BA37 | LD A,(IX+$18) | restore facing direction | ||
| BA3A | LD (IX+$12),A | |||
| BA3D | BIT 7,A | |||
| BA3F | JR Z,$BA49 | |||
| BA41 | LD L,(IY+$12) | |||
| BA44 | LD H,(IY+$13) | |||
| BA47 | JR $BA4F | |||
| BA49 | LD L,(IY+$10) | |||
| BA4C | LD H,(IY+$11) | |||
| BA4F | LD (IX+$09),L | |||
| BA52 | LD (IX+$0A),H | |||
| BA55 | LD (IX+$0B),L | |||
| BA58 | LD (IX+$0C),H | |||
| BA5B | RES 0,(IX+$10) | clear "moving" bit | ||
| BA5F | SRL (IX+$0E) | |||
| BA63 | RET | |||
|
|
||||
|
Steers a fish that swims diagonally: it probes the relief tiles ahead in both directions to see where it can go, turning or reversing when blocked, and picks the matching sprite for its current heading. Once lined up it commits to a move and glides one step, alternating between the moving and settled states each call.
|
||||
| BA64 | BIT 0,(IX+$10) | check "moving" bit | ||
| BA68 | JP NZ,$BC8F | |||
| BA6B | SET 5,(IX+$10) | mark as diagonal-move candidate | ||
| BA6F | BIT 2,(IX+$0D) | check current move axis | ||
| BA73 | LD L,(IX+$00) | |||
| BA76 | LD H,(IX+$01) | |||
| BA79 | JP NZ,$BB94 | |||
| BA7C | BIT 7,(IX+$11) | check facing direction | ||
| BA80 | JR NZ,$BA8F | |||
| BA82 | LD A,L | compute tile-ahead position (right) | ||
| BA83 | ADD A,(IY+$07) | |||
| BA86 | LD L,A | |||
| BA87 | LD D,(IY+$15) | |||
| BA8A | LD E,(IY+$14) | |||
| BA8D | JR $BA96 | |||
| BA8F | DEC L | probe tile ahead-left; get its sprite | ||
| BA90 | LD D,(IY+$17) | |||
| BA93 | LD E,(IY+$16) | |||
| BA96 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BA99 | OR A | |||
| BA9A | JR NZ,$BADE | |||
| BA9C | LD A,H | |||
| BA9D | ADD A,(IY+$08) | |||
| BAA0 | LD H,A | |||
| BAA1 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BAA4 | OR A | |||
| BAA5 | JR NZ,$BADE | |||
| BAA7 | LD A,R | get pseudo-random value | ||
| BAA9 | JR Z,$BADE | |||
| BAAB | BIT 6,A | random bit test | ||
| BAAD | JR NZ,$BAB4 | |||
| BAAF | LD (IX+$12),$00 | |||
| BAB3 | RET | |||
| BAB4 | LD H,(IX+$01) | probe the diagonal-turn tile | ||
| BAB7 | LD L,(IX+$00) | |||
| BABA | DEC H | |||
| BABB | LD C,$FF | |||
| BABD | BIT 2,A | |||
| BABF | JR Z,$BAC9 | |||
| BAC1 | LD C,$01 | |||
| BAC3 | LD A,H | |||
| BAC4 | ADD A,(IY+$09) | |||
| BAC7 | LD H,A | |||
| BAC8 | INC H | |||
| BAC9 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BACC | OR A | |||
| BACD | JR NZ,$BAAF | |||
| BACF | LD A,L | |||
| BAD0 | ADD A,(IY+$06) | |||
| BAD3 | LD L,A | |||
| BAD4 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BAD7 | OR A | |||
| BAD8 | JR NZ,$BAAF | |||
| BADA | LD (IX+$12),C | |||
| BADD | RET | |||
| BADE | LD (IX+$0B),E | way clear: commit sprite and move | ||
| BAE1 | LD (IX+$0C),D | |||
| BAE4 | SET 0,(IX+$10) | set "moving" bit | ||
| BAE8 | RES 7,(IX+$10) | clear facing-down flag | ||
| BAEC | SLA (IX+$0E) | double speed while moving | ||
| BAF0 | LD L,(IX+$00) | |||
| BAF3 | LD H,(IX+$01) | |||
| BAF6 | BIT 7,(IX+$11) | |||
| BAFA | JR NZ,$BB04 | |||
| BAFC | LD A,L | |||
| BAFD | ADD A,(IY+$06) | |||
| BB00 | SUB (IY+$08) | |||
| BB03 | LD L,A | |||
| BB04 | LD A,R | get pseudo-random value | ||
| BB06 | JR Z,$BB32 | |||
| BB08 | LD A,H | |||
| BB09 | CP $4A | |||
| BB0B | JR C,$BB32 | |||
| BB0D | ADD A,(IY+$08) | |||
| BB10 | SUB (IY+$07) | |||
| BB13 | LD H,A | |||
| BB14 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BB17 | OR A | |||
| BB18 | JR NZ,$BB32 | |||
| BB1A | LD A,L | |||
| BB1B | LD C,L | |||
| BB1C | ADD A,(IY+$08) | |||
| BB1F | LD L,A | |||
| BB20 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BB23 | OR A | |||
| BB24 | LD L,C | |||
| BB25 | JR NZ,$BB32 | |||
| BB27 | SET 6,(IX+$10) | mark diagonal state | ||
| BB2B | XOR A | |||
| BB2C | SUB (IX+$17) | |||
| BB2F | INC H | |||
| BB30 | JR $BB5E | |||
| BB32 | LD A,R | get pseudo-random value | ||
| BB34 | JR Z,$BB75 | |||
| BB36 | LD A,(IX+$01) | |||
| BB39 | CP $FA | |||
| BB3B | JR NC,$BB75 | |||
| BB3D | ADD A,(IY+$07) | |||
| BB40 | LD H,A | |||
| BB41 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BB44 | OR A | |||
| BB45 | JR NZ,$BB75 | |||
| BB47 | LD C,L | |||
| BB48 | LD A,L | |||
| BB49 | ADD A,(IY+$08) | |||
| BB4C | LD L,A | |||
| BB4D | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BB50 | OR A | |||
| BB51 | LD L,C | |||
| BB52 | JR NZ,$BB75 | |||
| BB54 | SET 6,(IX+$10) | mark diagonal state | ||
| BB58 | LD A,(IX+$17) | |||
| BB5B | LD H,(IX+$01) | |||
| BB5E | LD (IX+$18),A | |||
| BB61 | XOR A | |||
| BB62 | LD (IX+$12),A | |||
| BB65 | LD (IX+$11),A | |||
| BB68 | LD (IX+$1A),L | |||
| BB6B | LD (IX+$1B),H | |||
| BB6E | LD A,(IX+$15) | |||
| BB71 | LD (IX+$19),A | |||
| BB74 | RET | |||
| BB75 | RES 6,(IX+$10) | clear diagonal state | ||
| BB79 | RES 5,(IX+$10) | clear diagonal-candidate flag | ||
| BB7D | LD H,(IX+$01) | |||
| BB80 | LD L,(IX+$00) | |||
| BB83 | BIT 7,(IX+$11) | |||
| BB87 | JR NZ,$BB8F | |||
| BB89 | XOR A | |||
| BB8A | SUB (IX+$17) | |||
| BB8D | JR $BB5E | |||
| BB8F | LD A,(IX+$17) | |||
| BB92 | JR $BB5E | |||
| BB94 | BIT 7,(IX+$12) | check facing direction | ||
| BB98 | JR NZ,$BBA7 | |||
| BB9A | LD A,H | |||
| BB9B | ADD A,(IY+$09) | |||
| BB9E | LD H,A | |||
| BB9F | LD D,(IY+$17) | |||
| BBA2 | LD E,(IY+$16) | |||
| BBA5 | JR $BBAE | |||
| BBA7 | DEC H | |||
| BBA8 | LD D,(IY+$15) | |||
| BBAB | LD E,(IY+$14) | |||
| BBAE | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BBB1 | OR A | |||
| BBB2 | JR NZ,$BBF6 | |||
| BBB4 | LD A,L | |||
| BBB5 | ADD A,(IY+$06) | |||
| BBB8 | LD L,A | |||
| BBB9 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BBBC | OR A | |||
| BBBD | JR NZ,$BBF6 | |||
| BBBF | LD A,R | get pseudo-random value | ||
| BBC1 | JR Z,$BBF6 | |||
| BBC3 | BIT 6,A | |||
| BBC5 | JR NZ,$BBCC | |||
| BBC7 | LD (IX+$11),$00 | |||
| BBCB | RET | |||
| BBCC | LD H,(IX+$01) | |||
| BBCF | LD L,(IX+$00) | |||
| BBD2 | DEC L | |||
| BBD3 | LD C,$FF | |||
| BBD5 | BIT 2,A | |||
| BBD7 | JR Z,$BBE1 | |||
| BBD9 | LD C,$01 | |||
| BBDB | LD A,L | |||
| BBDC | ADD A,(IY+$07) | |||
| BBDF | INC A | |||
| BBE0 | LD L,A | |||
| BBE1 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BBE4 | OR A | |||
| BBE5 | JR NZ,$BBC7 | |||
| BBE7 | LD A,H | |||
| BBE8 | ADD A,(IY+$08) | |||
| BBEB | LD H,A | |||
| BBEC | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BBEF | OR A | |||
| BBF0 | JR NZ,$BBC7 | |||
| BBF2 | LD (IX+$11),C | |||
| BBF5 | RET | |||
| BBF6 | LD (IX+$0B),E | |||
| BBF9 | LD (IX+$0C),D | |||
| BBFC | SET 0,(IX+$10) | set "moving" bit | ||
| BC00 | SET 7,(IX+$10) | set facing-down flag | ||
| BC04 | SLA (IX+$0E) | double speed while moving | ||
| BC08 | LD L,(IX+$00) | |||
| BC0B | LD H,(IX+$01) | |||
| BC0E | BIT 7,(IX+$12) | |||
| BC12 | JR NZ,$BC1C | |||
| BC14 | LD A,H | |||
| BC15 | ADD A,(IY+$08) | |||
| BC18 | SUB (IY+$06) | |||
| BC1B | LD H,A | |||
| BC1C | LD A,R | get pseudo-random value | ||
| BC1E | JR Z,$BC47 | |||
| BC20 | LD A,L | |||
| BC21 | ADD A,(IY+$06) | |||
| BC24 | SUB (IY+$09) | |||
| BC27 | LD L,A | |||
| BC28 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BC2B | OR A | |||
| BC2C | JR NZ,$BC47 | |||
| BC2E | LD A,H | |||
| BC2F | LD C,H | |||
| BC30 | ADD A,(IY+$06) | |||
| BC33 | LD H,A | |||
| BC34 | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BC37 | OR A | |||
| BC38 | LD H,C | |||
| BC39 | JR NZ,$BC47 | |||
| BC3B | RES 6,(IX+$10) | clear diagonal state | ||
| BC3F | XOR A | |||
| BC40 | SUB (IX+$17) | |||
| BC43 | INC L | |||
| BC44 | JP $BB5E | |||
| BC47 | LD A,(IX+$00) | |||
| BC4A | ADD A,(IY+$09) | |||
| BC4D | LD L,A | |||
| BC4E | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BC51 | OR A | |||
| BC52 | JR NZ,$BC6E | |||
| BC54 | LD C,H | |||
| BC55 | LD A,H | |||
| BC56 | ADD A,(IY+$06) | |||
| BC59 | LD H,A | |||
| BC5A | CALL GetTileInBlock | Calculate address in relief block and Get tile nummber | ||
| BC5D | OR A | |||
| BC5E | LD H,C | |||
| BC5F | JR NZ,$BC6E | |||
| BC61 | RES 6,(IX+$10) | |||
| BC65 | LD A,(IX+$17) | |||
| BC68 | LD L,(IX+$00) | |||
| BC6B | JP $BB5E | |||
| BC6E | SET 6,(IX+$10) | mark diagonal state | ||
| BC72 | RES 5,(IX+$10) | |||
| BC76 | LD H,(IX+$01) | |||
| BC79 | LD L,(IX+$00) | |||
| BC7C | BIT 7,(IX+$12) | |||
| BC80 | JR NZ,$BC89 | |||
| BC82 | XOR A | |||
| BC83 | SUB (IX+$17) | |||
| BC86 | JP $BB5E | |||
| BC89 | LD A,(IX+$17) | |||
| BC8C | JP $BB5E | |||
| BC8F | BIT 1,(IX+$10) | check secondary "moving" flag | ||
| BC93 | JP NZ,$BD4E | |||
| BC96 | DEC (IX+$19) | wait for move timer | ||
| BC99 | RET NZ | |||
| BC9A | CALL $B5E0 | Clip object position to viewport, allocate/free screen slot | ||
| BC9D | BIT 0,(IX+$0D) | |||
| BCA1 | JR Z,$BCC1 | |||
| BCA3 | BIT 7,(IX+$0D) | |||
| BCA7 | JR NZ,$BCC1 | |||
| BCA9 | RES 0,(IX+$0D) | |||
| BCAD | CALL $B470 | Draw object sprite, clipped to viewport | ||
| BCB0 | CALL $B837 | Screen attribute change for vertically oriented object | ||
| BCB3 | LD A,(IX+$08) | |||
| BCB6 | AND $0F | |||
| BCB8 | LD E,A | |||
| BCB9 | LD D,$00 | |||
| BCBB | LD HL,$B676 | |||
| BCBE | ADD HL,DE | |||
| BCBF | LD (HL),$00 | |||
| BCC1 | BIT 5,(IX+$10) | |||
| BCC5 | JR Z,$BCEA | |||
| BCC7 | LD A,(IX+$02) | |||
| BCCA | LD B,(IX+$03) | |||
| BCCD | LD (IX+$03),A | |||
| BCD0 | LD (IX+$02),B | |||
| BCD3 | LD A,(IX+$0D) | toggle relief-side flag | ||
| BCD6 | XOR $04 | |||
| BCD8 | LD (IX+$0D),A | |||
| BCDB | LD L,(IY+$04) | |||
| BCDE | LD H,(IY+$05) | |||
| BCE1 | PUSH HL | |||
| BCE2 | POP IY | |||
| BCE4 | LD (IX+$13),L | set X value | ||
| BCE7 | LD (IX+$14),H | set Y value | ||
| BCEA | LD A,(IX+$1A) | restore column | ||
| BCED | LD (IX+$00),A | |||
| BCF0 | LD A,(IX+$1B) | restore row | ||
| BCF3 | LD (IX+$01),A | |||
| BCF6 | BIT 6,(IX+$10) | |||
| BCFA | JR Z,$BD04 | |||
| BCFC | BIT 7,(IX+$18) | |||
| BD00 | JR Z,$BD0A | |||
| BD02 | JR $BD18 | |||
| BD04 | BIT 7,(IX+$18) | |||
| BD08 | JR Z,$BD18 | |||
| BD0A | LD H,(IY+$19) | |||
| BD0D | LD L,(IY+$18) | |||
| BD10 | LD D,(IY+$11) | |||
| BD13 | LD E,(IY+$10) | |||
| BD16 | JR $BD24 | |||
| BD18 | LD H,(IY+$1B) | |||
| BD1B | LD L,(IY+$1A) | |||
| BD1E | LD D,(IY+$13) | |||
| BD21 | LD E,(IY+$12) | |||
| BD24 | LD (IX+$0A),D | |||
| BD27 | LD (IX+$09),E | |||
| BD2A | LD (IX+$0C),H | |||
| BD2D | LD (IX+$0B),L | |||
| BD30 | LD A,(IX+$16) | |||
| BD33 | LD (IX+$19),A | |||
| BD36 | SET 1,(IX+$10) | |||
| BD3A | CALL $B5E0 | Clip object position to viewport, allocate/free screen slot | ||
| BD3D | BIT 0,(IX+$0D) | |||
| BD41 | RET Z | |||
| BD42 | BIT 7,(IX+$0D) | |||
| BD46 | RET NZ | |||
| BD47 | CALL $B470 | Draw object sprite, clipped to viewport | ||
| BD4A | CALL $B837 | Screen attribute change for vertically oriented object | ||
| BD4D | RET | |||
| BD4E | DEC (IX+$19) | wait for move timer | ||
| BD51 | RET NZ | |||
| BD52 | SRL (IX+$0E) | halve speed after move | ||
| BD56 | LD A,(IX+$0A) | |||
| BD59 | LD (IX+$0C),A | |||
| BD5C | LD A,(IX+$09) | |||
| BD5F | LD (IX+$0B),A | |||
| BD62 | RES 0,(IX+$10) | clear "moving" bit | ||
| BD66 | RES 1,(IX+$10) | |||
| BD6A | LD A,(IX+$18) | |||
| BD6D | BIT 6,(IX+$10) | |||
| BD71 | JR NZ,$BD7B | |||
| BD73 | LD (IX+$11),A | |||
| BD76 | RES 2,(IX+$0D) | |||
| BD7A | RET | |||
| BD7B | LD (IX+$12),A | |||
| BD7E | SET 2,(IX+$0D) | |||
| BD82 | RET | |||
|
||||||||||||
| BD83 | LD A,L | set speed factor = (L AND C) + C | ||||||||||
| BD84 | AND C | |||||||||||
| BD85 | ADD A,C | |||||||||||
| BD86 | LD (IX+$0E),A | |||||||||||
| BD89 | LD HL,$BDA9 | speed counter from rolling 0..31 index | ||||||||||
| BD8C | INC (HL) | |||||||||||
| BD8D | LD A,$1F | |||||||||||
| BD8F | AND (HL) | |||||||||||
| BD90 | INC A | |||||||||||
| BD91 | LD (IX+$0F),A | |||||||||||
| BD94 | PUSH DE | |||||||||||
| BD95 | CALL NextRandom | Random | ||||||||||
| BD98 | LD A,H | random direction index 0..7 | ||||||||||
| BD99 | AND $07 | |||||||||||
| BD9B | LD HL,$BDAA | !!MUT-ARG!! LBDAA or LBDB2 | ||||||||||
| BD9E | ADD A,L | |||||||||||
| BD9F | LD L,A | |||||||||||
| BDA0 | JR NC,$BDA3 | |||||||||||
| BDA2 | INC H | |||||||||||
| BDA3 | LD A,(HL) | |||||||||||
| BDA4 | LD (IX+$04),A | set DX value | ||||||||||
| BDA7 | POP DE | |||||||||||
| BDA8 | RET | |||||||||||
|
|
||||
| BDA9 | DEFB $00 | |||
| BDAA | DEFB $41,$44,$05,$45,$02,$42,$43,$40 | |||
| BDB2 | DEFB $05,$45,$02,$42,$43,$03,$40,$41 | |||
| BDBA | CALL $BEC7 | Reset slot allocation bitmap and buffer pointer | ||
| BDBD | LD A,($5B04) | get screen position (row) on mini-map | ||
| BDC0 | CP $03 | |||
| BDC2 | JR NC,$BDCB | |||
| BDC4 | CALL $BEB2 | Process 21-byte records in group I | ||
| BDC7 | CALL $BE58 | Process 26-byte records in group II | ||
| BDCA | RET | |||
| BDCB | CP $04 | |||
| BDCD | JR NC,$BDD6 | |||
| BDCF | CALL $BE58 | Process 26-byte records in group II | ||
| BDD2 | CALL $BE85 | Process 26-byte records in group III | ||
| BDD5 | RET | |||
| BDD6 | CP $06 | |||
| BDD8 | JR NC,$BDDE | |||
| BDDA | CALL $BE85 | Process 26-byte records in group III | ||
| BDDD | RET | |||
| BDDE | CP $09 | |||
| BDE0 | JR NC,$BDE5 | |||
| BDE2 | CALL $BE85 | Process 26-byte records in group III | ||
| BDE5 | CALL $C45C | Draw group IV and V object records | ||
| BDE8 | RET | |||
|
|
||||
| BDE9 | DEFS $01 | |||
| BDEA | LD A,($5B04) | |||
| BDED | CP $03 | |||
| BDEF | JR NC,$BDFE | |||
| BDF1 | CALL $BE9A | Process 21-byte records in group I | ||
| BDF4 | CALL $BE40 | Process 26-byte records in group II | ||
| BDF7 | LD A,($5B1A) | |||
| BDFA | CALL $C4D5 | Delay loop (busy-wait via LDIR) | ||
| BDFD | RET | |||
| BDFE | CP $04 | |||
| BE00 | JR NC,$BE0F | |||
| BE02 | CALL $BE40 | Process 26-byte records in group II | ||
| BE05 | CALL $BE6D | Process 26-byte records in group III | ||
| BE08 | LD A,($5B1B) | |||
| BE0B | CALL $C4D5 | Delay loop (busy-wait via LDIR) | ||
| BE0E | RET | |||
| BE0F | CP $06 | |||
| BE11 | JR NC,$BE1D | |||
| BE13 | CALL $BE6D | Process 26-byte records in group III | ||
| BE16 | LD A,($5B1C) | |||
| BE19 | CALL $C4D5 | Delay loop (busy-wait via LDIR) | ||
| BE1C | RET | |||
| BE1D | CP $09 | |||
| BE1F | JR NC,$BE36 | |||
| BE21 | CALL $BE6D | Process 26-byte records in group III | ||
| BE24 | LD HL,$BDE9 | |||
| BE27 | LD A,($5B1D) | |||
| BE2A | CALL $C4D5 | Delay loop (busy-wait via LDIR) | ||
| BE2D | LD A,$01 | |||
| BE2F | XOR (HL) | |||
| BE30 | LD (HL),A | |||
| BE31 | RET Z | |||
| BE32 | CALL $C431 | Update group IV and V object records | ||
| BE35 | RET | |||
| BE36 | CALL $C431 | Update group IV and V object records | ||
| BE39 | LD A,($5B1E) | |||
| BE3C | CALL $C4D5 | Delay loop (busy-wait via LDIR) | ||
| BE3F | RET | |||
|
Used by the routine at BDEA.
|
||||
| BE40 | LD A,(NumRecsII) | group II record count; per-frame update pass | ||
| BE43 | LD B,A | |||
| BE44 | LD IX,(RecsAddrII) | |||
| BE48 | PUSH BC | |||
| BE49 | DEC (IX+$0F) | update only when speed counter reaches 0 | ||
| BE4C | CALL Z,$B737 | Update fish object | ||
| BE4F | LD BC,$001A | 26 bytes - record size | ||
| BE52 | ADD IX,BC | |||
| BE54 | POP BC | |||
| BE55 | DJNZ $BE48 | |||
| BE57 | RET | |||
|
Used by the routine at BDBA.
|
||||
| BE58 | LD A,(NumRecsII) | group II record count; initial draw pass | ||
| BE5B | LD B,A | |||
| BE5C | LD IX,(RecsAddrII) | |||
| BE60 | PUSH BC | |||
| BE61 | CALL $B7BB | Update object | ||
| BE64 | LD BC,$001A | 26 bytes - record size | ||
| BE67 | ADD IX,BC | |||
| BE69 | POP BC | |||
| BE6A | DJNZ $BE60 | |||
| BE6C | RET | |||
|
Used by the routine at BDEA.
|
||||
| BE6D | LD A,(NumRecsIII) | group III record count; per-frame update pass | ||
| BE70 | LD B,A | |||
| BE71 | LD IX,(RecsAddrIII) | |||
| BE75 | PUSH BC | |||
| BE76 | DEC (IX+$0F) | update only when speed counter reaches 0 | ||
| BE79 | CALL Z,$B737 | Update fish object | ||
| BE7C | LD BC,$001A | 26 bytes - record size | ||
| BE7F | ADD IX,BC | |||
| BE81 | POP BC | |||
| BE82 | DJNZ $BE75 | |||
| BE84 | RET | |||
|
Used by the routine at BDBA.
|
||||
| BE85 | LD A,(NumRecsIII) | group III record count; initial draw pass | ||
| BE88 | LD B,A | |||
| BE89 | LD IX,(RecsAddrIII) | |||
| BE8D | PUSH BC | |||
| BE8E | CALL $B7BB | Update object | ||
| BE91 | LD BC,$001A | 26 bytes - record size | ||
| BE94 | ADD IX,BC | |||
| BE96 | POP BC | |||
| BE97 | DJNZ $BE8D | |||
| BE99 | RET | |||
|
Used by the routine at BDEA.
|
||||
| BE9A | LD A,(NumRecsI) | group I record count; per-frame update pass | ||
| BE9D | LD B,A | |||
| BE9E | LD IX,$C4F0 | |||
| BEA2 | PUSH BC | |||
| BEA3 | DEC (IX+$0F) | update only when speed counter reaches 0 | ||
| BEA6 | CALL Z,$B737 | Update fish object | ||
| BEA9 | LD BC,$0015 | 21 bytes - record size | ||
| BEAC | ADD IX,BC | |||
| BEAE | POP BC | |||
| BEAF | DJNZ $BEA2 | |||
| BEB1 | RET | |||
|
Used by the routine at BDBA.
|
||||
| BEB2 | LD A,(NumRecsI) | group I record count; initial draw pass | ||
| BEB5 | LD B,A | |||
| BEB6 | LD IX,$C4F0 | |||
| BEBA | PUSH BC | |||
| BEBB | CALL $B7BB | Update object | ||
| BEBE | LD BC,$0015 | |||
| BEC1 | ADD IX,BC | 21 bytes - record size | ||
| BEC3 | POP BC | |||
| BEC4 | DJNZ $BEBA | |||
| BEC6 | RET | |||
| BEC7 | LD HL,$B676 | mark slot 0 used, prepare to clear the rest | ||
| BECA | LD (HL),$80 | |||
| BECC | INC HL | |||
| BECD | LD B,$0F | |||
| BECF | XOR A | |||
| BED0 | LD (HL),A | clear slots 1..15 (free) | ||
| BED1 | INC HL | |||
| BED2 | DJNZ $BED0 | |||
| BED4 | LD HL,$F000 | set draw buffer address to $F000 | ||
| BED7 | LD ($B7B9),HL | |||
| BEDA | RET | |||
| InitLevel | BEDB | CALL $BEC7 | Reset slot allocation bitmap and buffer pointer | |
| BEDE | LD HL,$BDAA | set draw-list pointer for group I | ||
| BEE1 | LD ($BD9C),HL | |||
| BEE4 | LD HL,$C20A | Copy 21 byte from $C20A to C4F0 | ||
| BEE7 | LD DE,$C4F0 | |||
| BEEA | LD BC,$0015 | |||
| BEED | LDIR | |||
| BEEF | LD A,($5B13) | get count of group I objects | ||
| BEF2 | LD B,A | |||
| InitLevel_0 | BEF3 | PUSH BC | ||
| BEF4 | LD HL,$C21F | copy template record for random init | ||
| BEF7 | PUSH DE | |||
| BEF8 | POP IX | |||
| BEFA | LD BC,$0015 | |||
| BEFD | LDIR | |||
| BEFF | PUSH DE | |||
| BF00 | CALL NextRandom | Random | ||
| BF03 | POP DE | |||
| BF04 | LD (IX+$00),H | randomize column | ||
| BF07 | LD C,$3F | place at random column | ||
| BF09 | CALL $BD83 | |||
| BF0C | POP BC | |||
| BF0D | DJNZ InitLevel_0 | |||
| BF0F | LD A,($5B14) | get count of group II objects | ||
| BF12 | LD B,A | |||
| BF13 | LD C,$00 | default sprite variant | ||
| BF15 | LD A,(RANDOM) | get current Random | ||
| BF18 | BIT 5,A | random variant select | ||
| BF1A | JR Z,InitLevel_1 | |||
| BF1C | INC C | |||
| InitLevel_1 | BF1D | PUSH BC | ||
| BF1E | LD HL,$C234 | copy template record for random init | ||
| BF21 | PUSH DE | |||
| BF22 | POP IX | |||
| BF24 | LD BC,$0015 | |||
| BF27 | LDIR | |||
| BF29 | PUSH DE | |||
| BF2A | CALL NextRandom | Random | ||
| BF2D | POP DE | |||
| BF2E | LD (IX+$00),H | randomize column | ||
| BF31 | LD A,L | randomize row offset | ||
| BF32 | AND $03 | |||
| BF34 | ADD A,(IX+$01) | |||
| BF37 | LD (IX+$01),A | store randomized row | ||
| BF3A | LD A,L | randomize size/type 1..7 | ||
| BF3B | SRL A | |||
| BF3D | SRL A | |||
| BF3F | AND $07 | |||
| BF41 | JR NZ,InitLevel_2 | |||
| BF43 | INC A | |||
| InitLevel_2 | BF44 | LD (IX+$03),A | ||
| BF47 | LD C,$1F | place at random row | ||
| BF49 | CALL $BD83 | |||
| BF4C | POP BC | |||
| BF4D | BIT 0,C | check variant bit | ||
| BF4F | JR Z,InitLevel_3 | |||
| BF51 | LD (IX+$09),$85 | set alternate sprite/state for variant | ||
| BF55 | LD (IX+$0B),$85 | |||
| BF59 | LD (IX+$11),$FE | |||
| InitLevel_3 | BF5D | DJNZ InitLevel_1 | ||
| BF5F | LD (RecsAddrII),DE | |||
| BF63 | LD A,(NumRecsII) | init group IV parameters | ||
| BF66 | LD HL,$0F1B | |||
| BF69 | LD IY,$C2EB | |||
| BF6D | CALL SpawnObjectGroup | Spawn N objects of one type at random positions from template table | ||
| BF70 | LD (RecsAddrIII),DE | |||
| BF74 | LD A,(NumRecsIII) | init group V parameters | ||
| BF77 | LD HL,$2A3B | |||
| BF7A | LD IY,$C331 | |||
| BF7E | CALL SpawnObjectGroup | Spawn N objects of one type at random positions from template table | ||
| BF81 | LD (RecsAddrIV),DE | |||
| BF85 | LD IY,$BFA0 | |||
| BF89 | LD A,(NumRecsIV) | init boat objects, batch 1 | ||
| BF8C | LD HL,$BDB2 | |||
| BF8F | LD ($BD9C),HL | |||
| BF92 | CALL PlaceObjectsRandom | Place N objects at random screen positions, avoiding the boat | ||
| BF95 | LD IY,$BFA8 | |||
| BF99 | LD A,(NumRecsV) | boat objects, batch 2 | ||
| BF9C | CALL PlaceObjectsRandom | Place N objects at random screen positions, avoiding the boat | ||
| BF9F | RET | |||
|
|
||||
| BFA0 | DEFB $05,$00,$AD,$C3,$1A,$00,$00,$0F | |||
| BFA8 | DEFB $10,$11,$29,$C4,$1C,$00,$00,$0F | |||
|
Used by the routine at InitLevel.
|
||||||||||||||||||
|
Creates A objects of one type: for each, picks a random 26-byte shape record from the IY template table, copies it to the destination area, then randomizes its row (64..191) and column before placing it. Used to spawn the fish/shark groups during level init.
|
||||||||||||||||||
| SpawnObjectGroup | BFB0 | LD ($BFC4),IY | self-modify table pointer, save default column | |||||||||||||||
| BFB4 | LD ($C007),HL | |||||||||||||||||
| BFB7 | LD B,A | loop counter = object count | ||||||||||||||||
| SpawnObjectGroup_0 | BFB8 | PUSH BC | ||||||||||||||||
| BFB9 | PUSH DE | |||||||||||||||||
| BFBA | CALL NextRandom | Random | ||||||||||||||||
| BFBD | LD A,H | random even index into shape table | ||||||||||||||||
| BFBE | AND $0E | |||||||||||||||||
| BFC0 | LD E,A | index into words | ||||||||||||||||
| BFC1 | LD D,$00 | |||||||||||||||||
| BFC3 | LD HL,$0000 | !!MUT-ARG!! | ||||||||||||||||
| BFC6 | ADD HL,DE | get random shape record address | ||||||||||||||||
| BFC7 | LD C,(HL) | |||||||||||||||||
| BFC8 | INC HL | |||||||||||||||||
| BFC9 | LD B,(HL) | |||||||||||||||||
| BFCA | LD L,C | HL = shape record address | ||||||||||||||||
| BFCB | LD H,B | |||||||||||||||||
| BFCC | LD BC,$001A | record size 26 bytes | ||||||||||||||||
| BFCF | POP DE | IX = destination record | ||||||||||||||||
| BFD0 | PUSH DE | |||||||||||||||||
| BFD1 | POP IX | |||||||||||||||||
| BFD3 | LDIR | copy shape record | ||||||||||||||||
| BFD5 | LD HL,($C007) | restore/store column | ||||||||||||||||
| BFD8 | LD (IX+$16),H | |||||||||||||||||
| BFDB | LD (IX+$15),L | |||||||||||||||||
| BFDE | LD A,(RANDOM) | get current Random | ||||||||||||||||
| BFE1 | AND $7F | randomize row 64..191 | ||||||||||||||||
| BFE3 | ADD A,$40 | |||||||||||||||||
| BFE5 | LD (IX+$00),A | store row | ||||||||||||||||
| BFE8 | LD A,($5B06) | randomize column offset 0..15 | ||||||||||||||||
| BFEB | SRL A | |||||||||||||||||
| BFED | SRL A | |||||||||||||||||
| BFEF | SRL A | |||||||||||||||||
| BFF1 | AND $0F | |||||||||||||||||
| BFF3 | LD H,A | column = base - offset | ||||||||||||||||
| BFF4 | LD A,L | |||||||||||||||||
| BFF5 | SUB H | |||||||||||||||||
| BFF6 | LD (IX+$01),A | store column | ||||||||||||||||
| BFF9 | PUSH DE | |||||||||||||||||
| BFFA | CALL NextRandom | Random | ||||||||||||||||
| BFFD | POP DE | |||||||||||||||||
| BFFE | LD C,$0F | place object, mask column to 0..15 | ||||||||||||||||
| C000 | CALL $BD83 | |||||||||||||||||
| C003 | POP BC | |||||||||||||||||
| C004 | DJNZ SpawnObjectGroup_0 | |||||||||||||||||
| C006 | RET | |||||||||||||||||
|
|
||||
| C007 | DEFW $0000 | ??? | ||
|
Used by the routine at InitLevel.
|
||||||||
|
Scatters a given number of objects across the map: for each one it walks to a free spot that isn't the boat's own cell and isn't too close to a previously chosen spot, then copies in a random shape template and places it there with a small random offset.
|
||||||||
| PlaceObjectsRandom | C009 | LD B,A | loop counter; init scan cursor position | |||||
| C00A | LD (IY+$05),E | |||||||
| C00D | LD (IY+$06),D | |||||||
| C010 | LD DE,$F8F8 | reset scan step/cursor | ||||||
| C013 | LD HL,$B05C | |||||||
| PlaceObjectsRandom_0 | C016 | LD A,(HL) | skip boat's own column/row | |||||
| C017 | CP (IY+$00) | |||||||
| C01A | JR Z,PlaceObjectsRandom_3 | |||||||
| C01C | CP (IY+$01) | |||||||
| C01F | JR Z,PlaceObjectsRandom_3 | |||||||
| PlaceObjectsRandom_1 | C021 | DEC HL | advance scan cursor column | |||||
| C022 | LD A,E | |||||||
| C023 | SUB $08 | |||||||
| C025 | LD E,A | |||||||
| C026 | CP $F8 | check column wrap | ||||||
| C028 | JR NZ,PlaceObjectsRandom_2 | |||||||
| C02A | LD A,D | advance scan cursor row | ||||||
| C02B | SUB $08 | |||||||
| C02D | LD D,A | |||||||
| C02E | CP $38 | wrap scan back to start | ||||||
| C030 | JR NZ,PlaceObjectsRandom_2 | |||||||
| C032 | LD D,$F8 | |||||||
| C034 | LD HL,$B05C | |||||||
| PlaceObjectsRandom_2 | C037 | JR PlaceObjectsRandom_0 | ||||||
| PlaceObjectsRandom_3 | C039 | PUSH BC | ||||||
| C03A | PUSH HL | |||||||
| C03B | PUSH DE | |||||||
| C03C | CALL NextRandom | Random | ||||||
| C03F | LD D,(IY+$03) | get shape-table base address | ||||||
| C042 | LD E,(IY+$02) | |||||||
| C045 | LD A,L | |||||||
| C046 | AND $F0 | reject positions too close together | ||||||
| C048 | JR Z,PlaceObjectsRandom_4 | |||||||
| C04A | POP DE | retry search | ||||||
| C04B | POP HL | |||||||
| C04C | POP BC | |||||||
| C04D | JR PlaceObjectsRandom_1 | |||||||
| PlaceObjectsRandom_4 | C04F | LD A,H | random even shape index 0..6 | |||||
| C050 | AND $06 | |||||||
| C052 | LD L,A | |||||||
| C053 | LD H,$00 | |||||||
| C055 | ADD HL,DE | get shape record address | ||||||
| C056 | LD E,(HL) | |||||||
| C057 | INC HL | |||||||
| C058 | LD D,(HL) | |||||||
| C059 | EX DE,HL | |||||||
| C05A | LD C,(IY+$04) | record size | ||||||
| C05D | LD B,$00 | |||||||
| C05F | LD E,(IY+$05) | IX = destination cursor | ||||||
| C062 | LD D,(IY+$06) | |||||||
| C065 | PUSH DE | |||||||
| C066 | POP IX | |||||||
| C068 | LDIR | copy shape record | ||||||
| C06A | LD (IY+$05),E | advance destination cursor | ||||||
| C06D | LD (IY+$06),D | |||||||
| C070 | POP DE | |||||||
| C071 | LD A,D | set row = scan row + 3 | ||||||
| C072 | ADD A,$03 | |||||||
| C074 | LD (IX+$01),A | |||||||
| C077 | LD A,E | set column = scan column + 4 | ||||||
| C078 | ADD A,$04 | |||||||
| C07A | LD (IX+$00),A | |||||||
| C07D | LD A,($5B06) | random offset + column mask | ||||||
| C080 | LD L,A | |||||||
| C081 | LD C,(IY+$07) | |||||||
| C084 | CALL $BD83 | Set random speed and initial direction for spawned object | ||||||
| C087 | POP HL | |||||||
| C088 | POP BC | |||||||
| C089 | DJNZ PlaceObjectsRandom_1 | |||||||
| C08B | LD E,(IY+$05) | return final cursor position | ||||||
| C08E | LD D,(IY+$06) | |||||||
| C091 | RET | |||||||
|
|
||||
| C092 | DEFW $0000,$0000,$0000,$0807,$0403,$1840,$C080,$0000 | Boat | ||
| C0A2 | DEFW $0000,$0000,$0000,$0201,$0302,$1010,$2030,$0000 | Meduza | ||
| C0B2 | DEFW $0000,$0000,$C0CE,$0302,$0201,$0818,$1803,$0000 | Round fish | ||
| C0C2 | DEFW $8285,$8254,$82B6,$82E6,$82C6,$82F6 | |||
| C0CE | DEFW $0000,$0000,$C0B2,$0201,$0302,$1010,$2003,$0000 | Round fish vertical | ||
| C0DE | DEFW $8347,$8316,$8378,$83A8,$8388,$83B8 | |||
| C0EA | DEFW $0000,$0000,$0000,$0706,$0302,$1038,$7005,$0000 | Fish | ||
| C0FA | DEFW $64E5,$6364,$6666,$6846 | |||
| C102 | DEFW $0000,$0000,$0000,$0807,$0403,$1840,$C006,$0000 | Shark | ||
| C112 | DEFW $70B7,$6A26,$6CC7,$7358 | |||
| C11A | DEFW $0000,$0000,$0000,$0504,$0201,$0828,$2804,$0000 | Long fish | ||
| C12A | DEFW $7BCE,$7C4F,$7D50,$7CD0 | |||
| C132 | DEFW $0000,$0000,$0000,$0403,$0403,$1820,$6001,$0000 | Fish cloud | ||
| C142 | DEFW $7748,$7869,$7942,$7821 | |||
| C14A | DEFW $0000,$0000,$C166,$0403,$0201,$0820,$2005,$0000 | Small squid horizontal | ||
| C15A | DEFW $60D9,$6000,$6061,$613A,$6091,$616A | |||
| C166 | DEFW $0000,$0000,$C14A,$0201,$0403,$1810,$3005,$0000 | Small squid vertical | ||
| C176 | DEFW $628B,$61B2,$6213,$62EC,$6243,$631C | |||
| C182 | DEFW $0000,$0000,$C19E,$0403,$0201,$0820,$2003,$0000 | Electric eel horizontal | ||
| C192 | DEFW $7A1B,$798A,$79D3,$7A64,$79EB,$7A7C | |||
| C19E | DEFW $0000,$0000,$C182,$0201,$0403,$1810,$3003,$0000 | Snake fish vertical | ||
| C1AE | DEFW $7AF5,$7AAC,$7B3E,$7B86,$7B56,$7B9E | |||
| C1BA | DEFW $0000,$0000,$C1D6,$0504,$0201,$0828,$2805,$0000 | Electric eel vertical | ||
| C1CA | DEFW $7EF1,$7DD0,$7E51,$7F72,$7E91,$7FB2 | |||
| C1D6 | DEFW $0000,$0000,$C1BA,$0201,$0504,$2010,$4005,$0000 | Snake fish horizontal | ||
| C1E6 | DEFW $8133,$8012,$8093,$81B4,$80D3,$81F4 | |||
| C1F2 | DEFW $0000,$0000,$0000,$0807,$0302,$1040,$8006,$0000 | Squid | ||
| C202 | DEFW $8839,$83D8,$8599,$89FA | |||
|
|
||||
|
These templates are used to create records in C4F0 area.
Record template for 21-byte record - Boat
|
||||
| C20A | DEFB $F8,$06,$04,$01,$05 | |||
| C20F | DEFW $C481 | moving procedure | ||
| C211 | DEFW $0000 | |||
| C213 | DEFW SprBoat,SprBoat | sprite address | ||
| C217 | DEFB $18,$28,$28,$01,$00,$00 | |||
| C21D | DEFW $C092 | object record | ||
|
Record template for 21-byte record - Meduza
|
||||
| C21F | DEFB $00,$07,$04,$05,$00 | |||
| C224 | DEFW $BF9F | moving procedure -> RET | ||
| C226 | DEFW $0000 | |||
| C228 | DEFW $8D43,$8D43 | sprite address | ||
| C22C | DEFB $18,$00,$00,$00,$01,$00 | |||
| C232 | DEFW $C0A2 | object record | ||
|
Record template for 21-byte record - Round fish
|
||||
| C234 | DEFB $00,$09,$04,$02,$00 | |||
| C239 | DEFW $BF9F | moving procedure -> RET | ||
| C23B | DEFW $0000 | |||
| C23D | DEFW $8254,$8254 | sprite address | ||
| C241 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C247 | DEFW $C0B2 | object record | ||
|
Record template for 26-byte record - Fish
|
||||
| C249 | DEFB $00,$00,$04,$02,$00 | |||
| C24E | DEFW $B885 | moving procedure | ||
| C250 | DEFW $0000 | |||
| C252 | DEFW $6364,$6364 | sprite address | ||
| C256 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C25C | DEFW $C0EA | object record | ||
| C25E | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Shark
|
||||
| C264 | DEFB $00,$00,$04,$02,$00 | |||
| C269 | DEFW $B885 | moving procedure | ||
| C26B | DEFW $0000 | |||
| C26D | DEFW $6A26,$6A26 | sprite address | ||
| C271 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C277 | DEFW $C102 | object record | ||
| C279 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Small squid horizontal
|
||||
| C27F | DEFB $00,$00,$04,$02,$00 | |||
| C284 | DEFW $B885 | moving procedure | ||
| C286 | DEFW $0000 | |||
| C288 | DEFW $6000,$6000 | sprite address | ||
| C28C | DEFB $18,$00,$00,$00,$02,$00 | |||
| C292 | DEFW $C14A | object record | ||
| C294 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Long fish
|
||||
| C29A | DEFB $00,$00,$04,$02,$00 | |||
| C29F | DEFW $B885 | moving procedure | ||
| C2A1 | DEFW $0000 | |||
| C2A3 | DEFW $7C4F,$7C4F | sprite address | ||
| C2A7 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C2AD | DEFW $C11A | object record | ||
| C2AF | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Small fish cloud ??
|
||||
| C2B5 | DEFB $00,$00,$04,$02,$00 | |||
| C2BA | DEFW $B885 | moving procedure | ||
| C2BC | DEFW $0000 | |||
| C2BE | DEFW $7869,$7869 | sprite address | ||
| C2C2 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C2C8 | DEFW $C132 | object record | ||
| C2CA | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Small fish cloud ??
|
||||
| C2D0 | DEFB $00,$00,$04,$02,$00 | |||
| C2D5 | DEFW $B885 | moving procedure | ||
| C2D7 | DEFW $0000 | |||
| C2D9 | DEFW $798A,$798A | sprite address | ||
| C2DD | DEFB $18,$00,$00,$00,$02,$00 | |||
| C2E3 | DEFW $C182 | object record | ||
| C2E5 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Table of 8 record templates
|
||||
| C2EB | DEFW $C249 | |||
| C2ED | DEFW $C264 | |||
| C2EF | DEFW $C27F | |||
| C2F1 | DEFW $C29A | |||
| C2F3 | DEFW $C2B5 | |||
| C2F5 | DEFW $C2D0 | |||
| C2F7 | DEFW $C29A | |||
| C2F9 | DEFW $C249 | |||
|
Record template for 26-byte record - Snake fish horizontal
|
||||
| C2FB | DEFB $00,$00,$04,$02,$00 | |||
| C300 | DEFW $B885 | moving procedure | ||
| C302 | DEFW $0000 | |||
| C304 | DEFW $7DD0,$7DD0 | sprite address | ||
| C308 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C30E | DEFW $C1BA | object record | ||
| C310 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Squid
|
||||
| C316 | DEFB $00,$00,$04,$02,$00 | |||
| C31B | DEFW $B885 | moving procedure | ||
| C31D | DEFW $0000 | |||
| C31F | DEFW $83D8,$83D8 | sprite address | ||
| C323 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C329 | DEFW $C1F2 | object record | ||
| C32B | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Table of 8 record templates
|
||||
| C331 | DEFW $C249 | |||
| C333 | DEFW $C264 | |||
| C335 | DEFW $C27F | |||
| C337 | DEFW $C29A | |||
| C339 | DEFW $C2B5 | |||
| C33B | DEFW $C2D0 | |||
| C33D | DEFW $C2FB | |||
| C33F | DEFW $C316 | |||
|
Record template for 26-byte record - Round fish vertical
|
||||
| C341 | DEFB $00,$00,$02,$04,$00 | |||
| C346 | DEFW $B972 | moving procedure | ||
| C348 | DEFW $0000 | |||
| C34A | DEFW $8347,$8347 | sprite address | ||
| C34E | DEFB $1C,$00,$00,$00,$00,$02 | |||
| C354 | DEFW $C0CE | object record | ||
| C356 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Small squid vertical
|
||||
| C35C | DEFB $00,$00,$02,$04,$00 | |||
| C361 | DEFW $B972 | moving procedure | ||
| C363 | DEFW $0000 | |||
| C365 | DEFW $628B,$628B | sprite address | ||
| C369 | DEFB $1C,$00,$00,$00,$00,$02 | |||
| C36F | DEFW $C166 | object record | ||
| C371 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Snake fish vertical
|
||||
| C377 | DEFB $00,$00,$02,$04,$00 | |||
| C37C | DEFW $B972 | moving procedure | ||
| C37E | DEFW $0000 | |||
| C380 | DEFW $8133,$8133 | sprite address | ||
| C384 | DEFB $1C,$00,$00,$00,$00,$02 | |||
| C38A | DEFW $C1D6 | object record | ||
| C38C | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Record template for 26-byte record - Small fish cloud ??
|
||||
| C392 | DEFB $00,$00,$02,$04,$00 | |||
| C397 | DEFW $B972 | moving procedure | ||
| C399 | DEFW $0000 | |||
| C39B | DEFW $7AF5,$7AF5 | sprite address | ||
| C39F | DEFB $1C,$00,$00,$00,$00,$02 | |||
| C3A5 | DEFW $C19E | object record | ||
| C3A7 | DEFB $00,$00,$02,$00,$00,$00 | |||
|
Table of 4 record templates
|
||||
| C3AD | DEFW $C341 | |||
| C3AF | DEFW $C35C | |||
| C3B1 | DEFW $C377 | |||
| C3B3 | DEFW $C392 | |||
|
Record template for 28-byte record - Round fish
|
||||
| C3B5 | DEFB $00,$00,$04,$02,$00 | |||
| C3BA | DEFW $BA64 | moving procedure | ||
| C3BC | DEFW $0000 | |||
| C3BE | DEFW $8254,$8254 | sprite address | ||
| C3C2 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C3C8 | DEFW $C0B2 | object record | ||
| C3CA | DEFB $03,$01,$02,$00,$00,$00,$00,$00 | |||
|
Record template for 28-byte record - Small squid horizontal
|
||||
| C3D2 | DEFB $00,$00,$04,$02,$00 | |||
| C3D7 | DEFW $BA64 | moving procedure | ||
| C3D9 | DEFW $0000 | |||
| C3DB | DEFW $6000,$6000 | sprite address | ||
| C3DF | DEFB $18,$00,$00,$00,$02,$00 | |||
| C3E5 | DEFW $C14A | object record | ||
| C3E7 | DEFB $04,$02,$02,$00,$00,$00,$00,$00 | |||
|
Record template for 28-byte record
|
||||
| C3EF | DEFB $00,$00,$04,$02,$00 | |||
| C3F4 | DEFW $BA64 | moving procedure | ||
| C3F6 | DEFW $0000 | |||
| C3F8 | DEFW $798A,$798A | sprite address | ||
| C3FC | DEFB $18,$00,$00,$00,$02,$00 | |||
| C402 | DEFW $C182 | object record | ||
| C404 | DEFB $03,$01,$02,$00,$00,$00,$00,$00 | |||
|
Record template for 28-byte record - Snake fish horizontal
|
||||
| C40C | DEFB $00,$00,$04,$02,$00 | |||
| C411 | DEFW $BA64 | moving procedure | ||
| C413 | DEFW $0000 | |||
| C415 | DEFW $7DD0,$7DD0 | sprite address | ||
| C419 | DEFB $18,$00,$00,$00,$02,$00 | |||
| C41F | DEFW $C1BA | object record | ||
| C421 | DEFB $04,$02,$02,$00,$00,$00,$00,$00 | |||
|
Table of 4 record templates
|
||||
| C429 | DEFW $C3B5 | |||
| C42B | DEFW $C3D2 | |||
| C42D | DEFW $C3EF | |||
| C42F | DEFW $C40C | |||
|
Used by the routine at BDEA.
|
||||
| C431 | LD A,(NumRecsIV) | get Number of 26-byte records (5 / 10 / 15 / 20) in group IV | ||
| C434 | LD B,A | loop counter | ||
| C435 | LD IX,(RecsAddrIV) | now IX = record address in C4F0 area | ||
| C439 | PUSH BC | |||
| C43A | DEC (IX+$0F) | |||
| C43D | CALL Z,$B737 | Update fish object | ||
| C440 | LD BC,$001A | 26 bytes - record size | ||
| C443 | ADD IX,BC | next record | ||
| C445 | POP BC | |||
| C446 | DJNZ $C439 | |||
| C448 | LD A,(NumRecsV) | |||
| C44B | LD B,A | |||
| C44C | PUSH BC | |||
| C44D | DEC (IX+$0F) | |||
| C450 | CALL Z,$B737 | Update fish object | ||
| C453 | LD BC,$001C | |||
| C456 | ADD IX,BC | |||
| C458 | POP BC | |||
| C459 | DJNZ $C44C | |||
| C45B | RET | |||
|
Used by the routine at BDBA.
|
||||
| C45C | LD A,(NumRecsIV) | get group IV record count | ||
| C45F | LD B,A | |||
| C460 | LD IX,(RecsAddrIV) | group IV record base address | ||
| C464 | PUSH BC | |||
| C465 | CALL $B7BB | Update object | ||
| C468 | LD BC,$001A | advance to next record (26 bytes) | ||
| C46B | ADD IX,BC | |||
| C46D | POP BC | |||
| C46E | DJNZ $C464 | |||
| C470 | LD A,(NumRecsV) | get group V record count | ||
| C473 | LD B,A | |||
| C474 | PUSH BC | |||
| C475 | CALL $B7BB | Update object | ||
| C478 | LD BC,$001C | advance to next record (28 bytes) | ||
| C47B | ADD IX,BC | |||
| C47D | POP BC | |||
| C47E | DJNZ $C474 | |||
| C480 | RET | |||
|
|
||||
|
Drives a slow idle animation by cycling an object's frame back and forth between two limits, pausing for a random spell at each end so the motion looks natural rather than mechanical.
|
||||
| C481 | LD A,(IX+$10) | get animation state | ||
| C484 | OR A | |||
| C485 | JR NZ,$C490 | |||
| C487 | DEC (IY+$0C) | wait timer | ||
| C48A | RET NZ | |||
| C48B | LD (IX+$10),$03 | switch to state 3 | ||
| C48F | RET | |||
| C490 | DEC A | |||
| C491 | JR NZ,$C4A4 | |||
| C493 | DEC (IY+$0C) | |||
| C496 | RET NZ | |||
| C497 | LD (IX+$0E),$28 | reset frame to 40 | ||
| C49B | LD (IX+$10),$02 | switch to state 2, set direction | ||
| C49F | LD (IX+$11),$FF | |||
| C4A3 | RET | |||
| C4A4 | DEC A | |||
| C4A5 | JR NZ,$C4BA | |||
| C4A7 | DEC (IX+$0E) | decrement frame | ||
| C4AA | LD A,(IX+$0E) | |||
| C4AD | CP $08 | |||
| C4AF | RET NZ | |||
| C4B0 | LD (IX+$10),$00 | switch to state 0 | ||
| C4B4 | LD A,R | randomize wait timer | ||
| C4B6 | LD (IY+$0C),A | |||
| C4B9 | RET | |||
| C4BA | INC (IX+$0E) | increment frame | ||
| C4BD | LD A,(IX+$0E) | |||
| C4C0 | CP $28 | |||
| C4C2 | RET NZ | |||
| C4C3 | LD (IX+$0E),$64 | reset frame to 100, clear direction | ||
| C4C7 | LD (IX+$11),$00 | |||
| C4CB | LD (IX+$10),$01 | switch to state 1 | ||
| C4CF | LD A,R | randomize wait timer | ||
| C4D1 | LD (IY+$0C),A | |||
| C4D4 | RET | |||
|
Used by the routine at BDEA.
|
||||
| C4D5 | OR A | |||
| C4D6 | RET Z | |||
| C4D7 | LD BC,(DelayVal) | get value 150 / 100 / 50 / 1, depending on Game level | ||
| C4DB | LD DE,$0000 | |||
| C4DE | LD HL,$0000 | |||
| C4E1 | LDIR | |||
| C4E3 | DEC A | |||
| C4E4 | JR NZ,$C4D7 | |||
| C4E6 | RET | |||
|
|
||||
| C4E7 | DEFB $FB,$02,$00,$2C,$42,$4C,$46,$49 | |||
| C4EF | DEFB $4C | |||
|
|
||||
| C4F0 | DEFB $2B,$31,$30,$32,$33,$0D,$DC,$3C | |||
| C4F8 | DEFB $47,$43,$32,$20,$4A,$52,$20,$47 | |||
|
|
||||
| C500 | DEFS $1490 | |||
|
Used by the routine at EE1C.
|
||||
|
Top-level game loop: builds the world and level, then repeatedly runs one frame (bubbles, object updates, diver logic) until the diver reaches the boat. On success, advances the level and starts the next dive; on failure, loses a life and retries or ends the game when lives run out.
|
||||
| Game | D990 | DI | ||
| D991 | PUSH IX | |||
| D993 | PUSH IY | |||
| D995 | LD HL,$0000 | |||
| D998 | LD (SCORE),HL | reset Score value | ||
| D99B | LD (HELD),HL | reset HELD value | ||
| D99E | LD A,$03 | Number of lives | ||
| D9A0 | LD (LIVES),A | set the initial value | ||
| Game_0 | D9A3 | CALL PrepareMiniMap | Prepare the world mini-map (MiniMap table) | |
| D9A6 | CALL InitLevelVars | Initialize variables depending of Game level | ||
| D9A9 | CALL InitLevel | Initialize level | ||
| D9AC | LD HL,$E361 | |||
| D9AF | LD (HL),$00 | |||
| Game_1 | D9B1 | CALL PrepareGame | Prepare game screen and some variables | |
| D9B4 | CALL $E6AB | Reset oxygen, draw divers on boat, position diver at dive start | ||
| D9B7 | LD HL,($5B03) | get Screen position on mini-map | ||
| D9BA | CALL DrawGameScr | Draw game screen | ||
| D9BD | CALL $BDBA | Draw records for current mini-map row band | ||
| Game_2 | D9C0 | CALL $B213 | Animate and draw rising air bubbles, plus Octopus | |
| D9C3 | CALL $BDEA | Update records for current mini-map row band, with delay | ||
| D9C6 | CALL $E2A8 | Diver frame update | ||
| D9C9 | LD IX,DiverObj | Diver object record address | ||
| D9CD | BIT 4,(IX+$26) | |||
| D9D1 | JR NZ,Game_3 | |||
| D9D3 | BIT 5,(IX+$10) | |||
| D9D7 | JR NZ,Game_6 | |||
| D9D9 | JR Game_2 | |||
| Game_3 | D9DB | LD A,(LIVES) | get Number of lives | |
| D9DE | CP $04 | |||
| D9E0 | JR NZ,Game_4 | |||
| D9E2 | LD A,$03 | |||
| D9E4 | LD (LIVES),A | set Number of lives | ||
| Game_4 | D9E7 | LD A,(LEVEL) | Game level 1..4 | |
| D9EA | CP $04 | |||
| D9EC | JR Z,Game_5 | |||
| D9EE | INC A | |||
| Game_5 | D9EF | LD (LEVEL),A | Save game level 1..4 | |
| D9F2 | JR Game_0 | |||
| Game_6 | D9F4 | LD B,$00 | ||
| Game_7 | D9F6 | PUSH BC | ||
| D9F7 | CALL $B213 | Animate and draw rising air bubbles, plus Octopus | ||
| D9FA | CALL $BDEA | Update records for current mini-map row band, with delay | ||
| D9FD | CALL $E2A8 | Diver frame update | ||
| DA00 | POP BC | |||
| DA01 | DJNZ Game_7 | |||
| DA03 | LD A,($5B00) | |||
| DA06 | CP $08 | |||
| DA08 | JR NZ,Game_8 | |||
| DA0A | LD A,($5B0F) | |||
| DA0D | CP $03 | |||
| DA0F | JR NZ,Game_8 | |||
| DA11 | LD A,(LIVES) | get Number of lives | ||
| DA14 | CP $01 | |||
| DA16 | JR Z,Game_8 | No more lives? => no lives, jump | ||
| DA18 | DEC A | |||
| DA19 | LD (LIVES),A | set Number of lives | ||
| DA1C | JR Game_3 | |||
| Game_8 | DA1E | LD A,(LIVES) | get Number of lives | |
| DA21 | CP $01 | |||
| DA23 | JR Z,Game_9 | |||
| DA25 | DEC A | One live less | ||
| DA26 | LD (LIVES),A | set Number of lives | ||
| DA29 | LD HL,$E361 | |||
| DA2C | LD A,(HL) | |||
| DA2D | AND $20 | |||
| DA2F | LD (HL),A | |||
| DA30 | JP Game_1 | |||
| Game_9 | DA33 | POP IY | Ending the Game routine, the game is over | |
| DA35 | POP IX | |||
| DA37 | EI | |||
| DA38 | RET | |||
|
Used by the routines at PrepareGame and EEAD.
|
||||
| ClearScreenFillAttr | DA39 | LD ($5B4A),A | store attribute for later use | |
| DA3C | LD HL,$4000 | zero out pixel area | ||
| DA3F | LD BC,$1800 | |||
| ClearScreenFillAttr_0 | DA42 | LD (HL),$00 | ||
| DA44 | INC HL | |||
| DA45 | DEC BC | |||
| DA46 | LD A,B | |||
| DA47 | OR C | |||
| DA48 | JR NZ,ClearScreenFillAttr_0 | |||
| DA4A | LD A,($5B4A) | reload attribute | ||
| DA4D | LD E,A | |||
| DA4E | LD BC,$0300 | attributes area size | ||
| ClearScreenFillAttr_1 | DA51 | LD (HL),E | ||
| DA52 | INC HL | |||
| DA53 | DEC BC | |||
| DA54 | LD A,B | |||
| DA55 | OR C | |||
| DA56 | JR NZ,ClearScreenFillAttr_1 | |||
| DA58 | RET | |||
|
Used by the routine at PrintStringEx.
|
||||
|
Prints one character then nudges the current print position one cell to the right, so callers can print a string cell by cell.
|
||||
| PrintCharRt | DA59 | LD HL,($DC7E) | ||
| DA5C | INC L | advance print column right | ||
| DA5D | LD ($DC7E),HL | |||
| DA60 | DEC L | |||
| DA61 | JR PrintChar | |||
|
Print char and shift current position down
|
||||
| PrintCharDn | DA63 | LD HL,($DC7E) | ||
| DA66 | INC H | |||
| DA67 | LD ($DC7E),HL | |||
| DA6A | DEC H | |||
|
Print char
|
||||
| PrintChar | DA6B | PUSH HL | ||
| DA6C | PUSH AF | |||
| DA6D | CALL GetScrAddr | Convert char coords HL to ZX screen address | ||
| DA70 | EX DE,HL | |||
| DA71 | POP AF | |||
| DA72 | LD L,A | char code to glyph index | ||
| DA73 | LD H,$00 | |||
| DA75 | RES 7,L | |||
| DA77 | ADD HL,HL | |||
| DA78 | ADD HL,HL | |||
| DA79 | ADD HL,HL | *8 | ||
| DA7A | BIT 7,A | tile char ($80+)? | ||
| DA7C | JR NZ,PrintCharRt_0 | |||
| DA7E | LD BC,$3D00 | ROM font address, for chars $20..$7F | ||
| DA81 | JR PrintCharRt_1 | |||
| PrintCharRt_0 | DA83 | LD BC,$DC80 | Tiles 8x8 address, for chars $80..$AE | |
| PrintCharRt_1 | DA86 | ADD HL,BC | ||
| DA87 | LD B,$08 | |||
| PrintCharRt_2 | DA89 | LD A,(HL) | copy glyph pixel row | |
| DA8A | LD (DE),A | |||
| DA8B | INC HL | |||
| DA8C | INC D | |||
| DA8D | DJNZ PrintCharRt_2 | |||
| DA8F | POP HL | |||
| DA90 | CALL GetScrAttrAddr | Get screen attribute address | ||
| DA93 | LD A,($5B4A) | |||
| DA96 | LD (HL),A | |||
| DA97 | RET | |||
|
Used by the routines at PrepareGame and EEAD.
|
||||||||||||
| PrintStringEx | DA98 | LD ($DAA3),DE | self-modify: set print-char routine from DE | |||||||||
|
This entry point is used by the routines at PrepareGame and EEAD.
|
||||||||||||
| PrintString | DA9C | LD ($DC7E),BC | set start row/column | |||||||||
| DAA0 | LD A,(HL) | |||||||||||
| PrintStringEx_0 | DAA1 | PUSH HL | ||||||||||
| DAA2 | CALL PrintCharRt | Print char and shift !!MUT-ARG!! PrintCharRt / PrintCharDn | ||||||||||
| DAA5 | POP HL | |||||||||||
| DAA6 | INC HL | |||||||||||
| DAA7 | LD A,(HL) | |||||||||||
| DAA8 | CP $FF | stop at $FF terminator | ||||||||||
| DAAA | JR NZ,PrintStringEx_0 | |||||||||||
| DAAC | RET | |||||||||||
|
Used by the routine at Game.
|
||||
|
Clears the screen and draws the side panel, resets the Depth/Oxygen gauges, highlights the current skill and lives digits, prints the score numbers, then copies the Game-level's parameter table and sets the diver's column/row movement limits from it.
|
||||
| PrepareGame | DAAD | LD A,$30 | ||
| DAAF | CALL ClearScreenFillAttr | Clear screen with attribute A | ||
| DAB2 | LD A,$01 | |||
| DAB4 | OUT ($FE),A | |||
| DAB6 | LD HL,$DC09 | Indicator top border | ||
| DAB9 | LD BC,$0018 | |||
| DABC | LD DE,PrintCharRt | Procedure Print char and shift right | ||
| DABF | CALL PrintStringEx | Print string | ||
| DAC2 | LD HL,$DC12 | Indicator bottom border | ||
| DAC5 | LD BC,$1718 | |||
| DAC8 | CALL PrintString | Print string | ||
| DACB | LD HL,$DC1B | "HIGH" | ||
| DACE | LD BC,$011A | |||
| DAD1 | CALL PrintString | Print string | ||
| DAD4 | LD HL,$DC27 | "SCORE" | ||
| DAD7 | LD BC,$031A | |||
| DADA | CALL PrintString | Print string | ||
| DADD | LD HL,$DC2D | "HELD" | ||
| DAE0 | LD BC,$051A | |||
| DAE3 | CALL PrintString | Print string | ||
| DAE6 | LD HL,$DC32 | Indicator left/right border | ||
| DAE9 | LD BC,$0118 | |||
| DAEC | LD DE,PrintCharDn | Procedure Print char and shift down | ||
| DAEF | CALL PrintStringEx | Print string | ||
| DAF2 | LD HL,$DC32 | Indicator left/right border | ||
| DAF5 | LD BC,$011F | |||
| DAF8 | CALL PrintString | Print string | ||
| DAFB | LD HL,$DC49 | "OXYGEN" | ||
| DAFE | LD BC,$0C1A | |||
| DB01 | CALL PrintString | Print string | ||
| DB04 | LD HL,$DC50 | "DEPTH" | ||
| DB07 | LD BC,$0C1C | |||
| DB0A | CALL PrintString | Print string | ||
| DB0D | LD HL,$DC56 | "SKILL LIVES" | ||
| DB10 | LD BC,$081E | |||
| DB13 | CALL PrintString | Print string | ||
| DB16 | LD A,$38 | |||
| DB18 | LD ($5B4A),A | |||
| DB1B | LD HL,$DC65 | Vertical gauge | ||
| DB1E | LD BC,$0719 | |||
| DB21 | CALL PrintString | |||
| DB24 | LD HL,$DC65 | Vertical gauge | ||
| DB27 | LD BC,$071B | |||
| DB2A | CALL PrintString | Print string | ||
| DB2D | LD A,$0D | |||
| DB2F | LD ($5B4A),A | |||
| DB32 | LD HL,$DC76 | "1 2 3 4" | ||
| DB35 | LD BC,$071D | |||
| DB38 | CALL PrintString | Print string | ||
| DB3B | LD HL,$DC76 | "1 2 3 4" | ||
| DB3E | LD BC,$101D | |||
| DB41 | CALL PrintString | Print string | ||
| DB44 | LD HL,$58FB | |||
| DB47 | LD ($DE55),HL | |||
| DB4A | LD (HL),$28 | |||
| DB4C | DEC HL | |||
| DB4D | DEC HL | |||
| DB4E | LD ($DE57),HL | |||
| DB51 | LD (HL),$20 | |||
| DB53 | LD A,(LEVEL) | Game level 1..4 | ||
| DB56 | DEC A | |||
| DB57 | RRCA | |||
| DB58 | RRCA | |||
| DB59 | LD E,A | |||
| DB5A | LD D,$00 | |||
| DB5C | LD HL,$58FD | |||
| DB5F | ADD HL,DE | |||
| DB60 | LD (HL),$4F | |||
| DB62 | LD A,(LIVES) | get Number of lives | ||
| DB65 | DEC A | 0 / 1 / 2 / 3 | ||
| DB66 | RRCA | |||
| DB67 | RRCA | |||
| DB68 | LD E,A | |||
| DB69 | LD D,$00 | |||
| DB6B | LD HL,$5A1D | |||
| DB6E | ADD HL,DE | |||
| DB6F | LD ($DE59),HL | save address in attributes area | ||
| DB72 | LD (HL),$4F | |||
| DB74 | LD IX,DiverObj | Diver object record address | ||
| DB78 | CALL PrintHighScore | Print high score number | ||
| DB7B | CALL PrintScore | Print score number | ||
| DB7E | CALL PrintHeld | Print HELD number | ||
| DB81 | LD A,(LEVEL) | Game level 1..4 | ||
| DB84 | DEC A | |||
| DB85 | ADD A,A | |||
| DB86 | ADD A,A | |||
| DB87 | ADD A,A | |||
| DB88 | ADD A,A | A = ([Game level] - 1) * 16 => 0 / 16 / 32 / 48 | ||
| DB89 | LD E,A | |||
| DB8A | LD D,$00 | |||
| DB8C | LD HL,$DDF0 | |||
| DB8F | ADD HL,DE | HL = $DDF0 + ([Game level] - 1) * 16 | ||
| DB90 | LD DE,$5B27 | |||
| DB93 | LD BC,$000E | |||
| DB96 | LDIR | |||
| DB98 | LD A,(LEVEL) | Game level 1..4 | ||
| DB9B | LD C,A | |||
| DB9C | LD A,$05 | |||
| DB9E | SUB C | |||
| DB9F | LD (IX+$1C),A | = 5 - [Game level] = 4 / 3 / 2 / 1 | ||
| DBA2 | LD (IX+$1E),A | = 5 - [Game level] = 4 / 3 / 2 / 1 | ||
| DBA5 | LD C,A | |||
| DBA6 | LD A,$16 | |||
| DBA8 | SUB C | |||
| DBA9 | LD (IX+$1D),A | |||
| DBAC | LD (IX+$1B),A | |||
| DBAF | LD A,(LEVEL) | Game level 1..4 | ||
| DBB2 | ADD A,A | |||
| DBB3 | LD C,A | |||
| DBB4 | LD A,$0A | |||
| DBB6 | SUB C | |||
| DBB7 | ADD A,$02 | |||
| DBB9 | LD ($5B0E),A | = 10 - [Game level] * 2 + 2 => 10 / 8 / 6 / 4 | ||
| DBBC | SUB $03 | |||
| DBBE | LD ($5B0D),A | = 10 - [Game level] * 2 + 2 - 3 => 7 / 5 / 3 / 1 | ||
| DBC1 | RET | |||
|
Works out this level's difficulty numbers from the chosen skill - how many creatures of each group to spawn and the movement delay - and stores them for the level setup to use.
|
||||
| InitLevelVars | DBC2 | LD A,(LEVEL) | Game level 1..4 | |
| DBC5 | ADD A,A | |||
| DBC6 | ADD A,A | *4 | ||
| DBC7 | ADD A,$09 | A = [Game level] * 4 + 9 => 13 / 17 / 21 / 25 | ||
| DBC9 | LD ($5B13),A | |||
| DBCC | LD ($5B14),A | |||
| DBCF | ADD A,$05 | A = [Game level] * 4 + 9 + 5 => 18 / 22 / 26 / 31 | ||
| DBD1 | LD (NumRecsII),A | |||
| DBD4 | SUB $05 | |||
| DBD6 | ADD A,A | |||
| DBD7 | INC A | A = ([Game level] * 4 + 9) * 2 + 1 => 27 / 35 / 43 / 51 | ||
| DBD8 | LD (NumRecsI),A | |||
| DBDB | DEC A | A = ([Game level] * 4 + 9) * 2 => 26 / 34 / 42 / 50 | ||
| DBDC | LD (NumRecsIII),A | |||
| DBDF | LD A,(LEVEL) | Game level 1..4 | ||
| DBE2 | LD C,A | |||
| DBE3 | ADD A,A | |||
| DBE4 | ADD A,A | |||
| DBE5 | ADD A,C | A = [Game level] * 5 => 5 / 10 / 15 / 20 | ||
| DBE6 | LD (NumRecsIV),A | |||
| DBE9 | LD C,A | |||
| DBEA | ADD A,A | |||
| DBEB | ADD A,C | |||
| DBEC | SUB $03 | A = [Game level] * 5 * 3 - 3 => 12 / 27 / 42 / 57 | ||
| DBEE | LD (NumRecsV),A | |||
| DBF1 | LD HL,$0001 | |||
| DBF4 | LD (DelayVal),HL | |||
| DBF7 | LD A,(LEVEL) | Game level 1..4 | ||
| DBFA | NEG | |||
| DBFC | ADD A,$04 | 3 / 2 / 1 / 0 | ||
| DBFE | RET Z | |||
| DBFF | LD B,A | |||
| DC00 | XOR A | |||
| InitLevelVars_0 | DC01 | ADD A,$32 | ||
| DC03 | DJNZ InitLevelVars_0 | |||
| DC05 | LD (DelayVal),A | |||
| DC08 | RET | |||
|
|
||||
| DC09 | DEFB $80,$81,$81,$81,$81,$81,$81,$85,$FF | Indicator top border | ||
| DC12 | DEFB $83,$81,$81,$81,$81,$81,$81,$84,$FF | Indicator bottom border | ||
| DC1B | DEFB $28,$29,$27,$28,$FF | "HIGH" | ||
| DC20 | DEFB $10,$10,$10,$10,$10,$10,$FF | "000000" | ||
| DC27 | DEFB $33,$23,$2F,$32,$25,$FF | "SCORE" | ||
| DC2D | DEFB $28,$25,$2C,$24,$FF | "HELD" | ||
| DC32 | DEFB $82,$82,$82,$82,$82,$82,$82,$82 | Indicator left/right border | ||
| DC3A | DEFB $82,$82,$82,$82,$82,$82,$82,$82 | |||
| DC42 | DEFB $82,$82,$82,$82,$82,$82,$FF | |||
| DC49 | DEFB $2F,$38,$39,$27,$25,$2E,$FF | "OXYGEN" | ||
| DC50 | DEFB $24,$25,$30,$34,$28,$FF | "DEPTH" | ||
| DC56 | DEFB $33,$2B,$29,$2C,$2C,$00,$00,$00 | "SKILL LIVES" | ||
| DC5E | DEFB $00,$2C,$29,$36,$25,$33,$FF | |||
| DC65 | DEFB $86,$87,$87,$87,$87,$87,$87,$87 | Vertical gauge | ||
| DC6D | DEFB $87,$87,$87,$87,$87,$87,$87,$88 | |||
| DC75 | DEFB $FF | |||
| DC76 | DEFB $11,$00,$12,$00,$13,$00,$14,$FF | "1 2 3 4" | ||
| DC7E | DEFW $0000 | Char coords for printing on the screen, see PrintCharRt | ||
|
|
||||
| DC80 | DEFB $00,$7F,$40,$58,$58,$40,$43,$42 | ![]() |
||
| DC88 | DEFB $00,$FF,$00,$18,$18,$00,$FF,$00 | |||
| DC90 | DEFB $42,$42,$42,$5A,$5A,$42,$42,$42 | |||
| DC98 | DEFB $42,$43,$40,$58,$58,$40,$7F,$00 | |||
| DCA0 | DEFB $42,$C2,$02,$1A,$1A,$02,$FE,$00 | |||
| DCA8 | DEFB $00,$FE,$02,$1A,$1A,$02,$C2,$42 | |||
| DCB0 | DEFB $FF,$81,$81,$E7,$81,$81,$81,$81 | |||
| DCB8 | DEFB $81,$81,$81,$E7,$81,$81,$81,$81 | |||
| DCC0 | DEFB $81,$81,$81,$E7,$81,$81,$81,$FF | ![]() |
||
| DCC8 | DEFB $07,$0F,$1F,$7F,$3F,$3E,$7E,$1F | |||
| DCD0 | DEFB $47,$C3,$61,$7F,$7F,$7F,$7F,$1D | |||
| DCD8 | DEFB $04,$0F,$0F,$7F,$3E,$78,$70,$E0 | |||
| DCE0 | DEFB $70,$38,$7C,$7F,$7F,$1F,$07,$02 | |||
| DCE8 | DEFB $0C,$1C,$18,$78,$78,$F8,$70,$78 | |||
| DCF0 | DEFB $78,$70,$FC,$7F,$7F,$3F,$1F,$00 | |||
| DCF8 | DEFB $D2,$FF,$76,$70,$F0,$F9,$7F,$7F | |||
| DD00 | DEFB $7F,$79,$F0,$F8,$70,$7C,$7F,$50 | ![]() |
||
| DD08 | DEFB $02,$1F,$3F,$3F,$7D,$78,$F8,$7B | |||
| DD10 | DEFB $FF,$7F,$7E,$7A,$18,$70,$E0,$60 | |||
| DD18 | DEFB $80,$D0,$F8,$FF,$FE,$DE,$0E,$02 | |||
| DD20 | DEFB $E0,$E0,$F8,$FC,$FC,$FC,$F0,$98 | |||
| DD28 | DEFB $00,$E0,$F0,$F8,$70,$30,$00,$00 | |||
| DD30 | DEFB $00,$00,$0C,$74,$F8,$F8,$E0,$80 | |||
| DD38 | DEFB $70,$F8,$78,$FC,$38,$3C,$18,$38 | |||
| DD40 | DEFB $3C,$18,$38,$30,$F8,$FC,$F0,$C0 | ![]() |
||
| DD48 | DEFB $C0,$F0,$F0,$FC,$F8,$E0,$E0,$80 | |||
| DD50 | DEFB $C0,$70,$78,$7C,$F8,$F0,$E0,$40 | |||
| DD58 | DEFB $00,$80,$C0,$F0,$E0,$78,$F8,$F0 | |||
| DD60 | DEFB $F8,$F0,$78,$38,$78,$38,$70,$78 | |||
| DD68 | DEFB $B1,$7F,$7F,$7F,$FD,$78,$78,$FC | |||
| DD70 | DEFB $F0,$70,$78,$70,$F1,$7F,$7F,$CC | |||
| DD78 | DEFB $03,$07,$01,$03,$01,$03,$00,$01 | |||
| DD80 | DEFB $00,$00,$01,$01,$03,$01,$07,$03 | ![]() |
||
| DD88 | DEFB $F8,$F0,$78,$7C,$FE,$FE,$7E,$7E | |||
| DD90 | DEFB $7F,$FF,$FF,$7F,$3F,$1F,$1F,$0A | |||
| DD98 | DEFB $00,$FF,$FF,$67,$E0,$60,$60,$6E | |||
| DDA0 | DEFB $FF,$F8,$60,$70,$76,$7F,$3F,$01 | |||
| DDA8 | DEFB $60,$F4,$FE,$FE,$BF,$3E,$3F,$3F | |||
| DDB0 | DEFB $3F,$1F,$3F,$7F,$FF,$FE,$FC,$EC | |||
| DDB8 | DEFB $80,$C0,$E0,$E0,$E0,$C0,$C0,$C0 | |||
| DDC0 | DEFB $80,$C0,$C0,$C0,$80,$C0,$E0,$80 | ![]() |
||
| DDC8 | DEFB $0B,$1F,$1E,$3E,$7F,$3F,$7C,$FC | |||
| DDD0 | DEFB $FC,$FC,$F8,$F8,$F0,$F8,$F0,$E0 | |||
| DDD8 | DEFB $80,$F8,$F0,$F0,$78,$00,$00,$00 | |||
| DDE0 | DEFB $80,$00,$00,$00,$80,$E0,$F0,$C0 | |||
| DDE8 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
|
|
||||
| DDF0 | DEFW $0002,$0005,$004B,$0019,$0032,$00FA,$0019,$0000 | Level 1 | ||
| DE00 | DEFW $0004,$000A,$0032,$0096,$0064,$01F4,$0032,$0000 | Level 2 | ||
| DE10 | DEFW $0006,$000F,$0096,$00E1,$004B,$02EE,$004B,$0000 | Level 3 | ||
| DE20 | DEFW $0008,$0014,$0064,$00C8,$012C,$03E8,$0064 | Level 4 | ||
|
Used by the routines at UpdateDepth and UpdateOxygen.
|
||||||||||||||||
| UpdateGauge | DE2E | LD (HL),$38 | erase old marker | |||||||||||||
| DE30 | RRCA | value*32 -> screen offset (row/col bits) | ||||||||||||||
| DE31 | RRCA | |||||||||||||||
| DE32 | RRCA | |||||||||||||||
| DE33 | LD H,A | |||||||||||||||
| DE34 | AND $E0 | |||||||||||||||
| DE36 | LD L,A | |||||||||||||||
| DE37 | LD A,H | |||||||||||||||
| DE38 | AND $01 | |||||||||||||||
| DE3A | LD H,A | |||||||||||||||
| DE3B | ADD HL,DE | add base, draw new marker | ||||||||||||||
| DE3C | LD (HL),C | |||||||||||||||
| DE3D | RET | |||||||||||||||
|
Used by the routine at DFD5.
|
||||
| UpdateDepth | DE3E | LD HL,($DE55) | ||
| DE41 | LD DE,$58FB | gauge base address + marker colour | ||
| DE44 | LD C,$28 | |||
| DE46 | LD A,($5B04) | depth level 0..15 from mini-map row | ||
| DE49 | INC A | |||
| DE4A | SRL A | |||
| DE4C | AND $0F | |||
| DE4E | CALL UpdateGauge | Update gauge indicator on the screen | ||
| DE51 | LD ($DE55),HL | |||
| DE54 | RET | |||
|
|
||||
| DE55 | DEFW $0000 | Depth indicator, address in screen area | ||
| DE57 | DEFW $0000 | Oxygen indicator, address in screen area | ||
| DE59 | DEFW $0000 | Lives indicator, address in screen attributes | ||
| OXYGEN | DE5B | DEFW $FFFF | Oxygen level, maximum is $FFFF | |
|
||||||||
| UpdateOxygen | DE5D | LD (OXYGEN),HL | store new Oxygen level | |||||
| DE60 | LD A,H | gauge level = 15 - (high byte >> 4) | ||||||
| DE61 | SRL A | |||||||
| DE63 | SRL A | |||||||
| DE65 | SRL A | |||||||
| DE67 | SRL A | |||||||
| DE69 | LD H,A | |||||||
| DE6A | LD A,$0F | |||||||
| DE6C | SUB H | |||||||
| DE6D | LD DE,$58F9 | |||||||
| DE70 | LD C,$20 | |||||||
| DE72 | LD HL,($DE57) | |||||||
| DE75 | CP $0E | low on oxygen? warning | ||||||
| DE77 | JR C,UpdateOxygen_0 | |||||||
| DE79 | CALL $E645 | Play melody $E629 | ||||||
| DE7C | LD C,$10 | use warning marker colour | ||||||
| UpdateOxygen_0 | DE7E | CALL UpdateGauge | Update gauge indicator on the screen | |||||
| DE81 | LD ($DE57),HL | |||||||
| DE84 | RET | |||||||
|
||||||||||||
| PrintDec | DE85 | LD (IX+$23),B | min-digits flag; save screen address | |||||||||
| DE88 | PUSH DE | |||||||||||
| DE89 | LD IY,$E5E0 | address for list of dividers: 10000, 1000, 100, 10, 1 | ||||||||||
| PrintDec_0 | DE8D | LD C,$FF | digit counter reset | |||||||||
| DE8F | LD E,(IY+$00) | get divider in DE | ||||||||||
| DE92 | LD D,(IY+$01) | |||||||||||
| DE95 | BIT 7,D | not last divider (units digit) | ||||||||||
| DE97 | JR Z,PrintDec_1 | |||||||||||
| DE99 | LD (IX+$23),D | units digit, print directly | ||||||||||
| DE9C | LD C,$00 | |||||||||||
| DE9E | JR PrintDec_2 | |||||||||||
| PrintDec_1 | DEA0 | INC C | count how many times divider fits | |||||||||
| DEA1 | OR A | |||||||||||
| DEA2 | SBC HL,DE | |||||||||||
| DEA4 | JR NC,PrintDec_1 | |||||||||||
| DEA6 | ADD HL,DE | undo last subtract; next divider | ||||||||||
| DEA7 | INC IY | |||||||||||
| DEA9 | INC IY | |||||||||||
| DEAB | LD A,(IX+$23) | check min-digit count reached | ||||||||||
| DEAE | OR A | |||||||||||
| DEAF | JR Z,PrintDec_2 | |||||||||||
| DEB1 | DEC (IX+$23) | count down, print next digit anyway | ||||||||||
| DEB4 | JR PrintDec_0 | |||||||||||
| PrintDec_2 | DEB6 | EX (SP),HL | ||||||||||
| DEB7 | EX DE,HL | |||||||||||
| DEB8 | LD B,$00 | |||||||||||
| DEBA | SLA C | digit*8 = char pixel offset | ||||||||||
| DEBC | SLA C | |||||||||||
| DEBE | SLA C | |||||||||||
| DEC0 | LD HL,$3D80 | ZX Charset (3D00) + $80 = address of char '0' | ||||||||||
| DEC3 | ADD HL,BC | |||||||||||
| DEC4 | LD B,$08 | |||||||||||
| DEC6 | PUSH DE | |||||||||||
| PrintDec_3 | DEC7 | LD A,(HL) | ||||||||||
| DEC8 | LD (DE),A | |||||||||||
| DEC9 | INC HL | |||||||||||
| DECA | INC D | |||||||||||
| DECB | DJNZ PrintDec_3 | |||||||||||
| DECD | POP DE | |||||||||||
| DECE | INC E | |||||||||||
| DECF | EX DE,HL | |||||||||||
| DED0 | EX (SP),HL | |||||||||||
| DED1 | BIT 7,(IX+$23) | check more digits to print | ||||||||||
| DED5 | JR Z,PrintDec_0 | |||||||||||
| DED7 | POP DE | |||||||||||
| DED8 | RET | |||||||||||
|
Used by the routine at PrepareGame.
|
||||
| PrintHighScore | DED9 | LD B,$00 | ||
| DEDB | LD HL,(HISCORE) | |||
| DEDE | LD DE,$4059 | |||
| DEE1 | CALL PrintDec | Print decimal number | ||
| DEE4 | RET | |||
|
Used by the routines at PrepareGame and E767.
|
||||
| PrintScore | DEE5 | LD B,$00 | ||
| DEE7 | LD HL,(SCORE) | get Score value | ||
| DEEA | LD DE,$4099 | |||
| DEED | CALL PrintDec | Print decimal number | ||
| DEF0 | RET | |||
|
|
||||
| PrintHeld | DEF1 | LD B,$02 | ||
| DEF3 | LD HL,(HELD) | get HELD value | ||
| DEF6 | LD DE,$40DA | |||
| DEF9 | CALL PrintDec | Print decimal number | ||
| DEFC | RET | |||
|
|
||||
| DEFD | DEFB $00,$00 | |||
| HELD | DEFF | DEFW $0000 | HELD value | |
| DF01 | DEFB $00,$00,$00,$00,$00,$00,$02,$03 | |||
| DF09 | DEFB $02,$03,$18,$10,$00,$30 | |||
| DF0F | DEFW $0000 | Write pointer into the collision-point list at DF11; reset to $DF11 each frame by DFD5, $FF-terminated | ||
| DF11 | DEFW $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 | Collision-point list: (row, column) byte pairs where the diver sprite overlapped relief, $FF-terminated; scanned by E364 | ||
| DF21 | DEFW $0000,$0000 | |||
|
|
||||
| AngleToDXDY | DF25 | DEFB $00,$FE,$01,$FE,$02,$FE,$02,$FF,$02,$00,$02,$01,$02,$02,$01,$02 | ||
| DF35 | DEFB $00,$02,$FF,$02,$FE,$02,$FE,$01,$FE,$00,$FE,$FF,$FE,$FE,$FF,$FE | |||
|
|
||||
| DF45 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF4D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF55 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF5D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF65 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF6D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF75 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF7D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF85 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF8D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF95 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DF9D | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFA5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFAD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFB5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFBD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFC5 | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
| DFCD | DEFB $00,$00,$00,$00,$00,$00,$00,$00 | |||
|
||||||||
|
Moves the diver one step: turns the current angle into an X/Y speed, updates the position, and scrolls the view when the diver crosses a tile or screen edge. It then picks the right swim sprite for the facing direction and draws the diver, redrawing the whole screen when the view has scrolled.
|
||||||||
| DFD5 | LD HL,($B7B9) | swap the two draw buffers (double-buffering) | ||||||
| DFD8 | LD DE,($5B35) | |||||||
| DFDC | LD ($5B35),HL | |||||||
| DFDF | LD ($B7B9),DE | |||||||
| DFE3 | LD IY,$DF01 | |||||||
| DFE7 | LD HL,$DF11 | reset collision-point list pointer | ||||||
| DFEA | LD ($DF0F),HL | |||||||
| DFED | LD A,(IX+$09) | |||||||
| DFF0 | LD (IX+$0B),A | |||||||
| DFF3 | LD A,(IX+$0A) | |||||||
| DFF6 | LD (IX+$0C),A | |||||||
| DFF9 | BIT 7,(IX+$10) | |||||||
| DFFD | JR Z,$E021 | |||||||
| DFFF | LD A,(IX+$06) | get Angle 0..15 | ||||||
| E002 | ADD A,A | |||||||
| E003 | LD C,A | |||||||
| E004 | LD B,$00 | |||||||
| E006 | LD HL,AngleToDXDY | Table base address | ||||||
| E009 | ADD HL,BC | |||||||
| E00A | LD A,(HL) | get DX value for the Angle | ||||||
| E00B | LD (IX+$04),A | set DX value | ||||||
| E00E | INC HL | |||||||
| E00F | LD A,(HL) | get DY value for the Angle | ||||||
| E010 | LD (IX+$05),A | set DY value | ||||||
| E013 | BIT 0,(IX+$10) | check "moving" bit | ||||||
| E017 | JR NZ,$E021 | |||||||
| E019 | LD (IX+$04),$00 | clear DX value | ||||||
| E01D | LD (IX+$05),$00 | clear DY value | ||||||
| E021 | LD A,(IX+$13) | get X value | ||||||
| E024 | LD HL,($5B03) | get Screen position on mini-map | ||||||
| E027 | ADD A,(IX+$04) | add DX | ||||||
| E02A | LD (IX+$13),A | set X value | ||||||
| E02D | SRL A | X shift within tile 0..7 | ||||||
| E02F | AND $07 | |||||||
| E031 | CP (IX+$02) | |||||||
| E034 | LD (IX+$15),A | |||||||
| E037 | JR Z,$E08D | |||||||
| E039 | CP $01 | |||||||
| E03B | JR Z,$E068 | |||||||
| E03D | CP $07 | |||||||
| E03F | JR NZ,$E08D | |||||||
| E041 | BIT 7,(IX+$04) | set DX value | ||||||
| E045 | JR Z,$E08D | |||||||
| E047 | BIT 7,(IX+$11) | |||||||
| E04B | JR Z,$E08D | |||||||
| E04D | DEC (IX+$00) | crossed left tile edge: shift column, scroll left | ||||||
| E050 | RES 4,(IX+$0D) | |||||||
| E054 | LD A,(IX+$00) | |||||||
| E057 | CP (IX+$1C) | |||||||
| E05A | JR NC,$E08D | |||||||
| E05C | ADD A,$08 | |||||||
| E05E | LD (IX+$00),A | |||||||
| E061 | SET 2,(IX+$10) | |||||||
| E065 | DEC L | |||||||
| E066 | JR $E08D | |||||||
| E068 | BIT 7,(IX+$04) | |||||||
| E06C | JR NZ,$E08D | |||||||
| E06E | BIT 7,(IX+$11) | |||||||
| E072 | JR NZ,$E08D | |||||||
| E074 | INC (IX+$00) | crossed right tile edge: shift column, scroll right | ||||||
| E077 | RES 4,(IX+$0D) | |||||||
| E07B | LD A,(IX+$00) | |||||||
| E07E | CP (IX+$1B) | |||||||
| E081 | JR C,$E08D | |||||||
| E083 | SUB $08 | |||||||
| E085 | LD (IX+$00),A | |||||||
| E088 | SET 2,(IX+$10) | |||||||
| E08C | INC L | |||||||
| E08D | LD A,(IX+$14) | get Y value | ||||||
| E090 | ADD A,(IX+$05) | add DY | ||||||
| E093 | LD (IX+$14),A | set Y value | ||||||
| E096 | SRL A | Y shift within tile 0..7 | ||||||
| E098 | AND $07 | |||||||
| E09A | CP (IX+$03) | |||||||
| E09D | LD (IX+$16),A | |||||||
| E0A0 | JP Z,$E120 | |||||||
| E0A3 | CP $01 | |||||||
| E0A5 | JR Z,$E0EA | |||||||
| E0A7 | CP $07 | |||||||
| E0A9 | JP NZ,$E120 | |||||||
| E0AC | BIT 7,(IX+$05) | check DY value - moving up? | ||||||
| E0B0 | JR Z,$E120 | |||||||
| E0B2 | BIT 7,(IX+$12) | |||||||
| E0B6 | JR Z,$E120 | |||||||
| E0B8 | LD A,(IX+$1A) | |||||||
| E0BB | CP (IX+$28) | |||||||
| E0BE | JR NZ,$E0CC | |||||||
| E0C0 | LD A,(IX+$03) | |||||||
| E0C3 | LD (IX+$16),A | |||||||
| E0C6 | ADD A,A | |||||||
| E0C7 | LD (IX+$14),A | set Y value | ||||||
| E0CA | JR $E120 | |||||||
| E0CC | DEC (IX+$01) | crossed top tile edge: shift row, scroll up | ||||||
| E0CF | DEC (IX+$1A) | |||||||
| E0D2 | RES 3,(IX+$0D) | |||||||
| E0D6 | LD A,(IX+$01) | |||||||
| E0D9 | CP (IX+$1E) | |||||||
| E0DC | JR NC,$E120 | |||||||
| E0DE | ADD A,$08 | |||||||
| E0E0 | LD (IX+$01),A | |||||||
| E0E3 | DEC H | |||||||
| E0E4 | SET 2,(IX+$10) | |||||||
| E0E8 | JR $E120 | |||||||
| E0EA | BIT 7,(IX+$05) | check DY value - moving up? | ||||||
| E0EE | JR NZ,$E120 | |||||||
| E0F0 | BIT 7,(IX+$12) | |||||||
| E0F4 | JR NZ,$E120 | |||||||
| E0F6 | INC (IX+$01) | crossed bottom tile edge: shift row, scroll down | ||||||
| E0F9 | INC (IX+$1A) | |||||||
| E0FC | BIT 5,(IX+$26) | |||||||
| E100 | JR NZ,$E10A | |||||||
| E102 | LD A,(IX+$1A) | reached depth $46 => extra life | ||||||
| E105 | CP $46 | |||||||
| E107 | CALL Z,$E9B0 | Plus one live | ||||||
| E10A | RES 3,(IX+$0D) | |||||||
| E10E | LD A,(IX+$01) | |||||||
| E111 | CP (IX+$1D) | |||||||
| E114 | JR C,$E120 | |||||||
| E116 | SUB $08 | |||||||
| E118 | LD (IX+$01),A | |||||||
| E11B | INC H | |||||||
| E11C | SET 2,(IX+$10) | |||||||
| E120 | LD A,(IX+$0D) | both axes crossed a screen edge? | ||||||
| E123 | AND $18 | |||||||
| E125 | CP $18 | |||||||
| E127 | JR Z,$E174 | |||||||
| E129 | BIT 2,(IX+$10) | view scrolled this frame? | ||||||
| E12D | JR Z,$E171 | |||||||
| E12F | RES 1,(IX+$0D) | |||||||
| E133 | PUSH IX | |||||||
| E135 | PUSH IY | |||||||
| E137 | LD A,L | wrap mini-map position to 0..31 | ||||||
| E138 | AND $1F | |||||||
| E13A | LD L,A | |||||||
| E13B | LD A,H | |||||||
| E13C | AND $1F | |||||||
| E13E | LD H,A | |||||||
| E13F | LD ($5B03),HL | set Screen position on mini-map | ||||||
| E142 | CALL DrawGameScr | Draw game screen | ||||||
| E145 | CALL UpdateDepth | Update Depth indicator | ||||||
| E148 | LD HL,($B7B9) | swap buffers around row-band redraw | ||||||
| E14B | LD DE,($5B35) | |||||||
| E14F | LD ($B7B9),DE | |||||||
| E153 | LD ($5B35),HL | |||||||
| E156 | CALL $BDBA | Draw records for current mini-map row band | ||||||
| E159 | LD HL,($B7B9) | |||||||
| E15C | LD DE,($5B35) | |||||||
| E160 | LD ($B7B9),DE | |||||||
| E164 | LD ($5B35),HL | |||||||
| E167 | POP IY | |||||||
| E169 | POP IX | |||||||
| E16B | RES 2,(IX+$10) | |||||||
| E16F | JR $E174 | |||||||
| E171 | CALL $B3AB | no scroll: partial redraw only | ||||||
| E174 | SET 4,(IX+$0D) | enable both draw passes | ||||||
| E178 | SET 3,(IX+$0D) | |||||||
| E17C | LD E,(IX+$04) | |||||||
| E17F | LD A,(IX+$15) | |||||||
| E182 | CP (IX+$02) | |||||||
| E185 | JR Z,$E18D | |||||||
| E187 | LD (IX+$02),A | |||||||
| E18A | LD (IX+$11),E | |||||||
| E18D | LD E,(IX+$05) | |||||||
| E190 | LD A,(IX+$16) | |||||||
| E193 | CP (IX+$03) | |||||||
| E196 | JR Z,$E19E | |||||||
| E198 | LD (IX+$12),E | |||||||
| E19B | LD (IX+$03),A | |||||||
| E19E | BIT 7,(IX+$10) | not swimming: use current sprite | ||||||
| E1A2 | JR NZ,$E1B8 | |||||||
| E1A4 | LD A,(IX+$24) | |||||||
| E1A7 | LD (IX+$09),A | |||||||
| E1AA | LD (IX+$0B),A | |||||||
| E1AD | LD A,(IX+$25) | |||||||
| E1B0 | LD (IX+$0A),A | |||||||
| E1B3 | LD (IX+$0C),A | |||||||
| E1B6 | JR $E1F4 | |||||||
| E1B8 | BIT 4,(IX+$10) | exploding/drowned: keep sprite | ||||||
| E1BC | JR NZ,$E1C4 | |||||||
| E1BE | BIT 5,(IX+$10) | |||||||
| E1C2 | JR Z,$E1D2 | |||||||
| E1C4 | LD A,(IX+$09) | |||||||
| E1C7 | LD (IX+$0B),A | |||||||
| E1CA | LD A,(IX+$0A) | |||||||
| E1CD | LD (IX+$0C),A | |||||||
| E1D0 | JR $E1F4 | |||||||
| E1D2 | INC (IX+$17) | swimming: advance animation frame | ||||||
| E1D5 | LD H,(IX+$06) | get Angle 0..15 | ||||||
| E1D8 | LD A,(IX+$17) | |||||||
| E1DB | AND $03 | |||||||
| E1DD | RRCA | |||||||
| E1DE | RRCA | |||||||
| E1DF | LD L,A | |||||||
| E1E0 | SRL H | |||||||
| E1E2 | RR L | |||||||
| E1E4 | LD DE,SprDiver0 | Diver sprites base address | ||||||
| E1E7 | ADD HL,DE | now HL = diver sprite address | ||||||
| E1E8 | LD (IX+$0A),H | |||||||
| E1EB | LD (IX+$0C),H | |||||||
| E1EE | LD (IX+$09),L | |||||||
| E1F1 | LD (IX+$0B),L | |||||||
| E1F4 | CALL $B3A6 | rebuild packed sprite list | ||||||
| E1F7 | LD A,(IX+$01) | |||||||
| E1FA | LD (IX+$19),A | set Row | ||||||
| E1FD | LD IY,($B7B9) | |||||||
| E201 | LD D,(IX+$08) | |||||||
| E204 | LD E,(IX+$07) | |||||||
| E207 | BIT 0,(IX+$0D) | use empty sprite where not drawn | ||||||
| E20B | JR NZ,$E211 | |||||||
| E20D | LD IY,$A41B | |||||||
| E211 | BIT 1,(IX+$0D) | |||||||
| E215 | JR NZ,$E21A | |||||||
| E217 | LD DE,$A41B | |||||||
| E21A | LD B,$03 | |||||||
| E21C | PUSH BC | |||||||
| E21D | LD A,(IX+$00) | |||||||
| E220 | LD (IX+$18),A | set Column | ||||||
| E223 | LD L,A | |||||||
| E224 | LD H,(IX+$19) | get Row | ||||||
| E227 | CALL GetScrAddr | Convert char coords HL to ZX screen address | ||||||
| E22A | LD B,$03 | |||||||
| E22C | PUSH BC | |||||||
| E22D | PUSH HL | |||||||
| E22E | PUSH IY | |||||||
| E230 | PUSH DE | |||||||
| E231 | LD B,$08 | |||||||
| E233 | LD A,(DE) | XOR sprite pixels onto screen | ||||||
| E234 | XOR (HL) | |||||||
| E235 | LD C,A | |||||||
| E236 | AND (IY+$00) | flag collision with existing pixels | ||||||
| E239 | JR Z,$E23F | |||||||
| E23B | SET 1,(IX+$10) | |||||||
| E23F | LD A,(IY+$00) | |||||||
| E242 | XOR C | |||||||
| E243 | LD (HL),A | |||||||
| E244 | INC H | |||||||
| E245 | INC DE | |||||||
| E246 | INC DE | |||||||
| E247 | INC DE | |||||||
| E248 | INC IY | |||||||
| E24A | INC IY | |||||||
| E24C | INC IY | |||||||
| E24E | DJNZ $E233 | |||||||
| E250 | INC (IX+$18) | one Column right | ||||||
| E253 | BIT 1,(IX+$10) | record collision point (row/col) | ||||||
| E257 | JR Z,$E26E | |||||||
| E259 | LD HL,($DF0F) | |||||||
| E25C | LD A,(IX+$19) | get Row | ||||||
| E25F | LD (HL),A | |||||||
| E260 | INC HL | |||||||
| E261 | LD A,(IX+$18) | get Column | ||||||
| E264 | DEC A | |||||||
| E265 | LD (HL),A | |||||||
| E266 | INC HL | |||||||
| E267 | LD ($DF0F),HL | |||||||
| E26A | RES 1,(IX+$10) | |||||||
| E26E | POP DE | |||||||
| E26F | INC DE | |||||||
| E270 | POP IY | |||||||
| E272 | INC IY | |||||||
| E274 | POP HL | |||||||
| E275 | INC HL | |||||||
| E276 | POP BC | |||||||
| E277 | DJNZ $E22C | |||||||
| E279 | INC (IX+$19) | one Row down | ||||||
| E27C | LD BC,$0015 | |||||||
| E27F | ADD IY,BC | |||||||
| E281 | EX DE,HL | |||||||
| E282 | ADD HL,BC | |||||||
| E283 | EX DE,HL | |||||||
| E284 | POP BC | |||||||
| E285 | DJNZ $E21C | |||||||
| E287 | LD HL,($B7B9) | |||||||
| E28A | LD BC,($5B35) | |||||||
| E28E | LD D,(IX+$08) | |||||||
| E291 | LD E,(IX+$07) | |||||||
| E294 | LD ($B7B9),BC | |||||||
| E298 | LD ($5B35),DE | |||||||
| E29C | LD (IX+$08),H | |||||||
| E29F | LD (IX+$07),L | |||||||
| E2A2 | LD HL,($DF0F) | mark end of collision list | ||||||
| E2A5 | LD (HL),$FF | |||||||
| E2A7 | RET | |||||||
|
Used by the routine at Game.
|
||||
| E2A8 | LD IX,DiverObj | Diver object record address | ||
| E2AC | DEC (IX+$0F) | |||
| E2AF | JR NZ,$E2CC | |||
| E2B1 | LD A,(IX+$0E) | get speed factor | ||
| E2B4 | LD (IX+$0F),A | |||
| E2B7 | RES 1,(IX+$0D) | |||
| E2BB | BIT 0,(IX+$0D) | |||
| E2BF | JR Z,$E2C5 | |||
| E2C1 | SET 1,(IX+$0D) | |||
| E2C5 | SET 0,(IX+$0D) | |||
| E2C9 | CALL $DFD5 | Update diver position, angle and sprite from movement state | ||
| E2CC | DEC (IX+$20) | |||
| E2CF | RET NZ | |||
| E2D0 | LD (IX+$20),$14 | |||
| E2D4 | CALL ReadKeyboard | Read keyboard input | ||
| E2D7 | CALL $E364 | Diver per-frame logic | ||
| E2DA | RET | |||
|
Used by the routine at E2A8.
|
||||||||
| ReadKeyboard | E2DB | BIT 3,(IX+$10) | ||||||
| E2DF | RET NZ | |||||||
| E2E0 | LD E,(IX+$06) | get Angle | ||||||
| E2E3 | LD BC,($5B38) | get port for Clockwise key | ||||||
| E2E7 | LD A,($5B3A) | get bit mask for Clockwise key | ||||||
| E2EA | LD D,A | |||||||
| E2EB | IN A,(C) | read the port for Clockwise key | ||||||
| E2ED | AND D | |||||||
| E2EE | JR NZ,ReadKeyboard_0 | not pressed => skip rotate | ||||||
|
Clockwise key pressed
|
||||||||
| E2F0 | INC E | rotate clockwise | ||||||
| ReadKeyboard_0 | E2F1 | LD BC,($5B3B) | get port for Anticlockwise key | |||||
| E2F5 | LD A,($5B3D) | get bit mask for Anticlockwise key | ||||||
| E2F8 | LD D,A | |||||||
| E2F9 | IN A,(C) | read the port for Anticlockwise key | ||||||
| E2FB | AND D | |||||||
| E2FC | JR NZ,ReadKeyboard_1 | not pressed => skip rotate | ||||||
|
Anticlockwise key pressed
|
||||||||
| E2FE | DEC E | rotate anticlockwise | ||||||
| ReadKeyboard_1 | E2FF | LD A,$0F | ||||||
| E301 | AND E | |||||||
| E302 | LD (IX+$06),A | set Angle 0..15 | ||||||
| E305 | LD BC,($5B3E) | get port for Accelerate key | ||||||
| E309 | LD A,($5B40) | get bit mask for Accelerate key | ||||||
| E30C | LD D,A | |||||||
| E30D | IN A,(C) | read the port for Accelerate key | ||||||
| E30F | AND D | |||||||
| E310 | JR NZ,ReadKeyboard_2 | not pressed => skip | ||||||
|
Accelerate key pressed
|
||||||||
| E312 | LD A,(IX+$0E) | get speed factor | ||||||
| E315 | SET 0,(IX+$10) | set "moving" bit | ||||||
| E319 | CP $08 | |||||||
| E31B | RET Z | |||||||
| E31C | DEC (IX+$0E) | decrement speed factor | ||||||
| ReadKeyboard_2 | E31F | LD BC,($5B41) | get port for Decelerate key | |||||
| E323 | LD A,($5B43) | get bit mask for Decelerate key | ||||||
| E326 | LD D,A | |||||||
| E327 | IN A,(C) | read the port for Decelerate key | ||||||
| E329 | AND D | |||||||
| E32A | RET NZ | not pressed => return | ||||||
|
Decelerate key pressed
|
||||||||
| E32B | LD A,(IX+$0E) | get speed factor | ||||||
| E32E | CP $14 | = 20 ? | ||||||
| E330 | JR NZ,ReadKeyboard_3 | |||||||
| E332 | RES 0,(IX+$10) | clear "moving" bit - diver stopped | ||||||
| E336 | RET | |||||||
| ReadKeyboard_3 | E337 | INC (IX+$0E) | ||||||
| E33A | RET | |||||||
|
|
||||
| DiverObj | E33B | DEFB $0A | (IX+$00) Column 0..31 | |
| E33C | DEFB $0A | (IX+$01) Row | ||
| E33D | DEFB $04 | (IX+$02) X shift 0..7, previous value | ||
| E33E | DEFB $04 | (IX+$03) Y shift 0..7, previous value | ||
| E33F | DEFB $00 | (IX+$04) DX value for the Angle, -2..2, see table AngleToDXDY | ||
| E340 | DEFB $00 | (IX+$05) DY value for the Angle, -2..2, see table AngleToDXDY | ||
| E341 | DEFB $04 | (IX+$06) Angle 0..15, initially 4 | ||
| E342 | DEFB $8D | (IX+$07) draw/erase-buffer pointer, low byte (see (IX+$08)) | ||
| E343 | DEFB $DF | (IX+$08) draw/erase-buffer pointer, high byte; selects the object's slot page ($F0+slot for objects, $DF for diver), see B5E0 | ||
| E344 | DEFW $0000 | (IX+$09) Sprite address | ||
| E346 | DEFW $0000 | (IX+$0B) Sprite address | ||
| E348 | DEFB $18 | (IX+$0D) object-engine control flags (shared by B3A0/B470/B5E0/B737); bit0: on-screen/slot allocated; bit1: was active last frame (redraw vs first draw); bits2/3/4: edge-crossing during scroll (column/row); bit5: X-centered (no X shift); bit6: Y-centered (no Y shift); bit7: slot allocation failed, skip draw | ||
| E349 | DEFB $14 | (IX+$0E) speed factor: 12 20 40 100; $08 max speed, $14 min speed | ||
| E34A | DEFB $14 | (IX+$0F) speed counter | ||
| E34B | DEFB $00 | (IX+$10) flag bits; bit0: 1 = diver moving, 0 = stopped | ||
| E34C | DEFB $00 | (IX+$11) last DX value, set when X shift changes; bit7 used to test movement direction (left/right) | ||
| E34D | DEFB $00 | (IX+$12) last DY value, set when Y shift changes; bit7 used to test movement direction (up/down) | ||
| E34E | DEFB $08 | (IX+$13) X value | ||
| E34F | DEFB $08 | (IX+$14) Y value | ||
| E350 | DEFB $00 | (IX+$15) X shift 0..7 | ||
| E351 | DEFB $00 | (IX+$16) Y shift 0..7 | ||
| E352 | DEFB $00 | (IX+$17) animation frame counter 0..3, incremented each frame; combined with Angle to pick swim sprite | ||
| E353 | DEFB $00 | (IX+$18) Column 0..31 | ||
| E354 | DEFB $00 | (IX+$19) Row | ||
| E355 | DEFB $0A | (IX+$1A) world row counter (depth), incremented/decremented with row moves; reaching $46 grants extra life; compared to (IX+$28) | ||
| E356 | DEFB $12 | (IX+$1B) right column limit | ||
| E357 | DEFB $03 | (IX+$1C) left column limit | ||
| E358 | DEFB $12 | (IX+$1D) bottom row limit | ||
| E359 | DEFB $03 | (IX+$1E) top row limit | ||
| E35A | DEFB $40 | (IX+$1F) unused during play; reused by EADE as the current print row while listing the high-score table | ||
| E35B | DEFB $00 | (IX+$20) periodic counter; controls how often keyboard input and diver logic (E364) run | ||
| E35C | DEFB $00 | (IX+$21) frame counter for drowned-diver periodic 180-degree turn (E41B); wraps every 256 calls | ||
| E35D | DEFB $00 | (IX+$22) drowning countdown; 0 = alive, increments each frame after drowning starts, reaching $FF triggers Diver explosion | ||
| E35E | DEFB $00 | scratch byte, reused by PrintDec (PrintDec) as (IX+$23) digit-skip counter while printing | ||
| E35F | DEFW $0000 | (IX+$24) Sprite address | ||
| E361 | DEFB $00 | (IX+$26) flag bits; bit0: on boat/climbing sequence active; bit1: one-shot gate for boat animation step; bit3: climbing onto boat, immune to explosion; bit4: max score bonus already given this dive; bit5: extra life already awarded this dive | ||
| E362 | DEFB $00 | (IX+$27) last known boat column (from C4F0+2), used to detect boat movement | ||
| E363 | DEFB $00 | (IX+$28) row limit for current dive phase, compared to (IX+$1A) | ||
|
Used by the routine at E2A8.
|
||||||||
|
Runs once per frame while diving. Drains Oxygen (rate scales with Game level) and triggers drowning if it runs out; periodically flips the drowned diver's facing. Then walks the list of nearby screen objects, checking each for a relief-wall hit (bounce back) or an interaction (take Oxygen, pick up pearls/shells/chest) via E476.
|
||||||||
| E364 | BIT 5,(IX+$10) | check drowning/exploding flag, skip if set | ||||||
| E368 | RET NZ | |||||||
| E369 | BIT 7,(IX+$10) | check underwater flag, else boat logic | ||||||
| E36D | JP Z,$E767 | |||||||
| E370 | LD HL,(OXYGEN) | get oxygen level | ||||||
| E373 | LD A,(LEVEL) | Game level 1..4 | ||||||
| E376 | ADD A,A | oxygen drain rate = LEVEL*8+10 | ||||||
| E377 | ADD A,A | |||||||
| E378 | ADD A,A | |||||||
| E379 | ADD A,$0A | |||||||
| E37B | LD E,A | |||||||
| E37C | LD D,$00 | |||||||
| E37E | LD A,H | subtract drain from oxygen | ||||||
| E37F | SBC HL,DE | |||||||
| E381 | LD (OXYGEN),HL | |||||||
| E384 | CP H | |||||||
| E385 | CALL NZ,UpdateOxygen | Update Oxygen indicator, maximum is $FFFF | ||||||
| E388 | LD A,($DE5C) | check oxygen high byte, out-of-air | ||||||
| E38B | AND $F0 | |||||||
| E38D | JR NZ,$E393 | |||||||
| E38F | CALL $E43A | Explosion | ||||||
| E392 | RET | |||||||
| E393 | LD A,(IX+$22) | |||||||
| E396 | OR A | |||||||
| E397 | JR Z,$E39C | |||||||
| E399 | INC (IX+$22) | |||||||
| E39C | BIT 4,(IX+$10) | |||||||
| E3A0 | CALL NZ,$E41B | Drowned diver | ||||||
| E3A3 | LD HL,$DF11 | |||||||
| E3A6 | LD A,(HL) | |||||||
| E3A7 | CP $FF | |||||||
| E3A9 | RET Z | |||||||
| E3AA | BIT 7,(IX+$10) | |||||||
| E3AE | RET Z | |||||||
| E3AF | LD D,A | |||||||
| E3B0 | INC HL | |||||||
| E3B1 | LD E,(HL) | |||||||
| E3B2 | INC HL | |||||||
| E3B3 | PUSH HL | |||||||
| E3B4 | EX DE,HL | |||||||
| E3B5 | PUSH HL | |||||||
| E3B6 | CALL GetScrAttrAddr | Get screen attribute address | ||||||
| E3B9 | LD A,(HL) | |||||||
| E3BA | POP HL | |||||||
| E3BB | CP $02 | |||||||
| E3BD | JP NZ,$E476 | => Interact with object, like take Oxygen or pick up pearls | ||||||
|
This entry point is used by the routine at E476.
|
||||||||
| E3C0 | BIT 4,(IX+$10) | |||||||
| E3C4 | JR NZ,$E418 | |||||||
| E3C6 | LD A,(IX+$22) | |||||||
| E3C9 | CP $FF | |||||||
| E3CB | JR NZ,$E3D2 | |||||||
|
This entry point is used by the routine at E915.
|
||||||||
| E3CD | CALL $E43A | Explosion | ||||||
| E3D0 | JR $E418 | |||||||
| E3D2 | OR A | |||||||
| E3D3 | JR NZ,$E418 | |||||||
| E3D5 | SET 3,(IX+$10) | |||||||
| E3D9 | LD (IX+$0E),$0A | |||||||
| E3DD | RES 0,(IX+$10) | clear "moving" bit | ||||||
| E3E1 | SET 4,(IX+$10) | |||||||
| E3E5 | LD A,(IX+$06) | get Angle 0..15 | ||||||
| E3E8 | INC A | |||||||
| E3E9 | AND $0C | 0 / 4 / 8 / 12 | ||||||
| E3EB | ADD A,A | 0 / 8 / 16 / 24 | ||||||
| E3EC | ADD A,A | 0 / 16 / 32 / 48 | ||||||
| E3ED | ADD A,A | 0 / 32 / 64 / 96 | ||||||
| E3EE | LD C,A | |||||||
| E3EF | LD B,$00 | |||||||
| E3F1 | LD HL,SprDrowned | Base address for 4 sprites of drowned diver | ||||||
| E3F4 | ADD HL,BC | |||||||
| E3F5 | LD (IX+$09),L | |||||||
| E3F8 | LD (IX+$0B),L | |||||||
| E3FB | LD (IX+$0A),H | |||||||
| E3FE | LD (IX+$0C),H | |||||||
| E401 | LD (IX+$21),$E6 | |||||||
| E405 | LD HL,$0000 | reset HELD value | ||||||
| E408 | LD (HELD),HL | |||||||
| E40B | CALL PrintHeld | Print HELD number | ||||||
| E40E | RES 6,(IX+$10) | |||||||
| E412 | LD HL,$E604 | Melody address | ||||||
| E415 | CALL PlayMelody | Play melody | ||||||
| E418 | POP HL | |||||||
| E419 | JR $E3A6 | |||||||
|
Used by the routine at E364.
|
||||||||
| E41B | INC (IX+$21) | |||||||
| E41E | RET NZ | |||||||
| E41F | LD A,(IX+$06) | get Angle | ||||||
| E422 | ADD A,$08 | rotate 180 degree | ||||||
| E424 | AND $0F | 0..15 | ||||||
| E426 | LD (IX+$06),A | set Angle | ||||||
| E429 | LD (IX+$22),$F5 | |||||||
| E42D | RES 4,(IX+$10) | |||||||
| E431 | RES 3,(IX+$10) | |||||||
| E435 | LD (IX+$0E),$14 | |||||||
| E439 | RET | |||||||
|
Used by the routine at E364.
|
||||||||
| E43A | BIT 3,(IX+$26) | |||||||
| E43E | RET NZ | |||||||
| E43F | SET 5,(IX+$10) | |||||||
| E443 | SET 3,(IX+$10) | |||||||
| E447 | RES 0,(IX+$10) | clear "moving" bit | ||||||
| E44B | LD A,(IX+$06) | get Angle 0..15 | ||||||
| E44E | INC A | |||||||
| E44F | LD HL,SprExplosion | Explosion sprite address | ||||||
| E452 | LD BC,$0020 | |||||||
| E455 | BIT 2,A | |||||||
| E457 | JR Z,$E45A | |||||||
| E459 | ADD HL,BC | |||||||
| E45A | LD (IX+$09),L | |||||||
| E45D | LD (IX+$0B),L | |||||||
| E460 | LD (IX+$0A),H | |||||||
| E463 | LD (IX+$0C),H | |||||||
| E466 | LD HL,$E61C | |||||||
| E469 | CALL PlayMelody | Play melody | ||||||
| E46C | LD HL,$0000 | reset HELD value | ||||||
| E46F | LD (HELD),HL | |||||||
| E472 | CALL PrintHeld | Print HELD number | ||||||
| E475 | RET | |||||||
|
Used by the routine at E364.
|
||||||||||
|
Scans the on-screen object list for whatever the diver is touching and handles it by type: oxygen refills the tank, chests and shells add their pearls to the amount carried (up to the level's limit) and mark the object taken, while closed clams and relief block the diver. If nothing matches, control falls through to the boat-collision check.
|
||||||||||
| E476 | LD IY,$B07D | Table of objects on the screen | ||||||||
| E47A | LD A,(IY+$01) | get address high | ||||||||
| E47D | CP $FF | end of list marker? | ||||||||
| E47F | JP Z,$E915 | yes => exit | ||||||||
| E482 | LD D,(IY+$03) | get row | ||||||||
| E485 | LD E,(IY+$02) | get column | ||||||||
| E488 | LD B,A | record address hi (in TableStatics table) | ||||||||
| E489 | LD C,(IY+$00) | record address lo | ||||||||
| E48C | LD A,(BC) | get record flags | ||||||||
| E48D | BIT 5,A | check "oxygen" bit | ||||||||
| E48F | JR Z,$E4B2 | not oxygen => jump | ||||||||
| E491 | LD A,D | object at diver's exact cell? | ||||||||
| E492 | CP H | |||||||||
| E493 | JR NZ,$E4AB | |||||||||
| E495 | LD A,E | |||||||||
| E496 | CP L | |||||||||
| E497 | JR NZ,$E4AB | |||||||||
|
We've got Oxygen object
|
||||||||||
| E499 | LD HL,(OXYGEN) | add 200 oxygen, cap at $FFFF | ||||||||
| E49C | LD BC,$00C8 | |||||||||
| E49F | ADD HL,BC | |||||||||
| E4A0 | JR NC,$E4A5 | |||||||||
| E4A2 | LD HL,$FFFF | |||||||||
| E4A5 | CALL UpdateOxygen | Update Oxygen indicator, maximum is $FFFF | ||||||||
| E4A8 | JP $E418 | |||||||||
| E4AB | LD BC,$0004 | advance to next object record | ||||||||
| E4AE | ADD IY,BC | |||||||||
| E4B0 | JR $E47A | |||||||||
| E4B2 | BIT 6,A | check "chest" bit | ||||||||
| E4B4 | JP Z,$E553 | |||||||||
| E4B7 | LD A,H | chest row/column match? | ||||||||
| E4B8 | CP D | |||||||||
| E4B9 | JR NZ,$E4AB | |||||||||
| E4BB | LD A,L | |||||||||
| E4BC | CP E | |||||||||
| E4BD | JR Z,$E4C3 | |||||||||
| E4BF | DEC A | also allow chest's second column (2 wide) | ||||||||
| E4C0 | CP E | |||||||||
| E4C1 | JR NZ,$E4AB | |||||||||
|
We've got Chest object
|
||||||||||
| E4C3 | BIT 6,(IX+$10) | skip if HELD full or not carrying | ||||||||
| E4C7 | JP NZ,$E418 | |||||||||
| E4CA | BIT 4,(IX+$10) | |||||||||
| E4CE | JP NZ,$E418 | |||||||||
| E4D1 | LD A,(BC) | skip if chest already opened | ||||||||
| E4D2 | BIT 3,A | |||||||||
| E4D4 | JP NZ,$E418 | |||||||||
| E4D7 | PUSH BC | |||||||||
| E4D8 | INC BC | read chest's pearl-value index | ||||||||
| E4D9 | INC BC | |||||||||
| E4DA | INC BC | |||||||||
| E4DB | LD A,(BC) | |||||||||
| E4DC | DEC A | |||||||||
| E4DD | ADD A,A | |||||||||
| E4DE | LD HL,$5B2B | get value 75 / 50 / 150 / 100, depending on Game level | ||||||||
| E4E1 | LD C,A | |||||||||
| E4E2 | LD B,$00 | |||||||||
| E4E4 | ADD HL,BC | |||||||||
| E4E5 | PUSH DE | |||||||||
| E4E6 | CALL $E5D2 | DE = (L5B33) - HELD | ||||||||
| E4E9 | LD C,(HL) | get chest's pearl value | ||||||||
| E4EA | INC HL | |||||||||
| E4EB | LD B,(HL) | |||||||||
| E4EC | DEC HL | |||||||||
| E4ED | EX DE,HL | |||||||||
| E4EE | PUSH HL | |||||||||
| E4EF | PUSH BC | |||||||||
| E4F0 | OR A | fits in remaining capacity? | ||||||||
| E4F1 | SBC HL,BC | |||||||||
| E4F3 | POP BC | |||||||||
| E4F4 | POP HL | |||||||||
| E4F5 | JR Z,$E4FB | |||||||||
| E4F7 | JR C,$E533 | |||||||||
| E4F9 | JR $E509 | |||||||||
| E4FB | LD BC,($5B33) | get value depending of game level | ||||||||
| E4FF | LD (HELD),BC | set HELD value | ||||||||
| E503 | SET 6,(IX+$10) | mark HELD at limit | ||||||||
| E507 | JR $E510 | |||||||||
| E509 | LD HL,(HELD) | get HELD value | ||||||||
| E50C | ADD HL,BC | |||||||||
| E50D | LD (HELD),HL | set HELD value | ||||||||
| E510 | POP DE | |||||||||
| E511 | EX DE,HL | |||||||||
| E512 | CALL GetScrAttrAddr | Get screen attribute address | ||||||||
| E515 | LD (HL),$06 | paint chest cells collected | ||||||||
| E517 | INC HL | |||||||||
| E518 | LD (HL),$06 | |||||||||
| E51A | POP BC | |||||||||
| E51B | LD A,(BC) | mark chest opened | ||||||||
| E51C | SET 3,A | |||||||||
| E51E | LD (BC),A | |||||||||
| E51F | CALL PrintHeld | Print HELD number | ||||||||
| E522 | CALL $E615 | Play melody $E60B | ||||||||
| E525 | LD HL,$5B0F | count chest collected | ||||||||
| E528 | INC (HL) | |||||||||
| E529 | LD HL,($5B48) | add to chests total | ||||||||
| E52C | INC HL | |||||||||
| E52D | LD ($5B48),HL | |||||||||
| E530 | JP $E418 | |||||||||
| E533 | PUSH BC | partial fill: keep remainder | ||||||||
| E534 | EX (SP),HL | |||||||||
| E535 | POP BC | |||||||||
| E536 | OR A | compute leftover in chest | ||||||||
| E537 | SBC HL,BC | |||||||||
| E539 | LD A,L | |||||||||
| E53A | LD (DE),A | |||||||||
| E53B | INC DE | |||||||||
| E53C | LD A,H | |||||||||
| E53D | LD (DE),A | |||||||||
| E53E | LD HL,($5B33) | get value depending of game level | ||||||||
| E541 | LD (HELD),HL | set HELD value | ||||||||
| E544 | SET 6,(IX+$10) | |||||||||
| E548 | POP DE | |||||||||
| E549 | POP BC | |||||||||
| E54A | CALL PrintHeld | Print HELD number | ||||||||
| E54D | CALL $E615 | Play melody $E60B | ||||||||
| E550 | JP $E418 | |||||||||
|
We've got a shell, big or small
|
||||||||||
| E553 | BIT 1,A | small or big shell? | ||||||||
| E555 | JR Z,$E5A9 | |||||||||
| E557 | LD A,H | |||||||||
| E558 | CP D | |||||||||
| E559 | JP NZ,$E4AB | |||||||||
| E55C | LD A,L | |||||||||
| E55D | CP E | |||||||||
| E55E | JP NZ,$E4AB | |||||||||
| E561 | BIT 6,(IX+$10) | skip if HELD already full | ||||||||
| E565 | JP NZ,$E418 | |||||||||
| E568 | BIT 4,(IX+$10) | |||||||||
| E56C | JP NZ,$E418 | |||||||||
| E56F | LD A,(BC) | |||||||||
| E570 | BIT 3,A | |||||||||
| E572 | JP NZ,$E418 | |||||||||
| E575 | LD HL,($5B27) | get value 2 / 4 / 6 / 8, depending on Game level | ||||||||
| E578 | LD A,(BC) | already collected? | ||||||||
| E579 | BIT 4,A | |||||||||
| E57B | JP NZ,$E418 | |||||||||
| E57E | PUSH BC | |||||||||
| E57F | CALL $E5D2 | DE = (L5B33) - HELD | ||||||||
| E582 | POP BC | |||||||||
| E583 | EX DE,HL | |||||||||
| E584 | OR A | room left for more pearls? | ||||||||
| E585 | SBC HL,DE | |||||||||
| E587 | JP C,$E418 | |||||||||
| E58A | LD HL,(HELD) | add pearls to HELD | ||||||||
| E58D | ADD HL,DE | |||||||||
| E58E | LD (HELD),HL | |||||||||
| E591 | LD A,(BC) | mark shell taken | ||||||||
| E592 | SET 4,A | |||||||||
| E594 | LD (BC),A | |||||||||
| E595 | CALL PrintHeld | Print HELD number | ||||||||
| E598 | CALL $E615 | Play melody $E60B | ||||||||
| E59B | LD HL,$5B00 | one less shell to find | ||||||||
| E59E | DEC (HL) | |||||||||
| E59F | LD HL,($5B46) | count a pearl | ||||||||
| E5A2 | INC HL | |||||||||
| E5A3 | LD ($5B46),HL | |||||||||
| E5A6 | JP $E418 | |||||||||
| E5A9 | LD A,H | big shell: match its 2x2 area | ||||||||
| E5AA | CP D | |||||||||
| E5AB | JR Z,$E5B2 | |||||||||
| E5AD | INC A | |||||||||
| E5AE | CP D | |||||||||
| E5AF | JP NZ,$E4AB | |||||||||
| E5B2 | LD A,L | |||||||||
| E5B3 | CP E | |||||||||
| E5B4 | JR Z,$E5BB | |||||||||
| E5B6 | DEC A | |||||||||
| E5B7 | CP E | |||||||||
| E5B8 | JP NZ,$E4AB | |||||||||
| E5BB | LD A,(BC) | closed clam blocks the diver | ||||||||
| E5BC | BIT 3,A | |||||||||
| E5BE | JP NZ,$E3C0 | |||||||||
| E5C1 | LD A,L | |||||||||
| E5C2 | CP E | |||||||||
| E5C3 | JP NZ,$E418 | |||||||||
| E5C6 | BIT 6,(IX+$10) | |||||||||
| E5CA | JP NZ,$E418 | |||||||||
| E5CD | LD HL,($5B29) | get value 5 / 10 / 15 / 20, depending on Game level | ||||||||
| E5D0 | JR $E578 | |||||||||
|
Used by the routine at E476.
|
||||
| E5D2 | LD BC,(HELD) | get HELD value | ||
| E5D6 | LD DE,($5B33) | get value depending of game level | ||
| E5DA | EX DE,HL | |||
| E5DB | OR A | |||
| E5DC | SBC HL,BC | |||
| E5DE | EX DE,HL | DE = (L5B33) - HELD | ||
| E5DF | RET | |||
|
|
||||
| E5E0 | DEFW $2710,$03E8,$0064,$000A,$0001 | 10000, 1000, 100, 10, 1 | ||
| E5EA | DEFW $FFFF | |||
|
||||||||
|
Plays a short tune by reading notes one at a time from a list and sounding each through the ROM beeper, stopping when it hits the $FF end marker.
|
||||||||
| PlayMelody | E5EC | LD E,(HL) | get note byte; $FF ends melody | |||||
| E5ED | LD A,E | |||||||
| E5EE | INC A | |||||||
| E5EF | RET Z | |||||||
| E5F0 | LD D,$00 | read pitch bytes into BC | ||||||
| E5F2 | INC HL | |||||||
| E5F3 | LD C,(HL) | |||||||
| E5F4 | INC HL | |||||||
| E5F5 | LD B,(HL) | |||||||
| E5F6 | INC HL | |||||||
| E5F7 | PUSH BC | set up beeper args (pitch/duration) | ||||||
| E5F8 | EX (SP),HL | |||||||
| E5F9 | PUSH IX | |||||||
| E5FB | CALL $03B5 | ROM Beeper subroutine | ||||||
| E5FE | DI | |||||||
| E5FF | POP IX | |||||||
| E601 | POP HL | |||||||
| E602 | JR PlayMelody | continue | ||||||
|
|
||||
| E604 | DEFB $02,$00,$20,$03,$00,$30,$FF | |||
| E60B | DEFB $06,$00,$01,$06,$00,$03,$06,$80 | |||
| E613 | DEFB $00,$FF | |||
|
Used by the routine at E476.
|
||||
| E615 | LD HL,$E60B | |||
| E618 | CALL PlayMelody | Play melody | ||
| E61B | RET | |||
|
|
||||
| E61C | DEFB $01,$00,$20,$01,$00,$18,$02,$00 | |||
| E624 | DEFB $10,$03,$00,$08,$FF | |||
| E629 | DEFB $02,$00,$0A,$03,$15,$0E,$FF | |||
| E630 | DEFB $02,$FF | |||
| E632 | DEFB $00,$FF | |||
| E634 | DEFB $04,$80,$00,$FF | |||
| E638 | DEFB $14,$00,$02,$1E,$00,$01,$32,$C8 | |||
| E640 | DEFB $00,$14,$40,$02,$FF | |||
|
Used by the routine at UpdateOxygen.
|
||||
| E645 | PUSH HL | |||
| E646 | PUSH DE | |||
| E647 | PUSH AF | |||
| E648 | LD HL,$E629 | |||
| E64B | CALL PlayMelody | Play melody | ||
| E64E | POP AF | |||
| E64F | POP DE | |||
| E650 | POP HL | |||
| E651 | RET | |||
|
|
||||
|
Sprites for 1/2/3 divers on the boat; width 2 chars, 16 bytes each sprite
|
||||
| E652 | DEFB $00,$0C,$00,$1E,$00,$0C,$00,$1E | ![]() |
||
| E65A | DEFB $00,$1E,$00,$1E,$FF,$FF,$FF,$FF | |||
| E662 | DEFB $01,$8C,$03,$DE,$01,$8C,$03,$DE | ![]() |
||
| E66A | DEFB $03,$DE,$03,$DE,$FF,$FF,$FF,$FF | |||
| E672 | DEFB $31,$8C,$7B,$DE,$31,$8C,$7B,$DE | ![]() |
||
| E67A | DEFB $7B,$DE,$7B,$DE,$FF,$FF,$FF,$FF | |||
| E682 | OR A | no divers left, use empty sprite | ||
| E683 | JR NZ,$E68A | |||
| E685 | LD HL,$A41B | empty sprite address | ||
| E688 | JR $E697 | |||
| E68A | LD HL,$E652 | divers-on-boat sprite base | ||
| E68D | LD DE,$0010 | sprite step; skip if only one diver | ||
| E690 | DEC A | |||
| E691 | JR Z,$E697 | |||
| E693 | LD B,A | |||
| E694 | ADD HL,DE | |||
| E695 | DJNZ $E694 | |||
| E697 | LD B,$06 | 6 rows; boat destination address | ||
| E699 | LD DE,$8CD6 | |||
| E69C | PUSH BC | |||
| E69D | LDI | copy 2 bytes of diver sprite onto boat | ||
| E69F | LDI | |||
| E6A1 | LD BC,$0005 | |||
| E6A4 | EX DE,HL | |||
| E6A5 | ADD HL,BC | |||
| E6A6 | EX DE,HL | |||
| E6A7 | POP BC | |||
| E6A8 | DJNZ $E69C | |||
| E6AA | RET | |||
|
Used by the routine at Game.
|
||||
|
Sets up the diver for the start of a dive: refills the oxygen tank, draws the spare divers waiting on the boat, and places the diver at the boat's position on the map with the sitting sprite and starting state ready to go.
|
||||
| E6AB | LD IX,DiverObj | Diver object record address | ||
| E6AF | LD HL,$FFFF | |||
| E6B2 | LD (OXYGEN),HL | |||
| E6B5 | LD A,(LIVES) | get Number of lives | ||
| E6B8 | DEC A | |||
| E6B9 | CALL $E682 | Draw Divers on the Boat | ||
| E6BC | LD A,($C4F0) | |||
| E6BF | LD C,A | |||
| E6C0 | SRL A | |||
| E6C2 | SRL A | |||
| E6C4 | SRL A | |||
| E6C6 | DEC A | |||
| E6C7 | AND $1F | |||
| E6C9 | LD L,A | |||
| E6CA | LD H,$00 | |||
| E6CC | LD ($5B03),HL | set Screen position on mini-map | ||
| E6CF | LD (IX+$1E),$00 | |||
| E6D3 | LD (IX+$11),$FE | |||
| E6D7 | LD (IX+$12),$00 | |||
| E6DB | LD (IX+$0D),$00 | |||
| E6DF | LD (IX+$01),$06 | |||
| E6E3 | LD (IX+$14),$0C | set Y value = 12 | ||
| E6E7 | SET 3,(IX+$10) | |||
| E6EB | LD A,($C4F2) | |||
| E6EE | LD (IX+$27),A | |||
| E6F1 | LD (IX+$04),$00 | clear DX value | ||
| E6F5 | LD (IX+$05),$00 | clear DY value | ||
| E6F9 | LD (IX+$28),$00 | |||
| E6FD | LD (IX+$1A),$06 | |||
| E701 | LD (IX+$10),$00 | |||
| E705 | LD (IX+$0E),$14 | speed factor = min speed | ||
| E709 | LD (IX+$12),$00 | |||
| E70D | LD (IX+$11),$FF | |||
| E711 | LD A,L | |||
| E712 | ADD A,A | |||
| E713 | ADD A,A | |||
| E714 | ADD A,A | |||
| E715 | LD L,A | |||
| E716 | LD A,C | |||
| E717 | SUB L | |||
| E718 | ADD A,$03 | |||
| E71A | LD (IX+$00),A | set Column value | ||
| E71D | LD C,A | |||
| E71E | LD A,($C4F2) | |||
| E721 | ADD A,$03 | |||
| E723 | BIT 3,A | |||
| E725 | JR Z,$E72C | |||
| E727 | INC (IX+$00) | one Column right | ||
| E72A | AND $07 | |||
| E72C | ADD A,A | |||
| E72D | LD (IX+$13),A | set X value | ||
| E730 | LD A,(LIVES) | get Number of lives | ||
| E733 | CP $03 | |||
| E735 | JR Z,$E759 | |||
| E737 | LD B,$0A | |||
| E739 | CP $02 | |||
| E73B | JR Z,$E73F | |||
| E73D | LD B,$14 | |||
| E73F | LD A,(IX+$13) | get X value | ||
| E742 | ADD A,B | |||
| E743 | SUB $10 | |||
| E745 | JR C,$E74C | |||
| E747 | INC (IX+$00) | one Column right | ||
| E74A | JR $E743 | |||
| E74C | ADD A,$10 | |||
| E74E | LD (IX+$13),A | set X value | ||
| E751 | LD (IX+$20),$01 | |||
| E755 | LD (IX+$0F),$02 | |||
| E759 | LD HL,$9BAC | Sprite diver sitting on the boat | ||
| E75C | LD (IX+$24),L | set sprite address | ||
| E75F | LD (IX+$25),H | |||
| E762 | SET 0,(IX+$10) | set "moving" bit | ||
| E766 | RET | |||
|
Used by the routine at E364.
|
||||
|
Runs the diver's above-water behaviour while on the boat, stepping through phases held in the object's flag byte: sit and wait for the dive key, jump off into the water to begin a dive, and (on return) cycle the climb-aboard sprites. When the diver settles back on deck it banks the collected pearls into the score, refills oxygen, and awards a bonus if every object was collected.
|
||||
| E767 | BIT 0,(IX+$26) | |||
| E76B | JR NZ,$E7E0 | |||
| E76D | LD (IX+$20),$03 | |||
| E771 | LD (IX+$0F),$03 | |||
| E775 | LD (IX+$04),$00 | clear DX value | ||
| E779 | LD (IX+$05),$00 | clear DY value | ||
| E77D | LD A,($C4F2) | |||
| E780 | CP (IX+$27) | |||
| E783 | JR Z,$E78C | |||
| E785 | LD (IX+$27),A | |||
| E788 | LD (IX+$04),$FE | set DX value = -2 | ||
| E78C | LD BC,($5B3E) | get port for Accelerate key | ||
| E790 | LD A,($5B40) | get bit mask for Accelerate key | ||
| E793 | LD L,A | |||
| E794 | IN A,(C) | Read from port for the key | ||
| E796 | AND L | |||
| E797 | RET NZ | Return if not pressed | ||
| E798 | LD HL,$E634 | |||
| E79B | CALL PlayMelody | Play melody | ||
| E79E | BIT 2,(IX+$26) | |||
| E7A2 | JR NZ,$E7C2 | |||
| E7A4 | LD (IX+$0E),$0C | |||
| E7A8 | LD HL,$9BAC | Sprite diver sitting on the boat | ||
| E7AB | LD (IX+$24),L | set sprite address | ||
| E7AE | LD (IX+$25),H | |||
| E7B1 | SET 0,(IX+$26) | |||
| E7B5 | LD (IX+$04),$FF | set DX value = -1 | ||
| E7B9 | LD (IX+$05),$02 | set DY value = +2 | ||
| E7BD | SET 1,(IX+$26) | |||
| E7C1 | RET | |||
| E7C2 | LD HL,$934C | Sprite diver directing up-right | ||
| E7C5 | LD (IX+$0E),$14 | speed factor = min speed | ||
| E7C9 | LD (IX+$24),L | set sprite address | ||
| E7CC | LD (IX+$25),H | |||
| E7CF | SET 0,(IX+$26) | |||
| E7D3 | LD (IX+$04),$02 | set DX value = +2 | ||
| E7D7 | LD (IX+$05),$02 | set DY value = +2 | ||
| E7DB | SET 1,(IX+$26) | |||
| E7DF | RET | |||
| E7E0 | BIT 2,(IX+$26) | |||
| E7E4 | JR NZ,$E837 | |||
| E7E6 | BIT 1,(IX+$26) | |||
| E7EA | JR Z,$E7F1 | |||
| E7EC | RES 1,(IX+$26) | |||
| E7F0 | RET | |||
| E7F1 | SET 1,(IX+$26) | |||
| E7F5 | LD H,(IX+$25) | |||
| E7F8 | LD L,(IX+$24) | |||
| E7FB | LD BC,$0020 | |||
| E7FE | ADD HL,BC | |||
| E7FF | LD (IX+$24),L | set sprite address | ||
| E802 | LD (IX+$25),H | |||
| E805 | LD DE,$9C4C | address right after last diver sprite | ||
| E808 | OR A | |||
| E809 | SBC HL,DE | |||
| E80B | RET NZ | |||
| E80C | LD (IX+$0E),$14 | |||
| E810 | LD (IX+$04),$00 | clear DX value | ||
| E814 | LD (IX+$05),$00 | clear DY value | ||
| E818 | LD (IX+$06),$04 | |||
| E81C | SET 7,(IX+$10) | |||
| E820 | RES 0,(IX+$10) | clear "moving" bit | ||
| E824 | LD A,(LEVEL) | Game level 1..4 | ||
| E827 | LD C,A | |||
| E828 | LD A,$05 | |||
| E82A | SUB C | |||
| E82B | LD (IX+$1E),A | |||
| E82E | LD (IX+$28),$07 | |||
| E832 | RES 3,(IX+$10) | |||
| E836 | RET | |||
| E837 | BIT 3,(IX+$26) | |||
| E83B | JR NZ,$E88A | |||
| E83D | BIT 1,(IX+$26) | |||
| E841 | JR Z,$E848 | |||
| E843 | RES 1,(IX+$26) | |||
| E847 | RET | |||
| E848 | SET 1,(IX+$26) | |||
| E84C | LD H,(IX+$25) | |||
| E84F | LD L,(IX+$24) | |||
| E852 | LD BC,$0080 | |||
| E855 | ADD HL,BC | |||
| E856 | LD (IX+$24),L | set sprite address | ||
| E859 | LD (IX+$25),H | |||
| E85C | LD DE,$954C | |||
| E85F | OR A | |||
| E860 | SBC HL,DE | |||
| E862 | RET NZ | |||
| E863 | LD (IX+$04),$00 | clear DX value | ||
| E867 | LD (IX+$05),$00 | clear DY value | ||
| E86B | LD (IX+$06),$04 | |||
| E86F | SET 7,(IX+$10) | |||
| E873 | RES 0,(IX+$10) | clear "moving" bit | ||
| E877 | LD A,(LEVEL) | Game level 1..4 | ||
| E87A | LD C,A | |||
| E87B | LD A,$05 | |||
| E87D | SUB C | |||
| E87E | LD (IX+$1E),A | |||
| E881 | LD (IX+$28),$07 | |||
| E885 | RES 3,(IX+$10) | |||
| E889 | RET | |||
| E88A | LD (IX+$1E),$00 | |||
| E88E | LD HL,$E632 | |||
| E891 | INC (HL) | |||
| E892 | DEC HL | |||
| E893 | DEC HL | |||
| E894 | CALL PlayMelody | Play melody | ||
| E897 | LD A,(IX+$1A) | |||
| E89A | CP $06 | |||
| E89C | JR NZ,$E8FA | |||
| E89E | LD A,(IX+$03) | |||
| E8A1 | CP $07 | |||
| E8A3 | JR NZ,$E8FA | |||
|
HELD goes into SCORE, and resets
|
||||
| E8A5 | LD HL,(HELD) | get HELD value | ||
| E8A8 | LD DE,(SCORE) | get Score value | ||
| E8AC | ADD HL,DE | |||
| E8AD | LD (SCORE),HL | set Score value | ||
| E8B0 | LD HL,$0000 | reset HELD value | ||
| E8B3 | LD (HELD),HL | |||
| E8B6 | CALL PrintHeld | Print HELD number | ||
| E8B9 | CALL PrintScore | Print score number | ||
| E8BC | LD HL,$FFFF | |||
| E8BF | CALL UpdateOxygen | Update Oxygen indicator, maximum is $FFFF | ||
| E8C2 | RES 6,(IX+$10) | |||
| E8C6 | RES 3,(IX+$26) | |||
| E8CA | RES 0,(IX+$26) | |||
| E8CE | LD A,($5B00) | |||
| E8D1 | CP $08 | |||
| E8D3 | JR NZ,$E8FA | |||
| E8D5 | LD A,($5B0F) | |||
| E8D8 | CP $03 | |||
| E8DA | JR NZ,$E8FA | |||
| E8DC | LD HL,($5B31) | get value depending of game level | ||
| E8DF | LD DE,(SCORE) | get Score value | ||
| E8E3 | ADD HL,DE | |||
| E8E4 | LD (SCORE),HL | |||
| E8E7 | CALL PrintScore | Print score number | ||
| E8EA | SET 4,(IX+$26) | |||
| E8EE | LD HL,$E638 | |||
| E8F1 | CALL PlayMelody | Play melody | ||
| E8F4 | LD HL,$E638 | |||
| E8F7 | CALL PlayMelody | Play melody | ||
| E8FA | LD (IX+$04),$00 | |||
| E8FE | LD (IX+$0F),$03 | |||
| E902 | LD (IX+$20),$03 | |||
| E906 | LD A,($C4F2) | |||
| E909 | CP (IX+$27) | |||
| E90C | RET Z | |||
| E90D | LD (IX+$27),A | |||
| E910 | LD (IX+$04),$FE | |||
| E914 | RET | |||
|
Used by the routine at E476.
|
||||
|
Reached when the diver touches something at the surface. It checks whether that something is actually the boat (right column, within its rows); if not, the diver drowns. If it is the boat, it switches the diver into the climbing-aboard state, sets the climb sprite and upward movement, and lines the diver up with the boat's column.
|
||||
| E915 | LD DE,($C4F0) | get boat position | ||
| E919 | BIT 5,(IX+$10) | skip if already drowned/exploding | ||
| E91D | JP NZ,$E418 | |||
| E920 | LD BC,($5B0B) | get screen scroll position | ||
| E924 | LD A,E | compute boat column relative to viewport | ||
| E925 | SUB C | |||
| E926 | ADD A,$07 | |||
| E928 | LD C,A | |||
| E929 | CP L | check diver column matches boat, else drown | ||
| E92A | JP NZ,$E3CD | |||
| E92D | LD A,D | check diver row within boat height | ||
| E92E | SUB B | |||
| E92F | INC A | |||
| E930 | CP H | |||
| E931 | JR Z,$E93C | |||
| E933 | INC A | |||
| E934 | CP H | |||
| E935 | JR Z,$E93C | |||
| E937 | INC A | |||
| E938 | CP H | |||
| E939 | JP NZ,$E3CD | not near boat, drown | ||
| E93C | SET 1,(IX+$0D) | mark off-grid, clear moving flag | ||
| E940 | RES 0,(IX+$0D) | |||
| E944 | PUSH IY | |||
| E946 | PUSH BC | |||
| E947 | LD (IX+$04),$00 | clear DX value | ||
| E94B | LD HL,($5B03) | get Screen position on mini-map | ||
| E94E | PUSH HL | |||
| E94F | CALL $DFD5 | Update diver position, angle and sprite from movement state | ||
| E952 | POP HL | |||
| E953 | RES 7,(IX+$10) | enter climbing state flags | ||
| E957 | SET 0,(IX+$26) | |||
| E95B | SET 2,(IX+$26) | |||
| E95F | SET 3,(IX+$26) | |||
| E963 | LD A,($C4F2) | store boat column reference | ||
| E966 | LD (IX+$27),A | |||
| E969 | LD (IX+$04),$00 | clear DX value | ||
| E96D | LD (IX+$05),$FF | set DY = -1 | ||
| E971 | POP BC | |||
| E972 | LD A,($5B03) | get Screen position (column) on mini-map | ||
| E975 | CP L | |||
| E976 | JR Z,$E97C | |||
| E978 | LD A,$08 | |||
| E97A | ADD A,C | |||
| E97B | LD C,A | |||
| E97C | LD (IX+$00),C | set Column value | ||
| E97F | LD A,(IX+$27) | |||
| E982 | ADD A,A | set X value = column*2 | ||
| E983 | LD (IX+$13),A | |||
| E986 | LD (IX+$28),$00 | |||
| E98A | LD HL,$9B8C | Sprite diver climbing on the boat | ||
| E98D | LD (IX+$24),L | set sprite address | ||
| E990 | LD (IX+$25),H | |||
| E993 | SET 0,(IX+$0D) | mark on-grid, clear allocation-failed flag | ||
| E997 | RES 1,(IX+$0D) | |||
| E99B | CALL $DFD5 | Update diver position, angle and sprite from movement state | ||
| E99E | POP IY | |||
| E9A0 | LD (IX+$0F),$03 | reset speed/poll counters | ||
| E9A4 | LD (IX+$20),$03 | |||
| E9A8 | LD HL,$E632 | |||
| E9AB | LD (HL),$00 | |||
| E9AD | JP $E418 | |||
|
Used by the routine at DFD5.
|
||||||||
| E9B0 | SET 5,(IX+$26) | |||||||
| E9B4 | PUSH HL | |||||||
| E9B5 | PUSH DE | |||||||
| E9B6 | LD HL,($DE59) | |||||||
| E9B9 | LD (HL),$0D | |||||||
| E9BB | LD DE,$0040 | |||||||
| E9BE | ADD HL,DE | |||||||
| E9BF | LD ($DE59),HL | |||||||
| E9C2 | LD (HL),$4F | |||||||
| E9C4 | LD HL,LIVES | address of Number of lives | ||||||
| E9C7 | LD A,(HL) | get Number of lives | ||||||
| E9C8 | INC (HL) | one more live | ||||||
| E9C9 | PUSH BC | |||||||
| E9CA | CALL $E682 | Draw Divers on the Boat | ||||||
| E9CD | POP BC | |||||||
| E9CE | POP DE | |||||||
| E9CF | POP HL | |||||||
| E9D0 | RET | |||||||
|
|
||||
| E9D1 | DEFB $00,$00,$00,$00,$00,$00,$00 | |||
| E9D8 | DEFB $00,$00 | |||
|
|
||||
| ScoreTable | E9DA | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | ||
| E9EA | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| E9FA | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA0A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA1A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA2A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA3A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA4A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA5A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00,$0A,$00,$00,$00,$00,$00 | |||
| EA6A | DEFB $44,$55,$52,$45,$4C,$4C,$00,$00,$00,$00 | |||
| EA74 | DEFB $0A,$00,$00,$00,$00,$00 | |||
|
Used by the routine at EE1C.
|
||||
|
Compares the finished game's score against the high-score table. If it beats the lowest entry, it finds the right rank, shifts the lower entries down to make room, and writes a fresh entry there (blank name, plus this game's chests, pearls and score).
|
||||
| EA7A | LD ($E9D8),IX | save caller's IX | ||
| EA7E | DI | |||
| EA7F | LD HL,($E9E4) | get lowest table score; get final Score | ||
| EA82 | LD DE,(SCORE) | |||
| EA86 | LD A,E | compare Score to lowest table entry | ||
| EA87 | SUB L | |||
| EA88 | LD A,D | |||
| EA89 | SBC A,H | |||
| EA8A | JR C,$EADE | Score too low, no new entry | ||
| EA8C | EX DE,HL | |||
| EA8D | LD IX,ScoreTable | Score table address | ||
| EA91 | LD DE,$0010 | table entry size (16 bytes) | ||
| EA94 | LD B,$0A | 10 table entries | ||
| EA96 | LD A,L | compare Score to this entry | ||
| EA97 | SUB (IX+$0A) | |||
| EA9A | LD A,H | |||
| EA9B | SBC A,(IX+$0B) | |||
| EA9E | JR C,$EAA4 | found insertion position | ||
| EAA0 | ADD IX,DE | next entry | ||
| EAA2 | DJNZ $EA96 | |||
| EAA4 | PUSH IX | bytes to shift down | ||
| EAA6 | POP HL | |||
| EAA7 | OR A | |||
| EAA8 | SBC HL,DE | |||
| EAAA | PUSH HL | save shift length | ||
| EAAB | LD DE,ScoreTable | Score table address | ||
| EAAE | LD A,$0A | compute shift byte count | ||
| EAB0 | SUB B | |||
| EAB1 | ADD A,A | |||
| EAB2 | ADD A,A | |||
| EAB3 | ADD A,A | |||
| EAB4 | ADD A,A | |||
| EAB5 | JR Z,$EABF | no entries to shift | ||
| EAB7 | LD C,A | |||
| EAB8 | LD B,$00 | shift lower entries down | ||
| EABA | LD HL,$E9EA | |||
| EABD | LDIR | |||
| EABF | POP HL | restore insert position | ||
| EAC0 | LD B,$06 | |||
| EAC2 | LD (HL),$80 | fill name with blanks | ||
| EAC4 | INC HL | |||
| EAC5 | DJNZ $EAC2 | |||
| EAC7 | LD BC,($5B48) | store chests count | ||
| EACB | LD (HL),C | |||
| EACC | INC HL | |||
| EACD | LD (HL),B | |||
| EACE | INC HL | |||
| EACF | LD BC,($5B46) | store pearls count | ||
| EAD3 | LD (HL),C | |||
| EAD4 | INC HL | |||
| EAD5 | LD (HL),B | |||
| EAD6 | INC HL | |||
| EAD7 | LD BC,(SCORE) | store final score | ||
| EADB | LD (HL),C | |||
| EADC | INC HL | |||
| EADD | LD (HL),B | |||
|
Clears the screen and prints the high-score table, showing each entry's name, chests, pearls and score. If the just-finished game earned a place on the table, it lets the player type their name into that row before returning to the menu.
|
||||
| EADE | LD IX,DiverObj | Diver object record address | ||
| EAE2 | LD (IX+$1F),$07 | |||
| EAE6 | LD IX,($E9D8) | |||
| EAEA | LD A,$0F | |||
| EAEC | LD ($5C8D),A | set ATTR-P - Permanent current colours | ||
| EAEF | LD A,$02 | |||
| EAF1 | CALL $1601 | ROM call CHAN-OPEN | ||
| EAF4 | LD A,$01 | |||
| EAF6 | CALL $229B | ROM call inside BORDER subroutine | ||
| EAF9 | LD A,$02 | |||
| EAFB | CALL $1601 | ROM call CHAN-OPEN | ||
| EAFE | CALL $0D6B | ROM CLS subroutine | ||
| EB01 | LD A,$02 | |||
| EB03 | CALL $1601 | ROM call CHAN-OPEN | ||
| EB06 | LD DE,$EBEE | Table of records text | ||
| EB09 | LD BC,$005D | |||
| EB0C | CALL $203C | ROM call PR-STRING | ||
| EB0F | LD B,$0A | |||
| EB11 | LD C,$05 | |||
| EB13 | LD HL,$EA6A | address of last line of the score table | ||
| EB16 | PUSH BC | |||
| EB17 | BIT 7,(HL) | |||
| EB19 | JR Z,$EB20 | |||
| EB1B | CALL $EB82 | Read player name for high-score entry | ||
| EB1E | JR $EB2B | |||
| EB20 | LD B,$06 | |||
| EB22 | LD A,(HL) | |||
| EB23 | INC HL | |||
| EB24 | PUSH HL | |||
| EB25 | PUSH BC | |||
| EB26 | RST $10 | |||
| EB27 | POP BC | |||
| EB28 | POP HL | |||
| EB29 | DJNZ $EB22 | |||
| EB2B | LD B,$0B | |||
| EB2D | CALL $EBDB | Print 16-bit number at TAB position | ||
| EB30 | LD B,$13 | |||
| EB32 | CALL $EBDB | Print 16-bit number at TAB position | ||
| EB35 | PUSH HL | |||
| EB36 | LD BC,$0003 | |||
| EB39 | LD DE,$EC4B | |||
| EB3C | CALL $203C | ROM call PR-STRING | ||
| EB3F | DI | |||
| EB40 | LD IX,DiverObj | Diver object record address | ||
| EB44 | POP HL | |||
| EB45 | LD E,(HL) | |||
| EB46 | INC HL | |||
| EB47 | LD D,(HL) | |||
| EB48 | INC HL | |||
| EB49 | PUSH HL | |||
| EB4A | PUSH DE | |||
| EB4B | LD L,$19 | |||
| EB4D | LD H,(IX+$1F) | |||
| EB50 | CALL GetScrAddr | Convert char coords HL to ZX screen address | ||
| EB53 | POP DE | |||
| EB54 | EX DE,HL | |||
| EB55 | LD B,$00 | |||
| EB57 | PUSH IY | |||
| EB59 | CALL PrintDec | Print decimal number | ||
| EB5C | POP IY | |||
| EB5E | POP HL | |||
| EB5F | LD DE,$FFE4 | |||
| EB62 | INC (IX+$1F) | |||
| EB65 | LD IX,($E9D8) | |||
| EB69 | EI | |||
| EB6A | ADD HL,DE | |||
| EB6B | POP BC | |||
| EB6C | DJNZ $EB16 | |||
| EB6E | LD DE,$EC2A | |||
| EB71 | LD BC,$001F | |||
| EB74 | CALL $203C | ROM call PR-STRING | ||
| EB77 | LD DE,$EC59 | "ENTER SKILL (1TO4),K,L OR S." | ||
| EB7A | LD BC,$0023 | |||
| EB7D | CALL $203C | ROM call PR-STRING | ||
| EB80 | EI | |||
| EB81 | RET | |||
|
Used by the routine at EADE.
|
||||
| EB82 | LD B,$06 | max 6 chars | ||
| EB84 | PUSH BC | save loop counter, buffer pointer | ||
| EB85 | PUSH HL | |||
| EB86 | LD BC,$0006 | print "SCORE" prompt text | ||
| EB89 | LD DE,$EC53 | |||
| EB8C | CALL $203C | ROM call PR-STRING | ||
| EB8F | EI | |||
| EB90 | LD A,($5C05) | wait for previous key to release | ||
| EB93 | OR A | |||
| EB94 | JR NZ,$EB90 | |||
| EB96 | LD A,($5C05) | wait for next keypress | ||
| EB99 | OR A | |||
| EB9A | JR Z,$EB96 | |||
| EB9C | LD A,($5C08) | get LAST-K - Last key pressed | ||
| EB9F | CP $0C | check for Delete key | ||
| EBA1 | JR Z,$EBB9 | |||
| EBA3 | CP $0D | check for Enter key | ||
| EBA5 | JR Z,$EBD3 | |||
| EBA7 | BIT 7,A | reject extended keys | ||
| EBA9 | JR NZ,$EB90 | |||
| EBAB | CP $20 | reject control chars, keep printable | ||
| EBAD | JR C,$EB90 | |||
| EBAF | PUSH AF | print typed char | ||
| EBB0 | RST $10 | |||
| EBB1 | POP AF | |||
| EBB2 | POP HL | store char in name buffer | ||
| EBB3 | LD (HL),A | |||
| EBB4 | INC HL | |||
| EBB5 | POP BC | |||
| EBB6 | DJNZ $EB84 | |||
| EBB8 | RET | |||
| EBB9 | POP HL | restore state on Delete | ||
| EBBA | POP BC | |||
| EBBB | LD A,B | check nothing to delete | ||
| EBBC | CP $06 | |||
| EBBE | JR Z,$EB84 | |||
| EBC0 | INC B | undo last char, clear cell | ||
| EBC1 | DEC HL | |||
| EBC2 | LD (HL),$80 | |||
| EBC4 | PUSH HL | |||
| EBC5 | PUSH BC | |||
| EBC6 | LD DE,$EC4E | reprint prompt after delete | ||
| EBC9 | LD BC,$0005 | |||
| EBCC | CALL $203C | ROM call PR-STRING | ||
| EBCF | POP BC | |||
| EBD0 | POP HL | |||
| EBD1 | JR $EB84 | |||
| EBD3 | POP HL | Enter pressed, done | ||
| EBD4 | POP BC | |||
| EBD5 | LD (HL),$20 | blank-pad remaining name bytes | ||
| EBD7 | INC HL | |||
| EBD8 | DJNZ $EBD5 | |||
| EBDA | RET | |||
|
Used by the routine at EADE.
|
||||
| EBDB | PUSH HL | |||
| EBDC | PUSH BC | |||
| EBDD | LD A,$17 | send TAB cursor-position control code | ||
| EBDF | RST $10 | |||
| EBE0 | POP AF | |||
| EBE1 | RST $10 | |||
| EBE2 | RST $10 | |||
| EBE3 | POP HL | read 16-bit value, advance pointer | ||
| EBE4 | LD C,(HL) | |||
| EBE5 | INC HL | |||
| EBE6 | LD B,(HL) | |||
| EBE7 | INC HL | |||
| EBE8 | PUSH HL | |||
| EBE9 | CALL $1A1B | ROM OUT-NUM-1 subroutine | ||
| EBEC | POP HL | |||
| EBED | RET | |||
|
|
||||
| EBEE | DEFM $10,$07,$11,$01,$16,$01,$09 | |||
| EBF5 | DEFM "* SCUBA DIVE *" | |||
| EC03 | DEFM $10,$00,$11,$06,$16,$05,$00 | |||
| EC0A | DEFM " NAME CHESTS PEARLS SCORE " | |||
| EC2A | DEFM " " | |||
| EC49 | DEFM " " | |||
| EC4B | DEFM $17,$01,$00 | |||
| EC4E | DEFM " ",$08,$08," ",$08 | |||
| EC53 | DEFM $12,$01," ",$12,$00,$08 | |||
| EC59 | DEFM $16,$15,$01,$11,$01,$10,$06 | |||
| EC60 | DEFM "ENTER SKILL (1TO4),K,L OR S." | |||
|
Used by the routine at EE1C.
|
||||
| RedefineKeys | EC7C | LD A,$02 | ||
| EC7E | CALL $1601 | ROM call CHAN-OPEN | ||
| EC81 | LD A,$04 | |||
| EC83 | CALL $229B | ROM call inside BORDER subroutine | ||
| EC86 | LD A,$02 | |||
| EC88 | CALL $1601 | ROM call CHAN-OPEN | ||
| EC8B | LD A,$20 | |||
| EC8D | LD ($5C8D),A | set ATTR-P - Permanent current colours | ||
| EC90 | CALL $0D6B | ROM CLS subroutine | ||
| EC93 | LD HL,$ED23 | UDG symbols used for Redefine keys | ||
| EC96 | LD ($5C7B),HL | set UDG - Address of first user defined graphic | ||
| EC99 | LD A,$02 | |||
| EC9B | CALL $1601 | ROM call CHAN-OPEN | ||
| RedefineKeys_0 | EC9E | CALL $02BF | ROM call KEYBOARD | |
| ECA1 | LD A,($5C05) | |||
| ECA4 | OR A | |||
| ECA5 | JR NZ,RedefineKeys_0 | |||
| ECA7 | LD DE,$ED43 | text for keys redefining | ||
| ECAA | LD BC,$005F | |||
| ECAD | CALL $203C | ROM call PR-STRING | ||
| ECB0 | CALL $ECEB | Sound | ||
| ECB3 | LD ($5B38),BC | set port for Clockwise key | ||
| ECB7 | LD ($5B3A),A | Save key for Clockwise | ||
| ECBA | LD BC,$0012 | |||
| ECBD | CALL $203C | ROM call PR-STRING | ||
| ECC0 | CALL $ECEB | Sound | ||
| ECC3 | LD ($5B3B),BC | set port for Anticlockwise key | ||
| ECC7 | LD ($5B3D),A | Save key for Anticlockwise | ||
| ECCA | LD BC,$0012 | |||
| ECCD | CALL $203C | ROM call PR-STRING | ||
| ECD0 | CALL $ECEB | Sound | ||
| ECD3 | LD ($5B3E),BC | set port for Accelerate key | ||
| ECD7 | LD ($5B40),A | Save key for Accelerate | ||
| ECDA | LD BC,$000F | |||
| ECDD | CALL $203C | ROM call PR-STRING | ||
| ECE0 | CALL $ECEB | Sound | ||
| ECE3 | LD ($5B41),BC | set port for Decelerate | ||
| ECE7 | LD ($5B43),A | Save key for Decelerate | ||
| ECEA | RET | |||
|
Used by the routine at RedefineKeys.
|
||||
| ECEB | LD C,$FE | start scanning all keyboard half-rows | ||
| ECED | LD B,C | |||
| ECEE | IN A,(C) | check if any key in this row pressed | ||
| ECF0 | AND $1F | |||
| ECF2 | XOR $1F | |||
| ECF4 | JR NZ,$ECFA | |||
| ECF6 | RLC B | next half-row | ||
| ECF8 | JR $ECEE | |||
| ECFA | PUSH AF | save key state while playing click | ||
| ECFB | PUSH BC | |||
| ECFC | PUSH IX | |||
| ECFE | PUSH DE | |||
| ECFF | LD HL,$EDD5 | click melody address | ||
| ED02 | LD E,(HL) | |||
| ED03 | LD A,E | |||
| ED04 | INC A | |||
| ED05 | JR Z,$ED16 | |||
| ED07 | LD D,$00 | |||
| ED09 | INC HL | |||
| ED0A | LD C,(HL) | |||
| ED0B | INC HL | |||
| ED0C | LD B,(HL) | |||
| ED0D | INC HL | |||
| ED0E | PUSH BC | |||
| ED0F | EX (SP),HL | |||
| ED10 | CALL $03B5 | ROM BEEPER subroutine | ||
| ED13 | POP HL | |||
| ED14 | JR $ED02 | |||
| ED16 | POP DE | restore key state | ||
| ED17 | POP IX | |||
| ED19 | POP BC | |||
| ED1A | POP AF | |||
| ED1B | LD L,A | key-row mask to test for release | ||
| ED1C | IN A,(C) | wait until key released | ||
| ED1E | AND L | |||
| ED1F | JR Z,$ED1C | |||
| ED21 | LD A,L | |||
| ED22 | RET | |||
|
|
||||
| ED23 | DEFB $18,$24,$42,$87,$87,$42,$20,$18 | $90 |
||
| ED2B | DEFB $18,$20,$42,$87,$87,$42,$24,$18 | $91 |
||
| ED33 | DEFB $08,$0C,$0E,$FF,$FF,$0E,$0C,$08 | $92 |
||
| ED3B | DEFB $00,$00,$10,$30,$7E,$30,$10,$00 | $93 |
||
|
|
||||
| ED43 | DEFB $10,$00,$11,$06,$16,$03,$05 | |||
| ED4A | DEFM " " | |||
| ED60 | DEFB $16,$04,$05 | |||
| ED63 | DEFM " PRESS ANY KEY FOR :- " | |||
| ED79 | DEFB $16,$05,$05 | |||
| ED7C | DEFM " " | |||
| ED92 | DEFB $16,$08,$0B,$11,$04 | |||
| ED97 | DEFM "Clockwise " | |||
| EDA1 | DEFB $90,$16,$08,$07 | |||
| EDA5 | DEFM "Anticlockwise " | |||
| EDB3 | DEFB $91,$16,$08,$07 | |||
| EDB7 | DEFM " Accelerate " | |||
| EDC4 | DEFB $92,$20,$16,$08,$09 | |||
| EDC9 | DEFM "Decelerate " | |||
| EDD4 | DEFB $93 | |||
|
|
||||
| EDD5 | DEFB $12,$80,$01,$1E,$00,$01,$0C,$40 | |||
| EDDD | DEFB $01,$FF | |||
|
|
||||
| Start | EDDF | LD A,$08 | ||
| EDE1 | LD ($5C6A),A | |||
| EDE4 | LD A,$02 | |||
| EDE6 | CALL $1601 | ROM call CHAN-OPEN | ||
| EDE9 | LD A,$0F | |||
| EDEB | LD ($5C8D),A | set ATTR-P - Permanent current colours | ||
| EDEE | LD HL,($5C78) | |||
| EDF1 | LD (RANDOM),HL | |||
| EDF4 | LD HL,$5B4D | |||
| EDF7 | BIT 0,(HL) | |||
| EDF9 | JP NZ,$EEA7 | |||
| EDFC | SET 0,(HL) | set bit to mark we already started the program | ||
| EDFE | LD DE,$EF70 | |||
| EE01 | LD BC,$000F | |||
| EE04 | CALL $203C | ROM call PR-STRING | ||
| EE07 | LD DE,$EC60 | "ENTER SKILL (1TO4),K,L OR S." | ||
| EE0A | LD BC,$001C | |||
| EE0D | CALL $203C | ROM call PR-STRING | ||
| EE10 | LD B,$0A | |||
| Start_0 | EE12 | PUSH BC | ||
| EE13 | LD HL,$EDD5 | |||
| EE16 | CALL PlayMelody | Play melody | ||
| EE19 | POP BC | |||
| EE1A | DJNZ Start_0 | |||
|
|
||||
| EE1C | LD HL,$0000 | |||
| EE1F | LD ($5C78),HL | |||
| EE22 | CALL $EEAD | Attract-mode demo | ||
| EE25 | LD A,($5C05) | |||
| EE28 | EI | |||
| EE29 | OR A | |||
| EE2A | JR NZ,$EE22 | |||
| EE2C | CALL $EEAD | Attract-mode demo | ||
| EE2F | LD A,($5C05) | |||
| EE32 | EI | |||
| EE33 | OR A | |||
| EE34 | JR Z,$EE2C | |||
| EE36 | LD A,($5C08) | get LAST-K - Last key pressed | ||
| EE39 | CP $4B | 'K' ? | ||
| EE3B | JR NZ,$EE45 | |||
| EE3D | CALL RedefineKeys | Redefine keys | ||
| EE40 | CALL $EADE | Show Game Over screen and high-score table, prompt for name | ||
| EE43 | JR $EE1C | |||
| EE45 | CP $4C | 'L' ? | ||
| EE47 | JR NZ,$EE75 | |||
| EE49 | CALL $0D6B | ROM CLS subroutine | ||
| EE4C | LD A,$02 | |||
| EE4E | CALL $1601 | ROM call CHAN-OPEN | ||
| EE51 | LD DE,$EF93 | "LOAD ? (Y/N)" | ||
| EE54 | LD BC,$0013 | |||
| EE57 | CALL $203C | ROM call PR-STRING | ||
| EE5A | LD A,($5C05) | |||
| EE5D | OR A | |||
| EE5E | JR NZ,$EE5A | |||
| EE60 | LD A,($5C05) | |||
| EE63 | OR A | |||
| EE64 | JR NZ,$EE60 | |||
| EE66 | LD A,($5C08) | get LAST-K - Last key pressed | ||
| EE69 | CP $4E | 'N' ? | ||
| EE6B | JR Z,$EEA7 | |||
| EE6D | CP $59 | 'Y' ? | ||
| EE6F | JR NZ,$EE5A | |||
| EE71 | LD BC,$0000 | |||
| EE74 | RET | Returning to BASIC, loading score table | ||
| EE75 | CP $53 | 'S' ? | ||
| EE77 | JR NZ,$EE7D | |||
| EE79 | LD BC,$0001 | |||
| EE7C | RET | Returning to BASIC, saving score table | ||
| EE7D | SUB $31 | -'1' | ||
| EE7F | JR C,$EE1C | |||
| EE81 | CP $04 | |||
| EE83 | JR NC,$EE1C | |||
| EE85 | INC A | 1..4 | ||
| EE86 | LD (LEVEL),A | Save game level 1..4 | ||
|
Game level selected, starting the game
|
||||
| EE89 | LD HL,$EDD5 | |||
| EE8C | CALL PlayMelody | Play melody | ||
| EE8F | LD HL,$0000 | |||
| EE92 | LD ($5B46),HL | |||
| EE95 | LD ($5B48),HL | |||
| EE98 | LD HL,($EA74) | get High Score value from the score table | ||
| EE9B | LD (HISCORE),HL | set High Score value for indicator | ||
| EE9E | CALL Game | Game | ||
| EEA1 | CALL $EA7A | Insert new high-score table entry if Score qualifies | ||
| EEA4 | JP $EE1C | => Main menu | ||
|
This entry point is used by the routine at Start.
|
||||
| EEA7 | CALL $EADE | Show Game Over screen and high-score table, prompt for name | ||
| EEAA | JP $EE1C | => Main menu | ||
|
Used by the routine at EE1C.
|
||||
|
Called every menu loop iteration; returns immediately unless the idle timer expires. On timeout, builds a skill-4 level and shows it animating (bubbles, fish, Octopus) with a "PRESS ANY KEY" prompt until a key is pressed, then returns to the menu.
|
||||
| EEAD | LD A,($5C79) | |||
| EEB0 | CP $0A | |||
| EEB2 | EI | |||
| EEB3 | RET NZ | |||
| EEB4 | LD A,$04 | |||
| EEB6 | LD (LEVEL),A | Game level 1..4 | ||
| EEB9 | LD A,$0D | |||
| EEBB | CALL ClearScreenFillAttr | Clear screen with attribute A | ||
| EEBE | LD A,$01 | |||
| EEC0 | OUT ($FE),A | |||
| EEC2 | PUSH IX | |||
| EEC4 | PUSH IY | |||
| EEC6 | DI | |||
| EEC7 | CALL PrepareMiniMap | Prepare the mini-map | ||
| EECA | CALL InitLevelVars | Initialize variables depending of Game level | ||
| EECD | CALL InitLevel | Initialize level | ||
| EED0 | LD HL,$0518 | |||
| EED3 | LD ($5B03),HL | set Screen position on mini-map | ||
| EED6 | CALL DrawGameScr | Draw game screen | ||
| EED9 | POP IY | |||
| EEDB | POP IX | |||
| EEDD | LD DE,$EF7F | "PRESS ANY KEY" | ||
| EEE0 | LD BC,$0014 | |||
| EEE3 | CALL $203C | ROM call PR-STRING | ||
| EEE6 | PUSH IX | |||
| EEE8 | PUSH IY | |||
| EEEA | LD BC,$001A | |||
| EEED | LD DE,PrintCharDn | Procedure Print char and shift down | ||
| EEF0 | LD HL,$EF3A | |||
| EEF3 | CALL PrintStringEx | Print string | ||
| EEF6 | INC HL | |||
| EEF7 | LD BC,$001B | |||
| EEFA | CALL PrintString | Print string | ||
| EEFD | INC HL | |||
| EEFE | LD BC,$0D1D | |||
| EF01 | CALL PrintString | Print string | ||
| EF04 | INC HL | |||
| EF05 | LD BC,$0D1E | |||
| EF08 | CALL PrintString | Print string | ||
| EF0B | CALL $BDBA | Draw records for current mini-map row band | ||
| EF0E | POP IY | |||
| EF10 | POP IX | |||
| EF12 | PUSH IX | |||
| EF14 | PUSH IY | |||
| EF16 | CALL $B213 | Animate and draw rising air bubbles, plus Octopus | ||
| EF19 | CALL $BDEA | Update records for current mini-map row band, with delay | ||
| EF1C | POP IY | |||
| EF1E | POP IX | |||
| EF20 | EI | |||
| EF21 | PUSH HL | |||
| EF22 | POP HL | |||
| EF23 | PUSH HL | |||
| EF24 | POP HL | |||
| EF25 | CALL $02BF | ROM call KEYBOARD | ||
| EF28 | LD A,($5C05) | |||
| EF2B | OR A | |||
| EF2C | DI | |||
| EF2D | JR Z,$EF12 | |||
| EF2F | EI | |||
| EF30 | CALL $EADE | Show Game Over screen and high-score table, prompt for name | ||
| EF33 | LD HL,$0000 | |||
| EF36 | LD ($5C78),HL | |||
| EF39 | RET | |||
|
|
||||
| EF3A | DEFB $89,$8A,$00,$8B,$8C,$00,$8D,$8E | |||
| EF42 | DEFB $00,$8F,$90,$00,$91,$92,$FF | |||
| EF49 | DEFB $93,$94,$00,$95,$96,$00,$97,$98 | |||
| EF51 | DEFB $00,$99,$9A,$00,$9B,$9C,$FF | |||
| EF58 | DEFB $9D,$9E,$00,$9F,$A0,$00,$A1,$A2 | |||
| EF60 | DEFB $00,$A3,$A4,$FF,$A5,$A6,$00,$A7 | |||
| EF68 | DEFB $A8,$00,$A9,$AA,$00,$AB,$AC,$FF | |||
| EF70 | DEFB $12,$00,$13,$00,$14,$00,$15,$00 | |||
| EF78 | DEFB $11,$00,$10,$07,$16,$15,$01 | |||
|
|
||||
| EF7F | DEFM $16,$0B,$05,$11,$00,$10,$06 | |||
| EF86 | DEFM "PRESS ANY KEY" | |||
|
|
||||
| EF93 | DEFM $11,$01,$10,$07,$16,$0B,$0A | |||
| EF9A | DEFM "LOAD ? (Y/N)" | |||
|
|
||||
| EFA6 | DEFS $5A | |||
|
|
||||
| F000 | DEFS $1000 | |||