; SkoolKit disassembly for Dun Darach ; ; Copyright (c) 2019 Lunysoft (this disassembly) ; Copyright (c) 1985 Carter Follis Software Associates / Gargoyle Games Ltd. (Dun Darach) @start=$6908 @org ; ATTR b$5800 DEFB $0B,$0B,$0B,$0B,$0B,$0B,$0B,$0B $5808 DEFB $0B,$0B,$0B,$0B,$0B,$0B,$0B,$0B $5810 DEFB $0B,$0B,$0B,$0B,$0B,$0B,$0B,$0B $5818 DEFB $0B,$0B,$2B,$0B,$0B,$0B,$0B,$0B $5820 DEFB $18,$18,$18,$18,$18,$18,$18,$18 $5828 DEFB $18,$18,$18,$18,$18,$1F,$1F,$1F $5830 DEFB $1F,$1F,$1F,$1F,$1F,$18,$18,$18 $5838 DEFB $18,$1F,$1F,$1F,$1F,$1F,$1F,$1F $5840 DEFB $18,$18,$18,$18,$18,$18,$18,$18 $5848 DEFB $18,$18,$18,$18,$1F,$1F,$1F,$1F $5850 DEFB $1F,$1F,$1F,$1F,$18,$18,$60,$18 $5858 DEFB $58,$18,$18,$1F,$1F,$1F,$1F,$1F $5860 DEFB $18,$18,$18,$18,$18,$18,$18,$18 $5868 DEFB $18,$18,$18,$18,$18,$18,$18,$18 $5870 DEFB $18,$18,$18,$18,$18,$78,$78,$18 $5878 DEFB $78,$18,$18,$18,$18,$18,$18,$18 $5880 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $5888 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $5890 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $5898 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58A0 DEFB $10,$10,$10,$10,$10,$10 @label=ATTR_Message $58A6 DEFB $10,$10,$10,$10,$10,$10,$10,$10 ; Message area $58AE DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58B6 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58BE DEFB $10 $58BF DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58C7 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58CF DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58D7 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58DF DEFB $10,$02,$02,$02,$02,$02,$02,$02 $58E7 DEFB $02,$02,$02,$02,$02,$02,$02,$02 $58EF DEFB $02,$02,$10,$10,$10,$10,$10,$10 $58F7 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $58FF DEFB $10,$04,$04,$04,$04,$02,$04,$04 $5907 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $590F DEFB $04,$04,$10,$10,$10,$10,$10,$10 $5917 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $591F DEFB $10,$04,$04,$04,$04,$04,$04,$04 $5927 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $592F DEFB $04,$04,$10,$10,$10,$10,$10,$10 $5937 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $593F DEFB $10,$04,$04,$04,$04,$04,$04,$04 $5947 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $594F DEFB $04,$04,$10,$10,$10,$10,$10,$10 $5957 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $595F DEFB $10,$04,$04,$04,$04,$04,$04,$04 $5967 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $596F DEFB $04,$00,$10,$10,$10,$10,$10,$10 $5977 DEFB $10,$10,$10,$10,$10,$10,$10,$10 $597F DEFB $10,$04,$04,$04,$04,$04,$04,$04 $5987 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $598F DEFB $04,$04,$02,$02,$02,$02,$02,$02 $5997 DEFB $02,$02,$02,$02,$02,$02,$02,$02 $599F DEFB $02,$04,$04,$04,$04,$04,$04,$04 $59A7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59AF DEFB $04,$04,$04,$04,$04,$04,$04,$02 $59B7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59BF DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59C7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59CF DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59D7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59DF DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59E7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59EF DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59F7 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $59FF DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A07 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A0F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A17 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A1F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A27 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A2F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A37 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A3F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A47 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A4F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A57 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A5F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A67 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A6F DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A77 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A7F DEFB $04,$04 @label=ATTR_5a81 $5A81 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A89 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A91 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5A99 DEFB $04,$04,$04,$04,$04,$04,$04,$07 $5AA1 DEFB $07,$07,$07,$04,$04,$04,$04,$04 $5AA9 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5AB1 DEFB $04,$04,$04,$04,$04,$04,$04,$04 $5AB9 DEFB $04,$04,$04,$04,$04,$04,$04,$07 $5AC1 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5AC9 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5AD1 DEFB $07,$07 @label=ATTR_AreaName1 $5AD3 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5ADB DEFB $07,$07,$07,$07,$07 $5AE0 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5AE8 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5AF0 DEFB $07,$07,$07 @label=ATTR_AreaName2 $5AF3 DEFB $07,$07,$07,$07,$07,$07,$07,$07 $5AFB DEFB $07,$07,$07,$07,$07 ; Spare memory for creating temprory data / bitmaps. @label=ScratchPad b$5B00 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B08 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B10 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B18 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B20 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B28 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B30 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B38 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B40 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B48 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B50 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B58 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B60 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B68 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B70 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B78 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B80 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B88 DEFB $00,$00,$00,$00,$00,$00,$00 @label=ScratchPad_DoorBottom $5B8F DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Bottom of door when copied to scatchpad. $5B97 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5B9F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BA7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BAF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BB7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BBF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BC7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BCF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BD7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5BDF DEFB $00 @label=Bitmap_temp $5BE0 DEFB $00,$00,$00,$00,$00,$00 ; Temporary memory for creating an 8x8 bitmap. @label=_5be6_PathEW $5BE6 DEFW $0000 ; Points to the roads on the E/W map @label=_5be8_PathNS $5BE8 DEFW $0000 ; Points to the roads on the N/S map @label=Temp_PathPtr $5BEA DEFW $0000 @label=Temp_DistanceA $5BEC DEFW $0000 @label=Temp_DistanceB $5BEE DEFW $0000 $5BF0 DEFW $0000 $5BF2 DEFW $0000 $5BF4 DEFW $0000 @label=People_TempCoordNS $5BF6 DEFW $0000 ; Temporary N/S coord. @label=People_TempCoordEW $5BF8 DEFW $0000 ; Temporary E/W coord. @label=Temp_DirCompass $5BFA DEFB $00 ; Temporary camera compass for person's direction. $5BFB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C03 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C0B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C13 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C1B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C23 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C2B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C33 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C3B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C43 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C4B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C53 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C5B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C63 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C6B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C73 DEFB $00,$00,$00,$00,$00 @label=GameTime_mins $5C78 DEFB $00 ; $FF minutes in an hour. @label=GameTime_hours $5C79 DEFB $00 ; $40 hours a day. ($20 daytime, $20 nighttime). $5C7A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C82 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C8A DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Temporary store which gets used for copy blocks. @label=TempStore b$5C92 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5C9A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CA2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CAA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CB2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CBA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CC2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5CCA DEFB $00,$00,$0A,$65,$00,$E7,$30,$0E $5CD2 DEFB $00,$00,$00,$00,$00,$3A,$DA,$30 $5CDA DEFB $0E,$00,$00,$00,$00,$00,$3A,$D9 $5CE2 DEFB $30,$0E,$00,$00,$00,$00,$00,$3A $5CEA DEFB $FD,$32,$36,$38,$38,$37,$0E,$00 $5CF2 DEFB $00,$07,$69,$00,$3A,$EF,$22,$22 $5CFA DEFB $AA,$3A,$DA,$33,$0E,$00,$00,$03 $5D02 DEFB $00,$00,$3A,$D9,$33,$0E,$00,$00 $5D0A DEFB $03,$00,$00,$3A,$F5,$AC,$30,$0E $5D12 DEFB $00,$00,$00,$00,$00,$2C,$30,$0E $5D1A DEFB $00,$00,$00,$00,$00,$3B,$3A,$EF $5D22 DEFB $22,$22,$AF,$3A,$F9,$C0,$32,$36 $5D2A DEFB $38,$38,$38,$0E,$00,$00,$08,$69 $5D32 DEFB $00,$0D,$00,$00,$00,$00,$00,$00 $5D3A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D42 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D4A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D52 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D5A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D62 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D6A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D72 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D7A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D82 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D8A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D92 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5D9A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DA2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DAA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DB2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DBA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DC2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DCA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DD2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DDA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DE2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DEA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DF2 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5DFA DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E02 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E0A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E12 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E1A DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E22 DEFB $00 ; Data block at 5E23 @label=Stack b$5E23 DEFB $00 ; Offscreen Attribute table. @label=Offscreen_Attr b$5E24 DEFB $00 @label=Offscreen_Attr2 $5E25 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E2D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E35 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E3D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E45 DEFB $00 @label=Bg_ItemIndex $5E46 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Index to background items relative to whats on the screen. $5E4E DEFB $00,$00,$00,$00,$00,$00,$00,$00 @label=Bg_ItemIndexHero $5E56 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Index to item that is directly behind hero. $5E5E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E66 DEFB $00,$00 ; Offscreen @label=Offscreen_Bitmap b$5E68 DEFB $00 ; First column of offscreen. @label=Offscreen_TopLine $5E69 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E71 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E79 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E81 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E89 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E91 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5E99 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EA1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EA9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EB1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EB9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EC1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EC9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5ED1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5ED9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EE1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EE9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EF1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5EF9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F01 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F09 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F11 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F19 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F21 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F29 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F31 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F39 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F41 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F49 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F51 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F59 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F61 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F69 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F71 DEFB $00,$00,$00,$00,$00,$00,$00,$00 @label=Offscreen_Second $5F79 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F81 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F89 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F91 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5F99 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FA1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FA9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FB1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FB9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FC1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FC9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FD1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FD9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FE1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FE9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FF1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $5FF9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6001 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6009 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6011 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6019 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6021 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6029 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6031 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6039 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6041 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6049 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6051 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6059 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6061 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6069 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6071 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6079 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6081 DEFB $00,$00,$00,$00,$00,$00,$00,$00 @label=Offscreen_Third $6089 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6091 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6099 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60A1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60A9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60B1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60B9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60C1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60C9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60D1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60D9 DEFB $00,$00 ; ??Bytes blitted to ATTR(5B00...)?? @label=_60db $60DB DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $60DF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60E7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60EF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $60F7 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $60FD DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6101 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6109 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6111 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6119 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $611F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6123 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $612B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6133 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $613B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6141 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6145 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $614D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6155 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $615D DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6163 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6167 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $616F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6177 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $617F DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6185 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6189 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6191 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6199 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61A1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $61A7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $61AB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61B3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61BB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61C3 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $61C9 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $61CD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61D5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61DD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61E5 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $61EB DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $61EF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61F7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $61FF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6207 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $620D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6211 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6219 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6221 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6229 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $622F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6233 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $623B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6243 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $624B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6251 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6255 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $625D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6265 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $626D DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6273 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6277 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $627F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6287 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $628F DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6295 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6299 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62A1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62A9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62B1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $62B7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $62BB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62C3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62CB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62D3 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $62D9 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $62DD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62E5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62ED DEFB $00,$00,$00,$00,$00,$00,$00,$00 $62F5 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $62FB DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $62FF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6307 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $630F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6317 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $631D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6321 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6329 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6331 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6339 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $633F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6343 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $634B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6353 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $635B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6361 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6365 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $636D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6375 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $637D DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6383 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6387 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $638F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6397 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $639F DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $63A5 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $63A9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63B1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63B9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63C1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $63C7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $63CB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63D3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63DB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63E3 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $63E9 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $63ED DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63F5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $63FD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6405 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $640B DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $640F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6417 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $641F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6427 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $642D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6431 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6439 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6441 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6449 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $644F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6453 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $645B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6463 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $646B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6471 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6475 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $647D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6485 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $648D DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6493 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6497 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $649F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64A7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64AF DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $64B5 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $64B9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64C1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64C9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64D1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $64D7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $64DB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64E3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64EB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $64F3 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $64F9 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $64FD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6505 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $650D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6515 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $651B DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $651F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6527 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $652F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6537 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $653D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6541 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6549 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6551 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6559 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $655F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6563 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $656B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6573 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $657B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6581 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6585 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $658D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6595 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $659D DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $65A3 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $65A7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65AF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65B7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65BF DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $65C5 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $65C9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65D1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65D9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65E1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $65E7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $65EB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65F3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $65FB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6603 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6609 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $660D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6615 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $661D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6625 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $662B DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $662F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6637 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $663F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6647 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $664D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6651 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6659 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6661 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6669 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $666F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6673 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $667B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6683 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $668B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6691 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6695 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $669D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66A5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66AD DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $66B3 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $66B7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66BF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66C7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66CF DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $66D5 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $66D9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66E1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66E9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $66F1 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $66F7 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $66FB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6703 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $670B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6713 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6719 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $671D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6725 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $672D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6735 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $673B DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $673F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6747 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $674F DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6757 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $675D DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6761 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6769 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6771 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6779 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $677F DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $6783 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $678B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6793 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $679B DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $67A1 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $67A5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67AD DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67B5 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67BD DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $67C3 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $67C7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67CF DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67D7 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67DF DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $67E5 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $67E9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67F1 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $67F9 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6801 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6807 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $680B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6813 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $681B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6823 DEFB $00,$00,$00,$00,$00,$00 ; ??Bytes blitted to ATTR(5B00...)?? $6829 DEFB $00,$00,$00,$00 ; Four bytes to Attr, $1E bytes skipped. $682D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6835 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $683D DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6845 DEFB $00,$00,$00,$00,$00,$00 $684B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6853 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $685B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6863 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $686B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6873 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $687B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6883 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $688B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $6893 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $689B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68A3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68AB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68B3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68BB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68C3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68CB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68D3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68DB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68E3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68EB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68F3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $68FB DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Rooms Room structures. ; ; Details of each room, including outside. @label=Outside_DataCopy b$6903 DEFB $00,$00,$00,$00,$00 ; Blocks of 8 ; Routine at 6908 @label=Start c$6908 JP $7A9E ; This bit of code gets over written and is used as data. ; Data block at 690B @label=Room_outside_pathEW b$690B DEFW $6BAE @label=Room_outside_pathNS $690D DEFW $6CAC $690F DEFB $00,$F9,$89,$28 ; Seller $6913 DEFW $B1BE $6915 DEFW $B1FA $6917 DEFB $01,$04,$8A,$30 ; Broker $691B DEFW $B1BE $691D DEFW $B1FA $691F DEFB $02,$F9,$89,$30 ; Deposit $6923 DEFW $B1BE $6925 DEFW $B21C $6927 DEFB $03,$2E,$8A,$30 ; Castle Inner Room $692B DEFW $B1BE $692D DEFW $B23E $692F DEFB $04,$9A,$8A,$30 ; Gambling Room $6933 DEFW $B1BE $6935 DEFW $B260 $6937 DEFB $05,$F9,$89,$30 ; Temple $693B DEFW $B1BE $693D DEFW $B278 $693F DEFB $06,$F9,$89,$30 ; Gallery $6943 DEFW $B1BE $6945 DEFW $B290 $6947 DEFB $07,$F9,$89,$30 ; Castle / Rats hole / Ladyos etc. $694B DEFW $B1BE $694D DEFW $B2A8 $694F DEFB $08,$F9,$89,$30 ; Bank $6953 DEFW $B1BE $6955 DEFW $B2C0 $6957 DEFB $09,$F9,$89,$30 ; Portal $695B DEFW $B1BE $695D DEFW $B2A8 $695F DEFB $0A,$C4,$8A,$30 ; Strong Room $6963 DEFW $B1BE $6965 DEFW $B21C $6967 DEFB $0B,$F1,$8A,$30 ; Areas Data holding area positions and names. @label=Area_Data b$696B DEFW $0208 ; Bounding box of area [NS1, EW1, NS2, EW2] $696D DEFW $0528 $696F DEFW $0460 $6971 DEFW $0AA0 $6973 DEFB $07,$42,$01,$01 ; ["the", "castle", " ", " "] See #R$69F6 , #R$69D7 and #R$AE8D $6977 DEFW $02F8 $6979 DEFW $0208 $697B DEFW $04C4 $697D DEFW $0370 $697F DEFB $0A,$55,$01,$01 ; "old quarter" $6983 DEFW $0460 $6985 DEFW $04B0 $6987 DEFW $0690 $6989 DEFW $0640 $698B DEFB $70,$01,$45,$2B ; "greymarket mercer heath" $698F DEFW $0460 $6991 DEFW $0640 $6993 DEFW $0690 $6995 DEFW $0820 $6997 DEFB $70,$01,$5A,$10 ; "greymarket thieves hill" $699B DEFW $04C4 $699D DEFW $02A8 $699F DEFW $0690 $69A1 DEFW $04B0 @label=Area_DataArgot $69A3 DEFB $33,$01,$01,$01 ; "argot" $69A7 DEFW $0690 $69A9 DEFW $02A8 $69AB DEFW $07F8 $69AD DEFW $05DC $69AF DEFB $44,$01,$01,$01 ; "Iomain" $69B3 DEFW $067C $69B5 DEFW $05DC $69B7 DEFW $07F8 $69B9 DEFW $0820 $69BB DEFB $32,$03,$01,$01 ; "ratha de" $69BF DEFW $07F8 $69C1 DEFW $0438 $69C3 DEFW $0960 $69C5 DEFW $0820 $69C7 DEFB $07,$21,$01,$01 ; "the soke" $69CB DEFW $0000 $69CD DEFW $0000 $69CF DEFW $FFFF $69D1 DEFW $FFFF $69D3 DEFB $01,$01,$01,$01 ; "" ; Dictionary Table of start addresses for each different word lengths. Groups words into their sizes. @label=Dict_Groups b$69D7 DEFB $01 ; Index off set of word group. $69D8 DEFW $69F6 ; Start address of group. ; Groups words into their sizes. $69DA DEFB $02 ; Index off set of word group. $69DB DEFW $69F7 ; Start address of group. ; Groups words into their sizes. $69DD DEFB $05 ; Index off set of word group. $69DE DEFW $69FB ; Start address of group. ; Groups words into their sizes. $69E0 DEFB $0F ; Index off set of word group. $69E1 DEFW $6A0D ; Start address of group. ; Groups words into their sizes. $69E3 DEFB $28 ; Index off set of word group. $69E4 DEFW $6A71 ; Start address of group. ; Groups words into their sizes. $69E6 DEFB $3C ; Index off set of word group. $69E7 DEFW $6AD5 ; Start address of group. ; Groups words into their sizes. $69E9 DEFB $55 ; Index off set of word group. $69EA DEFW $6B47 ; Start address of group. ; Groups words into their sizes. $69EC DEFB $5F ; Index off set of word group. $69ED DEFW $6B8E ; Start address of group. ; Groups words into their sizes. $69EF DEFB $68 ; Index off set of word group. $69F0 DEFW $BE2C ; Start address of group. ; Groups words into their sizes. $69F2 DEFB $6E ; Index off set of word group. $69F3 DEFW $BD48 ; Start address of group. $69F5 DEFB $FF ; Dictionary Of names and places. @label=Dictionary b$69F6 DEFM " " ; [1] @label=Dictionary_2w $69F7 DEFM "st" $69F9 DEFM "de" @label=Dictionary_3w $69FB DEFM "row" $69FE DEFM "way" $6A01 DEFM "the" $6A04 DEFM "oak" $6A07 DEFM "new" $6A0A DEFM "old" @label=Dictionary_4w $6A0D DEFM "road" $6A11 DEFM "hill" $6A15 DEFM "lane" $6A19 DEFM "gate" $6A1D DEFM "wall" $6A21 DEFM "bank" $6A25 DEFM "hail" $6A29 DEFM "long" $6A2D DEFM "park" $6A31 DEFM "mead" $6A35 DEFM "high" $6A39 DEFM "leaf" $6A3D DEFM "myre" $6A41 DEFM "king" $6A45 DEFM "west" $6A49 DEFM "east" $6A4D DEFM "claw" $6A51 DEFM "mabs" $6A55 DEFM "soke" $6A59 DEFM "dice" $6A5D DEFM "bird" $6A61 DEFM "moss" $6A65 DEFM "danu" $6A69 DEFM "walk" $6A6D DEFM "star" @label=Dictionary_5w $6A71 DEFM "ludum" $6A76 DEFM "guild" $6A7B DEFM "calls" $6A80 DEFM "heath" $6A85 DEFM "herne" $6A8A DEFM "marsh" $6A8F DEFM "south" $6A94 DEFM "north" $6A99 DEFM "cross" $6A9E DEFM "stone" $6AA3 DEFM "ratha" $6AA8 DEFM "argot" $6AAD DEFM "downs" $6AB2 DEFM "baker" $6AB7 DEFM "amber" $6ABC DEFM "midir" $6AC1 DEFM "aurum" $6AC6 DEFM "cloth" $6ACB DEFM "grape" $6AD0 DEFM "spice" @label=Dictionary_6w $6AD5 DEFM "square" $6ADB DEFM "broker" $6AE1 DEFM "draper" $6AE7 DEFM "cinder" $6AED DEFM "market" $6AF3 DEFM "parade" $6AF9 DEFM "castle" $6AFF DEFM "silver" $6B05 DEFM "iomain" $6B0B DEFM "mercer" $6B11 DEFM "salter" $6B17 DEFM "magick" $6B1D DEFM "portal" $6B23 DEFM "ladyqs" $6B29 DEFM "cooper" $6B2F DEFM "grocer" $6B35 DEFM "barber" $6B3B DEFM "farmer" $6B41 DEFM "herald" @label=Dictionary_7w $6B47 DEFM "quarter" $6B4E DEFM "skinner" $6B55 DEFM "belinus" $6B5C DEFM "parthol" $6B63 DEFM "vintner" $6B6A DEFM "thieves" $6B71 DEFM "herbist" $6B78 DEFM "gallery" $6B7F DEFM "assayer" $6B86 DEFM "remnant" @label=Dictionary_^w $6B8D DEFB $5E @label=Dictionary_8w $6B8E DEFM "cobblers" $6B96 DEFM "fletcher" $6B9E DEFM "armourer" $6BA6 DEFM "minstre" ; Data block at 6BAD @label=_6bad b$6BAD DEFB $6C ; Paths Data for paths running east / west. ; ; Data for paths. @label=Path_Data_EW b$6BAE DEFW $02BC ; Coordinate of path on E/W [X] Axis. $6BB0 DEFW $0538 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BB2 DEFW $06D0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BB4 DEFW $6DFE ; Background description for east side. $6BB6 DEFW $7014 ; Background description for west side. $6BB8 DEFB $19,$12 ; String of indicies, representing words used to describe name. ; North Gate. $6BBA DEFW $03AC ; Coordinate of path on E/W [X] Axis. $6BBC DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BBE DEFW $0360 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BC0 DEFW $6E0D ; Background description for east side. $6BC2 DEFW $7028 ; Background description for west side. $6BC4 DEFB $2F,$13 ; String of indicies, representing words used to describe name. ; Park Row. $6BC6 DEFW $03FC ; Coordinate of path on E/W [X] Axis. $6BC8 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BCA DEFW $0360 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BCC DEFW $6E1B ; Background description for east side. $6BCE DEFW $7040 ; Background description for west side. $6BD0 DEFB $17,$05 ; String of indicies, representing words used to describe name. ; Castle Walk $6BD2 DEFW $044C ; Coordinate of path on E/W [X] Axis. $6BD4 DEFW $0538 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BD6 DEFW $06D0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BD8 DEFW $6E32 ; Background description for east side. $6BDA DEFW $7058 ; Background description for west side. $6BDC DEFB $42,$26 ; String of indicies, representing words used to describe name. ; Leaf Lane. $6BDE DEFW $049C ; Coordinate of path on E/W [X] Axis. $6BE0 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BE2 DEFW $0360 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BE4 DEFW $6E3F ; Background description for east side. $6BE6 DEFW $706D ; Background description for west side. $6BE8 DEFB $1A,$11 ; String of indicies, representing words used to describe name. ; The Parade. $6BEA DEFW $049C ; Coordinate of path on E/W [X] Axis. $6BEC DEFW $0538 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BEE DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BF0 DEFW $6E52 ; Background description for east side. $6BF2 DEFW $7080 ; Background description for west side. $6BF4 DEFB $07,$41 ; String of indicies, representing words used to describe name. ; High St. $6BF6 DEFW $04EC ; Coordinate of path on E/W [X] Axis. $6BF8 DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6BFA DEFW $0540 ; Coordinate for right hand end of path on N/S [Y] Axis. $6BFC DEFW $6E73 ; Background description for east side. $6BFE DEFW $70A1 ; Background description for west side. $6C00 DEFB $19,$02 ; String of indicies, representing words used to describe name. ; Long Lane. $6C02 DEFW $053C ; Coordinate of path on E/W [X] Axis. $6C04 DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C06 DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C08 DEFW $6E86 ; Background description for east side. $6C0A DEFW $70BB ; Background description for west side. $6C0C DEFB $16,$11 ; String of indicies, representing words used to describe name. ; Mead Square, north. @label=Path_DataMeadSqu $6C0E DEFW $058C ; Coordinate of path on E/W [X] Axis. $6C10 DEFW $03F8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C12 DEFW $04A0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C14 DEFW $6ECD ; Background description for east side. $6C16 DEFW $70FD ; Background description for west side. $6C18 DEFB $18,$3C ; String of indicies, representing words used to describe name. ; West Way. $6C1A DEFW $05DC ; Coordinate of path on E/W [X] Axis. $6C1C DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C1E DEFW $0400 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C20 DEFW $6EDE ; Background description for east side. $6C22 DEFW $7107 ; Background description for west side. $6C24 DEFB $1D,$06 ; String of indicies, representing words used to describe name. $6C26 DEFW $05DC ; Coordinate of path on E/W [X] Axis. $6C28 DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C2A DEFW $05E0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C2C DEFW $6EF3 ; Background description for east side. $6C2E DEFW $711B ; Background description for west side. $6C30 DEFB $40,$02 ; String of indicies, representing words used to describe name. ; Hill St. $6C32 DEFW $05DC ; Coordinate of path on E/W [X] Axis. $6C34 DEFW $06C8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C36 DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C38 DEFW $6F10 ; Background description for east side. $6C3A DEFW $712E ; Background description for west side. $6C3C DEFB $10,$02 ; String of indicies, representing words used to describe name. ; Mead Square, south. $6C3E DEFW $062C ; Coordinate of path on E/W [X] Axis. $6C40 DEFW $03F8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C42 DEFW $04A0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C44 DEFW $6F1F ; Background description for east side. $6C46 DEFW $7141 ; Background description for west side. $6C48 DEFB $18,$3C ; String of indicies, representing words used to describe name. ; Silver St. $6C4A DEFW $067C ; Coordinate of path on E/W [X] Axis. $6C4C DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C4E DEFW $0450 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C50 DEFW $6F29 ; Background description for east side. $6C52 DEFW $7152 ; Background description for west side. $6C54 DEFB $43,$02 ; String of indicies, representing words used to describe name. ; Heath Rd. $6C56 DEFW $067C ; Coordinate of path on E/W [X] Axis. $6C58 DEFW $06C8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C5A DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C5C DEFW $6F46 ; Background description for east side. $6C5E DEFW $7166 ; Background description for west side. $6C60 DEFB $2B,$0F ; String of indicies, representing words used to describe name. ; Myre St. $6C62 DEFW $06CC ; Coordinate of path on E/W [X] Axis. $6C64 DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C66 DEFW $04F0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C68 DEFW $6F5A ; Background description for east side. $6C6A DEFW $717A ; Background description for west side. $6C6C DEFB $1B,$02 ; String of indicies, representing words used to describe name. ; The Calls. $6C6E DEFW $071C ; Coordinate of path on E/W [X] Axis. $6C70 DEFW $0448 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C72 DEFW $0590 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C74 DEFW $6F79 ; Background description for east side. $6C76 DEFW $7190 ; Background description for west side. $6C78 DEFB $07,$2A ; String of indicies, representing words used to describe name. ; Bird St. $6C7A DEFW $071C ; Coordinate of path on E/W [X] Axis. $6C7C DEFW $0628 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C7E DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C80 DEFW $6F91 ; Background description for east side. $6C82 DEFW $71A7 ; Background description for west side. $6C84 DEFB $23,$02 ; String of indicies, representing words used to describe name. ; Cross St. $6C86 DEFW $07BC ; Coordinate of path on E/W [X] Axis. $6C88 DEFW $0448 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C8A DEFW $0770 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C8C DEFW $6FB1 ; Background description for east side. $6C8E DEFW $71C4 ; Background description for west side. $6C90 DEFB $30,$02 ; String of indicies, representing words used to describe name. ; Stone Rd. $6C92 DEFW $080C ; Coordinate of path on E/W [X] Axis. $6C94 DEFW $04E8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6C96 DEFW $0770 ; Coordinate for right hand end of path on N/S [Y] Axis. $6C98 DEFW $6FDF ; Background description for east side. $6C9A DEFW $71F8 ; Background description for west side. $6C9C DEFB $31,$0F ; String of indicies, representing words used to describe name. ; Claw Lane. $6C9E DEFW $08AC ; Coordinate of path on E/W [X] Axis. $6CA0 DEFW $0588 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CA2 DEFW $0770 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CA4 DEFW $7000 ; Background description for east side. $6CA6 DEFW $7220 ; Background description for west side. $6CA8 DEFB $1F,$11 ; String of indicies, representing words used to describe name. @label=Path_Data_EW_End $6CAA DEFB $FF,$FF ; End of data. ; Paths Data for paths running north / south. ; ; Data for paths. @label=Path_Data_NS b$6CAC DEFW $021C ; Coordinate of path on E/W [X] Axis. $6CAE DEFW $03A8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CB0 DEFW $04A0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CB2 DEFW $7243 ; Background description for north side. $6CB4 DEFW $748D ; Background description for south side. $6CB6 DEFB $1D,$13 ; String of indicies, representing words used to describe name. ; Hern Hill. $6CB8 DEFW $02BC ; Coordinate of path on E/W [X] Axis. $6CBA DEFW $03A8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CBC DEFW $06D0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CBE DEFW $7252 ; Background description for north side. $6CC0 DEFW $749A ; Background description for south side. $6CC2 DEFB $2C,$10 ; String of indicies, representing words used to describe name. ; Moss Lane. $6CC4 DEFW $035C ; Coordinate of path on E/W [X] Axis. $6CC6 DEFW $03A8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CC8 DEFW $0400 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CCA DEFW $7287 ; Background description for north side. $6CCC DEFW $74BC ; Background description for south side. $6CCE DEFB $24,$11 ; String of indicies, representing words used to describe name. ; Amber Way. $6CD0 DEFW $035C ; Coordinate of path on E/W [X] Axis. $6CD2 DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CD4 DEFW $06D0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CD6 DEFW $7298 ; Background description for north side. $6CD8 DEFW $74C3 ; Background description for south side. $6CDA DEFB $36,$06 ; String of indicies, representing words used to describe name. ; Mead Square, west. $6CDC DEFW $03FC ; Coordinate of path on E/W [X] Axis. $6CDE DEFW $0588 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CE0 DEFW $0630 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CE2 DEFW $72BE ; Background description for north side. $6CE4 DEFW $74ED ; Background description for south side. $6CE6 DEFB $18,$3C ; String of indicies, representing words used to describe name. ; Mead Cross. $6CE8 DEFW $044C ; Coordinate of path on E/W [X] Axis. $6CEA DEFW $04E8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CEC DEFW $0590 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CEE DEFW $72C8 ; Background description for north side. $6CF0 DEFW $74FE ; Background description for south side. $6CF2 DEFB $18,$30 ; String of indicies, representing words used to describe name. ; Downs Rd. $6CF4 DEFW $044C ; Coordinate of path on E/W [X] Axis. $6CF6 DEFW $0628 ; Coordinate for left hand end of path on N/S [Y] Axis. $6CF8 DEFW $07C0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6CFA DEFW $72D4 ; Background description for north side. $6CFC DEFW $750A ; Background description for south side. $6CFE DEFB $34,$0F ; String of indicies, representing words used to describe name. ; Mead Square, east. $6D00 DEFW $049C ; Coordinate of path on E/W [X] Axis. $6D02 DEFW $0588 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D04 DEFW $0630 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D06 DEFW $72ED ; Background description for north side. $6D08 DEFW $7523 ; Background description for south side. $6D0A DEFB $18,$3C ; String of indicies, representing words used to describe name. ; Baker St. $6D0C DEFW $04EC ; Coordinate of path on E/W [X] Axis. $6D0E DEFW $04E8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D10 DEFW $05E0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D12 DEFW $72FE ; Background description for north side. $6D14 DEFW $7531 ; Background description for south side. $6D16 DEFB $35,$02 ; String of indicies, representing words used to describe name. ; Dice St. $6D18 DEFW $04EC ; Coordinate of path on E/W [X] Axis. $6D1A DEFW $06C8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D1C DEFW $0810 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D1E DEFW $7310 ; Background description for north side. $6D20 DEFW $753D ; Background description for south side. $6D22 DEFB $22,$02 ; String of indicies, representing words used to describe name. ; West Castle. $6D24 DEFW $053C ; Coordinate of path on E/W [X] Axis. $6D26 DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D28 DEFW $0450 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D2A DEFW $7327 ; Background description for north side. $6D2C DEFW $7559 ; Background description for south side. $6D2E DEFB $1D,$42 ; String of indicies, representing words used to describe name. ; King St. $6D30 DEFW $053C ; Coordinate of path on E/W [X] Axis. $6D32 DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D34 DEFW $05E0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D36 DEFW $7334 ; Background description for north side. $6D38 DEFW $756E ; Background description for south side. $6D3A DEFB $1C,$02 ; String of indicies, representing words used to describe name. ; Old Hill. $6D3C DEFW $058C ; Coordinate of path on E/W [X] Axis. $6D3E DEFW $0718 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D40 DEFW $08B0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D42 DEFW $7348 ; Background description for north side. $6D44 DEFW $7588 ; Background description for south side. $6D46 DEFB $0A,$10 ; String of indicies, representing words used to describe name. ; Oak Rd. $6D48 DEFW $05DC ; Coordinate of path on E/W [X] Axis. $6D4A DEFW $0448 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D4C DEFW $05E0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D4E DEFW $7361 ; Background description for north side. $6D50 DEFW $75A1 ; Background description for south side. $6D52 DEFB $08,$0F ; String of indicies, representing words used to describe name. ; Star St. $6D54 DEFW $062C ; Coordinate of path on E/W [X] Axis. $6D56 DEFW $0718 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D58 DEFW $08B0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D5A DEFW $7380 ; Background description for north side. $6D5C DEFW $75B9 ; Background description for south side. $6D5E DEFB $27,$02 ; String of indicies, representing words used to describe name. ; Marsh Gate. $6D60 DEFW $06CC ; Coordinate of path on E/W [X] Axis. $6D62 DEFW $02B8 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D64 DEFW $0450 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D66 DEFW $7391 ; Background description for north side. $6D68 DEFW $75CE ; Background description for south side. $6D6A DEFB $2D,$12 ; String of indicies, representing words used to describe name. ; New St. $6D6C DEFW $06CC ; Coordinate of path on E/W [X] Axis. $6D6E DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D70 DEFW $05E0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D72 DEFW $73A7 ; Background description for north side. $6D74 DEFW $75DB ; Background description for south side. $6D76 DEFB $09,$02 ; String of indicies, representing words used to describe name. ; Cinder Bank. $6D78 DEFW $06CC ; Coordinate of path on E/W [X] Axis. $6D7A DEFW $0678 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D7C DEFW $08B0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D7E DEFW $73B3 ; Background description for north side. $6D80 DEFW $75F2 ; Background description for south side. $6D82 DEFB $3F,$14 ; String of indicies, representing words used to describe name. ; Marsh St. $6D84 DEFW $076C ; Coordinate of path on E/W [X] Axis. $6D86 DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D88 DEFW $08B0 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D8A DEFW $73D2 ; Background description for north side. $6D8C DEFW $7618 ; Background description for south side. $6D8E DEFB $2D,$02 ; String of indicies, representing words used to describe name. ; East Wall. $6D90 DEFW $080C ; Coordinate of path on E/W [X] Axis. $6D92 DEFW $0498 ; Coordinate for left hand end of path on N/S [Y] Axis. $6D94 DEFW $0720 ; Coordinate for right hand end of path on N/S [Y] Axis. $6D96 DEFW $73FF ; Background description for north side. $6D98 DEFW $7652 ; Background description for south side. $6D9A DEFB $1E,$13 ; String of indicies, representing words used to describe name. $6D9C DEFW $085C ; Coordinate of path on E/W [X] Axis. $6D9E DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DA0 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DA2 DEFW $7415 ; Background description for north side. $6DA4 DEFW $7668 ; Background description for south side. $6DA6 DEFB $05,$E1 ; String of indicies, representing words used to describe name. $6DA8 DEFW $08AC ; Coordinate of path on E/W [X] Axis. $6DAA DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DAC DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DAE DEFW $7424 ; Background description for north side. $6DB0 DEFW $7668 ; Background description for south side. $6DB2 DEFB $05,$E2 ; String of indicies, representing words used to describe name. $6DB4 DEFW $08FC ; Coordinate of path on E/W [X] Axis. $6DB6 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DB8 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DBA DEFW $7433 ; Background description for north side. $6DBC DEFW $7668 ; Background description for south side. $6DBE DEFB $05,$E3 ; String of indicies, representing words used to describe name. $6DC0 DEFW $094C ; Coordinate of path on E/W [X] Axis. $6DC2 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DC4 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DC6 DEFW $7442 ; Background description for north side. $6DC8 DEFW $7668 ; Background description for south side. $6DCA DEFB $05,$E4 ; String of indicies, representing words used to describe name. $6DCC DEFW $099C ; Coordinate of path on E/W [X] Axis. $6DCE DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DD0 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DD2 DEFW $7451 ; Background description for north side. $6DD4 DEFW $7668 ; Background description for south side. $6DD6 DEFB $05,$E5 ; String of indicies, representing words used to describe name. $6DD8 DEFW $09EC ; Coordinate of path on E/W [X] Axis. $6DDA DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DDC DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DDE DEFW $7460 ; Background description for north side. $6DE0 DEFW $7668 ; Background description for south side. $6DE2 DEFB $05,$E6 ; String of indicies, representing words used to describe name. $6DE4 DEFW $0A3C ; Coordinate of path on E/W [X] Axis. $6DE6 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DE8 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DEA DEFW $746F ; Background description for north side. $6DEC DEFW $7668 ; Background description for south side. $6DEE DEFB $05,$E7 ; String of indicies, representing words used to describe name. $6DF0 DEFW $0A8C ; Coordinate of path on E/W [X] Axis. $6DF2 DEFW $0218 ; Coordinate for left hand end of path on N/S [Y] Axis. $6DF4 DEFW $028C ; Coordinate for right hand end of path on N/S [Y] Axis. $6DF6 DEFW $747E ; Background description for north side. $6DF8 DEFW $7668 ; Background description for south side. $6DFA DEFB $05,$E8 ; String of indicies, representing words used to describe name. @label=_Path_Data_NS_End $6DFC DEFB $FF,$FF ; End of data. ; Background Description string. ; ; Strings containing indicies to each item displayed in the background. Codes: $83 ~ $96 $97 ~ $DC $DD ~ $FE - Use ; sub string data. (String index is calculated by NN-$DD) $FF - Draw blank column. @label=Bg_Str6dfe b$6DFE DEFW $8604 ; Axis position on map. Upper bit determines data structure size. $6E00 DEFB $CE ; Half length of background. This creates an offset from the centre of ; the background when fully decoded. $6E01 DEFB $0D ; Number of bytes in string of data. $6E02 DEFB $DD,$E2,$E3,$E2,$E3,$E4,$E2,$E2 ; String of data. $6E0A DEFB $DE $6E0B DEFW $0000 ; Next string (0000 is end of data) @label=Bg_Str6e0d $6E0D DEFB $BC,$82,$A6,$0C,$DD,$E3,$EB,$E4 $6E15 DEFB $EB,$E2,$E3,$DE,$00,$00 @label=Bg_Str6e1b $6E1B DEFB $6C,$82,$4A,$0A,$DD,$B8,$E2,$E3 $6E23 DEFB $B8,$DE,$0C,$03,$4A,$0B,$00,$10 $6E2B DEFB $5F,$DD,$E2,$FB,$DE,$00,$00 @label=Bg_Str6e32 $6E32 DEFB $04,$86,$C2,$0B,$DD,$EB,$E4,$EB $6E3A DEFB $EB,$EB,$DE,$00,$00 @label=Bg_Str6e3f $6E3F DEFB $6C,$02,$4A,$08,$55,$10,$63,$F7 $6E47 DEFB $12,$83,$50,$09,$DD,$E5,$EB,$E3 $6E4F DEFB $DE,$00,$00 @label=Bg_Str6e52 $6E52 DEFB $86,$85,$50,$09,$DD,$E5,$E2,$E3 $6E5A DEFB $DE,$6C,$86,$8A,$09,$DD,$EB,$E2 $6E62 DEFB $E3,$E2,$84,$07,$8E,$0D,$05,$11 $6E6A DEFB $1E,$45,$DF,$EB,$E5,$E2,$DE,$00 $6E72 DEFB $00 @label=Bg_Str6e73 $6E73 DEFB $0C,$83,$4A,$05,$E7,$4C,$84,$EA $6E7B DEFB $0C,$DD,$E2,$E2,$EB,$E4,$EB,$EB $6E83 DEFB $DE,$00,$00 @label=Bg_Str6e86 $6E86 DEFW $030C $6E88 DEFB $4A,$0C,$01,$11,$08,$3D $6E8E DEFB $DD,$E6,$E5,$DE,$D4,$03,$72 $6E95 DEFW $030C $6E97 DEFB $10,$09,$DD,$E5,$E2,$E1,$DE,$9C $6E9F DEFB $84,$4A,$05,$E7 $6EA3 DEFW $8514 $6EA5 DEFB $22 $6EA6 DEFB $05,$FD $6EA8 DEFW $058C $6EAA DEFB $4A,$09,$05,$11,$0A,$61 $6EB0 DEFB $FE,$54,$06,$72,$0D,$07,$11,$0B $6EB8 DEFB $4A,$DD,$E2,$DF,$E5,$DE,$1C,$87 $6EC0 DEFB $4A,$05,$E7,$BC,$07,$4A,$08,$09 $6EC8 DEFB $10,$0C,$F7,$00,$00 @label=Bg_Str6ecd $6ECD DEFB $4C,$84,$56,$0F,$DD,$E3,$E5,$DE $6ED5 DEFB $90,$10,$90,$DD,$E5,$E3,$DE,$00 $6EDD DEFB $00 @label=Bg_Str6ede $6EDE DEFB $0C,$03,$4A,$09,$4F,$11,$2A,$5D $6EE6 DEFB $FE,$AC,$83,$4A,$0A,$DD,$B8,$E3 $6EEE DEFB $B8,$E2,$DE,$00,$00 @label=Bg_Str6ef3 $6EF3 DEFB $C4,$84,$22,$09,$DD,$B8,$E3,$B8 $6EFB DEFB $DE,$14,$85,$22,$09,$DD,$B8,$E3 $6F03 DEFB $B8,$DE,$8C,$05,$4A,$09,$0E,$11 $6F0B DEFB $11,$4B,$FE,$00,$00 @label=Bg_Str6f10 $6F10 DEFB $1C,$87,$4A,$05,$E7,$BC,$07,$4A $6F18 DEFB $08,$26,$10,$56,$F7,$00,$00 @label=Bg_Str6f1f $6F1F DEFB $4C,$04,$4A,$08,$03,$10,$06,$F7 $6F27 DEFB $00,$00 @label=Bg_Str6f29 $6F29 DEFB $0C,$03,$4A,$0D,$51,$12,$2B,$33 $6F31 DEFB $14,$DD,$E5,$E8,$DE,$D4,$03,$72 $6F39 DEFB $0E,$53,$12,$41,$5A,$29,$DD,$E8 $6F41 DEFB $E5,$EB,$DE,$00,$00 @label=Bg_Str6f46 $6F46 DEFB $16,$87,$50,$09,$DD,$E2,$E3,$E5 $6F4E DEFB $DE,$BC,$07,$4A,$09,$3A,$11,$58 $6F56 DEFB $6F,$FE,$00,$00 @label=Bg_Str6f5a $6F5A DEFB $0C,$83,$4A,$05,$E7,$D4,$03,$72 $6F62 DEFB $0C,$00,$10,$3F,$DD,$E2,$FB,$E2 $6F6A DEFB $DE,$A2,$04,$50,$0C,$02,$10,$40 $6F72 DEFB $DD,$E1,$E3,$E5,$DE,$00,$00 @label=Bg_Str6f79 $6F79 DEFB $9C,$04,$4A,$0D,$02,$12,$39,$49 $6F81 DEFB $49,$DD,$EA,$E5,$DE,$42,$85,$50 $6F89 DEFB $09,$DD,$E2,$E5,$E3,$DE,$00,$00 @label=Bg_Str6f91 $6F91 DEFB $76,$06,$50,$0C,$10,$10,$66,$DD $6F99 DEFB $E3,$E1,$E5,$DE,$1C,$07,$4A,$09 $6FA1 DEFB $12,$11,$1F,$5B,$FE,$BC,$07,$4A $6FA9 DEFB $09,$14,$11,$20,$6A,$FE,$00,$00 @label=Bg_Str6fb1 $6FB1 DEFB $9C,$04,$4A,$0D,$35,$12,$29,$44 $6FB9 DEFB $28,$DD,$E5,$EA,$DE,$3C $6FBF DEFB $05,$4A,$08,$37,$10,$32,$F7,$DC $6FC7 DEFB $05,$4A,$09,$39,$11,$33,$6B,$FE $6FCF DEFB $7C,$86,$4A,$05,$E7,$1C,$07,$4A $6FD7 DEFB $09,$3B,$11,$35,$68,$FE,$00,$00 @label=Bg_Str6fbf $6FDF DEFB $3C,$85,$4A,$0A,$DD,$E2,$8D,$E3 $6FE7 DEFB $8D,$DE,$DC,$85,$4A,$05,$E7,$7C $6FEF DEFB $06,$4A,$0B,$4A,$10,$3A,$DD,$E9 $6FF7 DEFB $E5,$DE,$1C,$87,$4A,$05,$E7,$00 $6FFF DEFB $00 @label=Bg_Str7000 $7000 DEFB $DC,$85,$4A,$05,$E7,$7C,$06,$4A $7008 DEFB $08,$52,$10,$52,$F7,$1C,$87,$4A $7010 DEFB $05,$E7,$00,$00 @label=Bg_Str7014 $7014 DEFB $04,$06,$C2,$12,$00,$10,$01,$DD $701C DEFB $EB,$EB,$9A,$93,$C6,$10,$9A,$EB $7024 DEFB $EB,$DE,$00,$00 @label=Bg_Str7028 $7028 DEFB $6C,$02,$4A,$0D,$01,$12,$61,$72 $7030 DEFB $72,$DD,$E8,$E5,$DE,$0C,$03,$4A $7038 DEFB $09,$03,$11,$62,$5C,$FE,$00,$00 @label=Bg_str7040 $7040 DEFB $6C,$02,$4A,$0D,$1D,$10,$60,$DD $7048 DEFB $B8,$E3,$B8,$E1,$DE,$12,$83,$50 $7050 DEFB $09,$DD,$E5,$EB,$E3,$DE,$00,$00 @label=Bg_Str7058 $7058 DEFB $86,$85,$50,$09,$DD,$E5,$E3,$E2 $7060 DEFB $DE,$5A,$86,$78,$0A,$DD,$E2,$E3 $7068 DEFB $E2,$E5,$DE,$00,$00 @label=Bg_Str706d $706D DEFB $66,$82,$50,$09,$DD,$E5,$E2,$E3 $7075 DEFB $DE,$0C,$03,$4A,$08,$56,$10,$64 $707D DEFB $F7,$00,$00 @label=Bg_Str7080 $7080 DEFB $8C,$05,$4A,$08,$02,$10,$1C,$F7 $7088 DEFB $54,$06,$72,$0D,$04,$11,$1D,$4D $7090 DEFB $DD,$DF,$E5,$E2,$DE,$1C,$87,$4A $7098 DEFB $05,$E7,$BC,$87,$4A,$05,$E7,$00 $70A0 DEFB $00 @label=Bg_Str70a1 $70A1 DEFB $0C,$83,$4A,$05,$E7,$D4,$83,$72 $70A9 DEFB $09,$DD,$E2,$E4,$EB,$DE,$9C,$84 $70B1 DEFB $4A,$05,$E7,$14,$85,$22,$05,$FD $70B9 DEFB $00,$00 @label=Bg_Str70bb $70BB DEFB $0C,$83,$4A,$05,$E7,$D4,$83,$72 $70C3 DEFB $09,$DD,$E2,$E2,$E5,$DE,$9C,$04 $70CB DEFB $4A,$09,$04,$11,$0D,$5F,$FE,$14 $70D3 DEFB $85,$22,$05,$FD,$8C,$05,$4A,$09 $70DB DEFB $06,$11,$0E,$3E,$FE,$54,$06,$72 $70E3 DEFB $0D,$08,$11,$0F,$3D,$DD,$E5,$E6 $70EB DEFB $E2,$DE,$1C,$87,$4A,$05,$E7,$BC $70F3 DEFB $07,$4A,$09,$0A,$11,$10,$56,$FE $70FB DEFB $00,$00 @label=Bg_Str70fd $70FD DEFB $4C,$04,$4A,$08,$01,$10,$04,$F7 $7105 DEFB $00,$00 @label=Bg_Str7107 $7107 DEFB $0C,$03,$4A,$0D,$50,$12,$2B,$33 $710F DEFB $14,$DD,$E5,$E8,$DE,$AC,$83,$4A $7117 DEFB $05,$E7,$00,$00 ; Market St (example) @label=Bg_Str711b $711B DEFW $0542 $711D DEFW $11A0 $711F DEFW $110C $7121 DEFW $6F12 $7123 DEFB $DD,$E2,$B8,$E3,$DF,$B8,$EB,$E3 $712B DEFB $DE,$00,$00 @label=Bg_Str712e $712E DEFB $16,$87,$50,$09,$DD,$E3,$E2,$E5 $7136 DEFB $DE,$BC,$07,$4A,$08,$25,$10,$57 $713E DEFB $F7,$00,$00 @label=Bg_Str7141 $7141 DEFB $4C,$84,$56,$0F,$DD,$E3,$E5,$DE $7149 DEFB $90,$10,$90,$DD,$E5,$E3,$DE,$00 $7151 DEFB $00 @label=Bg_Str7152 $7152 DEFB $0C,$83,$4A,$05,$E7,$D4,$03,$72 $715A DEFB $0D,$52,$11,$42,$5D,$DD,$DF,$EB $7162 DEFB $E5,$DE,$00,$00 @label=Bg_Str7166 $7166 DEFB $1C,$07,$4A,$08,$39,$10,$59,$F7 $716E DEFB $BC,$87,$4A,$0A,$DD,$8D,$E2,$8D $7176 DEFB $E3,$DE,$00,$00 @label=Bg_Str717a $717A DEFB $7E,$83,$C8,$0C,$DD,$EB,$E3,$E2 $7182 DEFB $EB,$E5,$E2,$DE,$9C,$84,$4A,$08 $718A DEFB $DD,$EB,$E5,$DE,$00,$00 @label=Bg_Str7190 $7190 DEFB $9C,$04,$4A,$0D,$01,$12,$29,$44 $7198 DEFB $28,$DD,$EA,$E5,$DE,$3C,$05,$4A $71A0 DEFB $08,$03,$10,$38,$F7,$00,$00 @label=Bg_Str71a7 $71A7 DEFB $7C,$86,$4A,$05,$E7,$1C,$07,$4A $71AF DEFB $0D,$13,$12,$67,$15,$25,$DD,$E5 $71B7 DEFB $E8,$DE,$C2,$87,$50,$09,$DD,$E3 $71BF DEFB $E2,$E5,$DE,$00,$00 @label=Bg_Str71c4 $71C4 DEFB $96,$04,$50,$0D,$34,$11,$21,$3D $71CC DEFB $DD,$E3,$E5,$E6,$DE,$3C,$05,$4A $71D4 DEFB $0B,$00,$10,$37,$DD,$E2,$FB,$DE $71DC DEFB $DC,$85,$4A,$05,$E7,$7C,$06,$4A $71E4 DEFB $0D,$3A,$12,$34,$15,$57,$DD,$E8 $71EC DEFB $E5,$DE,$1C,$07,$4A,$08,$3C,$10 $71F4 DEFB $36,$F7,$00,$00 @label=Bg_Str71f8 $71F8 DEFB $36,$05,$50,$0D,$47,$11,$3B,$5C $7200 DEFB $DD,$E3,$DF,$E5,$DE,$DC,$05,$4A $7208 DEFB $09,$49,$11,$3C,$47,$FE,$7C,$86 $7210 DEFB $4A,$05,$E7,$1C,$07,$4A,$0B,$4B $7218 DEFB $10,$3D,$DD,$E5,$E9,$DE,$00,$00 @label=Bg_Str7220 $7220 DEFB $DC,$05,$56,$12,$00,$10,$54,$E3 $7228 DEFB $E3,$E2,$9A,$93,$C6,$10,$9A,$E3 $7230 DEFB $E3,$DE,$D2,$06,$A0,$0F,$00,$10 $7238 DEFB $53,$DD,$E3,$E2,$FB,$E2,$E3,$E2 $7240 DEFB $E3,$00,$00 @label=Bg_Str7243 $7243 DEFB $D4,$83,$22,$05,$FD,$4C,$04,$4A $724B DEFB $08,$3B,$10,$65,$F7,$00,$00 @label=Bg_Str7252 $7252 DEFB $D4,$83,$22,$05,$FD,$4C,$04,$4A $725A DEFB $09,$02,$11,$2F,$48,$FE,$C4,$84 $7262 DEFB $22,$05,$FD,$14,$85,$22,$05,$FD $726A DEFB $8C,$05,$4A,$09,$04,$11,$1B,$5C $7272 DEFB $FE,$2C,$06,$4A,$0D,$06,$12,$2B $727A DEFB $33,$14,$DD,$E8,$E5,$DE,$A4,$86 $7282 DEFB $22,$05,$FD,$00,$00 @label=Bg_Str7287 $7287 DEFB $D4,$03,$2E,$0F,$00,$10,$03,$DD $728F DEFB $C6,$95,$10,$99,$E3,$E3,$DE,$00 $7297 DEFB $00 @label=Bg_Str7298 $7298 DEFB $BE,$84,$28,$08,$DD,$E3,$E5,$DE $72A0 DEFB $14,$85,$22,$05,$FD,$8C,$05,$4A $72A8 DEFB $09,$41,$11,$2D,$4E,$FE,$2C,$06 $72B0 DEFB $4A,$09,$43,$11,$2E,$48,$FE,$A4 $72B8 DEFB $86,$22,$05,$FD,$00,$00 @label=Bg_Str72be $72BE DEFB $DC,$05,$4A,$08,$04,$10,$07,$F7 $72C6 DEFB $00,$00 @label=Bg_Str72c8 $72C8 DEFB $14,$85,$22,$05,$FD,$64,$85,$22 $72D0 DEFB $05,$FD,$00,$00 @label=Bg_Str72d4 $72D4 DEFB $7C,$86,$4A,$05,$E7,$F4,$86,$22 $72DC DEFB $05,$FD,$6C,$07,$4A,$0D,$29,$12 $72E4 DEFB $29,$44,$28,$DD,$E5,$EA,$DE,$00 $72EC DEFB $00 @label=Bg_Str72ed $72ED DEFB $DC,$85,$56,$0F,$DD,$E3,$E5,$DE $72F5 DEFB $90,$10,$90,$DD,$E5,$E3,$DE,$00 $72FD DEFB $00 @label=Bg_Str72fe $72FE DEFB $14,$85,$22,$05,$FD,$8C,$85,$4A $7306 DEFB $0B,$DD,$E2,$8C,$10,$8C,$E3,$DE $730E DEFB $00,$00 @label=Bg_Str7310 $7310 DEFB $EE,$86,$28,$08,$DD,$E3,$E5,$DE $7318 DEFB $6C,$07,$4A,$08,$0E,$10,$3E,$F7 $7320 DEFB $E4,$87,$22,$05,$FD,$00,$00 @label=Bg_Str7327 $7327 DEFB $84,$83,$C2,$0B,$DD,$EB,$EB,$E4 $732F DEFB $EB,$EB,$DE,$00,$00 @label=Bg_Str7334 $7334 DEFB $EC,$04,$4A,$09,$04,$11,$14,$60 $733C DEFB $FE,$8C,$05,$4A,$09,$02,$11,$16 $7344 DEFB $69,$FE,$00,$00 @label=Bg_Str7348 $7348 DEFB $66,$87,$50,$09,$DD,$E3,$E5,$E2 $7350 DEFB $DE,$E4,$87,$22,$05,$FD,$5C,$08 $7358 DEFB $4A,$09,$0F,$11,$31,$48,$FE,$00 $7360 DEFB $00 @label=Bg_Str7361 $7361 DEFB $74,$84,$22,$05,$FD,$EC,$04,$4A $7369 DEFB $09,$1B,$11,$18,$6A,$FE,$92,$05 $7371 DEFB $50,$0F,$1D,$11,$1A,$46,$DD,$B8 $7379 DEFB $DF,$E3,$B8,$E3,$DE,$00,$00 @label=Bg_Str7380 $7380 DEFB $6C,$87,$4A,$05,$E7,$E4,$87,$22 $7388 DEFB $05,$FD,$5C,$88,$4A,$05,$E7,$00 $7390 DEFB $00 @label=Bg_Str7391 $7391 DEFB $84,$03,$CE,$14,$00,$10,$02,$DD $7399 DEFB $E2,$E3,$E2,$E3,$9A,$93,$C6,$10 $73A1 DEFB $9A,$E2,$E2,$DE,$00,$00 @label=Bg_Str73a7 $73A7 DEFB $EC,$84,$4A,$05,$E7,$8C,$85,$4A $73AF DEFB $05,$E7,$00,$00 @label=Bg_Str73b3 $73B3 DEFB $CC,$06,$4A,$08,$15,$10,$5A,$F7 $73BB DEFB $6C,$07,$4A,$08,$17,$10,$5B,$F7 $73C3 DEFB $E4,$87,$22,$05,$FD,$5C,$08,$4A $73CB DEFB $08,$19,$10,$5C,$F7,$00,$00 @label=Bg_Str73d2 $73D2 DEFB $EC,$84,$4A,$05,$E7,$8C,$05,$4A $73DA DEFB $09,$1E,$11,$30,$48,$FE,$2C,$06 $73E2 DEFB $4A,$08,$20,$10,$22,$F7,$CC,$06 $73EA DEFB $4A,$09,$22,$11,$24,$5C,$FE,$EA $73F2 DEFB $87,$C8,$0C,$DD,$E2,$E4,$E2,$EB $73FA DEFB $E3,$E2,$DE,$00,$00 @label=Bg_Str73ff $73FF DEFB $2A,$85,$94,$0A,$DD,$E2,$E2,$E3 $7407 DEFB $EB,$E4,$70,$86,$B2,$0A,$EB,$EB $740F DEFB $E3,$E2,$E2,$DE,$00,$00 @label=Bg_Str7415 $7415 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $741D DEFB $44,$6A,$6A,$6A,$F4,$00,$00 @label=Bg_Str7424 $7424 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $742C DEFB $45,$6A,$6A,$6A,$F4,$00,$00 @label=Bg_Str7433 $7433 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $743B DEFB $6A,$6A,$46,$6A,$F4,$00,$00 @label=Bg_Str7442 $7442 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $744A DEFB $6A,$6A,$47,$6A,$F4,$00,$00 @label=Bg_Str7451 $7451 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $7459 DEFB $6A,$48,$6A,$6A,$F4,$00,$00 @label=Bg_Str7460 $7460 DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $7468 DEFB $6A,$49,$6A,$6A,$F4,$00,$00 @label=Bg_Str746f $746F DEFB $52,$02,$3C,$0D,$00,$60,$6A,$6A $7477 DEFB $4A,$6A,$6A,$6A,$F4,$00,$00 @label=Bg_Str747e $747E DEFB $52,$02,$3C,$0D,$00,$60,$6A,$4B $7486 DEFB $6A,$6A,$6A,$6A,$F4,$00,$00 @label=Bg_Str748d $748D DEFB $24,$84,$7E,$0B,$DD,$E3,$EB,$E4 $7495 DEFB $EB,$E3,$DE,$00,$00 @label=Bg_Str749a $749A DEFB $D4,$83,$22,$05,$FD,$4C,$04,$4A $74A2 DEFB $09,$01,$11,$13,$5C,$FE,$36,$85 $74AA DEFB $94,$0A,$E2,$E2,$E3,$EB,$E4,$DE $74B2 DEFB $4E,$86,$84,$08,$DD,$EB,$E2,$E2 $74BA DEFB $00,$00 @label=Bg_Str74bc $74BC DEFB $D4,$83,$22,$05,$FD,$00,$00 @label=Bg_Str74c3 $74C3 DEFB $C4,$84,$22,$05,$FD,$14,$85,$22 $74CB DEFB $09,$DD,$8B,$01,$E3,$DE,$8C,$05 $74D3 DEFB $4A,$08,$40,$10,$2C,$F7,$2C,$06 $74DB DEFB $4A,$0D,$42,$12,$2B,$33,$14,$DD $74E3 DEFB $E5,$E8,$DE,$A4,$86,$22,$05,$FD $74EB DEFB $00,$00 @label=Bg_Str74ed $74ED DEFB $DC,$85,$56,$0F,$DD,$E3,$E5,$DE $74F5 DEFB $90,$10,$90,$DD,$E5,$E3,$DE,$00 $74FD DEFB $00 @label=Bg_Str74fe $74FE DEFB $14,$85,$22,$05,$FD,$64,$85,$22 $7506 DEFB $05,$FD,$00,$00 @label=Bg_Str750a $750A DEFB $54,$86,$22,$05,$FD,$A4,$86,$22 $7512 DEFB $05,$FD,$F4,$86,$22,$05,$FD,$6C $751A DEFB $07,$4A,$08,$2A,$10,$28,$F7,$00 $7522 DEFB $00 @label=Bg_Str7523 $7523 DEFB $DC,$05,$4A,$0C,$02,$11,$05,$3D $752B DEFB $DD,$E6,$E5,$DE,$00,$00 @label=Bg_Str7531 $7531 DEFB $14,$85,$22,$05,$FD,$8C,$85,$4A $7539 DEFB $05,$E7,$00,$00 @label=Bg_Str753d $753D DEFB $F4,$86,$22,$05,$FD,$6C,$07,$4A $7545 DEFB $0D,$0F,$12,$29,$44,$28,$DD,$E5 $754D DEFB $EA,$DE,$EA,$87,$28,$08,$DD,$E3 $7555 DEFB $E5,$DE,$00,$00 @label=Bg_Str7559 $7559 DEFB $84,$03,$CE,$13,$00,$10,$03,$DD $7561 DEFB $E2,$E3,$E2,$E2,$C6,$95,$10,$9A $7569 DEFB $E3,$E2,$DE,$00,$00 @label=Bg_Str756e $756E DEFB $BE,$84,$28,$0A,$DD,$B8,$89,$B8 $7576 DEFB $E5,$DE,$14,$85,$22,$05,$FD,$8C $757E DEFB $05,$4A,$09,$01,$11,$15,$59,$FE $7586 DEFB $00,$00 @label=Bg_Str7588 $7588 DEFB $6C,$07,$4A,$09,$0A,$11,$55,$62 $7590 DEFB $FE,$E4,$87,$22,$05,$FD,$62,$88 $7598 DEFB $50,$09,$DD,$E3,$E2,$E5,$DE,$00 $75A0 DEFB $00 @label=Bg_Str75a1 $75A1 DEFB $74,$84,$22,$05,$FD,$EC,$04,$4A $75A9 DEFB $09,$1A,$11,$17,$71,$FE,$8C,$05 $75B1 DEFB $4A,$08,$1C,$10,$19,$F7,$00,$00 @label=Bg_Str75b9 $75B9 DEFB $66,$87,$50,$09,$DD,$E2,$E5,$E3 $75C1 DEFB $DE,$E4,$87,$22,$05,$FD,$5C,$88 $75C9 DEFB $4A,$05,$E7,$00,$00 @label=Bg_Str75ce $75CE DEFB $84,$83,$C2,$0B,$DD,$EB,$EB,$E4 $75D6 DEFB $EB,$EB,$DE,$00,$00 @label=Bg_Str75db $75DB DEFB $EC,$04,$4A,$08,$0C,$10,$50,$F7 $75E3 DEFB $92,$05,$50,$0D,$0E,$11,$51,$4C $75EB DEFB $DD,$E5,$DF,$E3,$DE,$00,$00 @label=Bg_Str75f2 $75F2 DEFB $C6,$86,$50,$09,$DD,$E5,$E2,$E3 $75FA DEFB $DE,$6C,$07,$4A,$0D,$16,$12,$5D $7602 DEFB $15,$58,$DD,$E8,$E5,$DE,$E4,$87 $760A DEFB $22,$05,$FD,$5C,$08,$4A,$09,$18 $7612 DEFB $11,$5E,$47,$FE,$00,$00 @label=Bg_Str7618 $7618 DEFB $EC,$84,$4A,$05,$E7,$8C,$85,$4A $7620 DEFB $05,$E7,$2C,$06,$4A,$0C,$1F,$11 $7628 DEFB $23,$3D,$DD,$E6,$E5,$DE,$CC,$06 $7630 DEFB $4A,$08,$21,$10,$25,$F7,$6C,$07 $7638 DEFB $4A,$0D,$23,$12,$26,$15,$37,$DD $7640 DEFB $E5,$E8,$DE,$E4,$87,$22,$05,$FD $7648 DEFB $5C,$08,$4A,$08,$25,$10,$27,$F7 $7650 DEFB $00,$00 @label=Bg_Str7652 $7652 DEFB $EC,$84,$4A,$05,$E7,$8C,$85,$4A $765A DEFB $05,$E7,$2C,$86,$4A,$05,$E7,$CC $7662 DEFB $86,$4A,$05,$E7,$00,$00 @label=Bg_Str7668 $7668 DEFB $52,$02,$3C,$08,$00,$10,$4C,$FC $7670 DEFB $00,$00 ; Objects Array of bitmap indices for the objects. ; ; Add 1 to index for value used in inventory. @label=Obj_IndexArray b$7672 DEFB $52 ; [00] Tokens $7673 DEFB $55 ; [01] Moleskin $7674 DEFB $5C ; [02] Gold $7675 DEFB $53 ; [03] Barrel $7676 DEFB $5D ; [04] Last $7677 DEFB $50 ; [05] Wine $7678 DEFB $5B ; [06] Needle $7679 DEFB $5A ; [07] Sting $767A DEFB $54 ; [08] Broadaxe $767B DEFB $56 ; [09] Swatch $767C DEFB $5E ; [0A] Pepper $767D DEFB $50 ; [0B] Hemlock $767E DEFB $5C ; [0C] * unused * $767F DEFB $5F ; [0D] Arrow $7680 DEFB $60 ; [0E] Book 'verit ghoom' $7681 DEFB $61 ; [0F] Foil $7682 DEFB $62 ; [10] Adze $7683 DEFB $63 ; [11] Drysalt $7684 DEFB $64 ; [12] Razor $7685 DEFB $59 ; [13] License $7686 DEFB $66 ; [14] Hammer $7687 DEFB $67 ; [15] * unused * $7688 DEFB $68 ; [16] Hoe $7689 DEFB $69 ; [17] Telestone 'i offer a view' $768A DEFB $6A ; [18] Relic $768B DEFB $6B ; [19] Pile $768C DEFB $6C ; [1A] Rye $768D DEFB $58 ; [1B] * unused * $768E DEFB $6D ; [1C] Lyre $768F DEFB $51 ; [1D] Necklace $7690 DEFB $51 ; [1E] Bracelet $7691 DEFB $51 ; [1F] Brooch $7692 DEFB $51 ; [20] Earings $7693 DEFB $6E ; [21] Shield 'midir' $7694 DEFB $6E ; [22] Shield 'belinus' $7695 DEFB $6E ; [23] Shield 'danu' $7696 DEFB $6E ; [24] Shield 'parthol' $7697 DEFB $58 ; [25] M-key $7698 DEFB $58 ; [26] D-key $7699 DEFB $38 ; [27] Statue $769A DEFB $59 ; [28] Map 'gold in ashes' $769B DEFB $59 ; [29] Map 'galacia is far' $769C DEFB $50 ; [2A] Philtre $769D DEFB $60 ; [2B] book 'look for my rest' $769E DEFB $59 ; [2C] scrip 'skars a pearl!' $769F DEFB $59 ; [2D] scrip 'gods see all' $76A0 DEFB $59 ; [2E] scrip 'rat are vain' $76A1 DEFB $59 ; [2F] scrip 'art in order' $76A2 DEFB $57 ; [30] Spell 'show the lady!' $76A3 DEFB $69 ; [31] Pearl $76A4 DEFB $59 ; [32] Scroll '2**25' $76A5 DEFB $59 ; [33] Scrip 'eve' $76A6 DEFB $59 ; [34] Scrip 'did' $76A7 DEFB $59 ; [35] Scrip 'pop' $76A8 DEFB $5C ; [36] Platina $76A9 DEFB $5C ; [37] Lead $76AA DEFB $59 ; [38] Scrip '3 ks 4 keys, with love' $76AB DEFB $59 ; [39] Scrip 'call me to enter' $76AC DEFB $58 ; [3A] L-key $76AD DEFB $5C ; [3B] pyrite ; Objects List of strings representing object nouns. @label=Object_nouns b$76AE DEFB $5E $76AF DEFM "token" ; [$00] $76B4 DEFB $5E $76B5 DEFM "moleskin" $76BD DEFB $5E $76BE DEFM "goldbar" $76C5 DEFB $5E $76C6 DEFM "barrel" $76CC DEFB $5E $76CD DEFM "last" $76D1 DEFB $5E $76D2 DEFM "wine" $76D6 DEFB $5E $76D7 DEFM "needle" $76DD DEFB $5E $76DE DEFM "sting" $76E3 DEFB $5E $76E4 DEFM "broadaxe" ; [$08] $76EC DEFB $5E $76ED DEFM "swatch" $76F3 DEFB $5E $76F4 DEFM "pepper" $76FA DEFB $5E $76FB DEFM "hemlock" $7702 DEFB $5E $7703 DEFB $5E $7704 DEFM "arrow" $7709 DEFB $5E $770A DEFM "book+verit ghoom" $771A DEFB $5E $771B DEFM "foil" $771F DEFB $5E $7720 DEFM "adze" ; [$10] $7724 DEFB $5E $7725 DEFM "drysalt" $772C DEFB $5E $772D DEFM "razor" $7732 DEFB $5E $7733 DEFM "licence" ; [$14] $773A DEFB $5E $773B DEFM "hammer" $7741 DEFB $5E $7742 DEFB $5E $7743 DEFM "hoe" $7746 DEFB $5E $7747 DEFM "telestone+i offer a view" ; [$18] $775F DEFB $5E $7760 DEFM "relic" $7765 DEFB $5E $7766 DEFM "pile" $776A DEFB $5E $776B DEFM "rue" $776E DEFB $5E $776F DEFB $5E $7770 DEFM "lyre" $7774 DEFB $5E $7775 DEFM "necklace" $777D DEFB $5E $777E DEFM "bracelet" $7786 DEFB $5E $7787 DEFM "brooch" ; [$20] $778D DEFB $5E $778E DEFM "earing" $7794 DEFB $5E $7795 DEFM "shield+midir" $77A1 DEFB $5E $77A2 DEFM "shield+belinus" $77B0 DEFB $5E $77B1 DEFM "shield+danu" $77BC DEFB $5E $77BD DEFM "shield+parthol" $77CB DEFB $5E $77CC DEFM "m-key" $77D1 DEFB $5E $77D2 DEFM "d-key" $77D7 DEFB $5E $77D8 DEFM "statue" $77DE DEFB $5E $77DF DEFM "map+gold in ashes!" $77F1 DEFB $5E $77F2 DEFM "map+galicia is far" $7804 DEFB $5E $7805 DEFM "philtre" $780C DEFB $5E $780D DEFM "book+look for my rest" $7822 DEFB $5E $7823 DEFM "scrip+skars a pearl!" $7837 DEFB $5E $7838 DEFM "scrip+gods see all" $784A DEFB $5E $784B DEFM "scrip+rats are vain" $785E DEFB $5E $785F DEFM "scrip+art in order" ; [$30] $7871 DEFB $5E $7872 DEFM "spell+show the lady!" $7886 DEFB $5E $7887 DEFM "pearl" $788C DEFB $5E $788D DEFM "scroll+2**25" $7899 DEFB $5E $789A DEFM "scrip+eve" $78A3 DEFB $5E $78A4 DEFM "scrip+did" $78AD DEFB $5E $78AE DEFM "scrip+pop" $78B7 DEFB $5E $78B8 DEFM "platina" $78BF DEFB $5E $78C0 DEFM "lead" ; [$38] $78C4 DEFB $5E $78C5 DEFM "scrip+3 ks 4 keys, with love" $78E1 DEFB $5E $78E2 DEFM "scrip+call me to enter" $78F8 DEFB $5E $78F9 DEFM "l-key" $78FE DEFB $5E $78FF DEFM "pyrite" $7905 DEFB $5E $7906 DEFB $00 ; JP (HL) ; ; Used by the routines at #R$7CD4, #R$7EED, #R$85AE and #R$8BF5. @label=JP_HL c$7907 JP (HL) ; ; Offscreen Blits part of offscreen. ; ; Used by the routine at #R$795E. Input: HL Offscreen Ptr (+1 skipping first column) DE DF Ptr A Number of rows ; to blit. Left and right columns are not blitted to allow for edge hiding on screen when scrolling. @label=Offscreen_BlitBlock c$7908 PUSH DE ; $7909 LD BC,$0900 ; @label=Offscreen_BlitBlock_0 *$790C PUSH DE ; $790D LDI ; $790F LDI ; $7911 LDI ; $7913 LDI ; $7915 LDI ; $7917 LDI ; $7919 LDI ; $791B LDI ; $791D LDI ; $791F LDI ; $7921 LDI ; $7923 LDI ; $7925 LDI ; $7927 LDI ; $7929 LDI ; $792B LDI ; $792D LDI ; $792F LDI ; $7931 LDI ; $7933 LDI ; $7935 LDI ; $7937 LDI ; $7939 LDI ; $793B LDI ; $793D LDI ; $793F LDI ; $7941 LDI ; $7943 LDI ; $7945 LDI ; $7947 LDI ; $7949 LDI ; $794B LDI ; $794D INC HL ; $794E INC HL ; $794F POP DE ; $7950 INC D ; $7951 DJNZ $790C ; $7953 POP DE ; $7954 EX DE,HL ; $7955 LD BC,$0020 ; $7958 ADD HL,BC ; $7959 EX DE,HL ; $795A DEC A ; $795B JR NZ,$7908 ; $795D RET ; ; Offscreen Blits offscreen and colours. ; ; Used by the routines at #R$79B7 and #R$7F6F. @label=Offscreen_Blit c$795E DI ; $795F LD DE,$4800 ; $7962 LD HL,$6089 ; $7965 LD A,$08 ; $7967 CALL $7908 ; $796A LD DE,$40E0 ; $796D LD HL,$5F79 ; $7970 LD A,$01 ; $7972 CALL $7908 ; $7975 LD DE,$40C0 ; $7978 LD HL,$5E69 ; $797B LD A,$01 ; $797D CALL $7908 ; $7980 LD DE,$58E0 ; $7983 LD HL,$5E25 ; $7986 LD BC,$0020 ; $7989 LDIR ; $798B EI ; $798C RET ; ; Linked List Create. ; ; Used by the routine at #R$799E. Input: B Number of links C Size of link in bytes. DE Ptr to first link. ; Creates a linked list by storing the ptr to the next link in the first two bytes of the current link. @label=LinkedList_Create c$798D DEC B ; @label=LinkedList_Create_0 *$798E LD L,C ; Create ptr to next link using link size. $798F LD H,$00 ; $7991 ADD HL,DE ; $7992 EX DE,HL ; $7993 LD (HL),E ; Store ptr to next link in first 2 bytes of link. $7994 INC HL ; $7995 LD (HL),D ; $7996 DJNZ $798E ; Next link. $7998 EX DE,HL ; Terminate list with zeroes in last link. $7999 XOR A ; $799A LD (HL),A ; $799B INC HL ; $799C LD (HL),A ; $799D RET ; ; Initialise _bee4 data. ; ; Used by the routines at #R$79B7 and #R$7DA8. @label=LinkList_bee4_setup c$799E XOR A ; $799F LD ($B0EA),A ; $79A2 LD HL,$0000 ; $79A5 LD ($B133),HL ; $79A8 LD DE,$BEE4 ; $79AB LD ($B12B),DE ; $79AF LD C,$0F ; $79B1 LD B,$0A ; $79B3 CALL $798D ; $79B6 RET ; ; Handles main number keys, blits screen, moves onto main loop. ; ; Used by the routine at #R$7A9E. @label=_79b7 c$79B7 EI ; @label=_79b7_0 *$79B8 CALL $AF3C ; $79BB CALL $9C26 ; $79BE CALL $799E ; $79C1 XOR A ; $79C2 LD ($B19B),A ; $79C5 LD HL,$0000 ; $79C8 LD ($7A48),HL ; $79CB LD ($5C78),HL ; Frames $79CE CALL $7DCB ; $79D1 LD A,(IY+$3E) ; Frame counter $79D4 LD ($B11F),A ; ; Loop @label=_79b7_1 *$79D7 LD A,($B11F) ; $79DA CP (IY+$3E) ; $79DD JR Z,$79D7 ; $79DF LD A,($B19A) ; $79E2 LD HL,($B0E8) ; $79E5 OR L ; $79E6 LD HL,($B0DC) ; $79E9 OR L ; $79EA LD HL,($B0E9) ; $79ED OR L ; $79EE JR NZ,$79F9 ; $79F0 LD BC,$EFFE ; Row '6,7,8,9,0' $79F3 IN A,(C) ; $79F5 BIT 4,A ; '6' - Return to menu. $79F7 JR Z,$79B8 ; @label=_79b7_2 *$79F9 LD BC,$F7FE ; Row '1,2,3,4,5' $79FC IN A,(C) ; ; Pause $79FE BIT 4,A ; Check for '5' (PAUSE) $7A00 JR NZ,$7A16 ; $7A02 DI ; @label=_79b7_3 *$7A03 IN A,(C) ; Wait for key up $7A05 BIT 4,A ; $7A07 JR Z,$7A03 ; @label=_79b7_4 *$7A09 IN A,(C) ; Paused, Wait for key down again. $7A0B BIT 4,A ; $7A0D JR NZ,$7A09 ; @label=_79b7_5 *$7A0F IN A,(C) ; Wait for key up to unpause. $7A11 BIT 4,A ; $7A13 JR Z,$7A0F ; $7A15 EI ; ; Demo mode. @label=_79b7_6 *$7A16 BIT 3,A ; Check for '4' (DEMO) $7A18 JR NZ,$7A2A ; $7A1A LD A,($B120) ; Toggle demo mode on/off. $7A1D XOR $02 ; $7A1F LD ($B120),A ; $7A22 DI ; @label=_79b7_7 *$7A23 IN A,(C) ; Wait for key up. $7A25 BIT 3,A ; $7A27 JR Z,$7A23 ; $7A29 EI ; @label=_79b7_8 *$7A2A LD A,(IY+$3E) ; $7A2D LD HL,($B11F) ; $7A30 SUB L ; $7A31 CP $05 ; $7A33 JR C,$79D7 ; $7A35 LD A,($B11F) ; $7A38 ADD A,$05 ; $7A3A LD ($B11F),A ; $7A3D CALL $795E ; $7A40 CALL $9FE6 ; $7A43 CALL $8121 ; $7A46 JR $79D7 ; ; People Stores bit of background that requires redrawing for each actor. @label=Actors_background b$7A48 DEFW $6E61 ; Address of offscreen, where to blit to. $7A4A DEFB $74 ; Width in bytes. $7A4B DEFB $69 ; Height in scans. $7A4C DEFB $71,$75,$61,$72,$79,$61,$72,$63 ; Next actor... $7A54 DEFB $68,$69,$76,$69,$73,$74,$63,$61 $7A5C DEFB $72,$70,$65,$6E,$74,$65,$72,$61 $7A64 DEFB $6C,$63,$68,$65,$6D,$69,$73,$74 ; Data block at 7A6C @label=_7a6c b$7A6C DEFB $69,$72,$6F,$6E,$6D,$6F,$6E,$67 $7A74 DEFB $65,$72,$61,$70,$6F,$74,$68,$65 $7A7C DEFB $63,$61,$72,$79,$67,$72,$61,$79 $7A84 DEFB $6D,$61,$72,$6B,$65,$74,$73,$77 $7A8C DEFB $6F,$72,$64,$73,$6D,$69,$74,$68 $7A94 DEFB $73,$74,$72,$6F,$6E,$67,$72,$6F $7A9C DEFB $6F,$6D ; Main Initialisation ; ; Used by the routine at #R$6903. Input: IY $5c3a @label=Init c$7A9E LD SP,$5E23 ; $7AA1 EI ; $7AA2 LD B,$20 ; $7AA4 LD HL,$5C92 ; @label=Init_0 *$7AA7 LD (HL),$00 ; $7AA9 INC HL ; $7AAA DJNZ $7AA7 ; $7AAC LD IX,$BB8C ; Bitmaps : Create bitmap pointer table. $7AB0 LD B,$00 ; @label=Init_1 *$7AB2 LD L,(IX+$00) ; $7AB5 LD H,(IX+$01) ; $7AB8 LD DE,$BF8E ; $7ABB ADD HL,DE ; $7ABC LD (IX+$00),L ; $7ABF LD (IX+$01),H ; $7AC2 LD DE,$0004 ; $7AC5 ADD IX,DE ; $7AC7 DJNZ $7AB2 ; $7AC9 LD IX,$BC08 ; Correct masks. $7ACD LD C,$09 ; @label=Init_2 *$7ACF LD L,(IX+$00) ; $7AD2 LD H,(IX+$01) ; $7AD5 LD E,(IX+$02) ; $7AD8 RES 7,E ; $7ADA LD B,(IX+$03) ; $7ADD RES 7,B ; $7ADF XOR A ; @label=Init_3 *$7AE0 ADD A,E ; $7AE1 DJNZ $7AE0 ; $7AE3 ADD A,A ; $7AE4 JR Z,$7AEF ; $7AE6 ADD A,A ; $7AE7 ADD A,A ; $7AE8 LD B,A ; @label=Init_4 *$7AE9 LD A,(HL) ; $7AEA CPL ; $7AEB LD (HL),A ; $7AEC INC HL ; $7AED DJNZ $7AE9 ; @label=Init_5 *$7AEF LD DE,$0004 ; $7AF2 ADD IX,DE ; $7AF4 DEC C ; $7AF5 JR NZ,$7ACF ; $7AF7 LD HL,$BD94 ; Create table. $7AFA LD DE,$BD98 ; $7AFD LD BC,$000C ; $7B00 LDIR ; $7B02 LD HL,$7A48 ; Create table. $7B05 LD DE,$BE2C ; $7B08 LD BC,$0024 ; $7B0B LDIR ; $7B0D LD HL,$7A6C ; $7B10 LD DE,$BD48 ; $7B13 LD BC,$0032 ; $7B16 LDIR ; $7B18 LD A,$01 ; Set print channel. $7B1A CALL $1601 ; $7B1D CALL $79B7 ; $7B20 JP $0000 ; If anything goes wrong reset Spectrum. ; Data block at 7B23 b$7B23 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B2B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B33 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B3B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B43 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B4B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B53 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B5B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B63 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B6B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B73 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B7B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B83 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B8B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B93 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7B9B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BA3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BAB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BB3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BBB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BC3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BCB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BD3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BDB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BE3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BEB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BF3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7BFB DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C03 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C0B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C13 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C1B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C23 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C2B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C33 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C3B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C43 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C4B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C53 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C5B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C63 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C6B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C73 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C7B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $7C83 DEFB $00 ; Paths Table of path offsets. ; ; Each offset is used for calculating the coordinate of a column at the edge of the screen in direction of travel. ; Offset when moving left. @label=Table_PathOffsets_Left b$7C84 DEFW $FFDE ; North $7C86 DEFW $FFE0 $7C88 DEFW $FFDE ; East $7C8A DEFW $FFE0 $7C8C DEFW $0020 ; South $7C8E DEFW $0022 $7C90 DEFW $0020 ; West $7C92 DEFW $0022 ; Offset for moving right. @label=Table_PathOffsets_Right $7C94 DEFW $0020 ; North $7C96 DEFW $0022 $7C98 DEFW $0020 ; East $7C9A DEFW $0022 $7C9C DEFW $FFDE ; South $7C9E DEFW $FFE0 $7CA0 DEFW $FFDE ; West $7CA2 DEFW $FFE0 ; Move jump vectors. @label=Coords_MoveVector c$7CA4 JR $7CB4 ; $7CA6 JR $7CBC ; $7CA8 JR $7CC4 ; $7CAA JR $7CCC ; $7CAC JR $7CC4 ; $7CAE JR $7CCC ; $7CB0 JR $7CB4 ; $7CB2 JR $7CBC ; ; Move coords east. @label=Coords_MoveEast *$7CB4 LD HL,($B15C) ; $7CB7 INC HL ; $7CB8 LD ($B15C),HL ; $7CBB RET ; ; Move coords south. @label=Coords_MoveSouth *$7CBC LD HL,($B15A) ; $7CBF INC HL ; $7CC0 LD ($B15A),HL ; $7CC3 RET ; ; Move coords west. @label=Coords_MoveWest *$7CC4 LD HL,($B15C) ; $7CC7 DEC HL ; $7CC8 LD ($B15C),HL ; $7CCB RET ; ; Move coords north. @label=Coords_MoveNorth *$7CCC LD HL,($B15A) ; $7CCF DEC HL ; $7CD0 LD ($B15A),HL ; $7CD3 RET ; ; Offscren Scroll the offscreen in the direction of the player. ; ; Used by the routine at #R$8121. @label=BG_ScrollInDirection c$7CD4 PUSH IX ; $7CD6 LD A,($B162) ; $7CD9 CP $02 ; $7CDB JP Z,$7D43 ; ; Facing Right $7CDE LD HL,($B15C) ; Get coordinates for axis based on camera compass. $7CE1 LD A,($B160) ; $7CE4 AND $01 ; $7CE6 JR Z,$7CEB ; $7CE8 LD HL,($B15A) ; @label=BG_ScrollInDirection_0 *$7CEB PUSH HL ; $7CEC BIT 0,L ; $7CEE LD HL,$5E89 ; Area on the offscreen bitmap. Right hand column, second scan down. $7CF1 LD IX,$7C94 ; $7CF5 CALL Z,$969A ; $7CF8 LD HL,($B160) ; $7CFB LD H,$00 ; $7CFD ADD HL,HL ; $7CFE LD BC,$7CA4 ; $7D01 ADD HL,BC ; $7D02 CALL $7907 ; $7D05 LD A,L ; $7D06 AND $1E ; $7D08 CP $1E ; $7D0A CALL Z,$AE8D ; $7D0D LD C,$02 ; $7D0F LD HL,$6907 ; @label=BG_ScrollInDirection_1 *$7D12 LD B,$AA ; @label=BG_ScrollInDirection_2 *$7D14 RLD ; $7D16 DEC HL ; $7D17 RLD ; $7D19 DEC HL ; $7D1A RLD ; $7D1C DEC HL ; $7D1D RLD ; $7D1F DEC HL ; $7D20 RLD ; $7D22 DEC HL ; $7D23 RLD ; $7D25 DEC HL ; $7D26 RLD ; $7D28 DEC HL ; $7D29 RLD ; $7D2B DEC HL ; $7D2C DJNZ $7D14 ; $7D2E DEC C ; $7D2F JR NZ,$7D12 ; $7D31 POP HL ; $7D32 POP IX ; $7D34 BIT 0,L ; $7D36 RET Z ; $7D37 LD HL,$5E25 ; $7D3A LD DE,$5E24 ; $7D3D LD BC,$0043 ; $7D40 LDIR ; $7D42 RET ; ; Facing Left @label=BG_ScrollInDirection_3 *$7D43 LD HL,($B15C) ; $7D46 LD A,($B160) ; $7D49 AND $01 ; $7D4B JR Z,$7D50 ; $7D4D LD HL,($B15A) ; @label=BG_ScrollInDirection_4 *$7D50 PUSH HL ; $7D51 BIT 0,L ; $7D53 LD HL,$5E68 ; $7D56 LD IX,$7C84 ; $7D5A CALL Z,$969A ; $7D5D LD HL,($B160) ; $7D60 LD H,$00 ; $7D62 ADD HL,HL ; $7D63 LD BC,$7CAC ; $7D66 ADD HL,BC ; $7D67 CALL $7907 ; $7D6A LD A,L ; $7D6B AND $1E ; $7D6D CP $1E ; $7D6F CALL Z,$AE8D ; $7D72 LD C,$02 ; $7D74 LD HL,$5E68 ; @label=BG_ScrollInDirection_5 *$7D77 LD B,$AA ; @label=BG_ScrollInDirection_6 *$7D79 RRD ; $7D7B INC HL ; $7D7C RRD ; $7D7E INC HL ; $7D7F RRD ; $7D81 INC HL ; $7D82 RRD ; $7D84 INC HL ; $7D85 RRD ; $7D87 INC HL ; $7D88 RRD ; $7D8A INC HL ; $7D8B RRD ; $7D8D INC HL ; $7D8E RRD ; $7D90 INC HL ; $7D91 DJNZ $7D79 ; $7D93 DEC C ; $7D94 JR NZ,$7D77 ; $7D96 POP HL ; $7D97 POP IX ; $7D99 BIT 0,L ; $7D9B RET NZ ; $7D9C LD HL,$5E66 ; $7D9F LD DE,$5E67 ; $7DA2 LD BC,$0043 ; $7DA5 LDDR ; $7DA7 RET ; ; Room Puts back info, which was stored when entering. ; ; Used by the routines at #R$7DCB, #R$8544 and #R$871A. Input: A Index of bank to copy from. @label=Outside_DataRestore c$7DA8 PUSH IX ; $7DAA LD ($B158),A ; $7DAD LD L,A ; $7DAE LD H,$00 ; $7DB0 ADD HL,HL ; $7DB1 ADD HL,HL ; $7DB2 ADD HL,HL ; $7DB3 LD DE,$6903 ; $7DB6 ADD HL,DE ; $7DB7 LD DE,$B174 ; $7DBA LD BC,$0008 ; $7DBD LDIR ; $7DBF CALL $799E ; $7DC2 CALL $AE8D ; $7DC5 CALL $9C46 ; $7DC8 POP IX ; $7DCA RET ; ; Routine at 7DCB ; ; Used by the routine at #R$79B7. @label=_7dcb c$7DCB LD A,($B158) ; $7DCE CALL $7DA8 ; $7DD1 JP $7F6F ; ; Path Find path that player is on. ; ; Used by the routines at #R$7F6F and #R$8544. @label=Path_Find c$7DD4 XOR A ; $7DD5 LD ($B157),A ; ; Get correct position based on compass. $7DD8 LD DE,($B15A) ; $7DDC LD HL,($B15C) ; $7DDF LD A,($B160) ; Check to E/W compass. $7DE2 AND $01 ; $7DE4 JR NZ,$7DEC ; $7DE6 LD IX,($B174) ; N/W facing. $7DEA JR $7DF1 ; @label=Path_Find_0 *$7DEC LD IX,($B176) ; E/W facing, swap round coords. $7DF0 EX DE,HL ; @label=Path_Find_1 *$7DF1 LD A,($B19A) ; $7DF4 AND A ; $7DF5 JR Z,$7E11 ; $7DF7 LD A,($B160) ; $7DFA LD BC,$0006 ; $7DFD CP $02 ; $7DFF JR C,$7E04 ; $7E01 LD BC,$FFFA ; @label=Path_Find_2 *$7E04 LD A,($B162) ; $7E07 CP $02 ; $7E09 JR Z,$7E0E ; $7E0B ADD HL,BC ; $7E0C JR $7E11 ; @label=Path_Find_3 *$7E0E AND A ; $7E0F SBC HL,BC ; ; Find path player is on. @label=Path_Find_4 *$7E11 LD C,L ; $7E12 LD B,H ; @label=Path_Find_5 *$7E13 PUSH DE ; $7E14 LD L,(IX+$00) ; Match path axis. $7E17 LD H,(IX+$01) ; $7E1A AND A ; $7E1B SBC HL,DE ; $7E1D JR NC,$7E2A ; Move not next path is not same position. $7E1F LD DE,$0004 ; $7E22 AND A ; $7E23 ADC HL,DE ; $7E25 JP M,$7E48 ; $7E28 JR $7E32 ; @label=Path_Find_6 *$7E2A LD DE,$0004 ; $7E2D SCF ; $7E2E SBC HL,DE ; $7E30 JR NC,$7E54 ; @label=Path_Find_7 *$7E32 LD L,(IX+$02) ; See if player is within the two ends of the path. $7E35 LD H,(IX+$03) ; $7E38 SCF ; $7E39 SBC HL,BC ; $7E3B JR NC,$7E48 ; $7E3D LD L,(IX+$04) ; $7E40 LD H,(IX+$05) ; $7E43 AND A ; $7E44 SBC HL,BC ; $7E46 JR NC,$7E83 ; ; Next path. @label=Path_Find_8 *$7E48 LD HL,$B157 ; $7E4B INC (HL) ; $7E4C LD DE,$000C ; $7E4F ADD IX,DE ; $7E51 POP DE ; $7E52 JR $7E13 ; ; Path found, running in and out of screen. @label=Path_Find_9 *$7E54 POP DE ; $7E55 LD DE,($B15A) ; $7E59 LD HL,($B15C) ; $7E5C LD A,($B160) ; $7E5F BIT 0,A ; $7E61 JR Z,$7E64 ; $7E63 EX DE,HL ; @label=Path_Find_10 *$7E64 LD ($B19C),DE ; $7E68 LD DE,$0004 ; $7E6B AND A ; $7E6C SBC HL,DE ; $7E6E LD ($B19E),HL ; $7E71 ADD HL,DE ; $7E72 ADD HL,DE ; $7E73 LD ($B1A0),HL ; $7E76 LD IX,$B19C ; $7E7A LD ($B165),IX ; $7E7E LD ($B167),A ; $7E81 JR $7EAA ; ; Path found, running left and right of screen. @label=Path_Find_11 *$7E83 POP DE ; $7E84 LD ($B165),IX ; $7E88 LD A,($B160) ; $7E8B LD ($B167),A ; $7E8E LD ($B168),IX ; $7E92 LD ($B16A),A ; $7E95 LD A,($B160) ; $7E98 LD L,(IX+$00) ; $7E9B LD H,(IX+$01) ; $7E9E BIT 0,A ; $7EA0 JR Z,$7EA7 ; $7EA2 LD ($B15C),HL ; $7EA5 JR $7EAA ; @label=Path_Find_12 *$7EA7 LD ($B15A),HL ; @label=Path_Find_13 *$7EAA LD DE,$0022 ; Get the ends of the path and include a margin for the width of the screen to allow for ; overruns when drawing the screen. $7EAD LD L,(IX+$02) ; $7EB0 LD H,(IX+$03) ; $7EB3 AND A ; $7EB4 SBC HL,DE ; $7EB6 SET 7,H ; $7EB8 LD ($B1AA),HL ; $7EBB LD L,(IX+$04) ; $7EBE LD H,(IX+$05) ; $7EC1 ADD HL,DE ; $7EC2 SET 7,H ; $7EC4 LD ($B1B4),HL ; ; Get background data. $7EC7 BIT 1,A ; Determine which background to use based on camera direction. $7EC9 JR NZ,$7ED3 ; $7ECB LD L,(IX+$06) ; North / East background. $7ECE LD H,(IX+$07) ; $7ED1 JR $7ED9 ; @label=Path_Find_14 *$7ED3 LD L,(IX+$08) ; South / West background. $7ED6 LD H,(IX+$09) ; @label=Path_Find_15 *$7ED9 LD ($B172),HL ; $7EDC RET ; ; ATTR Fills stage to area's colour. ; ; Used by the routines at #R$7F6F and #R$8544. @label=Stage_AreaColour c$7EDD LD HL,$58C0 ; $7EE0 LD DE,$58C1 ; $7EE3 LD A,($B17B) ; $7EE6 LD (HL),A ; $7EE7 LD BC,$013F ; $7EEA LDIR ; $7EEC RET ; ; Background Draw all of the background. ; ; Used by the routines at #R$7F6F, #R$8544, #R$8F43, #R$9109 and #R$9132. Draws all of the background, column by ; column. The routine re-uses the column draw sub-routines so the players values are used. @label=Bg_DrawAll c$7EED LD HL,($B15A) ; Set of positions based on direction. $7EF0 LD DE,($B15C) ; $7EF4 RES 0,L ; Make even as there are two steps for each column. $7EF6 RES 0,E ; $7EF8 PUSH HL ; Store new values for reseting player. $7EF9 PUSH DE ; $7EFA LD A,($B162) ; Determine which coordinate is left to right on the screen and shift to represent the left ; hand column of the screen. $7EFD PUSH AF ; $7EFE LD A,$01 ; $7F00 LD ($B162),A ; $7F03 LD A,($B160) ; $7F06 BIT 0,A ; North or South coordinates. $7F08 JR NZ,$7F0B ; $7F0A EX DE,HL ; Work on East to West coordinates. @label=Bg_DrawAll_0 *$7F0B LD BC,$0042 ; Nort or East. Offset path postion by $42 $7F0E BIT 1,A ; $7F10 JR NZ,$7F15 ; $7F12 LD BC,$FFBE ; South or West. Offset path position by -$42 @label=Bg_DrawAll_1 *$7F15 ADD HL,BC ; $7F16 BIT 0,A ; $7F18 JR NZ,$7F1B ; $7F1A EX DE,HL ; North or South swap around coordinates again. @label=Bg_DrawAll_2 *$7F1B LD ($B15A),HL ; Use the players coordinates to keep track of the column to draw. $7F1E LD ($B15C),DE ; $7F22 LD HL,$5E68 ; $7F25 LD B,$22 ; Number of columns to draw. ; Draw each column. @label=Bg_DrawAll_3 *$7F27 PUSH BC ; $7F28 PUSH HL ; $7F29 LD IX,$7C94 ; $7F2D CALL $969A ; Find and draw the item baed on the position of the column. $7F30 LD HL,($B160) ; $7F33 LD H,$00 ; $7F35 ADD HL,HL ; $7F36 LD BC,$7CA4 ; $7F39 ADD HL,BC ; $7F3A LD E,L ; $7F3B LD D,H ; $7F3C CALL $7907 ; $7F3F EX DE,HL ; $7F40 CALL $7907 ; $7F43 POP HL ; $7F44 INC HL ; $7F45 POP BC ; $7F46 DJNZ $7F27 ; $7F48 POP AF ; $7F49 LD ($B162),A ; $7F4C POP DE ; $7F4D POP HL ; $7F4E LD ($B15A),HL ; Put player position back. $7F51 LD ($B15C),DE ; $7F55 RET ; ; Compass text. @label=Msg_nesw b$7F56 DEFM "neswnesw" @label=Msg_CompassPos $7F5E DEFB $10 ; Colour / position of compass bits. $7F5F DEFB $08 $7F60 DEFB $11 $7F61 DEFB $08 $7F62 DEFB $16 $7F63 DEFB $01 $7F64 DEFB $02 $7F65 DEFB $16 $7F66 DEFB $02 $7F67 DEFB $03 $7F68 DEFB $16 $7F69 DEFB $03 $7F6A DEFB $02 $7F6B DEFB $16 $7F6C DEFB $02 $7F6D DEFB $01 ; Data block at 7F6E @label=_7f6e b$7F6E DEFB $00 ; Handles door entry by hero. ; ; Used by the routines at #R$7DCB, #R$8121, #R$8544 and #R$871A. @label=Hero_DoorEntry c$7F6F DI ; $7F70 LD A,$01 ; $7F72 LD ($7F6E),A ; $7F75 CALL $AE36 ; Clear door cache. ; Data block at 7F78 b$7F78 DEFW $B182 $7F7A DEFB $18 ; Return address. c$7F7B CALL $7DD4 ; $7F7E CALL $7EED ; $7F81 LD DE,($B15E) ; $7F85 LD A,($B19A) ; $7F88 AND A ; $7F89 JR NZ,$7FB3 ; $7F8B LD A,($B163) ; $7F8E LD HL,($B160) ; $7F91 LD E,$12 ; $7F93 CP L ; $7F94 JR Z,$7FB3 ; $7F96 LD E,$13 ; $7F98 ADD A,$02 ; $7F9A AND $03 ; $7F9C CP L ; $7F9D JR Z,$7FB3 ; $7F9F LD E,$10 ; $7FA1 LD A,($B163) ; $7FA4 SUB L ; $7FA5 AND $03 ; $7FA7 LD ($B162),A ; $7FAA CP $03 ; $7FAC JR NZ,$7FB3 ; $7FAE LD A,$02 ; $7FB0 LD ($B162),A ; @label=Hero_DoorEntry_0 *$7FB3 LD D,$00 ; $7FB5 LD ($B15E),DE ; $7FB9 LD HL,$5800 ; $7FBC LD DE,$5801 ; $7FBF LD BC,$00BF ; $7FC2 LD A,($B19B) ; $7FC5 AND A ; $7FC6 JR Z,$7FCB ; $7FC8 LD BC,$00A5 ; @label=Hero_DoorEntry_1 *$7FCB LD (HL),$00 ; $7FCD LDIR ; $7FCF CALL $7EDD ; $7FD2 LD A,$02 ; $7FD4 CALL $1601 ; $7FD7 LD L,$D0 ; Draw vertical border ornament bitmap. $7FD9 LD BC,$00F8 ; $7FDC LD A,$03 ; $7FDE CALL $9BCE ; $7FE1 LD L,$D1 ; Draw horizontal border ornament bitmap. $7FE3 LD BC,$0060 ; $7FE6 LD A,$03 ; $7FE8 CALL $9BCE ; $7FEB LD L,$C9 ; Draw compass ornament bitmap. $7FED LD BC,$0000 ; $7FF0 LD A,$05 ; $7FF2 CALL $9BCE ; ; Draw compass. $7FF5 LD HL,($B160) ; $7FF8 LD H,$00 ; $7FFA LD DE,$7F56 ; $7FFD ADD HL,DE ; $7FFE LD DE,$7F5E ; $8001 LD C,$04 ; $8003 LD B,$07 ; @label=Hero_DoorEntry_2 *$8005 LD A,(DE) ; $8006 CALL $AD9B ; $8009 INC DE ; $800A DJNZ $8005 ; $800C LD A,(HL) ; $800D CALL $AD9B ; $8010 INC HL ; $8011 LD B,$03 ; $8013 DEC C ; $8014 JR NZ,$8005 ; ; Display room specific messages. $8016 CALL $AD1A ; ; Data block at 8019 b$8019 DEFB $16 $801A DEFB $01 $801B DEFB $06 $801C DEFB $10 $801D DEFB $06 $801E DEFB $11 $801F DEFB $00 $8020 DEFB $13 $8021 DEFB $01 $8022 DEFB $5E ; Routine at 8023 c$8023 LD A,($B178) ; $8026 CP $01 ; $8028 JR NZ,$803B ; ; Seller $802A CALL $AD1A ; ; Data block at 802D b$802D DEFM "we sell:" $8035 DEFB $16 $8036 DEFB $02 $8037 DEFB $06 ; Routine at 8038 c$8038 LD E,(HL) ; $8039 JR $805A ; ; This entry point is used by the routine at #R$8023. @label=Hero_DoorEntry_3 *$803B CP $02 ; $803D JP NZ,$8095 ; ; Broker $8040 CALL $AD1A ; ; Data block at 8043 b$8043 DEFM "we buy:" $804A DEFB $16 $804B DEFB $02 $804C DEFB $06 $804D DEFB $5E ; Routine at 804E c$804E LD IX,($B16E) ; Print word at end of message. $8052 LD A,(IX+$06) ; $8055 CALL $AE74 ; $8058 JR $806A ; ; This entry point is used by the routine at #R$8038. @label=Hero_DoorEntry_4 *$805A CALL $AD1A ; ; Data block at 805D b$805D DEFB $16 ; PRINT AT 2,6; $805E DEFB $02 $805F DEFB $06 $8060 DEFB $5E ; Routine at 8061 c$8061 LD A,($B0DE) ; $8064 CALL $ACFC ; $8067 CALL $AD0D ; ; This entry point is used by the routine at #R$804E. @label=Hero_DoorEntry_5 *$806A CALL $AD1A ; ; Data block at 806D b$806D DEFM "s for " $8073 DEFB $5E ; Routine at 8074 c$8074 LD HL,$B0E4 ; $8077 CALL $ADFB ; $807A CALL $AD1A ; ; Data block at 807D b$807D DEFM "ir" ; Routine at 807F c$807F LD E,(HL) ; $8080 JP $8106 ; ; Data block at 8083 @label=Str_Deposit b$8083 DEFM "deposit fee 50ir" $8094 DEFB $5E ; Routine at 8095 ; ; Used by the routine at #R$8038. @label=Hero_DoorEntry_6 c$8095 CP $03 ; $8097 JP NZ,$809F ; ; Deposit $809A LD HL,$8083 ; $809D JR $80AD ; @label=Hero_DoorEntry_7 *$809F CP $08 ; $80A1 JR NZ,$80D8 ; ; Castle $80A3 LD IX,($B16E) ; $80A7 LD L,(IX+$03) ; $80AA LD H,(IX+$04) ; ; This entry point is used by the routines at #R$80D8 and #R$80F4. @label=Hero_DoorEntry_8 *$80AD CALL $AD54 ; $80B0 JR $8106 ; ; Data block at 80B2 @label=Str_DepositRate b$80B2 DEFM "min.deposit 1000+bank rate 1% per day" $80D7 DEFB $5E ; Routine at 80D8 ; ; Used by the routine at #R$8095. @label=Hero_DoorEntry_9 c$80D8 CP $09 ; $80DA JR NZ,$80F4 ; ; Bank $80DC LD HL,$80B2 ; $80DF JR $80AD ; ; Data block at 80E1 @label=Str_PortationFee b$80E1 DEFM "portation fee: 200" $80F3 DEFB $5E ; Routine at 80F4 ; ; Used by the routine at #R$80D8. @label=Hero_DoorEntry_10 c$80F4 CP $0A ; $80F6 JR NZ,$8106 ; ; Portal $80F8 CALL $AE80 ; $80FB LD HL,$0000 ; $80FE LD ($B17C),HL ; $8101 LD HL,$80E1 ; $8104 JR $80AD ; ; This entry point is used by the routines at #R$807F and #R$8095. @label=Hero_DoorEntry_11 *$8106 LD A,($B19A) ; $8109 AND A ; $810A JR Z,$8111 ; $810C CALL $9F13 ; $810F JR $8117 ; @label=Hero_DoorEntry_12 *$8111 LD A,($B15E) ; $8114 CALL $9F16 ; @label=Hero_DoorEntry_13 *$8117 JP $795E ; ; Data block at 811A @label=_811a b$811A DEFB $04,$07,$0B,$0E,$10,$12,$13 ; Main game routine. ; ; Used by the routine at #R$79B7. Check for new day @label=Game_Main c$8121 LD HL,$B0D6 ; $8124 BIT 5,(IY+$3F) ; FRAMES + 1 $8128 JR NZ,$8144 ; $812A LD A,(HL) ; $812B AND A ; $812C JR Z,$8146 ; $812E LD (HL),$00 ; Reset to nighttime. $8130 LD HL,$B0D7 ; Add 1% to bank account. $8133 LD DE,$B0D8 ; $8136 CALL $ADBA ; $8139 CALL $AE46 ; Look for digit that is not zero. ; Data for non-zero search, the address of which gets put onto stack in above call. b$813C DEFW $B0D7 $813E DEFB $04 ; Above call returns to here. c$813F CALL NZ,$9C46 ; Display value if there is money in account. $8142 JR $8146 ; ; This entry point is used by the routine at #R$8121. @label=Game_Main_0 *$8144 LD (HL),$01 ; Reset to daytime. ; Message display countdown. @label=Game_Main_1 *$8146 LD A,($B19B) ; See if a message is still on display. $8149 AND A ; $814A JR Z,$8158 ; $814C DEC A ; Countdown and skip if not the end. $814D LD ($B19B),A ; $8150 JR NZ,$8158 ; $8152 CALL $AE36 ; Clear the message from the screen. ; Data block at 8155 b$8155 DEFW $58A6 ; Parameters for block copy. $8157 DEFB $19 ; Routine at 8158 ; ; Used by the routine at #R$813F. @label=Game_Main_2 c$8158 LD A,($B19A) ; See if player is going through a door. $815B BIT 0,A ; $815D JP NZ,$8684 ; $8160 LD A,($B0E8) ; See if an arrest is in progress. $8163 AND A ; $8164 JP NZ,$8997 ; $8167 LD A,($B0DC) ; See if an offer is in progress and handle it. $816A AND A ; $816B JP NZ,$83D5 ; $816E LD A,($B0E9) ; See if Skar is being viewed on the Telestone. $8171 AND A ; $8172 JP NZ,$8544 ; $8175 CALL $99C4 ; ; Enter $8178 LD A,($B12A) ; $817B AND A ; $817C CALL NZ,$85AE ; $817F LD A,($B15E) ; $8182 CP $10 ; $8184 JR NZ,$8191 ; $8186 LD A,($B120) ; $8189 AND A ; $818A JR Z,$8191 ; $818C OR $08 ; $818E LD ($B129),A ; @label=Game_Main_3 *$8191 LD A,($B129) ; $8194 AND $0C ; $8196 JR Z,$81C3 ; $8198 LD A,($BB2D) ; $819B AND $0C ; $819D JP NZ,$9F13 ; $81A0 LD A,($B129) ; $81A3 LD ($BB2D),A ; $81A6 AND $0C ; $81A8 CP $0C ; $81AA JP Z,$9F13 ; ; Rotate Camera $81AD BIT 2,A ; $81AF JR Z,$81B7 ; $81B1 LD A,($B160) ; $81B4 INC A ; $81B5 JR $81BB ; @label=Game_Main_4 *$81B7 LD A,($B160) ; $81BA DEC A ; @label=Game_Main_5 *$81BB AND $03 ; $81BD LD ($B160),A ; $81C0 JP $7F6F ; ; Actions @label=Game_Main_6 *$81C3 LD A,($B129) ; $81C6 AND $F0 ; $81C8 JR Z,$820D ; $81CA LD A,($BB2D) ; $81CD AND $70 ; $81CF JR NZ,$820D ; $81D1 LD A,($B129) ; $81D4 BIT 7,A ; $81D6 JR Z,$81E4 ; $81D8 LD A,($BB2D) ; $81DB BIT 7,A ; $81DD JR NZ,$81E4 ; $81DF CALL $9EF6 ; $81E2 JR $820D ; @label=Game_Main_7 *$81E4 LD A,($B129) ; $81E7 LD ($BB2D),A ; $81EA BIT 4,A ; $81EC CALL NZ,$8354 ; $81EF LD A,($B0DC) ; $81F2 AND A ; $81F3 JP NZ,$834E ; $81F6 LD A,($B129) ; $81F9 AND $60 ; $81FB CP $60 ; $81FD JR Z,$820D ; $81FF BIT 5,A ; $8201 JR Z,$8208 ; $8203 CALL $9DC1 ; $8206 JR $820D ; @label=Game_Main_8 *$8208 BIT 6,A ; $820A CALL NZ,$9E51 ; @label=Game_Main_9 *$820D LD A,($B129) ; $8210 LD ($BB2D),A ; $8213 LD A,($B15E) ; Check for key frames $8216 LD HL,$811A ; $8219 LD BC,$0007 ; $821C CPIR ; $821E JP NZ,$8336 ; $8221 LD HL,($B15C) ; Get coords for axis of movement along with offset for movement. $8224 LD DE,$0007 ; $8227 LD A,($B160) ; $822A BIT 0,A ; $822C JR Z,$8231 ; $822E LD HL,($B15A) ; @label=Game_Main_10 *$8231 BIT 1,A ; $8233 JR Z,$8238 ; $8235 LD DE,$FFF9 ; @label=Game_Main_11 *$8238 LD A,($B129) ; Mask out movement keys, Making sure only one key is pressed. $823B AND $03 ; $823D CP $03 ; $823F JR NZ,$8242 ; $8241 XOR A ; @label=Game_Main_12 *$8242 LD ($BB88),A ; $8245 LD A,($B15E) ; $8248 CP $04 ; $824A JP Z,$82F3 ; $824D CP $0B ; $824F JP Z,$82F3 ; $8252 CP $07 ; $8254 JP Z,$8336 ; $8257 CP $0E ; $8259 JP Z,$8336 ; $825C LD A,($BB88) ; Get movement key pressed. $825F AND A ; $8260 JP Z,$834E ; Skip all if not key pressed. $8263 LD BC,($B162) ; Last direction is the same as last key pressed. $8267 CP C ; $8268 JR Z,$8281 ; ; Change of direction. $826A LD A,($B15E) ; See if 'standing' frame. $826D CP $10 ; $826F JR NZ,$8281 ; $8271 LD A,$13 ; Set to 'facing' camera frame. $8273 LD ($B15E),A ; $8276 LD A,($B160) ; $8279 XOR $02 ; $827B LD ($B163),A ; $827E JP $834E ; @label=Game_Main_13 *$8281 LD A,($BB88) ; $8284 CP $02 ; $8286 JR Z,$828D ; $8288 AND A ; $8289 ADC HL,DE ; $828B JR $828F ; @label=Game_Main_14 *$828D SBC HL,DE ; @label=Game_Main_15 *$828F JP M,$82D2 ; $8292 JR Z,$82D2 ; $8294 LD E,L ; $8295 LD D,H ; $8296 LD IX,($B165) ; $829A LD L,(IX+$02) ; $829D LD H,(IX+$03) ; $82A0 SCF ; $82A1 SBC HL,DE ; $82A3 JP NC,$82B3 ; $82A6 LD L,(IX+$04) ; $82A9 LD H,(IX+$05) ; $82AC EX DE,HL ; $82AD SCF ; $82AE SBC HL,DE ; $82B0 JP C,$82D2 ; @label=Game_Main_16 *$82B3 LD A,($BB88) ; $82B6 LD ($B162),A ; $82B9 LD C,$01 ; $82BB CP $01 ; $82BD JR Z,$82C1 ; $82BF LD C,$FF ; @label=Game_Main_17 *$82C1 LD A,($B160) ; $82C4 ADD A,C ; $82C5 AND $03 ; $82C7 LD ($B163),A ; $82CA LD A,$10 ; $82CC LD ($B15E),A ; $82CF JP $834E ; @label=Game_Main_18 *$82D2 LD A,($BB88) ; $82D5 LD ($B162),A ; $82D8 LD C,$01 ; $82DA CP $01 ; $82DC JR Z,$82E0 ; $82DE LD C,$FF ; @label=Game_Main_19 *$82E0 LD A,($B160) ; $82E3 ADD A,C ; $82E4 AND $03 ; $82E6 LD ($B163),A ; $82E9 LD A,($BB2E) ; $82EC ADD A,$02 ; $82EE LD ($B15E),A ; $82F1 JR $834B ; @label=Game_Main_20 *$82F3 LD A,($B15E) ; $82F6 LD ($BB2E),A ; $82F9 LD A,($B162) ; $82FC CP $02 ; $82FE JR Z,$8305 ; $8300 AND A ; $8301 ADC HL,DE ; $8303 JR $8307 ; @label=Game_Main_21 *$8305 SBC HL,DE ; @label=Game_Main_22 *$8307 JP M,$8329 ; $830A JR Z,$8329 ; $830C LD E,L ; $830D LD D,H ; $830E LD IX,($B165) ; $8312 LD L,(IX+$02) ; $8315 LD H,(IX+$03) ; $8318 AND A ; $8319 SBC HL,DE ; $831B JR NC,$8332 ; $831D LD L,(IX+$04) ; $8320 LD H,(IX+$05) ; $8323 EX DE,HL ; $8324 AND A ; $8325 SBC HL,DE ; $8327 JR NC,$8332 ; @label=Game_Main_23 *$8329 LD A,($BB88) ; $832C LD HL,$B162 ; $832F CP (HL) ; $8330 JR Z,$8336 ; @label=Game_Main_24 *$8332 LD A,$10 ; $8334 JR $8340 ; @label=Game_Main_25 *$8336 LD A,($B15E) ; @label=Game_Main_26 *$8339 INC A ; $833A CP $0F ; $833C JR NZ,$8340 ; $833E LD A,$02 ; @label=Game_Main_27 *$8340 CP $01 ; $8342 JR Z,$8339 ; $8344 CP $08 ; $8346 JR Z,$8339 ; $8348 LD ($B15E),A ; @label=Game_Main_28 *$834B CALL $7CD4 ; ; This entry point is used by the routines at #R$8684 and #R$8997. @label=Game_Main_29 *$834E LD A,($B15E) ; $8351 JP $9F16 ; ; Start off the action 'offer'. ; ; Used by the routine at #R$8121. @label=Offer_Action c$8354 LD A,($B0DC) ; See if an offer is already in place, if so do nothing. $8357 AND A ; $8358 RET NZ ; $8359 LD HL,$B15E ; Set frame to 12 (Facing in). $835C LD (HL),$12 ; $835E LD DE,($5E56) ; $8362 LD A,E ; $8363 OR D ; $8364 BIT 4,A ; $8366 JR NZ,$8370 ; $8368 LD A,($B160) ; $836B BIT 1,A ; $836D JR Z,$8370 ; $836F INC (HL) ; Change frame to facing front. @label=Offer_Action_0 *$8370 LD A,$16 ; Start offer. $8372 LD ($B0DC),A ; $8375 LD HL,$0000 ; Clear who we are offering to. $8378 LD ($B0E2),HL ; $837B LD HL,($B152) ; Set the attribute of the offer character to flashing. $837E LD H,$00 ; $8380 ADD HL,HL ; $8381 ADD HL,HL ; $8382 ADD HL,HL ; $8383 ADD HL,HL ; $8384 ADD HL,HL ; $8385 LD DE,$5A81 ; $8388 ADD HL,DE ; $8389 SET 7,(HL) ; $838B LD A,($B152) ; See if offering iridi $838E AND A ; $838F JR NZ,$839F ; $8391 LD ($B0DD),A ; $8394 CALL $AD1F ; ; Data block at 8397 b$8397 DEFM "iridi?" $839D DEFB $5E ; Routine at 839E c$839E RET ; ; This entry point is used by the routine at #R$8354. @label=Offer_Action_1 *$839F CALL $AD1F ; ; Data block at 83A2 b$83A2 DEFB $5E ; Routine at 83A3 c$83A3 LD HL,($B152) ; Get selected object index. $83A6 LD H,$00 ; $83A8 LD DE,$B14E ; $83AB ADD HL,DE ; $83AC LD A,(HL) ; $83AD LD ($B0DD),A ; $83B0 CP $18 ; Is it the Telestone. $83B2 JR NZ,$83CA ; $83B4 LD A,$3C ; Start searching for Skar... $83B6 LD ($B0E9),A ; $83B9 CALL $AD1A ; ; Data block at 83BC b$83BC DEFM "searching..." $83C8 DEFB $5E ; Routine at 83C9 c$83C9 RET ; ; This entry point is used by the routine at #R$83A3. @label=Offer_Action_2 *$83CA CALL $ACFC ; Offer the object. $83CD CALL $AD0D ; $83D0 LD A,$3F ; Add '?' to the end, making it a question. $83D2 JP $AD9B ; Do the print, then return. ; Handle offer action if an offer is in place. ; ; Used by the routine at #R$8121. @label=Offer_Handle c$83D5 LD HL,$B0DC ; $83D8 DEC (HL) ; $83D9 JP NZ,$9F13 ; $83DC LD A,($B0DD) ; $83DF CP $18 ; $83E1 JP Z,$8544 ; $83E4 LD HL,($5E56) ; $83E7 LD A,L ; $83E8 OR H ; $83E9 BIT 4,A ; $83EB JR NZ,$8405 ; $83ED LD HL,($B0E2) ; $83F0 LD A,L ; $83F1 OR H ; $83F2 JP NZ,$84E2 ; $83F5 CALL $AD4B ; ; Data block at 83F8 b$83F8 DEFM "no answer!" $8402 DEFB $5E ; Routine at 8403 c$8403 JR $8429 ; ; This entry point is used by the routine at #R$83D5. @label=Offer_Handle_0 *$8405 LD A,($B178) ; $8408 CP $01 ; $840A JP NZ,$849D ; $840D LD HL,$B14F ; $8410 LD BC,$0003 ; $8413 LD A,($B0DE) ; $8416 OR $80 ; $8418 CPIR ; $841A JR Z,$842F ; $841C CALL $AD4B ; ; Data block at 841F b$841F DEFM "for what?" $8428 DEFB $5E ; This entry point is used by the routine at #R$8997. ; ; Used by the routines at #R$8403, #R$844B, #R$846B, #R$849A, #R$8512, #R$8541 and #R$89F6. @label=Offer_Handle_1 c$8429 CALL $9C46 ; $842C JP $9F13 ; ; This entry point is used by the routine at #R$8403. @label=Offer_Handle_2 *$842F LD A,($B152) ; $8432 AND A ; $8433 JR Z,$846D ; ; This entry point is used by the routines at #R$8B0E, #R$8B40, #R$8BA0 and #R$8BB2. @label=Offer_DontWantMessage *$8435 LD A,($B152) ; $8438 AND A ; $8439 JR Z,$845B ; $843B CALL $AD4B ; ; Data block at 843E b$843E DEFM "i dont want " $844A DEFB $5E ; Routine at 844B c$844B LD A,($B0DD) ; $844E CALL $ACFC ; $8451 CALL $AD0D ; $8454 LD A,$73 ; $8456 CALL $AD9B ; $8459 JR $8429 ; ; This entry point is used by the routine at #R$8429. @label=Offer_Handle_3 *$845B CALL $AD4B ; ; Data block at 845E b$845E DEFM "no thank you" $846A DEFB $5E ; Routine at 846B c$846B JR $8429 ; ; This entry point is used by the routine at #R$8429. @label=Offer_Handle_4 *$846D LD HL,$B153 ; $8470 LD DE,$B0E4 ; $8473 CALL $ADC7 ; $8476 JR NC,$847D ; $8478 CALL $8A6F ; $847B JR $8429 ; @label=Offer_Handle_5 *$847D LD HL,$B14F ; $8480 LD BC,$0003 ; $8483 LD A,($B0DE) ; $8486 OR $80 ; $8488 CPIR ; $848A DEC HL ; $848B RES 7,(HL) ; ; This entry point is used by the routine at #R$849A. @label=Offer_Handle_6 *$848D CALL $AD4B ; ; Data block at 8490 b$8490 DEFM "thank you" $8499 DEFB $5E ; Routine at 849A c$849A JP $8429 ; ; This entry point is used by the routine at #R$8403. @label=Offer_Handle_7 *$849D CP $02 ; $849F JP NZ,$84C9 ; $84A2 LD A,($B152) ; $84A5 AND A ; $84A6 JP Z,$8435 ; $84A9 LD L,A ; $84AA LD H,$00 ; $84AC LD DE,$B14E ; $84AF ADD HL,DE ; $84B0 LD DE,($B0DE) ; $84B4 LD A,(HL) ; $84B5 AND $7F ; $84B7 CP E ; $84B8 JP NZ,$8435 ; $84BB LD (HL),$00 ; $84BD LD HL,$B153 ; $84C0 LD DE,$B0E4 ; $84C3 CALL $ADBA ; $84C6 JP $848D ; @label=Offer_Handle_8 *$84C9 JP $848D ; ; Offer Jump table. b$84CC DEFW $8B40 ; Determines how each person reacts when being offered an object. $84CE DEFW $8B6F $84D0 DEFW $8B76 $84D2 DEFW $8B7D $84D4 DEFW $8B84 $84D6 DEFW $8B8B $84D8 DEFW $8B92 $84DA DEFW $8B99 $84DC DEFW $8BA0 $84DE DEFW $8BB2 $84E0 DEFW $8BD7 ; To a person ; ; Used by the routine at #R$83D5. @label=Offer_Handle_9 c$84E2 LD IX,($B0E2) ; Get the address of the person being offered to and clear the pointer. $84E6 LD HL,$0000 ; $84E9 LD ($B0E2),HL ; $84EC BIT 4,(IX+$13) ; Check for the rat. $84F0 JR NZ,$852D ; $84F2 LD A,($B152) ; $84F5 AND A ; $84F6 JR NZ,$8515 ; ; Give Iridi... $84F8 LD HL,$0000 ; Clear all your money. $84FB LD ($B153),HL ; $84FE LD ($B155),HL ; ; This entry point is used by the routine at #R$8B0E. @label=Offer_Handle_10 *$8501 CALL $AD4B ; } ; Data block at 8504 b$8504 DEFM "how generous!" $8511 DEFB $5E ; Routine at 8512 c$8512 JP $8429 ; ; Offer an object... @label=Offer_Handle_11 *$8515 LD L,A ; Workout which pocket being offered (1~3) $8516 LD H,$00 ; $8518 LD DE,$B14E ; $851B ADD HL,DE ; $851C LD C,L ; $851D LD B,H ; $851E LD L,(IX+$0E) ; See who is being offered to $8521 LD H,$00 ; $8523 ADD HL,HL ; $8524 LD DE,$84CA ; Use the jump table to see how to handle it... $8527 ADD HL,DE ; $8528 LD E,(HL) ; $8529 INC HL ; $852A LD D,(HL) ; $852B EX DE,HL ; $852C JP (HL) ; ; To the rat. @label=Offer_Handle_12 *$852D CALL $AD4B ; ; Data block at 8530 b$8530 DEFM "i am only a rat!" $8540 DEFB $5E ; Routine at 8541 c$8541 JP $8429 ; ; View Skar through the telestone. ; ; Used by the routines at #R$8121 and #R$83D5. @label=Skar_View c$8544 LD HL,$B0E9 ; $8547 LD A,$3C ; $8549 CP (HL) ; $854A JR NZ,$8588 ; $854C DEC (HL) ; $854D LD HL,$B158 ; $8550 LD DE,$BCB4 ; $8553 LD BC,$0018 ; $8556 LDIR ; $8558 LD HL,$B94A ; $855B LD DE,$B15A ; $855E LD BC,$0004 ; $8561 LDIR ; $8563 LD A,$01 ; $8565 CALL $7DA8 ; $8568 LD A,($B95D) ; $856B LD ($B16D),A ; $856E LD A,($B947) ; $8571 XOR $01 ; $8573 LD ($B160),A ; $8576 CALL $7DD4 ; $8579 LD A,$08 ; $857B LD ($B17B),A ; $857E CALL $7EED ; $8581 CALL $7EDD ; $8584 XOR A ; $8585 JP $9F16 ; @label=Skar_View_0 *$8588 DEC (HL) ; $8589 JP NZ,$9F13 ; $858C LD HL,$BCB4 ; $858F LD DE,$B158 ; $8592 LD BC,$0018 ; $8595 LDIR ; $8597 LD A,($B158) ; $859A CALL $7DA8 ; $859D JP $7F6F ; ; Rooms Table of datasizes for each type. Each room data has a type. Based on that type the data is made up of ; different sizes. @label=Room_DataSizes b$85A0 DEFB $02 $85A1 DEFB $06 $85A2 DEFB $07 $85A3 DEFB $05 $85A4 DEFB $0C $85A5 DEFB $06 $85A6 DEFB $0A $85A7 DEFB $11 $85A8 DEFB $05 $85A9 DEFB $04 $85AA DEFB $03 $85AB DEFB $05 @label=Exit_SimpleData $85AC DEFB $12,$00 ; Simple exit for leaving a room that doesn't define any other exits. ; Action Handles the 'enter' action. ; ; Used by the routine at #R$8121. @label=Action_Enter c$85AE LD A,($B160) ; $85B1 BIT 0,A ; $85B3 JR NZ,$85BB ; $85B5 LD DE,($B15C) ; $85B9 JR $85BF ; @label=Action_Enter_0 *$85BB LD DE,($B15A) ; @label=Action_Enter_1 *$85BF LD IX,$B182 ; Data on possible exits. $85C3 LD A,$06 ; Number of possible exits. $85C5 LD BC,$0004 ; Bytes in data structure. @label=Action_Enter_2 *$85C8 PUSH AF ; Get next exit and check distance from current coords allowing for an error of 4 units. $85C9 LD L,(IX+$00) ; $85CC LD H,(IX+$01) ; $85CF CALL $AC5A ; $85D2 AND A ; $85D3 SBC HL,BC ; $85D5 JR C,$85DE ; $85D7 ADD IX,BC ; $85D9 POP AF ; $85DA DEC A ; $85DB JR NZ,$85C8 ; $85DD RET ; ; Exit Found @label=Action_Enter_3 *$85DE POP AF ; Store index of exit. $85DF PUSH IX ; Make a copy of the exit data. $85E1 POP HL ; $85E2 LD DE,$B17E ; $85E5 LDIR ; $85E7 LD IX,$B5C4 ; Get Room address based on room index held within exit found data. $85EB LD A,($B181) ; $85EE AND A ; $85EF JR Z,$85FB ; $85F1 LD B,A ; $85F2 LD D,$00 ; @label=Action_Enter_4 *$85F4 LD E,(IX+$00) ; $85F7 ADD IX,DE ; $85F9 DJNZ $85F4 ; @label=Action_Enter_5 *$85FB LD ($BB2F),IX ; $85FF LD C,(IX+$01) ; Get room's data flags. $8602 LD A,C ; Get room type. $8603 RRA ; $8604 RRA ; $8605 RRA ; $8606 RRA ; $8607 AND $0F ; $8609 LD L,A ; Get the size of the data based on the type number. $860A LD H,$00 ; $860C LD DE,$85A0 ; $860F ADD HL,DE ; $8610 LD E,(HL) ; $8611 LD D,$00 ; $8613 ADD IX,DE ; Skip the data(T) for the exits. $8615 LD A,C ; Check the exit flags (lower half of data flags). If zero (no exits) use special exit data. $8616 AND $0F ; $8618 JR NZ,$861E ; $861A LD IX,$85AC ; @label=Action_Enter_6 *$861E LD ($BB31),IX ; Store the address for exit data. $8622 LD A,($B160) ; Flip the direction of the hero, to get the exit's true direction within the room being ; entered. $8625 XOR $02 ; $8627 JR Z,$8646 ; $8629 LD B,A ; Each bit (from the right) represents an exit. Shift through flags using the exit required as ; a index. @label=Action_Enter_7 *$862A RRC C ; $862C JR NC,$8644 ; $862E LD DE,$0007 ; If the exit has its bit set, it tells us the next piece of data if based on that exit. Skip ; that bit of data, size is based on the exit type, stored inthe first byte of exit data. $8631 LD A,(IX+$00) ; $8634 AND $0F ; $8636 JR Z,$8642 ; $8638 LD DE,$0003 ; $863B CP $01 ; $863D JR Z,$8642 ; $863F LD DE,$0002 ; @label=Action_Enter_8 *$8642 ADD IX,DE ; @label=Action_Enter_9 *$8644 DJNZ $862A ; @label=Action_Enter_10 *$8646 LD A,(IX+$01) ; Does the door require a key? $8649 AND A ; $864A JR Z,$8661 ; $864C LD HL,$B14F ; See if 'key' is being carried. $864F LD BC,$0003 ; $8652 CPIR ; $8654 JR Z,$8661 ; $8656 CALL $AD1F ; If not display 'locked' on message line. ; Data block at 8659 b$8659 DEFM "locked" $865F DEFB $5E ; Routine at 8660 c$8660 RET ; ; Through door. @label=Action_Enter_11 *$8661 LD ($BB33),IX ; $8665 LD HL,($B179) ; $8668 CALL $7907 ; $866B RET NZ ; $866C CALL $8C2D ; $866F RET Z ; $8670 LD A,$01 ; $8672 LD ($B19A),A ; $8675 LD A,($B160) ; $8678 LD ($B163),A ; $867B LD A,$12 ; $867D LD ($B15E),A ; $8680 POP HL ; $8681 JP $9F16 ; ; Handles door entry by the player. ; ; Used by the routine at #R$8121. @label=Door_HandleEntry c$8684 LD HL,$B19A ; $8687 BIT 2,(HL) ; $8689 JP NZ,$871A ; $868C BIT 1,(HL) ; $868E JP Z,$834E ; $8691 XOR A ; $8692 JP $9F16 ; ; Data block at 8695 @label=Ptr_OutsideMidData b$8695 DEFW $B5D4 $8697 DEFW $B1DE $8699 DEFW $B3D5 $869B DEFW $B5DB @label=_869d $869D DEFW $B20E ; Current Room $869F DEFW $B444 $86A1 DEFW $B5C6 $86A3 DEFW $B1F6 @label=_86a5 $86A5 DEFW $B4FD ; Room Type 0 $86A7 DEFW $B5CD @label=_86a9 $86A9 DEFW $B218 $86AB DEFW $B455 $86AD DEFW $B20E ; Room Type 1 $86AF DEFW $B444 $86B1 DEFW $B218 $86B3 DEFW $B455 $86B5 DEFW $B20E ; Room Type 2 $86B7 DEFW $B444 $86B9 DEFW $B218 $86BB DEFW $B455 $86BD DEFW $B230 ; Room Type 3 $86BF DEFW $B483 $86C1 DEFW $B23A $86C3 DEFW $B40F $86C5 DEFW $B252 ; Room Type 4 $86C7 DEFW $B51F $86C9 DEFW $B25C $86CB DEFW $B4C8 $86CD DEFW $B274 ; Room Type 5 $86CF DEFW $B3FF $86D1 DEFW $B23A $86D3 DEFW $B40F $86D5 DEFW $B28C ; Room Type 6 $86D7 DEFW $B4F3 $86D9 DEFW $B25C $86DB DEFW $B4C8 $86DD DEFW $B2A4 ; Room Type 7 $86DF DEFW $B49E $86E1 DEFW $B23A $86E3 DEFW $B40F $86E5 DEFW $B2BC ; Room Type 8 $86E7 DEFW $B4BD $86E9 DEFW $B25C $86EB DEFW $B4C8 $86ED DEFW $B230 ; Room Type 9 $86EF DEFW $B483 $86F1 DEFW $B218 $86F3 DEFW $B455 $86F5 DEFW $B2BC ; Room Type A $86F7 DEFW $B4BD $86F9 DEFW $B25C $86FB DEFW $B4C8 $86FD DEFW $B230 ; Room Type B $86FF DEFW $B483 $8701 DEFW $B23A $8703 DEFW $B40F ; Positions used to locate person when goin through an exit, based on compass direction. @label=Exit_coords b$8705 DEFW $00C8 ; North exit position. $8707 DEFW $0073 $8709 DEFW $00A5 ; East exit position. $870B DEFW $0080 $870D DEFW $0068 ; South exit position. $870F DEFW $0075 $8711 DEFW $00B9 ; West exit position. $8713 DEFW $0080 ; Each value marks a single exit and is used by rooms to create an exit for a room that doesn't have exits defined. @label=Exits_Predefined $8715 DEFB $04,$08,$01,$02 ; North, east, south, west. @label=Temp_RoomType $8719 DEFB $00 ; Room Initialise ; ; Used by the routine at #R$8684. @label=Room_Initialise c$871A XOR A ; $871B LD ($B19A),A ; $871E LD ($B0E8),A ; $8721 LD IX,($BB2F) ; $8725 LD A,(IX+$01) ; Calculate room type. $8728 RRA ; $8729 RRA ; $872A RRA ; $872B RRA ; $872C AND $0F ; $872E LD ($8719),A ; $8731 JP NZ,$8759 ; ; Room Type 00 (Outside) $8734 LD IX,($BB33) ; Get pointer to room info (midway pointer). $8738 LD HL,($BB33) ; With same info, get the last position when hero was outside, put back into hero's data. $873B LD DE,$0003 ; $873E ADD HL,DE ; $873F LD DE,$B15A ; $8742 LD BC,$0004 ; $8745 LDIR ; $8747 LD A,(IX+$02) ; $874A CALL $7DA8 ; $874D XOR A ; $874E LD ($B16D),A ; $8751 LD A,$12 ; $8753 LD ($B15E),A ; $8756 JP $7F6F ; ; Handle rooms. @label=Room_Initialise_0 *$8759 LD BC,($B181) ; $875D LD HL,$B0F9 ; $8760 LD B,$09 ; @label=Room_Initialise_1 *$8762 LD A,C ; $8763 ADD A,$6F ; $8765 LD C,A ; $8766 AND $0F ; $8768 CP $09 ; $876A JR C,$876E ; $876C LD A,$03 ; @label=Room_Initialise_2 *$876E ADD A,$58 ; $8770 LD (HL),A ; $8771 INC HL ; $8772 RRC C ; $8774 DJNZ $8762 ; $8776 LD HL,$B0F9 ; $8779 LD DE,$B102 ; $877C LD BC,$001B ; $877F LDIR ; $8781 LD HL,($B160) ; Based on the compass, get a predefined exit mask. This will hold just a single exist from ; the direction the player came from. $8784 LD H,$00 ; $8786 LD DE,$8715 ; $8789 ADD HL,DE ; $878A LD C,(HL) ; $878B LD A,(IX+$01) ; Get room exit mask. $878E AND $0F ; If no exits are defined, then just create an exit based on direction player entered the ; room. $8790 JR Z,$8793 ; $8792 LD C,A ; Use defined exits. @label=Room_Initialise_3 *$8793 PUSH BC ; $8794 LD HL,($8719) ; $8797 LD H,$00 ; $8799 ADD HL,HL ; $879A ADD HL,HL ; $879B ADD HL,HL ; $879C LD DE,$86A5 ; $879F ADD HL,DE ; $87A0 LD DE,$869D ; $87A3 LD BC,$0004 ; $87A6 LDIR ; $87A8 LD DE,$86A9 ; $87AB LD BC,$0004 ; $87AE LDIR ; ; Setup exits. $87B0 LD HL,$8695 ; $87B3 POP BC ; $87B4 LD IX,($BB31) ; $87B8 LD B,$04 ; @label=Room_Initialise_4 *$87BA RRC C ; $87BC PUSH BC ; $87BD JR C,$87CA ; ; No exit. $87BF LD DE,$0004 ; $87C2 ADD HL,DE ; $87C3 LD A,$05 ; $87C5 LD BC,$0000 ; Clear number of bytes to skip, stays on same exit data for next check. $87C8 JR $883F ; ; Exit of some sort. @label=Room_Initialise_5 *$87CA LD A,(IX+$00) ; Get exit type. $87CD AND $0F ; $87CF JR NZ,$87E5 ; ; Exit Type 0 $87D1 LD E,(HL) ; $87D2 INC HL ; $87D3 LD D,(HL) ; $87D4 INC HL ; $87D5 PUSH HL ; $87D6 PUSH IX ; $87D8 POP HL ; $87D9 LD BC,$0007 ; Size of exit data. $87DC LDIR ; Copy exit data across. $87DE POP HL ; $87DF XOR A ; $87E0 LD BC,$0007 ; $87E3 JR $882F ; ; Check for exit type 2. @label=Room_Initialise_6 *$87E5 CP $01 ; $87E7 JR NZ,$87F3 ; ; Exit Type 1. $87E9 INC HL ; $87EA INC HL ; $87EB LD BC,$0003 ; Size of exit data. $87EE LD A,(IX+$02) ; $87F1 JR $882F ; ; Exit Type 2. @label=Room_Initialise_7 *$87F3 LD E,(HL) ; $87F4 INC HL ; $87F5 LD D,(HL) ; $87F6 INC HL ; $87F7 PUSH HL ; $87F8 LD A,(IX+$01) ; $87FB PUSH DE ; $87FC EX (SP),IX ; Get info required to put hero back outside. $87FE LD (IX+$01),A ; $8801 LD (IX+$00),$00 ; $8805 LD A,($B158) ; $8808 LD (IX+$02),A ; $880B LD HL,($B165) ; $880E LD E,(HL) ; $880F INC HL ; $8810 LD D,(HL) ; $8811 LD HL,($B17E) ; $8814 LD A,($B160) ; $8817 BIT 0,A ; $8819 JR NZ,$881C ; $881B EX DE,HL ; ; Setup exit leading to outside. @label=Room_Initialise_8 *$881C LD (IX+$03),L ; Store info as exit data. $881F LD (IX+$04),H ; $8822 LD (IX+$05),E ; $8825 LD (IX+$06),D ; $8828 POP IX ; $882A POP HL ; $882B LD BC,$0002 ; Size of exit data. $882E XOR A ; ; _ @label=Room_Initialise_9 *$882F LD E,(HL) ; $8830 INC HL ; $8831 LD D,(HL) ; $8832 INC HL ; $8833 LD (DE),A ; $8834 LD A,(IX+$00) ; $8837 RRCA ; $8838 RRCA ; $8839 RRCA ; $883A RRCA ; $883B AND $0F ; $883D ADD A,$92 ; @label=Room_Initialise_10 *$883F LD E,(HL) ; $8840 INC HL ; $8841 LD D,(HL) ; $8842 LD (DE),A ; $8843 INC HL ; $8844 ADD IX,BC ; Move onto next exit data. $8846 POP BC ; Get exit count and count down. $8847 DEC B ; $8848 JP NZ,$87BA ; ; _ $884B LD IX,($BB2F) ; $884F LD A,($B181) ; $8852 LD ($B16D),A ; $8855 LD ($B16E),IX ; $8859 LD DE,$8705 ; Copy exit coords into heros position. $885C LD HL,($B160) ; $885F LD H,$00 ; $8861 ADD HL,HL ; $8862 ADD HL,HL ; $8863 ADD HL,DE ; $8864 LD DE,$B15A ; $8867 LD BC,$0004 ; $886A LDIR ; $886C LD A,($8719) ; Base on room type, $886F INC A ; $8870 CALL $7DA8 ; $8873 LD DE,$0007 ; Beep! $8876 LD HL,$0159 ; $8879 CALL $03B5 ; $887C LD IX,($BB2F) ; $8880 LD A,(IX+$02) ; $8883 LD ($B17B),A ; ; Handle room based on type. $8886 LD A,($8719) ; $8889 CP $01 ; $888B JR NZ,$88DD ; ; Room Type 01 Seller $888D LD A,(IX+$03) ; Get object being sold and fill shelves with item. $8890 LD HL,$BB38 ; $8893 LD B,$02 ; Number of shelves. $8895 OR $80 ; Mark as stolen. @label=Room_Initialise_11 *$8897 LD (HL),A ; Put onto next shelf. $8898 INC HL ; $8899 DJNZ $8897 ; $889B LD (HL),B ; Clear. $889C INC HL ; $889D LD (HL),B ; ; This entry point is used by the routine at #R$88E7. @label=Room_Initialise_12 *$889E LD HL,$BB37 ; $88A1 LD ($B170),HL ; $88A4 LD A,(IX+$03) ; Keep a copy of the object linked to room. (sold or bought) $88A7 LD ($B0DE),A ; $88AA LD HL,$0000 ; $88AD LD ($B0E6),HL ; $88B0 LD L,(IX+$04) ; Get price of object (sold or bought). $88B3 LD H,(IX+$05) ; $88B6 LD ($B0E4),HL ; $88B9 LD A,H ; $88BA AND A ; $88BB JP NZ,$7F6F ; $88BE LD A,L ; $88BF AND $0F ; $88C1 LD ($B0E4),A ; $88C4 LD A,L ; $88C5 RRA ; $88C6 RRA ; $88C7 RRA ; $88C8 RRA ; $88C9 AND $0F ; $88CB LD C,A ; @label=Room_Initialise_13 *$88CC LD B,$04 ; $88CE LD HL,$B0E4 ; $88D1 XOR A ; @label=Room_Initialise_14 *$88D2 RLD ; $88D4 INC HL ; $88D5 DJNZ $88D2 ; $88D7 DEC C ; $88D8 JR NZ,$88CC ; $88DA JP $7F6F ; ; Room Type 02 Broker @label=Room_Initialise_15 *$88DD CP $02 ; $88DF JR NZ,$88E9 ; $88E1 CALL $AE36 ; Clear shelves. ; Data block at 88E4 b$88E4 DEFW $BB38 $88E6 DEFB $05 ; Routine at 88E7 c$88E7 JR $889E ; ; This entry point is used by the routine at #R$871A. @label=Room_Initialise_16 *$88E9 CP $0B ; $88EB JR Z,$88F1 ; $88ED CP $03 ; $88EF JR NZ,$890F ; ; Room Type 03 Deposit, 0B @label=Room_Initialise_17 *$88F1 LD A,(IX+$03) ; Get index of bitmap to display in picture. $88F4 AND A ; $88F5 JR Z,$8907 ; $88F7 LD HL,$B102 ; Clear picture. $88FA LD DE,$B103 ; $88FD LD BC,$0008 ; $8900 LD (HL),$7C ; $8902 LDIR ; $8904 LD ($B106),A ; Store image index. @label=Room_Initialise_18 *$8907 LD HL,($BB2F) ; Offset to info data in room data. $890A LD DE,$0003 ; $890D JR $892F ; ; Room Type 04, 08 Castle, 09 Bank, 0A Portal, 05 Gambling @label=Room_Initialise_19 *$890F CP $04 ; $8911 JR Z,$8929 ; $8913 CP $08 ; $8915 JR Z,$8929 ; $8917 CP $09 ; $8919 JR Z,$8929 ; $891B CP $0A ; $891D JR Z,$8929 ; $891F CP $05 ; $8921 JR NZ,$8941 ; ; 05 Gambling Room. $8923 CALL $AE36 ; Clear gambling room variables and data. ; Data block at 8926 b$8926 DEFW $B0EB $8928 DEFB $0C ; Routine at 8929 ; ; Used by the routine at #R$88E7. @label=Room_Initialise_20 c$8929 LD HL,($BB2F) ; $892C LD DE,$0002 ; ; Initialise and Exit. @label=Room_Initialise_21 *$892F ADD HL,DE ; Offset to info data in room data and store it. $8930 LD ($B170),HL ; $8933 LD HL,$B14F ; Make a copy of items carried. $8936 LD DE,$BB38 ; $8939 LD BC,$0003 ; $893C LDIR ; $893E JP $7F6F ; ; Check room type. @label=Room_Initialise_22 *$8941 CP $06 ; $8943 JR NZ,$896D ; ; Room Type 06 Shield room $8945 LD HL,$B102 ; Blank out the picture. $8948 LD DE,$B103 ; $894B LD BC,$0008 ; $894E LD (HL),$7C ; $8950 LDIR ; $8952 LD A,(IX+$05) ; Index of bitmap to display in picture. $8955 LD ($B106),A ; $8958 AND A ; $8959 JR NZ,$896A ; $895B LD HL,($BB2F) ; A zero means the shield has been placed, copy the text of the reward from the room data. $895E LD DE,$0007 ; $8961 ADD HL,DE ; $8962 LD DE,$B105 ; $8965 LD BC,$0003 ; $8968 LDIR ; @label=Room_Initialise_23 *$896A JP $8929 ; ; Room Type 07 Gallery @label=Room_Initialise_24 *$896D LD HL,$B0F9 ; Fill the Gallery's picture matrix with spaces. $8970 LD DE,$B0FA ; $8973 LD BC,$0023 ; $8976 LD (HL),$7C ; $8978 LDIR ; $897A LD HL,$B0FD ; Starting with the byte that represent the first picture image. $897D LD B,$04 ; Repeat for 4 pictures. @label=Room_Initialise_25 *$897F LD A,(IX+$05) ; Get the index of the image that represents the object to find. $8982 AND A ; $8983 JR NZ,$8988 ; $8985 LD A,(IX+$07) ; If its a zero, then use the image that represents the object has been found. @label=Room_Initialise_26 *$8988 LD (HL),A ; Store the correct index into the part of the matrix that is the picture. $8989 LD DE,$0009 ; Move onto the next picture matrix. $898C ADD HL,DE ; $898D LD DE,$0003 ; Move onto next next item for the room. $8990 ADD IX,DE ; $8992 DJNZ $897F ; $8994 JP $8929 ; ; Handle being caught by the yoeman for theft. ; ; Used by the routine at #R$8121. @label=Hero_Arrest c$8997 LD A,($B0E8) ; $899A CP $01 ; $899C JR NZ,$89C5 ; $899E CALL $AD4B ; ; Data block at 89A1 b$89A1 DEFM "halt for the yeoman!" ; Halt for the yoemen $89B5 DEFB $5E ; Routine at 89B6 c$89B6 LD HL,$B15E ; $89B9 LD (HL),$12 ; $89BB LD A,($B160) ; $89BE BIT 1,A ; $89C0 JR Z,$89C3 ; $89C2 INC (HL) ; @label=Hero_Arrest_0 *$89C3 LD A,$01 ; ; This entry point is used by the routine at #R$8997. @label=Hero_Arrest_1 *$89C5 INC A ; $89C6 LD ($B0E8),A ; $89C9 CP $0F ; $89CB JP C,$834E ; $89CE CALL $AD4B ; ; Data block at 89D1 b$89D1 DEFM "thievery is costly.." ; Thievery is costly $89E5 DEFB $5E ; Routine at 89E6 c$89E6 XOR A ; $89E7 LD ($B0E8),A ; $89EA CALL $AE36 ; Clear all pockets. ; Data block at 89ED b$89ED DEFW $B14F $89EF DEFB $03 ; Routine at 89F0 c$89F0 CALL $AE36 ; ; Data block at 89F3 b$89F3 DEFW $B153 $89F5 DEFB $04 ; Routine at 89F6 c$89F6 JP $8429 ; ; Selects pocket 1 if current selection is on iridi. ; ; Used by the routines at #R$8A04, #R$8AC4 and #R$8AF1. @label=Inv_AutoSelect c$89F9 LD HL,$B152 ; $89FC LD A,(HL) ; $89FD AND A ; $89FE JR NZ,$8A02 ; $8A00 LD (HL),$01 ; @label=Inv_AutoSelect_0 *$8A02 XOR A ; $8A03 RET ; ; Room Checks inventory on exit. @label=Exit_CheckInv c$8A04 LD HL,$B14F ; $8A07 LD BC,$0003 ; $8A0A LD A,($B0DE) ; $8A0D OR $80 ; $8A0F CPIR ; $8A11 JR NZ,$89F9 ; $8A13 CP $94 ; Check for stolen license. $8A15 JP Z,$8AB7 ; $8A18 CP $B7 ; Check for stolen platina. $8A1A JP Z,$8AB7 ; ; Stop Thief. $8A1D CALL $AD4B ; ; Data block at 8A20 @label=Str_StopThief b$8A20 DEFM "stop thief!" $8A2B DEFB $5E ; Routine at 8A2C c$8A2C JR $89F9 ; ; ? @label=_8a2e $8A2E LD DE,$BB3B ; $8A31 LD HL,$BB38 ; $8A34 LD BC,$0003 ; $8A37 LDIR ; $8A39 LD DE,$B14F ; $8A3C LD C,$03 ; @label=Exit_CheckInv_0 *$8A3E LD HL,$BB3B ; $8A41 LD B,$03 ; $8A43 LD A,(DE) ; @label=Exit_CheckInv_1 *$8A44 CP (HL) ; $8A45 JR NZ,$8A4B ; $8A47 LD (HL),$00 ; $8A49 LD B,$01 ; @label=Exit_CheckInv_2 *$8A4B INC HL ; $8A4C DJNZ $8A44 ; $8A4E INC DE ; $8A4F DEC C ; $8A50 JR NZ,$8A3E ; $8A52 LD HL,$BB3B ; $8A55 LD B,$03 ; $8A57 XOR A ; $8A58 LD C,A ; @label=Exit_CheckInv_3 *$8A59 CP (HL) ; $8A5A JR Z,$8A5D ; $8A5C INC C ; @label=Exit_CheckInv_4 *$8A5D INC HL ; $8A5E DJNZ $8A59 ; $8A60 LD A,C ; $8A61 AND A ; $8A62 JR Z,$89F9 ; $8A64 LD DE,$0050 ; Take away 50 iridi from cash. $8A67 LD HL,$B153 ; $8A6A CALL $ADEA ; $8A6D JR NC,$8A81 ; ; This entry point is used by the routines at #R$83D5 and #R$8AC4. @label=Exit_NotEnough *$8A6F CALL $AD4B ; Displays not enough. ; Data block at 8A72 b$8A72 DEFM "not enough!" $8A7D DEFB $5E ; Routine at 8A7E c$8A7E OR $01 ; $8A80 RET ; ; This entry point is used by the routine at #R$8A2C. @label=Exit_DepositTaken *$8A81 CALL $AD4B ; ; Data block at 8A84 b$8A84 DEFM "deposit taken 50ir" ; Deposit taken 50ir $8A96 DEFB $5E ; Routine at 8A97 c$8A97 JP $89F9 ; @label=Exit_8a9a $8A9A LD A,($B160) ; $8A9D CP $01 ; $8A9F JP NZ,$89F9 ; $8AA2 LD IX,($B16E) ; $8AA6 LD B,$03 ; @label=Exit_CheckInv_5 *$8AA8 LD A,(IX+$06) ; $8AAB CP (IX+$09) ; $8AAE JR NZ,$8AB7 ; $8AB0 INC IX ; $8AB2 DJNZ $8AA8 ; $8AB4 JP $89F9 ; ; This entry point is used by the routine at #R$8AF1. @label=Shop_Locked *$8AB7 CALL $AD1F ; ; Data block at 8ABA b$8ABA DEFM "locked" ; locked $8AC0 DEFB $5E ; Routine at 8AC1 c$8AC1 OR $01 ; $8AC3 RET ; ; Takes 200 iridi from cash. c$8AC4 LD A,($B160) ; $8AC7 CP $01 ; $8AC9 JP NZ,$89F9 ; $8ACC LD DE,$0200 ; $8ACF LD HL,$B153 ; $8AD2 CALL $ADEA ; $8AD5 JP C,$8A6F ; $8AD8 CALL $AD1F ; ; Data block at 8ADB b$8ADB DEFM "fee deducted 200ir" ; Fee deducted 200ir $8AED DEFB $5E ; Routine at 8AEE c$8AEE JP $89F9 ; ; Room Checks to see if hero can leave strong room. @label=Shop_ChkLock c$8AF1 LD HL,$B14F ; Check to see if carrying a Pearl. $8AF4 LD A,$32 ; $8AF6 LD BC,$0003 ; $8AF9 CPIR ; $8AFB JP NZ,$89F9 ; If not then you can leave. $8AFE LD HL,$B14F ; Check to see if carrying the thieves license. $8B01 LD A,$14 ; $8B03 LD BC,$0003 ; $8B06 CPIR ; $8B08 JP Z,$89F9 ; If so, then you can leave. $8B0B JP $8AB7 ; If not then show room as locked. ; Action Handle Offer ; ; Used by the routines at #R$8B40, #R$8B6F, #R$8B76, #R$8B7D, #R$8B84, #R$8B8B, #R$8B92, #R$8B99, #R$8BA0, #R$8BB2 ; and #R$8BD7. Input: IX Ptr to person being offered to. BC Ptr to pocket holding object being offered. D Index ; of object received if an exchange takes place. E Index to an expected object. @label=Action_HandleOffer c$8B0E LD A,(BC) ; Get object being offered. $8B0F AND $7F ; $8B11 CP E ; Is it the same as object expected. $8B12 JR Z,$8B20 ; $8B14 BIT 3,(IX+$13) ; $8B18 JP Z,$8435 ; "I don't want..." $8B1B XOR A ; Clear pocket. $8B1C LD (BC),A ; $8B1D JP $8501 ; "How generous" @label=Action_HandleOffer_0 *$8B20 LD A,D ; If the object is expected, see if there is anything in exchange. $8B21 LD (BC),A ; $8B22 RES 6,(IX+$13) ; Clear flag. $8B26 CALL $9C46 ; Update the screen. $8B29 CALL $AD4B ; ; Data block at 8B2C @label=Msg_FairExchange b$8B2C DEFM "a fair exchange!" ; A fair exchange $8B3C DEFB $5E ; Routine at 8B3D c$8B3D JP $9F13 ; ; Person Skar, handle an offer. @label=Offer_HandleSkar c$8B40 LD E,$32 ; Offer 'Pearl' $8B42 LD D,$33 ; Receive 'scroll' (2**25) $8B44 BIT 0,(IX+$13) ; $8B48 JR Z,$8B0E ; $8B4A LD A,(BC) ; Offer 'spell' (show the lady!) $8B4B AND $7F ; $8B4D XOR $31 ; $8B4F JP NZ,$8435 ; $8B52 LD (BC),A ; Clear pocket. $8B53 RES 0,(IX+$13) ; Clear flag so that Skar is visible. $8B57 LD (IX+$17),$01 ; $8B5B CALL $9C46 ; $8B5E CALL $AD4B ; ; Data block at 8B61 b$8B61 DEFM "i am seen!" ; I am seen $8B6B DEFB $5E ; Routine at 8B6C c$8B6C JP $9F13 ; ; Person Ryde, handle an offer. @label=Offer_HandleRyde c$8B6F LD E,$2A ; Offer 'Map' (galacia is far) $8B71 LD D,$23 ; Receive 'Shield' (belinus) $8B73 JP $8B0E ; ; Person Kara, handle an offer. @label=Offer_HandleKara c$8B76 LD E,$2B ; Offer 'Philtre' $8B78 LD D,$34 ; Receive 'scrip' (Eve) $8B7A JP $8B0E ; ; Person Keli, handle an offer. @label=Offer_HandleKeli c$8B7D LD E,$2B ; Offer 'Philtre' $8B7F LD D,$35 ; Receive 'scrip' (Did) $8B81 JP $8B0E ; ; Person Kahn, handle an offer. @label=Offer_HandleKahn c$8B84 LD E,$2B ; Offer 'Philtre' $8B86 LD D,$36 ; Receive 'scrip' (Pop) $8B88 JP $8B0E ; ; Person Dain, handle an offer. @label=Offer_HandleDain c$8B8B LD E,$1D ; Offer 'Lyre' $8B8D LD D,$22 ; Receive 'Shield' (Midir) $8B8F JP $8B0E ; ; Person Mhor, handle an offer. @label=Offer_HandleMhor c$8B92 LD E,$0F ; Offer 'book' (Verit ghoom) $8B94 LD D,$2C ; Receive 'book' (Look for my rest) $8B96 JP $8B0E ; ; Person Teth, handle an offer. @label=Offer_HandleTeth c$8B99 LD E,$28 ; Offer 'statue' $8B9B LD D,$27 ; Receive 'd-key' $8B9D JP $8B0E ; ; Person Pita, handle an offer. @label=Offer_HandlePita c$8BA0 LD A,(BC) ; Offering 'Necklace', 'Bracelet', 'Brooch' or 'Earing' (1e ~ 22) $8BA1 CP $1E ; $8BA3 JP C,$8435 ; $8BA6 CP $22 ; $8BA8 JP NC,$8435 ; $8BAB LD E,A ; Set as object being offered. $8BAC ADD A,$0F ; $8BAE LD D,A ; Receive : 'Scrip' $8BAF JP $8B0E ; ; Person Bren, handle an offer. @label=Offer_HandleBren c$8BB2 LD A,(BC) ; See which object Bren is looking for. $8BB3 BIT 5,(IX+$13) ; $8BB7 JR Z,$8BC8 ; $8BB9 LD E,$02 ; Offer : 'moleskin' $8BBB CP E ; $8BBC JP NZ,$8435 ; Refuse offer. $8BBF LD D,$29 ; Receive : 'map' (gold in ashes) $8BC1 RES 5,(IX+$13) ; $8BC5 JP $8B0E ; @label=Offer_HandleBren_0 *$8BC8 LD E,$37 ; Offer : 'platina' $8BCA CP E ; $8BCB JP NZ,$8435 ; Refuse offer. $8BCE LD D,$2A ; Receive : 'map' (galacia is far) $8BD0 SET 5,(IX+$13) ; $8BD4 JP $8B0E ; ; Person Loeg, handle an offer. @label=Offer_HandleLoeg c$8BD7 LD E,$3B ; Offer : 'l-key' $8BD9 LD D,E ; Receive : 'l-key' back. $8BDA JP $8B0E ; ; Rooms Jump vector for each type. Called when entered. @label=Room_TypeJumpVector b$8BDD DEFW $8EED ; [0] Outside $8BDF DEFW $8EED ; [1] Seller $8BE1 DEFW $8EED ; [2] Broker $8BE3 DEFW $8EED ; [3] Deposit $8BE5 DEFW $8EEE ; [4] Castle, combination lock room. $8BE7 DEFW $8F43 ; [5] Iomain Ludum $8BE9 DEFW $9109 ; [6] Shield Room $8BEB DEFW $9132 ; [7] Gallery $8BED DEFW $917A ; [8] Castle $8BEF DEFW $917A ; [9] Bank $8BF1 DEFW $917A ; [A] Portal $8BF3 DEFW $917A ; [B] Broker ; Room Call all of the room events. ; ; Used by the routine at #R$9F13. @label=Room_Events c$8BF5 LD HL,($B178) ; Get current room's special function and call it. $8BF8 LD H,$00 ; $8BFA ADD HL,HL ; $8BFB LD DE,$8BDD ; $8BFE ADD HL,DE ; $8BFF LD E,(HL) ; $8C00 INC HL ; $8C01 LD H,(HL) ; $8C02 LD L,E ; $8C03 CALL $7907 ; $8C06 LD IX,$B133 ; Get ptr to link list. @label=Room_Events_0 *$8C0A LD L,(IX+$00) ; Get address of next link. $8C0D LD H,(IX+$01) ; $8C10 LD A,L ; check for null ptr, end of list. $8C11 OR H ; $8C12 RET Z ; $8C13 PUSH HL ; Put address of link into IX, putting the previous address on the stack. $8C14 EX (SP),IX ; $8C16 LD A,(IX+$02) ; Check for unsed link and remove it if required. $8C19 AND A ; $8C1A JR NZ,$8C21 ; $8C1C CALL $ACC0 ; $8C1F JR $8C0A ; Next link. @label=Room_Events_1 *$8C21 LD L,(IX+$03) ; Call store special function. $8C24 LD H,(IX+$04) ; $8C27 CALL $7907 ; $8C2A POP HL ; Remove old link address from stack. $8C2B JR $8C0A ; Next link. ; Create a door opening / closing event. ; ; Used by the routine at #R$85AE. Creates an event for opening the door which will be called. @label=Event_CreateDoor c$8C2D CALL $AC93 ; Set up some memory $8C30 RET Z ; No memory left. $8C31 LD HL,$B0EA ; Increase door event count $8C34 INC (HL) ; $8C35 LD HL,$8CFE ; Store the function to use. $8C38 LD (IX+$03),L ; $8C3B LD (IX+$04),H ; $8C3E LD A,($B180) ; Store the type of door. $8C41 LD (IX+$02),A ; $8C44 LD DE,($B17E) ; Set the coords based on position and camera. $8C48 LD HL,($B15A) ; $8C4B LD A,($B160) ; $8C4E LD (IX+$0A),A ; $8C51 BIT 0,A ; $8C53 JR Z,$8C59 ; $8C55 LD HL,($B15C) ; $8C58 EX DE,HL ; @label=Event_CreateDoor_0 *$8C59 LD (IX+$05),L ; $8C5C LD (IX+$06),H ; $8C5F LD (IX+$07),E ; $8C62 LD (IX+$08),D ; $8C65 LD (IX+$09),$10 ; $8C69 LD A,($B16D) ; Store room (?) $8C6C LD (IX+$0C),A ; $8C6F OR $01 ; Return (true) $8C71 RET ; ; Create a door bitmap for opening / closing animation. ; ; Used by the routine at #R$8CFE. Input: A Door animation frame index. IX Door information Blits inner 'door' ; part of door image to memory. Memory image if shifted for 4 pixel animation. @label=Door_CreateBitmap c$8C72 PUSH AF ; $8C73 LD L,(IX+$02) ; Calculate address of bitmap info from index. $8C76 LD H,$00 ; $8C78 ADD HL,HL ; $8C79 ADD HL,HL ; $8C7A LD DE,$BB8C ; $8C7D ADD HL,DE ; $8C7E LD E,(HL) ; Get address of bitmap. $8C7F INC HL ; $8C80 LD D,(HL) ; $8C81 LD HL,$0029 ; Offset to miss out the door frame part of image. $8C84 ADD HL,DE ; $8C85 LD DE,$5B00 ; Use spare memory for blitting to. $8C88 CP $02 ; $8C8A JR NC,$8C9B ; ; Door fully closed. $8C8C LD C,$C0 ; @label=Door_CreateBitmap_0 *$8C8E LDI ; Blit two columns $8C90 LDI ; $8C92 LDI ; $8C94 INC HL ; Skip two columns (door frame) $8C95 INC HL ; $8C96 DEC C ; $8C97 JR NZ,$8C8E ; $8C99 JR $8CD3 ; @label=Door_CreateBitmap_1 *$8C9B CP $04 ; $8C9D JR NC,$8CB1 ; ; Door one third open. $8C9F LD C,$90 ; $8CA1 LD A,$FF ; @label=Door_CreateBitmap_2 *$8CA3 INC HL ; $8CA4 LDI ; Blit two columns $8CA6 LDI ; $8CA8 LD (DE),A ; Blit blank column $8CA9 INC DE ; $8CAA INC HL ; Skip two columns $8CAB INC HL ; $8CAC DEC C ; $8CAD JR NZ,$8CA3 ; $8CAF JR $8CD3 ; @label=Door_CreateBitmap_3 *$8CB1 CP $06 ; $8CB3 JR NC,$8CC8 ; ; Door two thirds open. $8CB5 LD C,$60 ; $8CB7 LD A,$FF ; @label=Door_CreateBitmap_4 *$8CB9 INC HL ; Skip two columns $8CBA INC HL ; $8CBB LDI ; Blit one column $8CBD LD (DE),A ; Blank two columns $8CBE INC DE ; $8CBF LD (DE),A ; $8CC0 INC DE ; $8CC1 INC HL ; Skip two columns $8CC2 INC HL ; $8CC3 DEC C ; $8CC4 JR NZ,$8CB9 ; $8CC6 JR $8CD3 ; ; Door fully open. @label=Door_CreateBitmap_5 *$8CC8 LD HL,$5B00 ; Blank image. $8CCB INC DE ; $8CCC LD (HL),$FF ; $8CCE LD BC,$008F ; $8CD1 LDIR ; ; Determine inbetween frame. @label=Door_CreateBitmap_6 *$8CD3 POP AF ; Get back animation count $8CD4 BIT 0,A ; If the frame index is even, finish. $8CD6 RET Z ; $8CD7 LD HL,$5B8F ; If the frame index is odd, shift the image 4 pixels. $8CDA LD B,$30 ; ; Shift door by a nibble @label=Door_CreateBitmap_7 *$8CDC LD A,$FF ; $8CDE RLD ; $8CE0 DEC HL ; $8CE1 RLD ; $8CE3 DEC HL ; $8CE4 RLD ; $8CE6 DEC HL ; $8CE7 DJNZ $8CDC ; @label=Door_PreFrameTable $8CE9 RET ; ; Door Table of animation frames for door. @label=Door_FrameTable b$8CEA DEFB $00,$01,$02,$03,$04,$05,$06,$06 $8CF2 DEFB $06,$06,$06,$05,$04,$03,$02,$01 $8CFA DEFB $00,$00,$00 ; Routine at 8CFD @label=_8cfd c$8CFD RST $38 ; ; Event Door opening or closing. @label=EventDoorOpenClose c$8CFE INC (IX+$0D) ; Door animation counter $8D01 LD E,(IX+$0D) ; Use counter as index to table for the next animation frames. $8D04 LD D,$00 ; $8D06 LD HL,$8CE9 ; $8D09 ADD HL,DE ; $8D0A LD A,(HL) ; Get frame $8D0B CP $FF ; $8D0D JR NZ,$8D22 ; ; Event Complete $8D0F LD (IX+$02),$00 ; Mark event object as finished. $8D13 LD HL,$B0EA ; $8D16 DEC (HL) ; $8D17 LD A,(IX+$0E) ; $8D1A AND A ; $8D1B RET NZ ; $8D1C LD HL,$B19A ; $8D1F SET 2,(HL) ; $8D21 RET ; @label=EventDoorOpenClose_0 *$8D22 CP $06 ; $8D24 JR NZ,$8D34 ; $8D26 LD A,(IX+$0E) ; Door fully open... $8D29 AND A ; $8D2A JR NZ,$8D34 ; $8D2C LD A,($B19A) ; $8D2F SET 1,A ; $8D31 LD ($B19A),A ; @label=EventDoorOpenClose_1 *$8D34 LD A,($B16D) ; $8D37 CP (IX+$0C) ; $8D3A RET NZ ; $8D3B LD A,($B160) ; $8D3E CP (IX+$0A) ; $8D41 RET NZ ; $8D42 LD C,L ; Keep a copy of the frame index table ptr. $8D43 LD B,H ; $8D44 BIT 0,A ; $8D46 JR NZ,$8D60 ; $8D48 LD HL,($B15A) ; $8D4B LD E,(IX+$05) ; $8D4E LD D,(IX+$06) ; $8D51 AND A ; $8D52 SBC HL,DE ; $8D54 RET NZ ; $8D55 LD HL,($B15C) ; $8D58 LD E,(IX+$07) ; $8D5B LD D,(IX+$08) ; $8D5E JR $8D76 ; @label=EventDoorOpenClose_2 *$8D60 LD HL,($B15C) ; $8D63 LD E,(IX+$07) ; $8D66 LD D,(IX+$08) ; $8D69 AND A ; $8D6A SBC HL,DE ; $8D6C RET NZ ; $8D6D LD HL,($B15A) ; $8D70 LD E,(IX+$05) ; $8D73 LD D,(IX+$06) ; @label=EventDoorOpenClose_3 *$8D76 CALL $AC5A ; $8D79 LD DE,$0023 ; $8D7C AND A ; $8D7D SBC HL,DE ; $8D7F RET NC ; $8D80 LD A,(IX+$02) ; $8D83 CP $94 ; $8D85 RET NC ; $8D86 LD A,(BC) ; Create bitmap based on animation count. $8D87 CALL $8C72 ; $8D8A LD HL,$5B00 ; Create a bitmap info for an animated door. $8D8D LD ($BB8C),HL ; $8D90 LD A,$86 ; $8D92 LD ($BB8E),A ; $8D95 LD A,$03 ; $8D97 LD ($BB8F),A ; $8D9A LD A,$01 ; Blit image. $8D9C JP $A992 ; ; Sets up and blits the flame, if required. Input: IX Address of torch data. @label=Bg_TorchBlitFlame c$8D9F LD A,($B160) ; Make sure the camera is facing the torch, if not end routine. $8DA2 CP (IX+$0A) ; $8DA5 JR Z,$8DAC ; @label=Bg_TorchBlitFlame_0 *$8DA7 LD (IX+$02),$00 ; End. $8DAB RET ; @label=Bg_TorchBlitFlame_1 *$8DAC LD HL,($B15A) ; Get correct coords of camera, along the expected axis (based on compass). $8DAF BIT 0,A ; $8DB1 JR NZ,$8DB6 ; $8DB3 LD HL,($B15C) ; @label=Bg_TorchBlitFlame_2 *$8DB6 LD E,(IX+$05) ; Get coords of torch. $8DB9 LD D,(IX+$06) ; $8DBC BIT 1,A ; $8DBE JR NZ,$8DC1 ; $8DC0 EX DE,HL ; @label=Bg_TorchBlitFlame_3 *$8DC1 AND A ; Get difference between the two to see if torch is on screen. $8DC2 SBC HL,DE ; $8DC4 LD DE,$0021 ; $8DC7 AND A ; $8DC8 ADC HL,DE ; $8DCA JR Z,$8DA7 ; Not visible. $8DCC JP M,$8DA7 ; $8DCF LD DE,$0042 ; $8DD2 AND A ; $8DD3 SBC HL,DE ; $8DD5 JR NC,$8DA7 ; $8DD7 ADD HL,DE ; $8DD8 SRL H ; Start with attributes and colour red. $8DDA RR L ; $8DDC LD DE,$5E24 ; $8DDF ADD HL,DE ; $8DE0 LD A,(HL) ; $8DE1 AND $F8 ; $8DE3 OR $02 ; $8DE5 LD (HL),A ; $8DE6 INC HL ; $8DE7 LD (HL),A ; $8DE8 LD A,($B178) ; Only outside, room 0, displays torches that toggle for day and night. Indoors stay on all ; the time. $8DEB AND A ; $8DEC JR NZ,$8E03 ; $8DEE LD A,($B0D6) ; Check for night time. $8DF1 AND A ; $8DF2 JR NZ,$8DFF ; $8DF4 LD A,(IX+$0B) ; Test for fire frame. $8DF7 CP $15 ; $8DF9 JR NZ,$8E03 ; $8DFB LD A,$A2 ; Set to fire bitmap index. $8DFD JR $8E08 ; @label=Bg_TorchBlitFlame_4 *$8DFF LD A,$15 ; Blank, no fire. $8E01 JR $8E08 ; @label=Bg_TorchBlitFlame_5 *$8E03 LD A,(IX+$0B) ; Toggle fire frame $8E06 XOR $01 ; @label=Bg_TorchBlitFlame_6 *$8E08 LD (IX+$0B),A ; $8E0B LD (IX+$09),$08 ; $8E0F LD A,$01 ; Set node data object type flag for blit function. $8E11 JP $A992 ; Blit... ; Main text for the gambling room. @label=Msg_DiceStake b$8E14 DEFM "dice, min.stake: 200+a:+b:" $8E2E DEFB $16 $8E2F DEFB $02 $8E30 DEFB $09 $8E31 DEFB $5E ; Displays text required based on amount staked. ; ; Used by the routine at #R$8F43. @label=Gamble_DisplayStakes c$8E32 LD HL,$8E14 ; Display the main part of the text $8E35 CALL $AD54 ; $8E38 LD HL,($B0EE) ; See if there is any bets placed in 'A'. $8E3B LD DE,($B0F0) ; $8E3F AND A ; $8E40 ADC HL,DE ; $8E42 JR NZ,$8E5E ; $8E44 CALL $AD1A ; If no bets, display the winning values for 'A'. ; Data block at 8E47 b$8E47 DEFM "2-1 2,3,4,10,11,12" $8E5B DEFB $5E ; Routine at 8E5C c$8E5C JR $8E6C ; ; This entry point is used by the routine at #R$8E32. @label=Gamble_DisplayStakes_0 *$8E5E LD HL,$B0EE ; Else display how much has been placed on 'A'. $8E61 CALL $ADFB ; $8E64 CALL $AD1A ; ; Data block at 8E67 b$8E67 DEFM " bet" $8E6B DEFB $5E ; Routine at 8E6C ; ; Used by the routine at #R$8E5C. @label=Gamble_DisplayStakes_1 c$8E6C CALL $AD1A ; ; Data block at 8E6F b$8E6F DEFB $16 $8E70 DEFB $03 $8E71 DEFB $09 $8E72 DEFB $5E ; Routine at 8E73 c$8E73 LD HL,($B0F2) ; See if anything has been placed onto 'B' $8E76 LD DE,($B0F4) ; $8E7A AND A ; $8E7B ADC HL,DE ; $8E7D JR NZ,$8E91 ; $8E7F CALL $AD1A ; If no bets, display the winning values for 'B'. ; Data block at 8E82 b$8E82 DEFM "evens 5,6,8,9" $8E8F DEFB $5E ; Routine at 8E90 c$8E90 RET ; ; This entry point is used by the routine at #R$8E73. @label=Gamble_DisplayStakes_2 *$8E91 LD HL,$B0F2 ; Else display amount. $8E94 CALL $ADFB ; $8E97 CALL $AD1A ; ; Data block at 8E9A b$8E9A DEFM " bet" $8E9E DEFB $5E ; Routine at 8E9F c$8E9F RET ; ; Blit a character offset in the vertical axis. ; ; Used by the routines at #R$8EEE and #R$8F43. Input: IX Ptr to sprite info When offset, the blit continues onto ; the next character. @label=char_BlitScrolledVert c$8EA0 LD A,($B160) ; See if visible based on camera direction. $8EA3 CP $01 ; $8EA5 RET NZ ; $8EA6 PUSH DE ; $8EA7 PUSH HL ; $8EA8 LD L,(IX+$00) ; Get character to blit. $8EAB LD H,$00 ; Convert into bitmap address. $8EAD ADD HL,HL ; $8EAE ADD HL,HL ; $8EAF ADD HL,HL ; $8EB0 LD E,(IX+$04) ; Get scan offset $8EB3 LD D,$00 ; $8EB5 ADD HL,DE ; $8EB6 LD DE,$FC00 ; $8EB9 ADD HL,DE ; $8EBA LD ($BB8C),HL ; Store in bitmap info scratchpad. $8EBD LD E,(IX+$07) ; Calculate position on screen and see if visible. $8EC0 LD D,(IX+$08) ; $8EC3 LD HL,($B15C) ; $8EC6 AND A ; $8EC7 SBC HL,DE ; $8EC9 JR NZ,$8EEA ; $8ECB LD E,(IX+$05) ; $8ECE LD D,(IX+$06) ; $8ED1 LD HL,($B15A) ; $8ED4 CALL $AC5A ; $8ED7 LD DE,$0021 ; $8EDA AND A ; $8EDB SBC HL,DE ; $8EDD JR NC,$8EEA ; $8EDF LD A,$01 ; Store bitmap size into scatchpad. $8EE1 LD ($BB8F),A ; $8EE4 LD ($BB8E),A ; $8EE7 CALL $A992 ; Blit at correct position on screen. @label=char_BlitScrolledVert_0 *$8EEA POP HL ; $8EEB POP DE ; $8EEC RET ; ; Room handler, does nothing. @label=Room_Null c$8EED RET ; ; Room handler for the Castle combination lock room. ; ; This is the room with the rotating letters that act as a comination lock in the Castle. @label=Room_CastleLock c$8EEE LD HL,($B16E) ; Gets a pointer to the store holding the three characters being displayed. $8EF1 LD DE,$0009 ; $8EF4 ADD HL,DE ; $8EF5 LD DE,($B170) ; Get a pointer to the current room info. $8EF9 LD IX,$BB3E ; Data used to rotate and display the letters. $8EFD LD B,$03 ; Three roating letter locks to handle. @label=Room_CastleLock_0 *$8EFF PUSH BC ; $8F00 INC DE ; Move room pointer onto next object in the room. $8F01 LD A,(IX+$03) ; Get counter $8F04 CP $0D ; $8F06 JR NC,$8F0E ; $8F08 LD A,(DE) ; See if an object has been placed on a locks plinth. $8F09 AND A ; $8F0A LD A,$00 ; $8F0C JR NZ,$8F2F ; ; No object on plinth. @label=Room_CastleLock_1 *$8F0E LD A,(IX+$03) ; Increase counter if there is no object to stop the lock rotating. $8F11 INC A ; $8F12 CP $14 ; $8F14 JR C,$8F25 ; Less than $14, $8F16 LD A,(HL) ; Get the next letter to rotate to. $8F17 INC A ; $8F18 CP $7B ; check to see if we have reached 'Z' $8F1A JR C,$8F1E ; $8F1C LD A,$61 ; Reset to 'A' if reached. @label=Room_CastleLock_2 *$8F1E LD (HL),A ; and store new letter value. $8F1F XOR A ; $8F20 LD (IX+$04),A ; Reset bitmap offset counter. $8F23 JR $8F2F ; ; Rotate letter image. @label=Room_CastleLock_3 *$8F25 CP $11 ; Only rotate letter if the counter if $11 or more. $8F27 JR C,$8F2F ; $8F29 INC (IX+$04) ; Increase bitmap offset to rotate the letter image. $8F2C INC (IX+$04) ; @label=Room_CastleLock_4 *$8F2F LD (IX+$03),A ; Store new counter value. $8F32 LD A,(HL) ; Get current letter value, store in sprite info and draw the letter. $8F33 LD (IX+$00),A ; $8F36 CALL $8EA0 ; $8F39 LD BC,$000C ; Shift onto next lock information. $8F3C ADD IX,BC ; $8F3E INC HL ; $8F3F POP BC ; $8F40 DJNZ $8EFF ; $8F42 RET ; ; Handle the dice in the gambling room. @label=Room_jvGambling c$8F43 LD HL,$0200 ; $8F46 LD ($B0EC),HL ; $8F49 LD IX,$BB62 ; $8F4D LD HL,$B0EB ; $8F50 LD A,(HL) ; $8F51 AND A ; $8F52 JR NZ,$8FB0 ; ; Restart the game cycle. $8F54 LD ($B11D),A ; $8F57 LD HL,$BB7A ; $8F5A LD (HL),$FF ; $8F5C LD DE,$BB7B ; $8F5F LD BC,$0007 ; $8F62 LDIR ; $8F64 CALL $AD1F ; ; Data block at 8F67 b$8F67 DEFM "place your bets" $8F76 DEFB $5E ; Update state counter. ; ; Used by the routines at #R$8FC9, #R$9094, #R$90D6 and #R$9106. @label=Room_jvGambling_0 c$8F77 LD HL,$B0EB ; $8F7A INC (HL) ; ; Draw dice. @label=Room_jvGambling_1 *$8F7B LD IX,$BB62 ; $8F7F LD B,$02 ; @label=Room_jvGambling_2 *$8F81 PUSH BC ; $8F82 CALL $8EA0 ; $8F85 LD BC,$000C ; $8F88 ADD IX,BC ; $8F8A POP BC ; $8F8B DJNZ $8F81 ; $8F8D LD HL,$B0EE ; $8F90 LD DE,$BB7A ; $8F93 LD BC,$0008 ; $8F96 LD A,($7F6E) ; $8F99 AND A ; $8F9A JR NZ,$8FA7 ; @label=Room_jvGambling_3 *$8F9C LD A,(DE) ; $8F9D CP (HL) ; $8F9E JP NZ,$8FA7 ; $8FA1 INC HL ; $8FA2 INC DE ; $8FA3 DEC C ; $8FA4 JR NZ,$8F9C ; $8FA6 RET ; @label=Room_jvGambling_4 *$8FA7 LDIR ; $8FA9 XOR A ; $8FAA LD ($7F6E),A ; $8FAD JP $8E32 ; ; Game cycle. @label=Room_jvGambling_5 *$8FB0 CP $50 ; $8FB2 JR C,$8F77 ; < $50, "place bets" mode, just update. $8FB4 JR NZ,$8FE6 ; > $50,other modes $8FB6 LD ($B11D),A ; ; No more bets mode. $8FB9 CALL $AD1F ; ; Data block at 8FBC b$8FBC DEFM "no more bets" $8FC8 DEFB $5E ; Routine at 8FC9 c$8FC9 LD A,($B11E) ; Put random value into role countdown for both dice. $8FCC ADD A,(IY+$3E) ; $8FCF LD B,A ; $8FD0 AND $0F ; $8FD2 ADD A,$12 ; $8FD4 LD (IX+$03),A ; $8FD7 LD A,B ; $8FD8 RRA ; $8FD9 RRA ; $8FDA RRA ; $8FDB RRA ; $8FDC AND $0F ; $8FDE ADD A,$12 ; $8FE0 LD (IX+$0F),A ; $8FE3 JP $8F77 ; ; This entry point is used by the routine at #R$8F77. @label=Room_jvGambling_6 *$8FE6 CP $53 ; $8FE8 JR NC,$9022 ; $8FEA PUSH IX ; $8FEC LD B,$02 ; Two dice. @label=Room_jvGambling_7 *$8FEE LD A,(IX+$03) ; Check countdown for dice. $8FF1 AND A ; $8FF2 JR Z,$9016 ; Skip if hit zero. $8FF4 LD A,(IX+$04) ; Increase offset by 2 $8FF7 ADD A,$02 ; $8FF9 CP $08 ; Until it gets to 8, move onto the next character. $8FFB JR C,$9013 ; $8FFD LD A,(IX+$00) ; $9000 INC A ; $9001 CP (IX+$02) ; Check to see if the current character is out of bounds and reset back to the first. $9004 JR C,$9009 ; $9006 LD A,(IX+$01) ; @label=Room_jvGambling_8 *$9009 LD (IX+$00),A ; Update current character. $900C DEC (IX+$03) ; Count down. $900F JR NZ,$9012 ; $9011 INC (HL) ; Increase current mode to show this dice has stopped. @label=Room_jvGambling_9 *$9012 XOR A ; Reset bitmap offset so that full dice face is shown. @label=Room_jvGambling_10 *$9013 LD (IX+$04),A ; @label=Room_jvGambling_11 *$9016 LD DE,$000C ; Move onto next dice. $9019 ADD IX,DE ; $901B DJNZ $8FEE ; $901D POP IX ; Get first dice info address. $901F JP $8F7B ; @label=Room_jvGambling_12 *$9022 CP $5A ; $9024 JP NZ,$8F77 ; ; Display results $9027 XOR A ; $9028 LD ($B11D),A ; $902B LD (HL),$D7 ; Clear message line. $902D CALL $AD1F ; ; Data block at 9030 b$9030 DEFB $5E ; Routine at 9031 c$9031 LD A,(IX+$00) ; $9034 ADD A,(IX+$0C) ; $9037 SUB $A0 ; $9039 PUSH AF ; Display the value. $903A LD C,A ; $903B LD B,$00 ; $903D CALL $1A1B ; $9040 CALL $AD1A ; ; Data block at 9043 b$9043 DEFM ": " $9045 DEFB $5E ; Routine at 9046 c$9046 POP AF ; $9047 CP $07 ; $9049 JP Z,$90E4 ; $904C CP $05 ; $904E JR C,$9057 ; $9050 CP $0A ; $9052 JR NC,$9057 ; $9054 JP $90A3 ; ; Check for 'A' winning. @label=Room_Gambling_CheckA *$9057 CALL $AE46 ; See if stake 'A' holds any money. ; Data block at 905A b$905A DEFW $B0EE $905C DEFB $04 ; Routine at 905D c$905D JP Z,$90E4 ; $9060 LD HL,$B0EE ; '2:1' Add double the amount staked into winnings. $9063 LD DE,$BB88 ; $9066 LD BC,$0004 ; $9069 LDIR ; $906B LD HL,$BB88 ; $906E LD DE,$BB88 ; $9071 CALL $ADBA ; $9074 LD HL,$B0EE ; $9077 LD DE,$BB88 ; $907A CALL $ADBA ; $907D CALL $AD1A ; Display message. ; Data block at 9080 b$9080 DEFM "a wins " $9087 DEFB $5E ; Routine at 9088 c$9088 LD HL,$BB88 ; Along with the new amount. $908B CALL $ADFB ; $908E CALL $AE36 ; Clear stake 'B' ; Data block at 9091 b$9091 DEFW $B0F2 $9093 DEFB $04 ; Routine at 9094 c$9094 LD HL,($B170) ; Update the background. $9097 INC HL ; $9098 INC HL ; $9099 LD A,(HL) ; $909A LD (HL),$00 ; $909C AND A ; $909D CALL NZ,$7EED ; $90A0 JP $8F77 ; ; Check for 'B' winning. @label=Room_Gambling_CheckB *$90A3 CALL $AE46 ; See if stake 'B' is zero. ; Data block at 90A6 b$90A6 DEFW $B0F2 ; Ptr to stake 'B' $90A8 DEFB $04 ; number ofbytes to test. ; Routine at 90A9 c$90A9 JR Z,$90E4 ; $90AB LD HL,$B0F2 ; 'evens' : Double the amount in the stake. $90AE LD DE,$BB88 ; $90B1 LD BC,$0004 ; $90B4 LDIR ; $90B6 LD HL,$B0F2 ; $90B9 LD DE,$BB88 ; $90BC CALL $ADBA ; $90BF CALL $AD1A ; Display message. ; Data block at 90C2 b$90C2 DEFM "b wins " $90C9 DEFB $5E ; Routine at 90CA c$90CA LD HL,$BB88 ; $90CD CALL $ADFB ; Display updated stake. $90D0 CALL $AE36 ; Clear stake 'A'. ; Data block at 90D3 b$90D3 DEFW $B0EE $90D5 DEFB $04 ; Routine at 90D6 c$90D6 LD HL,($B170) ; Update the background. $90D9 INC HL ; $90DA LD A,(HL) ; $90DB LD (HL),$00 ; $90DD AND A ; $90DE CALL NZ,$7EED ; $90E1 JP $8F77 ; ; House Wins @label=Room_Gambling_HouseWins *$90E4 CALL $AE36 ; Clear all stakes. ; Data block at 90E7 b$90E7 DEFW $B0EE ; Ptr to stake that lost. $90E9 DEFB $08 ; Routine at 90EA c$90EA LD HL,($B170) ; Redraw the background. $90ED INC HL ; $90EE LD A,(HL) ; $90EF LD (HL),$00 ; $90F1 INC HL ; $90F2 OR (HL) ; $90F3 LD (HL),$00 ; $90F5 CALL NZ,$7EED ; $90F8 CALL $AD1A ; Display the message. ; Data block at 90FB b$90FB DEFM "house wins" $9105 DEFB $5E ; Routine at 9106 c$9106 JP $8F77 ; ; Room jump vector, @label=Room_jvC c$9109 LD IX,($B170) ; $910D LD A,(IX+$01) ; $9110 AND $7F ; $9112 RET Z ; $9113 XOR (IX+$04) ; $9116 RET NZ ; $9117 LD (IX+$03),A ; $911A LD A,(IX+$02) ; $911D LD (IX+$01),A ; $9120 LD HL,($B16E) ; $9123 LD DE,$0007 ; $9126 ADD HL,DE ; $9127 LD DE,$B105 ; $912A LD BC,$0003 ; $912D LDIR ; $912F JP $7EED ; ; Room handler for Galleries. @label=Room_GalleryHandler c$9132 LD IX,($B170) ; Get data for current room. $9136 LD A,(IX+$01) ; See if there is an object on the one object placement plinth. $9139 AND $7F ; Do nothing if not. $913B RET Z ; $913C LD B,$04 ; $913E LD HL,$B0FD ; Address of pictures character matrix. @label=Room_GalleryHandler_0 *$9141 CP (IX+$04) ; See if object on the plinth matches a picture's object. $9144 JR Z,$9152 ; $9146 LD DE,$0003 ; $9149 ADD IX,DE ; $914B LD DE,$0009 ; $914E ADD HL,DE ; $914F DJNZ $9141 ; $9151 RET ; Object not found in pictures, ignore it. ; Object found. @label=Room_GalleryHandler_1 *$9152 LD A,(IX+$05) ; Replace character being displayed. $9155 LD (HL),A ; $9156 LD (IX+$03),$00 ; Reset character displayed in room data to show correct object has been placed. $915A LD IX,($B170) ; $915E LD (IX+$01),$00 ; Clear object on plinth $9162 LD A,(IX+$03) ; See if all objects have been placed. $9165 OR (IX+$06) ; $9168 OR (IX+$09) ; $916B OR (IX+$0C) ; $916E JP NZ,$7EED ; $9171 LD A,(IX+$02) ; Get index of reward object and place on plinth. $9174 LD (IX+$01),A ; $9177 JP $7EED ; ; Room jump vector, NULL @label=Room_jvNull2 c$917A RET ; ; Background Draw a single column of a furniture bitmap. ; ; Used by the routine at #R$969A. @label=Bg_DrawItemColumn c$917B LD ($5BE0),HL ; $917E LD L,(IX+$02) ; $9181 CALL $ACDD ; $9184 LD HL,($5BE0) ; $9187 LD A,($B12F) ; $918A AND $7F ; $918C RLA ; $918D RLA ; $918E RLA ; $918F LD E,A ; $9190 LD D,$00 ; $9192 ADD HL,DE ; $9193 EX DE,HL ; $9194 LD HL,$0050 ; $9197 AND A ; $9198 SBC HL,DE ; $919A RET C ; $919B ADD HL,HL ; $919C LD E,L ; $919D LD D,H ; $919E ADD HL,HL ; $919F ADD HL,HL ; $91A0 ADD HL,HL ; $91A1 ADD HL,HL ; $91A2 ADD HL,DE ; $91A3 LD DE,($968D) ; $91A7 ADD HL,DE ; $91A8 LD ($968F),HL ; $91AB LD E,(IX+$00) ; $91AE LD D,(IX+$01) ; $91B1 LD HL,($B15C) ; $91B4 LD A,($B160) ; $91B7 BIT 0,A ; $91B9 JR Z,$91BE ; $91BB LD HL,($B15A) ; @label=Bg_DrawItemColumn_0 *$91BE CALL $AC5A ; $91C1 EX DE,HL ; $91C2 LD A,($B130) ; $91C5 AND $7F ; $91C7 LD L,A ; $91C8 LD H,$00 ; $91CA LD A,($B162) ; $91CD CP $02 ; $91CF JR Z,$91DD ; ; Moving left. $91D1 EX DE,HL ; Calculate which bit of bitmap if visible. $91D2 AND A ; $91D3 SBC HL,DE ; $91D5 EX DE,HL ; $91D6 LD HL,$0020 ; $91D9 SBC HL,DE ; $91DB JR $91E4 ; ; Moving right. @label=Bg_DrawItemColumn_1 *$91DD ADD HL,DE ; Calculate which bit of bitmap if visible. $91DE LD DE,$0022 ; $91E1 AND A ; $91E2 SBC HL,DE ; @label=Bg_DrawItemColumn_2 *$91E4 SRL H ; $91E6 RR L ; $91E8 EX DE,HL ; ; Blit a single 8 pixel column of a bitmap, held in the bitmap info cache. ; #TABLE(default,centre,:w) ; { DE | Byte / Column offset of bitmap pixels, to start from. } ; TABLE# @label=Bitmap_DrawColumn *$91E9 LD BC,($B12D) ; Get the address of the bitmap and offset to the correct column for blitting. $91ED EX DE,HL ; $91EE ADD HL,BC ; $91EF PUSH HL ; $91F0 EX (SP),IX ; $91F2 LD HL,($968F) ; Get the address of where to blit too. $91F5 LD A,($B12F) ; $91F8 AND $7F ; $91FA EX AF,AF' ; Calculate number of bytes to skip for each bitmap row. $91FB LD A,($B130) ; $91FE AND $7F ; $9200 LD C,A ; $9201 LD B,$00 ; $9203 LD DE,$0022 ; Width of offscreen. $9206 EX AF,AF' ; Calculate height in pixels. $9207 AND A ; $9208 RLA ; $9209 RLA ; $920A RLA ; @label=Bg_DrawItemColumn_3 *$920B EX AF,AF' ; $920C LD A,(IX+$00) ; Get byte and mask out shape from background. $920F XOR (HL) ; $9210 LD (HL),A ; $9211 ADD HL,DE ; Next line down. $9212 ADD IX,BC ; Skip rest of bitmap for that row. $9214 EX AF,AF' ; $9215 DEC A ; Next row. $9216 JR NZ,$920B ; $9218 POP IX ; $921A RET ; ; Routine at 921B ; ; Used by the routine at #R$969A. c$921B LD C,A ; $921C LD B,$00 ; $921E LD L,(IX+$00) ; $9221 LD H,(IX+$01) ; $9224 RES 7,H ; $9226 SBC HL,BC ; $9228 LD E,L ; $9229 LD D,H ; $922A ADD HL,BC ; $922B ADD HL,BC ; $922C LD C,L ; $922D LD B,H ; $922E LD HL,($9689) ; $9231 SBC HL,BC ; $9233 JR NC,$923E ; $9235 LD HL,($968B) ; $9238 SCF ; $9239 SBC HL,DE ; $923B RET C ; $923C AND A ; $923D RET ; *$923E SCF ; $923F RET ; ; Draws a pair of digits onto a door. ; ; Each bitmap holds two digits. Input: A Door number. L Index of bitmap to blit digit too. @label=Door_DrawDigits c$9240 PUSH IX ; $9242 PUSH BC ; $9243 PUSH HL ; ; Calculate 'unit' and 'tens' value of digit. $9244 LD B,$FF ; @label=Door_DrawDigits_0 *$9246 INC B ; $9247 SUB $0A ; $9249 JR NC,$9246 ; $924B ADD A,$0A ; $924D LD C,A ; $924E LD HL,($BED8) ; $9251 LD E,C ; $9252 LD D,$00 ; $9254 SRL E ; $9256 ADD HL,DE ; ; Copy left hand digit into memory. $9257 LD IX,$5BE0 ; $925B LD DE,$0005 ; $925E PUSH BC ; $925F LD B,$08 ; Number of scans to copy. @label=Door_DrawDigits_1 *$9261 LD A,(HL) ; Get next scan in bitmap $9262 BIT 0,C ; Odd character or even digit. $9264 JR NZ,$926A ; $9266 RRA ; Even characters need shift to the right half of character cell. $9267 RRA ; $9268 RRA ; $9269 RRA ; @label=Door_DrawDigits_2 *$926A AND $0F ; Only need right hand nibble of bitmap. $926C LD (IX+$00),A ; Store result into memory $926F ADD HL,DE ; Next scan down. $9270 INC IX ; $9272 DJNZ $9261 ; ; Work out 'tens' digit. $9274 POP BC ; $9275 LD A,B ; $9276 AND A ; $9277 JR Z,$92A5 ; $9279 LD C,B ; $927A LD E,B ; $927B LD HL,($BED8) ; $927E LD D,$00 ; $9280 SRL E ; $9282 ADD HL,DE ; $9283 LD IX,$5BE0 ; Copy right hand digit. $9287 LD DE,$0005 ; $928A LD B,$08 ; @label=Door_DrawDigits_3 *$928C LD A,(HL) ; Get next bitmap scan. $928D BIT 0,C ; Check or odd or even digit. $928F JR Z,$9295 ; $9291 RLA ; Shift od digits to left hand column. $9292 RLA ; $9293 RLA ; $9294 RLA ; @label=Door_DrawDigits_4 *$9295 AND $F0 ; Only need left hand nibble. $9297 RLA ; Adjust and merge with previous digit. $9298 OR (IX+$00) ; $929B LD (IX+$00),A ; $929E ADD HL,DE ; Next scan. $929F INC IX ; $92A1 DJNZ $928C ; $92A3 JR $92B1 ; @label=Door_DrawDigits_5 *$92A5 LD B,$08 ; $92A7 LD HL,$5BE0 ; @label=Door_DrawDigits_6 *$92AA LD A,(HL) ; $92AB RLCA ; $92AC RLCA ; $92AD LD (HL),A ; $92AE INC HL ; $92AF DJNZ $92AA ; ; Copy digit to offset area of bitmap. @label=Door_DrawDigits_7 *$92B1 POP HL ; $92B2 CALL $ACDD ; $92B5 LD HL,($B12D) ; $92B8 LD DE,$0052 ; Offset of bitmap, where to place the digits. $92BB ADD HL,DE ; $92BC LD DE,$0005 ; $92BF LD IX,$5BE0 ; $92C3 LD B,$08 ; @label=Door_DrawDigits_8 *$92C5 LD A,(IX+$00) ; $92C8 LD (HL),A ; $92C9 INC IX ; $92CB ADD HL,DE ; $92CC DJNZ $92C5 ; $92CE POP BC ; $92CF POP IX ; $92D1 RET ; ; Data block at 92D2 @label=Data_Stack b$92D2 DEFW $0000 ; Temp store for SP (stack). @label=Bg_DoorNumber $92D4 DEFB $00 ; Next door number. $92D5 DEFB $00 @label=Bg_ColumnsLeft $92D6 DEFW $0000 ; Number of columns left when running through background data. 1 columns = 8 pixels of an ; object. @label=_92d8_ReverseBit $92D8 DEFB $00 $92D9 DEFW $0000 $92DB DEFB $00,$00 @label=_NextBlock $92DD DEFW $0000 ; Address of the extra data block for background data type '0'. @label=_NextSignText $92DF DEFW $0000 ; Address of the next index for sign text. $92E1 DEFW $0000 $92E3 DEFW $0000 ; BG Draw correct part of a background item at a given column. ; ; Used by the routine at #R$969A. Input: IX 5 byte data struct ptr. Prepares and Draws the background furniture by ; walking through the description string until it finds the correct item in the expected column. Any objects that ; require preperation is handle here, such as adding the street name to a sign. @label=Bg_CalcAndDraw c$92E5 LD ($92D2),SP ; $92E9 BIT 7,(IX+$01) ; $92ED JR NZ,$9322 ; $92EF LD A,(IX+$04) ; $92F2 LD B,$02 ; $92F4 AND A ; $92F5 JP P,$9300 ; $92F8 LD B,$00 ; $92FA JR Z,$9300 ; $92FC NEG ; $92FE LD B,$FE ; @label=Bg_CalcAndDraw_0 *$9300 SUB B ; $9301 LD ($92D4),A ; $9304 LD A,B ; $9305 LD ($92D5),A ; $9308 PUSH IX ; Get start of next block. $930A POP HL ; $930B LD DE,$0005 ; $930E ADD HL,DE ; $930F LD ($92DD),HL ; $9312 LD A,(IX+$05) ; $9315 RRA ; $9316 RRA ; $9317 RRA ; $9318 RRA ; $9319 AND $0F ; $931B LD E,A ; $931C LD D,$00 ; $931E ADD HL,DE ; $931F LD ($92DF),HL ; @label=Bg_CalcAndDraw_1 *$9322 LD E,(IX+$00) ; Get map position of path. $9325 LD D,(IX+$01) ; $9328 RES 7,D ; $932A LD A,($B160) ; Based on compass get position for correct axis. $932D BIT 0,A ; $932F JR Z,$9336 ; $9331 LD HL,($B15A) ; $9334 JR $9339 ; @label=Bg_CalcAndDraw_2 *$9336 LD HL,($B15C) ; @label=Bg_CalcAndDraw_3 *$9339 BIT 1,A ; Workout difference between hero and path start. Camera and direction set calculations. $933B JR Z,$933E ; $933D EX DE,HL ; @label=Bg_CalcAndDraw_4 *$933E LD A,($B162) ; $9341 CP $02 ; $9343 JR Z,$9346 ; $9345 EX DE,HL ; @label=Bg_CalcAndDraw_5 *$9346 AND A ; $9347 SBC HL,DE ; $9349 LD E,(IX+$02) ; Length? $934C LD D,$00 ; $934E CP $02 ; $9350 JR Z,$935E ; $9352 AND A ; $9353 SBC HL,DE ; $9355 EX DE,HL ; $9356 LD HL,$0020 ; $9359 AND A ; $935A SBC HL,DE ; $935C JR $9365 ; @label=Bg_CalcAndDraw_6 *$935E ADD HL,DE ; $935F LD DE,$0022 ; $9362 AND A ; $9363 SBC HL,DE ; @label=Bg_CalcAndDraw_7 *$9365 SRL H ; Half the length to match 1 column of an item. $9367 RR L ; $9369 LD ($92D6),HL ; $936C XOR A ; $936D LD ($92D8),A ; $9370 LD A,(IX+$03) ; $9373 BIT 7,(IX+$01) ; $9377 JR Z,$9381 ; $9379 SUB $04 ; Calculate number of items to scan through. $937B LD C,A ; $937C LD DE,$0004 ; $937F JR $939D ; @label=Bg_CalcAndDraw_8 *$9381 SUB $06 ; Calculate number of items to scan through. $9383 LD C,A ; $9384 LD A,(IX+$05) ; Calculate start of description string. $9387 RRA ; $9388 RRA ; $9389 RRA ; $938A RRA ; $938B AND $0F ; $938D LD E,A ; $938E LD D,$00 ; $9390 LD A,(IX+$05) ; $9393 AND $0F ; $9395 LD L,A ; $9396 LD H,D ; $9397 ADD HL,DE ; $9398 LD DE,$0006 ; $939B ADD HL,DE ; $939C EX DE,HL ; @label=Bg_CalcAndDraw_9 *$939D ADD IX,DE ; Offset IX to start of description string. $939F LD B,$01 ; Set loop to draw 1 column. $93A1 JR $93AB ; ; _ @label=Bg_CalcAndDraw_10 *$93A3 LD IX,($92D9) ; $93A7 LD A,($92DB) ; $93AA LD C,A ; ; Walk description string. @label=Bg_CalcAndDraw_11 *$93AB PUSH BC ; Get index of object to draw and run a function based on upper bit and value. $93AC LD A,(IX+$00) ; $93AF BIT 7,A ; Handle if a control code. $93B1 JP Z,$94A8 ; $93B4 CP $FF ; $93B6 JP Z,$948C ; $93B9 CP $DD ; Handle sub-string code. $93BB JP NC,$9500 ; $93BE CP $82 ; $93C0 JP C,$959C ; $93C3 CP $92 ; $93C5 JR C,$93CC ; $93C7 CP $96 ; $93C9 JP C,$9588 ; ; This entry point is used by the routines at #R$9588 and #R$959C. @label=Bg_CalcAndDraw_12 *$93CC LD L,(IX+$00) ; Get item index and calculate address for bitmap's width. $93CF LD H,$00 ; $93D1 ADD HL,HL ; $93D2 ADD HL,HL ; $93D3 LD DE,$BB8F ; $93D6 ADD HL,DE ; $93D7 LD A,(HL) ; Get width and store. $93D8 LD E,A ; $93D9 RES 7,E ; Remove flag bit. $93DB LD D,$00 ; Convert into 16bit. $93DD LD HL,($92D6) ; Decrease object width from columns left. $93E0 AND A ; $93E1 SBC HL,DE ; $93E3 JR C,$93F7 ; ; This entry point is used by the routines at #R$948C and #R$94A8. @label=Bg_CalcAndDraw_13 *$93E5 LD ($92D6),HL ; $93E8 POP BC ; ; This entry point is used by the routines at #R$94A8 and #R$9500. @label=Bg_CalcAndDraw_14 *$93E9 DJNZ $93A3 ; ; Entry point used by sub-string draw. ; #TABLE(default,centre,:w) ; { =h ENTRY | =h } ; { C | Bytes in sub string } ; { IX | Ptr to sub-string } ; TABLE# @label=Bg_CalcAndDraw_15 *$93EB LD B,$01 ; $93ED XOR A ; Clear the reverse draw flag. $93EE LD ($92D8),A ; $93F1 DEC C ; Decrease the number of bytes left in string, ending if done. $93F2 RET Z ; $93F3 INC IX ; Move onto next byte in string. $93F5 JR $93AB ; ; __ @label=Bg_CalcAndDraw_16 *$93F7 LD D,A ; $93F8 LD A,($92D8) ; See if bit needs reversing. $93FB XOR D ; $93FC BIT 7,A ; $93FE JR Z,$9406 ; $9400 LD L,(IX+$00) ; $9403 CALL $9955 ; @label=Bg_CalcAndDraw_17 *$9406 LD A,(IX+$00) ; $9409 CP $82 ; Shop window with a sign. $940B JP C,$9615 ; $940E CP $86 ; Picture frame. $9410 JP C,$952E ; $9413 CP $8F ; Street sign. $9415 JP Z,$961C ; $9418 CP $92 ; Basic object. $941A JR C,$9434 ; $941C CP $96 ; Door. $941E JP C,$95A8 ; $9421 CP $9E ; Shop-keeper. $9423 JP Z,$9685 ; $9426 CP $C6 ; Torch. $9428 JP Z,$9641 ; $942B CP $A4 ; $942D JR C,$9434 ; $942F CP $A6 ; Shop counter. $9431 JP C,$9674 ; ; Blits a column of a background bitmap based on its index value. ; ; Used by the routines at #R$92E5, #R$952E, #R$95A8, #R$9625, #R$9641 and #R$9674. Input: IX Points to address of ; next item in background description string. @label=Bg_BlitItemColumn c$9434 LD A,(IX+$00) ; Based on index, calculate position in offcreen to blit object. $9437 LD DE,$0AA0 ; $943A CP $9B ; $943C JR Z,$945D ; $943E LD DE,$0660 ; $9441 CP $8F ; $9443 JR C,$945D ; $9445 LD DE,$0220 ; $9448 CP $92 ; $944A JR C,$945D ; $944C LD DE,$0880 ; $944F CP $C1 ; $9451 JR C,$945D ; $9453 LD DE,$0440 ; $9456 CP $C9 ; $9458 JR C,$945D ; $945A LD DE,$0880 ; @label=Bg_BlitItemColumn_0 *$945D LD L,A ; Using bitmap index, calculate address of data, pointing to dimensions of bitmap. $945E LD H,$00 ; $9460 ADD HL,HL ; $9461 ADD HL,HL ; $9462 LD BC,$BB8E ; $9465 ADD HL,BC ; $9466 LD B,(HL) ; Get height in char cells. $9467 RES 7,B ; $9469 EX DE,HL ; $946A LD DE,$0110 ; @label=Bg_BlitItemColumn_1 *$946D AND A ; $946E SBC HL,DE ; $9470 DJNZ $946D ; $9472 LD DE,($968D) ; $9476 ADD HL,DE ; $9477 LD ($968F),HL ; $947A LD L,(IX+$00) ; Get index of bitmap and copy info into memory. $947D CALL $ACDD ; $9480 LD DE,($92D6) ; Get which column, of bitmap, to blit. $9484 CALL $91E9 ; ; This entry point is used by the routines at #R$948C and #R$94A8. @label=Bg_BlitItemEnd *$9487 LD SP,($92D2) ; $948B RET ; ; Draw an empty black column. ; ; Used by the routine at #R$92E5. @label=Bg_DrawEmptyCol c$948C LD HL,($92D6) ; Only draw if outside of path range. $948F LD DE,$001C ; $9492 AND A ; $9493 SBC HL,DE ; $9495 JP NC,$93E5 ; $9498 LD HL,($968D) ; Fill in column. $949B LD DE,$0022 ; $949E LD A,$FF ; $94A0 LD B,$50 ; @label=Bg_DrawEmptyCol_0 *$94A2 LD (HL),A ; $94A3 ADD HL,DE ; $94A4 DJNZ $94A2 ; $94A6 JR $9487 ; ; Handle description string control values. ; ; Used by the routine at #R$92E5. The follow are control codes that can exist within a description string. @label=Bg_StrCtrlCodes c$94A8 LD A,(IX+$00) ; check for 'skip' value, if not check for other values. $94AB AND $F0 ; $94AD CP $00 ; $94AF JR NZ,$94C1 ; $94B1 XOR (IX+$00) ; String value means skip by the number of column units. $94B4 LD E,A ; $94B5 LD D,$00 ; $94B7 LD HL,($92D6) ; $94BA SBC HL,DE ; $94BC JR C,$9487 ; $94BE JP $93E5 ; @label=Bg_StrCtrlCodes_0 *$94C1 CP $10 ; Reverse image value. $94C3 JR NZ,$94D2 ; $94C5 LD A,$80 ; $94C7 LD ($92D8),A ; $94CA INC IX ; $94CC POP BC ; $94CD DEC C ; $94CE JP NZ,$93AB ; $94D1 RET ; @label=Bg_StrCtrlCodes_1 *$94D2 CP $20 ; $94D4 JR NZ,$94EA ; $94D6 POP BC ; $94D7 XOR (IX+$00) ; $94DA LD B,A ; $94DB DEC C ; $94DC RET Z ; $94DD INC IX ; $94DF LD ($92D9),IX ; $94E3 LD ($92DB),BC ; $94E7 JP $93AB ; @label=Bg_StrCtrlCodes_2 *$94EA CP $60 ; $94EC JR NZ,$94FD ; $94EE XOR (IX+$00) ; $94F1 LD ($92E1),A ; $94F4 LD HL,($92D6) ; $94F7 LD ($92E3),HL ; $94FA JP $93E9 ; @label=Bg_StrCtrlCodes_3 *$94FD JP $9487 ; Ignore any unknown codes by ending the walking of string. ; Point to and draw description's sub-string. ; ; Used by the routine at #R$92E5. A description string can contain a reference to another inner sub-string. The draw ; engine will use this inner string until complete before returning to the original string. @label=Bg_UseInnerStr c$9500 SUB $DD ; Offset reference value to true string index. $9502 LD L,A ; convert into address within table. $9503 LD H,$00 ; $9505 ADD HL,HL ; $9506 LD DE,$B2CE ; $9509 ADD HL,DE ; $950A LD E,(HL) ; Get pointer, to string, from table. $950B INC HL ; $950C LD D,(HL) ; $950D PUSH IX ; $950F PUSH DE ; $9510 POP IX ; $9512 LD HL,($92D9) ; $9515 PUSH HL ; $9516 LD HL,($92DB) ; $9519 PUSH HL ; $951A LD C,(IX+$00) ; $951D CALL $93EB ; $9520 POP HL ; $9521 LD ($92DB),HL ; $9524 POP HL ; $9525 LD ($92D9),HL ; $9528 POP IX ; $952A POP BC ; $952B JP $93E9 ; ; Draws the picture for a gallery. ; ; Used by the routine at #R$92E5. @label=Gallery_DrawPicture c$952E LD A,($92D6) ; $9531 AND A ; $9532 JP Z,$9434 ; $9535 CP $04 ; $9537 JP Z,$9434 ; ; Blit characters into picture frame. $953A LD A,(IX+$00) ; Calculate address of array that holds the block images indicies. $953D SUB $82 ; $953F LD B,A ; $9540 ADD A,A ; $9541 ADD A,A ; $9542 ADD A,A ; $9543 ADD A,B ; $9544 LD E,A ; $9545 LD D,$00 ; $9547 LD HL,$B0F9 ; $954A ADD HL,DE ; $954B EX DE,HL ; $954C LD HL,($BD94) ; Get start position within picture frame. This is where the first char will be drawn to. $954F LD BC,$0029 ; $9552 ADD HL,BC ; $9553 LD A,$03 ; Number of chars down. @label=Gallery_DrawPicture_0 *$9555 PUSH AF ; $9556 EX DE,HL ; $9557 LD B,$03 ; Number of chars across. @label=Gallery_DrawPicture_1 *$9559 PUSH BC ; $955A PUSH HL ; $955B PUSH DE ; $955C LD L,(HL) ; Get index of next image and convert into address of bitmap. $955D LD H,$00 ; $955F ADD HL,HL ; $9560 ADD HL,HL ; $9561 ADD HL,HL ; $9562 LD BC,$FC00 ; $9565 ADD HL,BC ; ; Draw one char block. $9566 LD BC,$0809 ; 8 scans, copying the image. @label=Gallery_DrawPicture_2 *$9569 LDI ; $956B LD A,E ; Next scan down within bitmap. $956C ADD A,$04 ; $956E LD E,A ; $956F LD A,D ; $9570 ADC A,$00 ; $9572 LD D,A ; $9573 DJNZ $9569 ; ; Next block along. $9575 POP DE ; $9576 INC DE ; $9577 POP HL ; $9578 INC HL ; $9579 POP BC ; $957A DJNZ $9559 ; ; Next block down. $957C LD BC,$0025 ; $957F EX DE,HL ; $9580 ADD HL,BC ; $9581 POP AF ; $9582 DEC A ; $9583 JR NZ,$9555 ; $9585 JP $9434 ; ; Background Next door number. ; ; Used by the routine at #R$92E5. Calculates the next door number and next block address. @label=Bg_NextDoorNumber c$9588 EX DE,HL ; $9589 LD HL,($92D4) ; $958C LD A,L ; $958D ADD A,H ; $958E LD ($92D4),A ; $9591 LD HL,($92DD) ; $9594 INC HL ; $9595 LD ($92DD),HL ; $9598 EX DE,HL ; $9599 JP $93CC ; ; Background Next sign text ; ; Used by the routine at #R$92E5. Calculates the address of the next shop sign text within the background data. @label=Bg_NextSignText c$959C LD DE,($92DF) ; $95A0 INC DE ; $95A1 LD ($92DF),DE ; $95A5 JP $93CC ; ; Set up and blit a door. ; ; Used by the routine at #R$92E5. Input: IX Ptr current background door data. @label=Bg_BlitDoor c$95A8 LD A,($92D6) ; $95AB CP $02 ; $95AD JP NZ,$9434 ; $95B0 LD A,(IX+$00) ; Only door type $92 has a number, skip for rest. $95B3 CP $92 ; $95B5 JR NZ,$95C3 ; $95B7 LD A,($92D4) ; $95BA AND A ; $95BB JR Z,$95C3 ; $95BD LD HL,$0092 ; Blit next door number to bitmap $92. $95C0 CALL $9240 ; @label=Bg_BlitDoor_0 *$95C3 LD DE,($9689) ; $95C7 INC DE ; $95C8 LD HL,$B182 ; See if door already exists in list for current background. $95CB LD B,$06 ; @label=Bg_BlitDoor_1 *$95CD LD A,(HL) ; $95CE INC HL ; $95CF CP E ; $95D0 JR NZ,$95D7 ; $95D2 LD A,(HL) ; $95D3 CP D ; $95D4 JP Z,$9434 ; @label=Bg_BlitDoor_2 *$95D7 INC HL ; $95D8 INC HL ; $95D9 INC HL ; $95DA DJNZ $95CD ; $95DC LD BC,$0014 ; $95DF LD A,($B162) ; Is player facing left? $95E2 CP $02 ; $95E4 JR NZ,$95F3 ; $95E6 LD DE,$B199 ; Shift existing doors down the list. New door will be added to the start of list. $95E9 LD HL,$B195 ; $95EC LDDR ; $95EE LD HL,$B182 ; $95F1 JR $95FE ; @label=Bg_BlitDoor_3 *$95F3 LD HL,$B186 ; Shift existing doors up the list. New door will be added to the end of the list. $95F6 LD DE,$B182 ; $95F9 LDIR ; $95FB LD HL,$B196 ; @label=Bg_BlitDoor_4 *$95FE LD DE,($9689) ; Store position and door type into slot. $9602 INC DE ; $9603 LD (HL),E ; $9604 INC HL ; $9605 LD (HL),D ; $9606 INC HL ; $9607 LD A,(IX+$00) ; $960A LD (HL),A ; $960B INC HL ; $960C LD DE,($92DD) ; $9610 LD A,(DE) ; $9611 LD (HL),A ; $9612 JP $9434 ; ; Blit a single word into a bitmap. ; ; Used by the routine at #R$92E5. Input: IX Ptr to data holding next item index. @label=Bg_BlitOneWord c$9615 LD HL,($92DF) ; $9618 LD B,$01 ; $961A JR $9625 ; ; Routine at 961C ; ; Used by the routine at #R$92E5. @label=Bg_BlitTwoWord c$961C LD HL,($B168) ; Get ptr to text index string. (Words to draw). $961F LD DE,$000A ; $9622 ADD HL,DE ; $9623 LD B,$02 ; Length of string / number of words. ; Blit string. ; ; Used by the routine at #R$9615. Input: HL Ptr to string. B Number of words. @label=Bg_BlitWordIntoBitmap c$9625 LD A,(IX+$00) ; Get index of bitmap to draw string into (sign or a window etc). $9628 CALL $9B21 ; Draw string into the bitmap. $962B LD A,($92D6) ; $962E CP $07 ; $9630 JP Z,$9434 ; $9633 LD HL,($968D) ; $9636 LD DE,$0044 ; $9639 AND A ; $963A SBC HL,DE ; $963C LD (HL),$38 ; $963E JP $9434 ; ; Adds a torch to the current background. ; ; Used by the routine at #R$92E5. @label=Bg_TorchAdd c$9641 PUSH IX ; $9643 CALL $AC93 ; Create a new data node in IX, copying torch info into it. $9646 JR Z,$966F ; End if no more nodes left. $9648 LD HL,($9689) ; Store some coords. $964B INC HL ; $964C LD (IX+$05),L ; $964F LD (IX+$06),H ; $9652 LD (IX+$07),L ; $9655 LD (IX+$08),H ; $9658 LD HL,$8D9F ; Store address of related function to object being stored in node. In this case the blitting ; of the flame. $965B LD (IX+$03),L ; $965E LD (IX+$04),H ; $9661 LD A,$A2 ; Index for fire bitmap. $9663 LD (IX+$02),A ; $9666 LD (IX+$0B),A ; $9669 LD A,($B160) ; Store compass in object. $966C LD (IX+$0A),A ; @label=Bg_TorchAdd_0 *$966F POP IX ; $9671 JP $9434 ; Blit the actual torch. ; Store item index number into background index table. ; ; Used by the routine at #R$92E5. The background index table holds values to easily tell which column holds which ; special items. Special items are things you can interact with. The Offscreen pointer holds the current column on ; the offscreen (top row) for which to store for. The table column will be matched. @label=BgTable_Store c$9674 LD A,($92E1) ; ; Store value of A into table. @label=BgTable_StoreA *$9677 LD HL,($968D) ; Table is offset just before the offscreen. $967A LD DE,$0022 ; $967D AND A ; $967E SBC HL,DE ; $9680 OR (HL) ; $9681 LD (HL),A ; $9682 JP $9434 ; ; Store the value for a shopkeeper at current column ; ; Used by the routine at #R$92E5. @label=BgTable_StoreShopKeeper c$9685 LD A,$10 ; Value for a shopkeeper. $9687 JR $9677 ; ; Data block at 9689 @label=_9689_coordsA b$9689 DEFW $0000 @label=_968b_coordsB $968B DEFW $0000 @label=Ptr_Offscreen $968D DEFW $0000 ; Points to an offscreen row. @label=Temp_BlitTo $968F DEFW $0000 $9691 DEFB $00 @label=_9692 $9692 DEFB $00,$00 @label=_9694 $9694 DEFB $00,$00 @label=Bmp_IndexJunction $9696 DEFB $00,$00,$00 $9699 DEFB $00 ; Background Draws a single column, including paths. ; ; Used by the routines at #R$7CD4 and #R$7EED. Input: HL Ptr to offscreen IX Ptr to table of path offsets @label=Bg_DrawColumn c$969A LD ($968D),HL ; $969D LD DE,$0022 ; Clear column of offscreen starting at supplied address in HL. $96A0 AND A ; $96A1 SBC HL,DE ; $96A3 LD B,$51 ; $96A5 XOR A ; @label=Bg_DrawColumn_0 *$96A6 LD (HL),A ; $96A7 ADD HL,DE ; $96A8 DJNZ $96A6 ; $96AA LD HL,($968D) ; $96AD LD DE,$0044 ; $96B0 AND A ; $96B1 SBC HL,DE ; $96B3 LD A,($B17B) ; $96B6 LD (HL),A ; $96B7 LD A,($B160) ; Get offset based on camera compass value. $96BA AND A ; $96BB RLA ; $96BC RLA ; $96BD LD C,A ; $96BE LD B,$00 ; $96C0 ADD IX,BC ; $96C2 LD DE,($B15C) ; Calculate which coordinate we need to work on. $96C6 LD HL,($B15A) ; $96C9 LD A,($B160) ; $96CC BIT 0,A ; $96CE JR NZ,$96D1 ; $96D0 EX DE,HL ; @label=Bg_DrawColumn_1 *$96D1 PUSH HL ; Calculate correct position based on camera position offset to the correct end column of the ; stage. $96D2 LD E,(IX+$00) ; $96D5 LD D,(IX+$01) ; $96D8 ADD HL,DE ; $96D9 LD ($9689),HL ; $96DC POP HL ; $96DD LD E,(IX+$02) ; $96E0 LD D,(IX+$03) ; $96E3 ADD HL,DE ; $96E4 LD ($968B),HL ; ; Search for junctions. @label=_969a_data b$96E7 DEFW $0000 ; This bit gets modified by code later on... @label=_969a_VectorMargin $96E9 DEFW $0000 ; Size of the margin when checking if the man is on a path's vector. $96EB DEFW $0000 ; Routine at 96ED c$96ED XOR A ; $96EE LD ($9692),A ; $96F1 LD A,$CA ; Set junction to draw bitmap index 'leading in'. $96F3 LD ($9696),A ; $96F6 LD HL,$0004 ; Set values to search for paths connecting from above current path. $96F9 LD DE,$0002 ; $96FC LD BC,$0010 ; $96FF LD A,$02 ; @label=Bg_DrawColumn_2 *$9701 PUSH AF ; $9702 LD ($96E7),HL ; $9705 LD ($96E9),DE ; $9709 LD ($96EB),BC ; $970D LD A,($9692) ; $9710 LD ($9691),A ; $9713 XOR A ; $9714 LD ($9692),A ; $9717 LD A,($B160) ; Get correct path information based on camera compass. $971A BIT 0,A ; $971C JR Z,$972C ; $971E LD IX,($B174) ; Information for E/W path. $9722 LD BC,($9689) ; $9726 LD DE,($B15C) ; $972A JR $9738 ; @label=Bg_DrawColumn_3 *$972C LD IX,($B176) ; Information for N/S path. $9730 LD BC,($9689) ; $9734 LD DE,($B15A) ; @label=Bg_DrawColumn_4 *$9738 INC BC ; $9739 INC BC ; $973A LD HL,($96E7) ; $973D CP $01 ; Check camera compass. $973F JR Z,$974B ; $9741 CP $02 ; $9743 JR Z,$974B ; $9745 EX DE,HL ; Offset position. $9746 AND A ; $9747 SBC HL,DE ; $9749 JR $974C ; @label=Bg_DrawColumn_5 *$974B ADD HL,DE ; @label=Bg_DrawColumn_6 *$974C EX DE,HL ; ; Find path crossing position. @label=Bg_DrawColumn_7 *$974D PUSH BC ; $974E PUSH DE ; $974F LD L,(IX+$00) ; Get coordinate of path's axis. $9752 LD H,(IX+$01) ; $9755 AND A ; See if person is on the same vector within a margin. $9756 SBC HL,BC ; $9758 LD BC,($96E9) ; $975C JR NC,$9766 ; $975E AND A ; Path is to the left of position, see if within margin. $975F ADC HL,BC ; $9761 JP M,$979B ; $9764 JR $976B ; Path is within position and its margin. ; Path found? @label=Bg_DrawColumn_8 *$9766 AND A ; Path is either same position or further on. $9767 SBC HL,BC ; Check to see if further on... $9769 JR NC,$97A4 ; @label=Bg_DrawColumn_9 *$976B LD L,(IX+$02) ; Get coordinates of right hand end of path and see if camera is within range. $976E LD H,(IX+$03) ; $9771 AND A ; $9772 SBC HL,DE ; $9774 JR NC,$979B ; $9776 LD L,(IX+$04) ; $9779 LD H,(IX+$05) ; $977C SCF ; $977D SBC HL,DE ; $977F JR C,$979B ; ; Found path crossing position. $9781 LD L,(IX+$00) ; $9784 LD H,(IX+$01) ; $9787 LD ($9694),HL ; $978A LD A,$01 ; $978C LD ($9692),A ; $978F LD IX,$9694 ; $9793 LD HL,($96EB) ; $9796 CALL $917B ; Draw junction bitmap. $9799 JR $97A4 ; ; Next Path @label=Bg_DrawColumn_10 *$979B LD BC,$000C ; $979E ADD IX,BC ; $97A0 POP DE ; $97A1 POP BC ; $97A2 JR $974D ; ; Search for junctions below path. @label=Bg_DrawColumn_11 *$97A4 POP DE ; $97A5 POP BC ; $97A6 LD A,$CC ; Set junction bitmap index to 'leading out' $97A8 LD ($9696),A ; $97AB LD HL,$FFFC ; Set values in order to seach paths conneting just below the current path. $97AE LD DE,$0004 ; $97B1 LD BC,$0000 ; $97B4 POP AF ; $97B5 DEC A ; $97B6 JP NZ,$9701 ; $97B9 LD A,($B160) ; $97BC BIT 0,A ; $97BE JR NZ,$97CA ; $97C0 LD DE,($B15A) ; $97C4 LD IX,($B165) ; $97C8 JR $97D2 ; @label=Bg_DrawColumn_12 *$97CA LD DE,($B15C) ; $97CE LD IX,($B165) ; @label=Bg_DrawColumn_13 *$97D2 LD L,(IX+$00) ; $97D5 LD H,(IX+$01) ; $97D8 AND A ; $97D9 SBC HL,DE ; $97DB JR Z,$97E7 ; $97DD JP NC,$986F ; @label=Bg_DrawColumn_14 *$97E0 LD BC,$000C ; $97E3 ADD IX,BC ; $97E5 JR $97D2 ; ; Draw bottom road edge. @label=Bg_DrawColumn_15 *$97E7 LD BC,($9689) ; $97EB INC BC ; $97EC LD L,(IX+$02) ; $97EF LD H,(IX+$03) ; $97F2 AND A ; $97F3 SBC HL,BC ; $97F5 JR NC,$97E0 ; $97F7 LD A,L ; ABS(hl) $97F8 CPL ; $97F9 LD L,A ; $97FA LD A,H ; $97FB CPL ; $97FC LD H,A ; $97FD INC HL ; $97FE LD ($BB88),HL ; $9801 LD L,(IX+$04) ; $9804 LD H,(IX+$05) ; $9807 AND A ; $9808 SBC HL,BC ; $980A JR C,$97E0 ; $980C LD ($BB8A),HL ; $980F LD A,C ; Using odd/even of the offset, decide which column of the path image is drawn. $9810 RRA ; $9811 AND $01 ; $9813 LD C,A ; $9814 LD B,$00 ; $9816 LD A,($9692) ; $9819 AND A ; $981A JR NZ,$983A ; $981C PUSH BC ; $981D LD HL,($BEC4) ; Get the ptr to the bitmap of the road edge. $9820 ADD HL,BC ; Offset to correct column to draw. $9821 EX DE,HL ; $9822 LD HL,($968D) ; $9825 LD BC,$0990 ; $9828 ADD HL,BC ; $9829 LD BC,$0022 ; $982C LD A,$08 ; @label=Bg_DrawColumn_16 *$982E EX AF,AF' ; $982F LD A,(DE) ; $9830 XOR (HL) ; $9831 LD (HL),A ; $9832 ADD HL,BC ; $9833 INC DE ; $9834 INC DE ; $9835 EX AF,AF' ; $9836 DEC A ; $9837 JR NZ,$982E ; $9839 POP BC ; @label=Bg_DrawColumn_17 *$983A LD A,($9691) ; $983D AND A ; $983E JR NZ,$987D ; $9840 LD HL,($BB8A) ; $9843 LD DE,$0002 ; $9846 SBC HL,DE ; $9848 JR C,$987D ; $984A LD HL,($BB88) ; $984D SBC HL,DE ; $984F JR C,$987D ; ; Draw top road edge. $9851 LD HL,($BEC0) ; $9854 ADD HL,BC ; $9855 EX DE,HL ; $9856 LD HL,($968D) ; $9859 LD BC,$0770 ; $985C ADD HL,BC ; $985D LD BC,$0022 ; $9860 LD A,$08 ; @label=Bg_DrawColumn_18 *$9862 EX AF,AF' ; $9863 LD A,(DE) ; $9864 XOR (HL) ; $9865 LD (HL),A ; $9866 ADD HL,BC ; $9867 INC DE ; $9868 INC DE ; $9869 EX AF,AF' ; $986A DEC A ; $986B JR NZ,$9862 ; $986D JR $987D ; @label=Bg_DrawColumn_19 *$986F LD A,($9692) ; $9872 AND A ; $9873 JR NZ,$98AF ; $9875 LD A,($9691) ; $9878 AND A ; $9879 JR NZ,$98AF ; $987B JR $98BD ; ; Draw the road leading in and out of screen. @label=Bg_DrawColumn_20 *$987D LD HL,($BB8A) ; $9880 LD DE,$0004 ; $9883 AND A ; $9884 SBC HL,DE ; $9886 JR C,$9893 ; $9888 LD DE,($BB88) ; $988C LD HL,$0004 ; $988F SBC HL,DE ; $9891 JR C,$98BD ; @label=Bg_DrawColumn_21 *$9893 LD DE,($9689) ; $9897 LD BC,($B15A) ; $989B LD A,($B160) ; $989E BIT 0,A ; $98A0 JR Z,$98AA ; $98A2 LD DE,($9689) ; $98A6 LD BC,($B15C) ; @label=Bg_DrawColumn_22 *$98AA INC DE ; $98AB ADD HL,DE ; $98AC LD ($9694),HL ; @label=Bg_DrawColumn_23 *$98AF LD IX,$9694 ; $98B3 LD (IX+$02),$CB ; Bitmap index for road leading in. $98B7 LD HL,$0008 ; $98BA CALL $917B ; @label=Bg_DrawColumn_24 *$98BD LD IX,($B172) ; @label=Bg_DrawColumn_25 *$98C1 LD A,(IX+$00) ; $98C4 OR (IX+$01) ; $98C7 JR Z,$98DA ; $98C9 LD A,(IX+$02) ; $98CC CALL $921B ; $98CF JR NC,$98F4 ; $98D1 LD E,(IX+$03) ; $98D4 LD D,$00 ; $98D6 ADD IX,DE ; $98D8 JR $98C1 ; @label=Bg_DrawColumn_26 *$98DA LD IX,$B1AA ; $98DE LD A,(IX+$02) ; $98E1 CALL $921B ; $98E4 JR NC,$98F4 ; $98E6 LD IX,$B1B4 ; $98EA LD A,(IX+$02) ; $98ED CALL $921B ; $98F0 JR NC,$98F4 ; $98F2 JR $98F7 ; @label=Bg_DrawColumn_27 *$98F4 CALL $92E5 ; ; Draw object. @label=Bg_DrawColumn_28 *$98F7 LD HL,($968D) ; Get row above. $98FA LD DE,$0022 ; $98FD AND A ; $98FE SBC HL,DE ; $9900 LD A,(HL) ; $9901 AND $0F ; $9903 RET Z ; $9904 LD E,A ; $9905 LD D,$00 ; $9907 LD HL,($B170) ; $990A ADD HL,DE ; $990B LD A,(HL) ; $990C AND A ; $990D RET Z ; $990E CALL $ACF1 ; $9911 LD A,(HL) ; $9912 LD ($92E1),A ; $9915 LD L,A ; $9916 CALL $ACDD ; $9919 LD A,(HL) ; $991A AND $7F ; $991C LD C,A ; $991D NEG ; $991F ADD A,$05 ; $9921 SRL A ; $9923 NEG ; $9925 LD HL,($92E3) ; $9928 ADD A,L ; $9929 CP C ; $992A RET NC ; $992B LD ($92D6),A ; $992E LD A,($B12F) ; $9931 AND $7F ; $9933 LD B,A ; $9934 LD HL,$0550 ; $9937 LD DE,$0110 ; @label=Bg_DrawColumn_29 *$993A AND A ; $993B SBC HL,DE ; $993D DJNZ $993A ; $993F LD DE,($968D) ; $9943 ADD HL,DE ; $9944 LD ($968F),HL ; $9947 LD DE,($92D6) ; $994B LD D,$00 ; $994D LD HL,($92E1) ; $9950 LD H,D ; $9951 JP $91E9 ; $9954 RET ; ; Reverses the image of a bitmap. ; ; Used by the routines at #R$92E5, #R$9F13 and #R$A64B. Input: L Bitmap index. @label=Bitmap_Reverse c$9955 LD H,$00 ; Convert index into bitmap info address. $9957 ADD HL,HL ; $9958 ADD HL,HL ; $9959 LD DE,$BB8C ; $995C ADD HL,DE ; $995D LD E,(HL) ; Get bitmap address. $995E INC HL ; $995F LD D,(HL) ; $9960 INC HL ; $9961 LD A,(HL) ; Bitmap height. $9962 AND $7F ; $9964 LD C,A ; $9965 INC HL ; $9966 LD A,(HL) ; Bitmap width, toggling reverse bit. $9967 XOR $80 ; $9969 LD (HL),A ; $996A AND $7F ; $996C LD L,A ; $996D LD H,$00 ; $996F LD ($5BE0),HL ; $9972 SRL A ; Store parity of width. $9974 ADC A,$00 ; $9976 LD ($5BE2),A ; @label=Bitmap_Reverse_0 *$9979 LD B,$08 ; @label=Bitmap_Reverse_1 *$997B PUSH BC ; $997C LD HL,($5BE0) ; $997F ADD HL,DE ; $9980 PUSH HL ; $9981 LD A,($5BE2) ; $9984 LD B,A ; $9985 AND A ; @label=Bitmap_Reverse_2 *$9986 DEC HL ; $9987 LD A,(DE) ; $9988 LD C,(HL) ; $9989 RLA ; $998A RR C ; $998C RLA ; $998D RR C ; $998F RLA ; $9990 RR C ; $9992 RLA ; $9993 RR C ; $9995 RLA ; $9996 RR C ; $9998 RLA ; $9999 RR C ; $999B RLA ; $999C RR C ; $999E RLA ; $999F RR C ; $99A1 RLA ; $99A2 LD (DE),A ; $99A3 LD (HL),C ; $99A4 INC DE ; $99A5 DJNZ $9986 ; $99A7 POP DE ; $99A8 POP BC ; $99A9 DJNZ $997B ; $99AB DEC C ; $99AC JR NZ,$9979 ; $99AE RET ; ; Test for keyboard and store results. ; ; Used by the routine at #R$99C4. @label=Keyboard_Test c$99AF LD HL,$B128 ; $99B2 LD E,$80 ; $99B4 LD BC,$7FFE ; Bottom keyboard row, B ~ SPACE. @label=Keyboard_Test_0 *$99B7 IN D,(C) ; $99B9 LD (HL),D ; $99BA AND A ; $99BB RR E ; $99BD RET Z ; $99BE DEC HL ; $99BF LD A,B ; $99C0 ADD A,E ; $99C1 LD B,A ; $99C2 JR $99B7 ; ; Tests keyboard and convert presses into command bit flag. ; ; Used by the routine at #R$8121. @label=Keyboard_Handle c$99C4 LD A,($B120) ; $99C7 AND A ; $99C8 JP NZ,$9A76 ; $99CB CALL $99AF ; $99CE LD B,$00 ; $99D0 LD IX,$B121 ; $99D4 LD A,(IX+$01) ; $99D7 AND $15 ; $99D9 LD C,A ; $99DA LD A,(IX+$06) ; $99DD AND $0A ; $99DF OR C ; $99E0 XOR $1F ; $99E2 JR Z,$99E6 ; $99E4 SET 2,B ; @label=Keyboard_Handle_0 *$99E6 LD A,(IX+$01) ; $99E9 AND $0A ; $99EB LD C,A ; $99EC LD A,(IX+$06) ; $99EF SET 0,A ; $99F1 AND $15 ; $99F3 OR C ; $99F4 XOR $1F ; $99F6 JR Z,$99FA ; $99F8 SET 3,B ; @label=Keyboard_Handle_1 *$99FA LD A,(IX+$00) ; $99FD AND $0A ; $99FF LD C,A ; $9A00 LD A,(IX+$07) ; $9A03 AND $14 ; $9A05 OR C ; $9A06 XOR $1E ; $9A08 JR Z,$9A0C ; $9A0A SET 1,B ; @label=Keyboard_Handle_2 *$9A0C LD A,(IX+$00) ; $9A0F AND $14 ; $9A11 LD C,A ; $9A12 LD A,(IX+$07) ; $9A15 AND $0A ; $9A17 OR C ; $9A18 XOR $1E ; $9A1A JR Z,$9A1E ; $9A1C SET 0,B ; @label=Keyboard_Handle_3 *$9A1E LD A,(IX+$02) ; $9A21 AND $0A ; $9A23 LD C,A ; $9A24 LD A,(IX+$05) ; $9A27 AND $15 ; $9A29 OR C ; $9A2A XOR $1F ; $9A2C JR Z,$9A30 ; $9A2E SET 6,B ; @label=Keyboard_Handle_4 *$9A30 LD A,(IX+$02) ; $9A33 AND $15 ; $9A35 LD C,A ; $9A36 LD A,(IX+$05) ; $9A39 AND $0A ; $9A3B OR C ; $9A3C XOR $1F ; $9A3E JR Z,$9A42 ; $9A40 SET 5,B ; @label=Keyboard_Handle_5 *$9A42 LD A,(IX+$03) ; $9A45 XOR (IX+$04) ; $9A48 AND $1E ; $9A4A JR Z,$9A4E ; $9A4C SET 7,B ; @label=Keyboard_Handle_6 *$9A4E LD A,(IX+$00) ; $9A51 AND (IX+$07) ; $9A54 AND (IX+$03) ; $9A57 AND (IX+$04) ; $9A5A AND $01 ; $9A5C JR NZ,$9A60 ; $9A5E SET 4,B ; @label=Keyboard_Handle_7 *$9A60 LD A,B ; $9A61 LD ($B129),A ; $9A64 LD A,($B11E) ; $9A67 ADD A,B ; $9A68 LD ($B11E),A ; $9A6B LD A,(IX+$06) ; $9A6E AND $01 ; $9A70 XOR $01 ; $9A72 LD ($B12A),A ; $9A75 RET ; @label=Keyboard_Handle_8 *$9A76 LD ($B129),A ; $9A79 XOR A ; $9A7A LD ($B12A),A ; $9A7D RET ; ; Redraws an object, on stage. If the object is already there then it is Xor'd out. ; ; Used by the routine at #R$9D73. The bitmap info cache holds info based on bitmap to draw. @label=Obj_DrawOrClear c$9A7E LD HL,$B130 ; $9A81 RES 7,(HL) ; $9A83 DEC HL ; $9A84 LD A,(HL) ; $9A85 RLA ; $9A86 RLA ; $9A87 RLA ; $9A88 AND $F8 ; $9A8A LD (HL),A ; $9A8B LD L,B ; $9A8C LD H,$00 ; $9A8E ADD HL,HL ; $9A8F LD E,L ; $9A90 LD D,H ; $9A91 ADD HL,HL ; $9A92 ADD HL,HL ; $9A93 ADD HL,HL ; $9A94 ADD HL,HL ; $9A95 ADD HL,DE ; $9A96 LD E,C ; $9A97 SRL E ; $9A99 SRL E ; $9A9B SRL E ; $9A9D LD D,$00 ; $9A9F ADD HL,DE ; $9AA0 LD DE,$5E69 ; $9AA3 ADD HL,DE ; $9AA4 LD DE,($B12D) ; $9AA8 BIT 2,C ; $9AAA JR NZ,$9AC3 ; $9AAC LD BC,($B12F) ; B = width, C = height @label=Obj_DrawOrClear_0 *$9AB0 PUSH BC ; $9AB1 PUSH HL ; ; Blit mask @label=Obj_DrawOrClear_1 *$9AB2 LD A,(DE) ; $9AB3 XOR (HL) ; $9AB4 LD (HL),A ; $9AB5 INC DE ; $9AB6 INC HL ; $9AB7 DJNZ $9AB2 ; $9AB9 POP HL ; $9ABA LD BC,$0022 ; $9ABD ADD HL,BC ; $9ABE POP BC ; $9ABF DEC C ; $9AC0 JR NZ,$9AB0 ; $9AC2 RET ; @label=Obj_DrawOrClear_2 *$9AC3 LD BC,($B12F) ; @label=Obj_DrawOrClear_3 *$9AC7 PUSH BC ; $9AC8 PUSH HL ; $9AC9 EX DE,HL ; $9ACA XOR A ; @label=Obj_DrawOrClear_4 *$9ACB RRD ; $9ACD LD C,A ; $9ACE LD A,(DE) ; $9ACF XOR (HL) ; $9AD0 LD (DE),A ; $9AD1 LD A,C ; $9AD2 RLD ; $9AD4 LD A,C ; $9AD5 INC HL ; $9AD6 INC DE ; $9AD7 DJNZ $9ACB ; $9AD9 RLA ; $9ADA RLA ; $9ADB RLA ; $9ADC RLA ; $9ADD AND $F0 ; $9ADF LD C,A ; $9AE0 LD A,(DE) ; $9AE1 XOR C ; $9AE2 LD (DE),A ; $9AE3 POP DE ; $9AE4 EX DE,HL ; $9AE5 LD BC,$0022 ; $9AE8 ADD HL,BC ; $9AE9 POP BC ; $9AEA DEC C ; $9AEB JR NZ,$9AC7 ; $9AED RET ; ; Decode a word index string into a readable string. ; ; Used by the routine at #R$9B21. Input: HL Address of word index string. B Number of bytes in string. EXIT: ; #R$5B00 Holds string. A word index string holds a string of indices, each representing a string from the ; dictionary. Resulting string [Len, "string"] 0x7B is used as a space. @label=Str_Decode c$9AEE LD DE,$5B00 ; Temp memory for storing expanded string. $9AF1 XOR A ; First byte holds the length, so clear. @label=Str_Decode_0 *$9AF2 LD (DE),A ; $9AF3 INC DE ; Start of string content. $9AF4 PUSH BC ; $9AF5 PUSH HL ; Get next word index. $9AF6 LD A,(HL) ; $9AF7 BIT 7,A ; Bit 7 set means we use the index as an ascii code $9AF9 JR Z,$9B06 ; $9AFB AND $7F ; which is stored directly into the string. $9AFD LD (DE),A ; $9AFE INC DE ; $9AFF LD HL,$5B00 ; Increase string length by one. $9B02 INC (HL) ; $9B03 LD A,(HL) ; $9B04 JR $9B14 ; @label=Str_Decode_1 *$9B06 PUSH DE ; Get address and length of word using the index. $9B07 CALL $AE56 ; $9B0A LD A,($5B00) ; Increase overall string count by the length of the current word. $9B0D ADD A,C ; $9B0E LD ($5B00),A ; $9B11 POP DE ; $9B12 LDIR ; Append word to string. @label=Str_Decode_2 *$9B14 POP HL ; $9B15 INC HL ; $9B16 POP BC ; $9B17 DEC B ; Next word. $9B18 RET Z ; $9B19 INC A ; Insert a gap betweens words using 0x7b char. $9B1A LD ($5B00),A ; $9B1D LD A,$7B ; $9B1F JR $9AF2 ; ; Draws a string, as a bitmap, into another bitmap, such as a sign. ; ; Used by the routine at #R$9625. Input: A Bitmap to draw string into. HL Ptr to text index string. B Length of ; text index string, number of words to draw. @label=Draw_StringIntoOther c$9B21 PUSH IX ; $9B23 PUSH AF ; $9B24 CALL $9AEE ; Convert data into a string. $9B27 LD HL,$5B00 ; $9B2A LD DE,$5B0C ; $9B2D LD A,(HL) ; Get string length $9B2E SRL A ; $9B30 NEG ; $9B32 ADD A,$05 ; $9B34 JR Z,$9B3D ; $9B36 LD B,A ; $9B37 LD A,$7B ; @label=Draw_StringIntoOther_0 *$9B39 LD (DE),A ; $9B3A INC DE ; $9B3B DJNZ $9B39 ; @label=Draw_StringIntoOther_1 *$9B3D LD C,(HL) ; String length. $9B3E LD A,C ; $9B3F AND A ; $9B40 JR Z,$9B47 ; $9B42 LD B,$00 ; $9B44 INC HL ; Start of string. $9B45 LDIR ; Copy string. @label=Draw_StringIntoOther_2 *$9B47 LD B,$07 ; Add seven 0x7B chars to end of string copy. $9B49 LD A,$7B ; @label=Draw_StringIntoOther_3 *$9B4B LD (DE),A ; $9B4C INC DE ; $9B4D DJNZ $9B4B ; $9B4F POP AF ; Get index of bitmap to write string to. $9B50 LD L,A ; $9B51 CALL $ACDD ; Cache the info on the bitmap. $9B54 LD HL,($B12D) ; Offset bitmap address to start of area to draw string to. $9B57 LD DE,$0009 ; $9B5A ADD HL,DE ; $9B5B EX DE,HL ; $9B5C LD IX,$5B0C ; Start of string to draw as a bitmap. $9B60 LD B,$0C ; @label=Draw_StringIntoOther_4 *$9B62 PUSH BC ; $9B63 PUSH DE ; $9B64 LD A,(IX+$00) ; Get next character in sting and convert into bitmap. $9B67 SUB $61 ; $9B69 AND $FE ; $9B6B LD L,A ; $9B6C LD H,$00 ; $9B6E ADD HL,HL ; $9B6F ADD HL,HL ; $9B70 LD BC,($BEE0) ; $9B74 ADD HL,BC ; $9B75 EX DE,HL ; $9B76 LD B,$06 ; Height if character bitmap. @label=Draw_StringIntoOther_5 *$9B78 INC DE ; Get scan if bitmap. $9B79 LD A,(DE) ; $9B7A BIT 0,(IX+$00) ; Each bitmap holds two lefts (left / right), so check if the left or right image is required. $9B7E JR Z,$9B84 ; $9B80 RRCA ; Shift bits in order to left hand half of image. $9B81 RRCA ; $9B82 RRCA ; $9B83 RRCA ; @label=Draw_StringIntoOther_6 *$9B84 RLD ; $9B86 LD A,L ; $9B87 ADD A,$08 ; $9B89 LD L,A ; $9B8A LD A,H ; $9B8B ADC A,$00 ; $9B8D LD H,A ; $9B8E DJNZ $9B78 ; $9B90 INC IX ; $9B92 POP DE ; $9B93 POP BC ; $9B94 BIT 0,B ; $9B96 JR Z,$9B99 ; $9B98 INC DE ; @label=Draw_StringIntoOther_7 *$9B99 DJNZ $9B62 ; $9B9B POP IX ; $9B9D RET ; ; Blits an character bitmap to memory. ; ; Used by the routine at #R$A64B. Input: HL Address of bitmap to draw to. DE Number of bytes offset within bitmap ; to draw to. BC Number of bytes to skip after each scan line blit. A Character index of letter to blit. The ; letters are either upper case ROM bitmap or lower case game defined bitmap. The memory is normally another bitmap ; and the letter is blitted to an offset. @label=Char_BlitToMemory c$9B9E ADD HL,DE ; Offset bitmap address by given number of bytes. $9B9F LD DE,$3C00 ; Use the ROM character set for upper case. $9BA2 CP $60 ; $9BA4 JR C,$9BA9 ; $9BA6 LD DE,$FC00 ; Use the defined character set for lower case letters. @label=Char_BlitToMemory_0 *$9BA9 PUSH HL ; $9BAA LD L,A ; Convert letter index into bitmap address. $9BAB LD H,$00 ; $9BAD ADD HL,HL ; $9BAE ADD HL,HL ; $9BAF ADD HL,HL ; $9BB0 ADD HL,DE ; $9BB1 EX DE,HL ; $9BB2 POP HL ; $9BB3 DEC BC ; $9BB4 LD A,$08 ; Number of scans for a letter. @label=Char_BlitToMemory_1 *$9BB6 EX AF,AF' ; $9BB7 LD A,(DE) ; Blit letter bitmap into memory by shifting its bits so that the left of the letter appears in ; the left part of the badge and the right part of the letter in the right. $9BB8 RRD ; $9BBA RRA ; $9BBB RRA ; $9BBC RRA ; $9BBD RRA ; $9BBE RLD ; $9BC0 INC HL ; $9BC1 RLD ; $9BC3 LD A,(HL) ; $9BC4 RRD ; $9BC6 ADD HL,BC ; Move onto the next scan down within the memory bitmap. $9BC7 INC DE ; Next scan for letter. $9BC8 EX AF,AF' ; $9BC9 DEC A ; $9BCA JR NZ,$9BB6 ; $9BCC RET ; ; Data block at 9BCD @label= Temp_blit_attr b$9BCD DEFB $00 ; Blit bitmap, at (Y,X), aligning to nearest character position. ; ; Used by the routines at #R$7F6F and #R$A64B. Input: L Index of bitmap. A Attribute colour. B Y position, in ; pixels. C X position, in pixels. @label=Bmp_BlitAtCharPos c$9BCE PUSH IX ; $9BD0 LD ($9BCD),A ; Store colour. $9BD3 LD A,B ; Store Y position. $9BD4 LD ($BB88),A ; $9BD7 LD A,C ; Store X position. $9BD8 LD ($BB89),A ; $9BDB CALL $ACDD ; Cache info on bitmap being blitted. $9BDE LD A,(HL) ; Store the width. $9BDF AND $7F ; $9BE1 LD ($BB8B),A ; $9BE4 DEC HL ; $9BE5 LD A,(HL) ; Store the height. $9BE6 AND $7F ; $9BE8 LD ($BB8A),A ; $9BEB LD HL,($B12D) ; $9BEE LD IX,$BB88 ; $9BF2 LD B,(IX+$02) ; Height of bitmap in chars. @label=Bmp_BlitAtCharPos_0 *$9BF5 PUSH BC ; $9BF6 PUSH HL ; $9BF7 CALL $AC66 ; Get DF / ATTR address based on X/Y coords. $9BFA EX (SP),HL ; Swap stack content (holds bitmap address) with DF. $9BFB LD A,($9BCD) ; See if any colour is required. $9BFE AND A ; $9BFF JR Z,$9C08 ; $9C01 LD B,(IX+$03) ; Width. @label=Bmp_BlitAtCharPos_1 *$9C04 LD (DE),A ; Colour a single line, width of sprite in chars. $9C05 INC DE ; $9C06 DJNZ $9C04 ; @label=Bmp_BlitAtCharPos_2 *$9C08 LD A,$08 ; 8 scans per one char. $9C0A POP DE ; Get DF address. @label=Bmp_BlitAtCharPos_3 *$9C0B PUSH DE ; $9C0C LD C,(IX+$03) ; Width. $9C0F LD B,$00 ; $9C11 LDIR ; Blit next scan of bitmap. $9C13 POP DE ; Next scan down. $9C14 INC D ; $9C15 DEC A ; $9C16 JR NZ,$9C0B ; $9C18 LD A,$08 ; $9C1A ADD A,(IX+$00) ; Next character row down. $9C1D LD (IX+$00),A ; $9C20 POP BC ; Next character row. $9C21 DJNZ $9BF5 ; $9C23 POP IX ; $9C25 RET ; ; Clears the stage. ; ; Used by the routine at #R$79B7. @label=Stage_Clear c$9C26 XOR A ; $9C27 OUT ($FE),A ; $9C29 LD HL,$5000 ; $9C2C LD (HL),$00 ; $9C2E LD E,L ; $9C2F LD D,H ; $9C30 INC DE ; $9C31 LD BC,$07FF ; $9C34 LDIR ; $9C36 LD HL,$5A00 ; $9C39 LD (HL),$07 ; $9C3B LD E,L ; $9C3C LD D,H ; $9C3D INC DE ; $9C3E LD BC,$00FF ; $9C41 LDIR ; $9C43 RET ; ; Holds the address of any extra string of the selected object. @label=ObjectStringPtr b$9C44 DEFW $0000 ; Updates the whole inventory text. ; ; Used by the routines at #R$7DA8, #R$8121, #R$83D5, #R$8B0E, #R$8B40, #R$9D73, #R$9E51, #R$9EF6 and #R$A934. @label=Inv_Update c$9C46 LD HL,$0000 ; Clear any extra object string. $9C49 LD ($9C44),HL ; $9C4C LD A,$01 ; Print #1 $9C4E CALL $1601 ; $9C51 LD C,$01 ; $9C53 LD HL,$B14F ; $9C56 LD E,L ; $9C57 LD D,H ; $9C58 LD B,$03 ; @label=Inv_Update_0 *$9C5A LD A,(DE) ; $9C5B AND A ; $9C5C JR Z,$9C61 ; $9C5E LD (HL),A ; $9C5F INC HL ; $9C60 INC C ; @label=Inv_Update_1 *$9C61 INC DE ; $9C62 DJNZ $9C5A ; $9C64 LD A,$04 ; $9C66 SUB C ; $9C67 JR Z,$9C6F ; $9C69 LD B,A ; @label=Inv_Update_2 *$9C6A LD (HL),$00 ; $9C6C INC HL ; $9C6D DJNZ $9C6A ; @label=Inv_Update_3 *$9C6F LD A,(HL) ; $9C70 CP C ; $9C71 JR C,$9C75 ; $9C73 LD (HL),$00 ; @label=Inv_Update_4 *$9C75 LD DE,$5A60 ; $9C78 LD A,$05 ; @label=Inv_Update_5 *$9C7A LD HL,$5C92 ; $9C7D LD BC,$0013 ; $9C80 LDIR ; $9C82 EX DE,HL ; $9C83 LD BC,$000D ; $9C86 ADD HL,BC ; $9C87 EX DE,HL ; $9C88 DEC A ; $9C89 JR NZ,$9C7A ; ; Display bank account. $9C8B CALL $AD1A ; ; Data block at 9C8E b$9C8E DEFB $10 ; INK $06, PAPER $00, BRIGHT $01 $9C8F DEFB $06 $9C90 DEFB $11 $9C91 DEFB $00 $9C92 DEFB $13 $9C93 DEFB $01 $9C94 DEFB $5E ; Routine at 9C95 c$9C95 CALL $AE46 ; ; Data block at 9C98 b$9C98 DEFW $B0D7 $9C9A DEFB $04 ; Routine at 9C9B c$9C9B JR Z,$9CB7 ; $9C9D CALL $AD1A ; ; Data block at 9CA0 b$9CA0 DEFB $16 $9CA1 DEFB $03 $9CA2 DEFB $00 $9CA3 DEFM "bank: " $9CA9 DEFB $5E ; Routine at 9CAA c$9CAA LD HL,$B0D7 ; $9CAD CALL $ADFB ; $9CB0 CALL $AD1A ; ; Data block at 9CB3 b$9CB3 DEFM " ir" $9CB6 DEFB $5E ; Routine at 9CB7 ; ; Used by the routine at #R$9C9B. @label=Inv_Update_6 c$9CB7 LD A,($B178) ; $9CBA CP $05 ; $9CBC JR Z,$9CC2 ; $9CBE CP $09 ; $9CC0 JR NZ,$9CCC ; @label=Inv_Update_7 *$9CC2 XOR A ; Select iridi. $9CC3 LD ($B152),A ; $9CC6 CALL $AD1A ; ; Data block at 9CC9 b$9CC9 DEFB $10 ; INK $03 $9CCA DEFB $03 $9CCB DEFB $5E ; Display number of iridi tokens held. ; ; Used by the routine at #R$9CB7. @label=Inv_Update_8 c$9CCC CALL $AD1A ; ; Data block at 9CCF b$9CCF DEFB $16 ; AT 4,1 $9CD0 DEFB $04 $9CD1 DEFB $01 $9CD2 DEFB $5E ; Routine at 9CD3 c$9CD3 LD B,$2A ; '*' $9CD5 LD A,($B152) ; Check to see if iridi token are selected. $9CD8 AND A ; $9CD9 JR Z,$9CDD ; $9CDB LD B,$20 ; If not just display a space character. @label=Inv_Update_9 *$9CDD LD A,B ; $9CDE CALL $AD9B ; $9CE1 LD HL,$B153 ; $9CE4 CALL $ADFB ; $9CE7 LD A,($B178) ; $9CEA CP $09 ; Check for Bank or Ludum (gambling house). $9CEC JR Z,$9CF2 ; $9CEE CP $05 ; $9CF0 JR NZ,$9CFF ; @label=Inv_Update_10 *$9CF2 CALL $AD1A ; Bank and Ludum display 'tokens' for the money... ; Data block at 9CF5 b$9CF5 DEFM " tokens" $9CFC DEFB $5E ; Routine at 9CFD c$9CFD JR $9D0B ; ; This entry point is used by the routine at #R$9CD3. @label=Inv_Update_11 *$9CFF CALL $AD1A ; Other places display 'iridi' ; Data block at 9D02 b$9D02 DEFM " iridi" $9D08 DEFB $10 $9D09 DEFB $03 $9D0A DEFB $5E ; Display objects in pockets. ; ; Used by the routine at #R$9CFD. @label=Inv_Update_12 c$9D0B LD DE,($B151) ; $9D0F LD E,$04 ; $9D11 LD IX,$B14E ; Point to address just before pockets. ; This entry point is used by the routine at #R$9D42. @label=Inv_Update_13 *$9D15 INC IX ; Next pocket. $9D17 LD A,E ; $9D18 CP $07 ; $9D1A JP NC,$9D6A ; $9D1D LD A,(IX+$00) ; Get object held in pocket. $9D20 AND A ; Zero means nothing carried in pocket. Skip. $9D21 JP Z,$9D6A ; $9D24 PUSH DE ; $9D25 CALL $ACFC ; $9D28 POP DE ; $9D29 INC E ; $9D2A LD A,$16 ; PRINT AT e,0; $9D2C RST $10 ; $9D2D LD A,E ; $9D2E RST $10 ; $9D2F XOR A ; $9D30 RST $10 ; $9D31 PUSH HL ; $9D32 PUSH DE ; $9D33 BIT 7,(IX+$00) ; MSB of pocket value, flags as a stolen object. $9D37 JR Z,$9D44 ; $9D39 CALL $AD1A ; ; Data block at 9D3C b$9D3C DEFB $12 ; PRINT FLASH 1;"s"; FLASH 0; $9D3D DEFB $01 $9D3E DEFM "s" $9D3F DEFB $12 $9D40 DEFB $00 $9D41 DEFB $5E ; Routine at 9D42 c$9D42 JR $9D49 ; ; This entry point is used by the routine at #R$9D0B. @label=Inv_Update_14 *$9D44 LD A,$20 ; If not stolen the just display a space. $9D46 CALL $AD9B ; @label=Inv_Update_15 *$9D49 POP DE ; $9D4A POP HL ; $9D4B DEC D ; See if object is selected... $9D4C JR NZ,$9D55 ; $9D4E LD A,$2A ; print '*' for selected. $9D50 CALL $AD9B ; $9D53 JR $9D5A ; @label=Inv_Update_16 *$9D55 LD A,$20 ; print ' ' if not. $9D57 CALL $AD9B ; @label=Inv_Update_17 *$9D5A CALL $AD0D ; Print object's noun. $9D5D CP $5E ; Make sure sting has terminated and not stopped at a '+' character which means second line of ; info. $9D5F JR Z,$9D15 ; $9D61 LD A,D ; If the object is selected, store the address of the extra string. $9D62 AND A ; $9D63 JR NZ,$9D15 ; $9D65 LD ($9C44),HL ; $9D68 JR $9D15 ; ; Display object's extra string. (If any). @label=Inv_Update_18 *$9D6A LD HL,($9C44) ; $9D6D LD A,L ; $9D6E OR H ; $9D6F JP NZ,$AD54 ; $9D72 RET ; ; Redraws an object, on stage. If the object is already there then it is Xor'd out. ; ; Used by the routines at #R$9DC1 and #R$9E51. Input: A Object index @label=Obj_DrawOrClearByIndex c$9D73 CALL $ACF1 ; Get the bitmap index for object[A] $9D76 LD L,(HL) ; $9D77 CALL $ACDD ; Copy details of bitmap into cache. $9D7A LD HL,$5E55 ; $9D7D LD C,$0F ; @label=Obj_DrawOrClearByIndex_0 *$9D7F LD A,(HL) ; Find an empty slot $9D80 AND $0F ; $9D82 JR Z,$9D88 ; $9D84 DEC C ; $9D85 DEC HL ; $9D86 JR $9D7F ; @label=Obj_DrawOrClearByIndex_1 *$9D88 LD A,($B130) ; $9D8B AND $7F ; $9D8D RRA ; $9D8E NEG ; $9D90 ADD A,$02 ; $9D92 ADD A,C ; $9D93 RLA ; $9D94 RLA ; $9D95 RLA ; $9D96 AND $F8 ; $9D98 LD C,A ; $9D99 LD HL,$B15A ; $9D9C LD A,($B160) ; $9D9F BIT 0,A ; $9DA1 JR NZ,$9DA5 ; $9DA3 INC HL ; $9DA4 INC HL ; @label=Obj_DrawOrClearByIndex_2 *$9DA5 BIT 0,(HL) ; $9DA7 JR Z,$9DAD ; $9DA9 LD A,C ; $9DAA SUB $04 ; $9DAC LD C,A ; @label=Obj_DrawOrClearByIndex_3 *$9DAD LD A,($B12F) ; $9DB0 AND $7F ; $9DB2 RLA ; $9DB3 RLA ; $9DB4 RLA ; $9DB5 NEG ; $9DB7 ADD A,$28 ; $9DB9 LD B,A ; $9DBA CALL $9A7E ; $9DBD JP $9C46 ; ; Data block at 9DC0 @label=_9dc0 b$9DC0 DEFB $01 ; Hero; Handle pick up an object / money. ; ; Used by the routine at #R$8121. @label=Hero_PickUp c$9DC1 LD HL,($5E56) ; Get the index of the two interactive items behind player. $9DC4 LD A,L ; Both must be of the same type to be a surface and be in range of 01 ~ 0F. $9DC5 AND H ; $9DC6 AND $0F ; $9DC8 RET Z ; $9DC9 LD E,A ; Using the interaction index, check to see if an object is being held in that slot. $9DCA LD D,$00 ; $9DCC LD HL,($B170) ; $9DCF ADD HL,DE ; $9DD0 LD A,(HL) ; $9DD1 AND A ; A zero being held, means no object on the surface. $9DD2 RET Z ; $9DD3 LD A,($B178) ; Bank $9DD6 CP $09 ; $9DD8 JR NZ,$9DDF ; $9DDA LD DE,$B0D7 ; $9DDD JR $9DF0 ; @label=Hero_PickUp_0 *$9DDF CP $05 ; Gambling $9DE1 JR NZ,$9E09 ; $9DE3 LD A,($B11D) ; $9DE6 AND A ; $9DE7 RET NZ ; $9DE8 EX DE,HL ; $9DE9 ADD HL,HL ; $9DEA ADD HL,HL ; $9DEB LD BC,$B0EA ; $9DEE ADD HL,BC ; $9DEF EX DE,HL ; @label=Hero_PickUp_1 *$9DF0 PUSH HL ; $9DF1 PUSH DE ; $9DF2 LD HL,$B153 ; $9DF5 CALL $ADBA ; $9DF8 POP DE ; $9DF9 LD HL,$5C92 ; $9DFC LD BC,$0004 ; $9DFF LDIR ; $9E01 POP HL ; $9E02 LD A,(HL) ; $9E03 LD (HL),$00 ; $9E05 PUSH AF ; $9E06 JP $9E44 ; @label=Hero_PickUp_2 *$9E09 LD A,($B151) ; Check for carrying three objects. $9E0C AND A ; $9E0D JP Z,$9E2B ; $9E10 CALL $AD1F ; ; Data block at 9E13 @label=Str_HandsFull b$9E13 DEFB $16 $9E14 DEFB $05 $9E15 DEFB $0A $9E16 DEFM "your hands are full" $9E29 DEFB $5E ; Routine at 9E2A c$9E2A RET ; ; This entry point is used by the routine at #R$9DC1. @label=Hero_PickUp_3 *$9E2B LD A,(HL) ; Place object into pocket. $9E2C PUSH AF ; $9E2D LD (HL),$00 ; $9E2F LD HL,($B14F) ; $9E32 LD ($B150),HL ; $9E35 LD ($B14F),A ; $9E38 LD A,($B178) ; $9E3B XOR $01 ; $9E3D JR Z,$9E41 ; $9E3F LD A,$01 ; @label=Hero_PickUp_4 *$9E41 LD ($B152),A ; ; This entry point is used by the routine at #R$9DC1. @label=Hero_PickUp_5 *$9E44 LD DE,$0005 ; $9E47 LD HL,$02EE ; $9E4A CALL $03B5 ; $9E4D POP AF ; $9E4E JP $9D73 ; ; Hero; Handle dropping an object / money. ; ; Used by the routine at #R$8121. @label=Hero_Drop c$9E51 LD HL,$1000 ; Standard amount when adding to account. $9E54 LD A,($B178) ; $9E57 CP $09 ; Bank $9E59 JR Z,$9E67 ; $9E5B CP $05 ; Gambling $9E5D JR NZ,$9EA3 ; ; Gambling $9E5F LD A,($B11D) ; $9E62 AND A ; $9E63 RET NZ ; $9E64 LD HL,($B0EC) ; Get the cost of the object / amount per bet. ; Bank / Gambling. @label=Hero_Drop_0 *$9E67 LD ($B0EC),HL ; Store amount of money to shift onto account. $9E6A LD HL,($5E56) ; Check that we have something behind the hero to put the object onto. $9E6D LD A,L ; $9E6E AND H ; $9E6F AND $0F ; $9E71 RET Z ; $9E72 LD DE,($B0EC) ; Get difference between amount carried and the amount to put down. $9E76 LD HL,$B153 ; $9E79 CALL $ADEA ; $9E7C RET C ; Not enough carried, do nothing. $9E7D LD HL,$B0D7 ; Deal wit the bank account if in a bank. $9E80 LD A,($B178) ; $9E83 CP $09 ; $9E85 JR Z,$9E95 ; $9E87 LD A,($5E56) ; Workout which plinth the hero next to. $9E8A AND $0F ; $9E8C LD L,A ; $9E8D LD H,$00 ; $9E8F ADD HL,HL ; $9E90 ADD HL,HL ; $9E91 LD DE,$B0EA ; $9E94 ADD HL,DE ; @label=Hero_Drop_1 *$9E95 LD DE,($B0EC) ; Add amount to plinth. $9E99 CALL $ADE1 ; $9E9C LD HL,$9DC0 ; $9E9F LD (HL),$01 ; $9EA1 JR $9EB4 ; ; Other type of room. @label=Hero_Drop_2 *$9EA3 LD A,($B152) ; Check for money selected. $9EA6 AND A ; $9EA7 RET Z ; $9EA8 LD (HL),$01 ; $9EAA LD L,A ; Offset select index to pocket address. $9EAB LD H,$00 ; $9EAD LD DE,$B14E ; $9EB0 ADD HL,DE ; $9EB1 LD A,(HL) ; Get index of object being carried and check is valid. $9EB2 AND A ; $9EB3 RET Z ; @label=Hero_Drop_3 *$9EB4 EX DE,HL ; $9EB5 LD HL,($5E56) ; Calculate which plinth hero is near $9EB8 LD A,L ; $9EB9 AND H ; $9EBA AND $0F ; End if not near one. $9EBC RET Z ; $9EBD LD C,A ; Get address of plinth within room data. $9EBE LD B,$00 ; $9EC0 LD HL,($B170) ; $9EC3 ADD HL,BC ; $9EC4 LD A,(HL) ; See if plinth is empty. $9EC5 AND A ; $9EC6 JR Z,$9EDE ; $9EC8 LD A,($B178) ; If not check for bank / gambling which can have money already on plinth. $9ECB CP $09 ; $9ECD JR Z,$9ED2 ; $9ECF CP $05 ; $9ED1 RET NZ ; Any other type of room, just do nothing. ; Money drop. @label=Hero_Drop_4 *$9ED2 LD DE,$0005 ; Beep. $9ED5 LD HL,$0190 ; $9ED8 CALL $03B5 ; $9EDB JP $9C46 ; ; Object drop. @label=Hero_Drop_5 *$9EDE EX DE,HL ; $9EDF LD A,(HL) ; Move the object (index value) from pocket onto plinth. $9EE0 LD (DE),A ; $9EE1 LD (HL),$00 ; $9EE3 PUSH AF ; $9EE4 LD A,$01 ; Reset select to first object. $9EE6 LD ($B152),A ; $9EE9 LD DE,$0005 ; Beep. $9EEC LD HL,$0190 ; $9EEF CALL $03B5 ; $9EF2 POP AF ; $9EF3 JP $9D73 ; ; Inventory Select next pocket. ; ; Used by the routine at #R$8121. @label=Inv_SelectNext c$9EF6 LD HL,$B152 ; $9EF9 INC (HL) ; $9EFA JP $9C46 ; ; Indices to bitmap data for the hero's masks. @label=Bmp_HeroMaskIndices b$9EFD DEFB $00,$1F,$20,$21,$22,$23,$24,$25 $9F05 DEFB $1F,$20,$21,$22,$23,$24,$25,$26 $9F0D DEFB $26,$26,$27,$27,$28 @label=Bmp_IndexTemp $9F12 DEFB $00 ; Stores the index of which mask to use when drawing. ; Stage Draw everyone including Cuchulain and everything on stage. ; ; Used by the routines at #R$7F6F, #R$8121, #R$83D5, #R$8544, #R$8B0E and #R$8B40. @label=Stage_Draw c$9F13 LD A,($B131) ; This entry uses the current frame. ; This entry point is used by the routines at #R$7F6F, #R$8121, #R$8544, #R$85AE and #R$8684. @label=Stage_Draw_0 *$9F16 LD ($B131),A ; This entry uses a given frame in A. $9F19 CALL $8BF5 ; Make sure all of the background things are updated. $9F1C LD A,($B160) ; For South and West directions, draw people in front. $9F1F BIT 1,A ; $9F21 JR NZ,$9F26 ; $9F23 CALL $A64B ; @label=Stage_Draw_1 *$9F26 LD A,($B131) ; $9F29 AND A ; $9F2A JP Z,$9FDD ; $9F2D LD DE,$5B00 ; $9F30 LD A,($B131) ; $9F33 LD ($B131),A ; $9F36 LD HL,$60DB ; $9F39 LD A,$38 ; @label=Stage_Draw_2 *$9F3B LDI ; $9F3D LDI ; $9F3F LDI ; $9F41 LDI ; $9F43 LD BC,$001E ; $9F46 ADD HL,BC ; $9F47 DEC A ; $9F48 JR NZ,$9F3B ; $9F4A LD HL,($B131) ; Workout which mask to use. $9F4D LD H,$00 ; $9F4F LD DE,$9EFD ; $9F52 ADD HL,DE ; $9F53 LD A,(HL) ; $9F54 LD ($9F12),A ; $9F57 LD A,($B131) ; See if mask needs reversing. $9F5A CP $12 ; Ignore these to bitmaps. $9F5C JR Z,$9F8A ; $9F5E CP $13 ; $9F60 JR Z,$9F8A ; $9F62 LD L,A ; $9F63 CALL $ACDD ; $9F66 LD A,($B162) ; See if current graphic needs reversing. $9F69 RRCA ; $9F6A RRCA ; $9F6B XOR (HL) ; $9F6C JP P,$9F75 ; $9F6F LD HL,($B131) ; $9F72 CALL $9955 ; @label=Stage_Draw_3 *$9F75 LD HL,($9F12) ; $9F78 CALL $ACDD ; $9F7B LD A,($B162) ; $9F7E RRCA ; $9F7F RRCA ; $9F80 XOR (HL) ; $9F81 JP P,$9F8A ; $9F84 LD HL,($9F12) ; $9F87 CALL $9955 ; @label=Stage_Draw_4 *$9F8A LD HL,($B131) ; $9F8D CALL $ACDD ; $9F90 LD HL,($B12D) ; $9F93 LD ($BB88),HL ; $9F96 LD HL,($9F12) ; $9F99 CALL $ACDD ; $9F9C LD A,($B12F) ; $9F9F AND $7F ; $9FA1 RLA ; $9FA2 RLA ; $9FA3 RLA ; $9FA4 LD ($BB8A),A ; $9FA7 LD A,($B130) ; $9FAA AND $7F ; $9FAC LD ($BB8B),A ; $9FAF LD DE,($B12D) ; $9FB3 LD HL,$60DB ; $9FB6 LD A,($BB8B) ; $9FB9 CP $02 ; $9FBB JR NZ,$9FBE ; $9FBD INC HL ; @label=Stage_Draw_5 *$9FBE LD IX,($BB88) ; $9FC2 LD BC,($BB8A) ; @label=Stage_Draw_6 *$9FC6 PUSH BC ; $9FC7 PUSH HL ; @label=Stage_Draw_7 *$9FC8 LD A,(DE) ; $9FC9 AND (HL) ; $9FCA OR (IX+$00) ; $9FCD LD (HL),A ; $9FCE INC HL ; $9FCF INC DE ; $9FD0 INC IX ; $9FD2 DJNZ $9FC8 ; $9FD4 POP HL ; $9FD5 LD BC,$0022 ; $9FD8 ADD HL,BC ; $9FD9 POP BC ; $9FDA DEC C ; $9FDB JR NZ,$9FC6 ; @label=Stage_Draw_8 *$9FDD LD A,($B160) ; $9FE0 BIT 1,A ; $9FE2 RET Z ; $9FE3 JP $A64B ; ; Update the backgrounds of actors / hero. ; ; Used by the routine at #R$79B7. @label=DF_UpdateBg c$9FE6 LD A,($B160) ; Test for South / West facing. $9FE9 BIT 1,A ; $9FEB CALL NZ,$AC2D ; Update actors backgrounds first if so. $9FEE LD HL,$5B00 ; Update hero's background. $9FF1 LD A,($B131) ; $9FF4 AND A ; $9FF5 JP Z,$A00E ; $9FF8 LD DE,$60DB ; $9FFB LD A,$38 ; @label=DF_UpdateBg_0 *$9FFD LDI ; $9FFF LDI ; $A001 LDI ; $A003 LDI ; $A005 LD BC,$001E ; $A008 EX DE,HL ; $A009 ADD HL,BC ; $A00A EX DE,HL ; $A00B DEC A ; $A00C JR NZ,$9FFD ; @label=DF_UpdateBg_1 *$A00E LD A,($B160) ; Test for North / East. $A011 BIT 1,A ; $A013 RET NZ ; $A014 JP $AC2D ; Update backgrounds if so. ; Paths Finds a path based on a given coordinates (Axis, Vector). ; ; Used by the routines at #R$A31E, #R$A3D0 and #R$A53D. Input: IX Path data DE Axis position to test. BC Vector ; position to test. (A19E) Determines if test required when path found. EXIT 'C' flag : Set if failed to find ; path. EXIT IX Points to path found. Both N/S and E/W paths can be tested. Coordinates should be switched to match ; the axis and vector for the paths required. @label=Path_FindByCoord c$A017 LD ($BB88),BC ; $A01B LD HL,$FFFC ; $A01E ADD HL,DE ; $A01F EX DE,HL ; @label=Path_FindByCoord_0 *$A020 LD L,(IX+$00) ; Get axis of path. $A023 LD H,(IX+$01) ; $A026 AND A ; Get difference to coord. $A027 SBC HL,DE ; $A029 JR NC,$A032 ; ; Next path. @label=Path_FindByCoord_1 *$A02B LD BC,$000C ; Move onto next road $A02E ADD IX,BC ; $A030 JR $A020 ; @label=Path_FindByCoord_2 *$A032 LD BC,$0009 ; Check value is within margin $A035 SBC HL,BC ; $A037 JR C,$A03B ; ; Path not found. $A039 SCF ; IF greater than margin, just end. $A03A RET ; @label=Path_FindByCoord_3 *$A03B LD BC,($BB88) ; $A03F LD L,(IX+$02) ; Get end A of road. $A042 LD H,(IX+$03) ; $A045 SCF ; Difference $A046 SBC HL,BC ; $A048 JR NC,$A02B ; $A04A LD L,(IX+$04) ; Get end B of road. $A04D LD H,(IX+$05) ; $A050 AND A ; Get difference $A051 SBC HL,BC ; $A053 JR C,$A02B ; ; Path found. $A055 LD A,($A19E) ; Simply return with the result. $A058 AND A ; $A059 RET NZ ; ; Search through table. $A05A PUSH IX ; $A05C POP DE ; $A05D LD HL,$B137 ; $A060 LD B,$0C ; Loop $A062 LD C,$00 ; Number of matches. ; _ @label=Path_FindByCoord_4 *$A064 LD A,E ; $A065 CP (HL) ; $A066 INC HL ; $A067 JR NZ,$A06E ; $A069 LD A,D ; $A06A CP (HL) ; $A06B JR NZ,$A06E ; $A06D INC C ; Found, increase match counter. @label=Path_FindByCoord_5 *$A06E INC HL ; $A06F DJNZ $A064 ; $A071 LD A,C ; See if two or more have been found. $A072 CP $02 ; $A074 CCF ; If the result if less, return carry to indicate failed to find path. $A075 RET ; ; Data block at A076 @label=DistanceA b$A076 DEFW $0000 @label=DistanceB $A078 DEFW $0000 ; Actor Check distance of nearest junctions. ; ; Finds nearest junctions, both sides of actor, and calculates the distance. Input: ($a195) Address of actor ; #R$A195. A Direction actor is facing. IX Address of path actor is on. @label=Actor_NearestJunctions c$A07A PUSH IX ; Copy path axis / vector into temporary memory. $A07C POP HL ; $A07D LD DE,$BB8A ; $A080 LD BC,$0006 ; $A083 LDIR ; $A085 LD IX,($A195) ; Get address of current actor. $A089 BIT 0,A ; Check compass $A08B JR NZ,$A099 ; ; Compass N/S $A08D LD L,(IX+$07) ; Get actors E/W coord. $A090 LD H,(IX+$08) ; $A093 LD IX,($5BE8) ; Check for paths running N/S. $A097 JR $A0A3 ; ; Compass E/W @label=Actor_NearestJunctions_0 *$A099 LD L,(IX+$05) ; Get actors N/W coord. $A09C LD H,(IX+$06) ; $A09F LD IX,($5BE6) ; Check for paths running E/W. @label=Actor_NearestJunctions_1 *$A0A3 LD DE,$0004 ; Offset actors coords. $A0A6 AND A ; $A0A7 SBC HL,DE ; $A0A9 LD ($BB88),HL ; $A0AC LD HL,$0000 ; $A0AF LD ($A076),HL ; $A0B2 LD ($A078),HL ; $A0B5 LD DE,($BB8E) ; Get end of path (A) being tested. ; See if a path's axis intersects the actors path. @label=Actor_NearestJunctions_2 *$A0B9 LD BC,($BB8C) ; Get start of path (A) being tested. $A0BD LD L,(IX+$00) ; Get next path (B) axis to test with. $A0C0 LD H,(IX+$01) ; $A0C3 AND A ; See if axis is greater than path A start. $A0C4 SBC HL,BC ; $A0C6 JR C,$A0E7 ; No; move onto next path in list. $A0C8 ADD HL,BC ; See if axis is less than path A end. $A0C9 SCF ; $A0CA SBC HL,DE ; If not then all further paths will also be greater than path A's end. $A0CC RET NC ; $A0CD LD BC,($BB8A) ; See if path (A) axis intersects with path (B) start and end. $A0D1 LD L,(IX+$02) ; $A0D4 LD H,(IX+$03) ; $A0D7 SCF ; $A0D8 SBC HL,BC ; $A0DA JR NC,$A0E7 ; $A0DC LD L,(IX+$04) ; $A0DF LD H,(IX+$05) ; $A0E2 AND A ; $A0E3 SBC HL,BC ; $A0E5 JR NC,$A0EE ; Paths intersect... ; Next path. @label=Actor_NearestJunctions_3 *$A0E7 LD BC,$000C ; Move onto next path in list. $A0EA ADD IX,BC ; $A0EC JR $A0B9 ; ; Path found. @label=Actor_NearestJunctions_4 *$A0EE LD BC,($BB88) ; Get actors coords in direction of travel. $A0F2 LD L,(IX+$00) ; Get axis for intersecting path. $A0F5 LD H,(IX+$01) ; $A0F8 AND A ; Calculate difference and position. $A0F9 SBC HL,BC ; $A0FB JR NC,$A10A ; ; Path before actor. $A0FD LD C,L ; $A0FE LD B,H ; $A0FF LD HL,$0004 ; $A102 AND A ; $A103 SBC HL,BC ; $A105 LD ($A076),HL ; $A108 JR $A0E7 ; ; Path after actor. @label=Actor_NearestJunctions_5 *$A10A LD BC,$0009 ; $A10D AND A ; $A10E SBC HL,BC ; $A110 JR C,$A0E7 ; $A112 LD BC,$0005 ; $A115 ADD HL,BC ; $A116 LD ($A078),HL ; $A119 RET ; ; People Get coordinate (Axis, Vector) for testing against paths. ; ; Used by the routines at #R$A3D0 and #R$A53D. Input: IX Person being handled. A Direction. @label=Person_GetCoordsForTesting c$A11A BIT 0,A ; $A11C JR Z,$A12F ; ; Direction E/W $A11E LD E,(IX+$07) ; Axis; Get E/W coord $A121 LD D,(IX+$08) ; $A124 LD C,(IX+$05) ; Vector; Get N/S coord $A127 LD B,(IX+$06) ; $A12A LD IX,($5BE8) ; Get road (N/S map). $A12E RET ; ; Direction N/S @label=Person_GetCoordsForTesting_0 *$A12F LD E,(IX+$05) ; Axis; Get N/S coord $A132 LD D,(IX+$06) ; $A135 LD C,(IX+$07) ; Vectir; Get E/W coord $A138 LD B,(IX+$08) ; $A13B LD IX,($5BE6) ; Get road (E/W map). $A13F RET ; ; Routine at A140 ; ; Used by the routines at #R$A24A, #R$A25C, #R$A2B3, #R$A2FD, #R$A31E and #R$A352. Input: IX Ptr to person being ; handled. @label=_a140 c$A140 LD L,(IX+$10) ; (IX[$10] * 6) + 13 + ($a195) => 5bf6(x6) $A143 LD H,$00 ; $A145 ADD HL,HL ; $A146 LD E,L ; $A147 LD D,H ; $A148 ADD HL,HL ; $A149 ADD HL,DE ; $A14A LD DE,$0013 ; $A14D ADD HL,DE ; $A14E LD DE,($A195) ; $A152 ADD HL,DE ; $A153 LD DE,$5BF6 ; $A156 LD BC,$0006 ; $A159 LDIR ; $A15B RET ; ; Actor Create a door event for a person. ; ; Used by the routine at #R$A25C. @label=Actor_CreateDoorEvent c$A15C CALL $AC93 ; Create data node for object. $A15F RET Z ; No more nodes left. $A160 LD HL,$B0EA ; $A163 INC (HL) ; $A164 LD HL,$8CFE ; Store object handling function. $A167 LD (IX+$03),L ; $A16A LD (IX+$04),H ; $A16D LD (IX+$02),$92 ; $A171 LD DE,($5BF8) ; $A175 LD HL,($5BF6) ; $A178 LD A,($5BFA) ; $A17B LD (IX+$0A),A ; $A17E LD (IX+$05),L ; $A181 LD (IX+$06),H ; $A184 LD (IX+$07),E ; $A187 LD (IX+$08),D ; $A18A LD (IX+$09),$10 ; $A18E LD (IX+$0E),$01 ; $A192 RET ; ; Data block at A193 @label=_a193 b$A193 DEFB $00 @label=_a194 $A194 DEFB $00 @label=Actor_CurrentPtr $A195 DEFW $0000 ; Pointer to the current actor being handled. @label=_a197 $A197 DEFW $0000 $A199 DEFW $006E $A19B DEFW $0080 ; Data block at A19D b$A19D DEFB $01 ; Data block at A19E @label=_a19e b$A19E DEFB $00 ; Move a character forward by one step. ; ; Used by the routine at #R$A64B. @label=Person_MoveForward c$A19F LD IX,($A195) ; Get address of character data node. $A1A3 BIT 6,(IX+$13) ; Is character enabled? $A1A7 RET NZ ; ; This entry point is used by the routine at #R$A4FF. @label=Person_MoveForward_0 *$A1A8 LD A,(IX+$0A) ; Action count down. $A1AB AND A ; $A1AC JP Z,$A222 ; $A1AF DEC (IX+$0A) ; $A1B2 JR NZ,$A1BF ; $A1B4 LD A,(IX+$0D) ; See if character is standing still. $A1B7 AND A ; $A1B8 JR Z,$A1BF ; $A1BA LD A,(IX+$04) ; If so then use the last frame, which is always the standing still frame. $A1BD JR $A1CB ; @label=Person_MoveForward_1 *$A1BF LD A,(IX+$0B) ; Get current frame and increase it. $A1C2 INC A ; $A1C3 CP (IX+$04) ; See if the last frame has been hit and reset it if it has. $A1C6 JR C,$A1CB ; $A1C8 LD A,(IX+$03) ; @label=Person_MoveForward_2 *$A1CB LD (IX+$0B),A ; $A1CE LD A,(IX+$02) ; Get direction. $A1D1 BIT 0,A ; $A1D3 JR Z,$A1DD ; $A1D5 LD E,(IX+$07) ; Get E/W coords $A1D8 LD D,(IX+$08) ; $A1DB JR $A1E3 ; @label=Person_MoveForward_3 *$A1DD LD E,(IX+$05) ; Get N/S coords $A1E0 LD D,(IX+$06) ; @label=Person_MoveForward_4 *$A1E3 CP $00 ; Facing north? $A1E5 JR Z,$A1EE ; $A1E7 CP $03 ; Facing west? $A1E9 JR Z,$A1EE ; $A1EB INC DE ; Move south or east by one step. $A1EC JR $A1EF ; @label=Person_MoveForward_5 *$A1EE DEC DE ; Move north or west by one step. @label=Person_MoveForward_6 *$A1EF BIT 0,A ; Put back in correct axis based on direction. $A1F1 JR Z,$A1FB ; $A1F3 LD (IX+$07),E ; $A1F6 LD (IX+$08),D ; $A1F9 JR $A201 ; @label=Person_MoveForward_7 *$A1FB LD (IX+$05),E ; $A1FE LD (IX+$06),D ; @label=Person_MoveForward_8 *$A201 RET ; ; People action call table. Table of function pointers for people actions. @label=People_ActionTable b$A202 DEFW $A24A $A204 DEFW $A24A $A206 DEFW $A25C $A208 DEFW $A2B3 $A20A DEFW $A2EF $A20C DEFW $A2FD $A20E DEFW $A31E $A210 DEFW $A352 $A212 DEFW $0000 $A214 DEFW $0000 $A216 DEFW $A394 $A218 DEFW $A3B3 $A21A DEFW $A3B6 $A21C DEFW $A3B8 $A21E DEFW $A3CA $A220 DEFW $A3CC ; People Determine persons next action. ; ; Used by the routine at #R$A19F. Input: IX Ptr to current person. @label=People_DecideAction c$A222 LD A,(IX+$0D) ; See if person is still waiting. $A225 AND A ; $A226 JR Z,$A22C ; Waiting over, do next action. $A228 DEC (IX+$0D) ; Wait. $A22B RET ; ; Get next action. @label=People_DecideAction_0 *$A22C LD L,(IX+$14) ; $A22F LD H,(IX+$15) ; $A232 LD A,L ; $A233 OR H ; $A234 JP NZ,$A4FF ; $A237 XOR A ; $A238 LD ($A19E),A ; $A23B LD L,(IX+$16) ; Get index of current action. $A23E LD H,$00 ; Work out address of function. $A240 ADD HL,HL ; $A241 LD DE,$A202 ; $A244 ADD HL,DE ; $A245 LD E,(HL) ; Get address and jump to it. $A246 INC HL ; $A247 LD D,(HL) ; $A248 EX DE,HL ; $A249 JP (HL) ; ; Action ; ; Used by the routines at #R$A352 and #R$A3B3. Input: IX Ptr to person. @label=Action_a c$A24A LD A,(IX+$0E) ; If the person is Ryde $A24D CP $02 ; $A24F JP Z,$A389 ; ; For anyone else. @label=Action_a_0 *$A252 LD (IX+$16),$01 ; Make next action be [01] $A256 CALL $A140 ; $A259 JP $A3D0 ; ; Action ; ; Used by the routine at #R$A31E. @label=Action_b c$A25C LD IX,($A195) ; $A260 CALL $A140 ; $A263 LD A,($5BFB) ; $A266 AND A ; $A267 JP Z,$A365 ; $A26A LD A,($B19A) ; $A26D AND A ; $A26E RET NZ ; $A26F LD A,($B0EA) ; $A272 AND A ; $A273 RET NZ ; $A274 BIT 1,(IX+$13) ; $A278 JR NZ,$A2AB ; $A27A CALL $A15C ; $A27D XOR A ; $A27E LD (IX+$0C),A ; $A281 LD A,($5BFA) ; $A284 LD L,A ; $A285 LD H,$00 ; $A287 ADD HL,HL ; $A288 ADD HL,HL ; $A289 LD DE,$8705 ; $A28C ADD HL,DE ; $A28D LD DE,$5BF6 ; $A290 LD BC,$0004 ; $A293 LDIR ; $A295 XOR $02 ; $A297 LD ($5BFA),A ; $A29A CALL $A15C ; $A29D LD (IX+$02),$93 ; $A2A1 LD A,($5BFB) ; $A2A4 LD (IX+$0C),A ; $A2A7 LD IX,($A195) ; @label=Action_b_0 *$A2AB INC (IX+$16) ; $A2AE LD (IX+$0D),$08 ; $A2B2 RET ; ; Action @label=Action_c c$A2B3 CALL $A140 ; $A2B6 LD A,($5BFB) ; $A2B9 LD (IX+$18),A ; $A2BC LD HL,($A195) ; $A2BF LD DE,$0005 ; $A2C2 ADD HL,DE ; $A2C3 EX DE,HL ; $A2C4 LD HL,($5BFA) ; $A2C7 LD H,$00 ; $A2C9 ADD HL,HL ; $A2CA ADD HL,HL ; $A2CB LD BC,$8705 ; $A2CE ADD HL,BC ; $A2CF LD BC,$0004 ; $A2D2 LDIR ; $A2D4 INC (IX+$16) ; $A2D7 LD B,(IX+$18) ; $A2DA LD HL,$B5C4 ; $A2DD LD D,$00 ; @label=Action_c_0 *$A2DF LD E,(HL) ; $A2E0 ADD HL,DE ; $A2E1 DJNZ $A2DF ; $A2E3 INC HL ; $A2E4 LD A,(HL) ; $A2E5 RRA ; $A2E6 RRA ; $A2E7 RRA ; $A2E8 RRA ; $A2E9 AND $0F ; $A2EB INC A ; $A2EC LD (IX+$0F),A ; ; Action @label=Action_d c$A2EF LD HL,$A199 ; $A2F2 LD DE,$5BF6 ; $A2F5 LD BC,$0005 ; $A2F8 LDIR ; $A2FA JP $A3D0 ; ; Action @label=Action_e c$A2FD CALL $A140 ; $A300 LD HL,($5BFA) ; $A303 LD H,$00 ; $A305 ADD HL,HL ; $A306 ADD HL,HL ; $A307 LD DE,$8705 ; $A30A ADD HL,DE ; $A30B LD DE,$5BF6 ; $A30E LD BC,$0004 ; $A311 LDIR ; $A313 LD A,($5BFA) ; $A316 XOR $02 ; $A318 LD ($5BFA),A ; $A31B JP $A3D0 ; ; Action @label=Action_f c$A31E CALL $A140 ; $A321 XOR A ; $A322 LD ($A19E),A ; $A325 LD A,($5BFA) ; $A328 BIT 0,A ; $A32A JR Z,$A33F ; $A32C LD DE,($5BF8) ; $A330 LD BC,($5BF6) ; $A334 LD IX,($690D) ; $A338 CALL $A017 ; $A33B RET C ; $A33C JP $A25C ; @label=Action_f_0 *$A33F LD DE,($5BF6) ; $A343 LD BC,($5BF8) ; $A347 LD IX,($690B) ; $A34B CALL $A017 ; $A34E RET C ; $A34F JP $A25C ; ; Action @label=Action_g c$A352 CALL $A140 ; $A355 LD HL,($A195) ; Copy current map coordinates. $A358 LD DE,$0005 ; $A35B ADD HL,DE ; $A35C EX DE,HL ; $A35D LD HL,$5BF6 ; $A360 LD BC,$0004 ; $A363 LDIR ; ; This entry point is used by the routine at #R$A25C. @label=Action_g_0 *$A365 LD (IX+$18),$00 ; $A369 LD (IX+$16),$01 ; $A36D LD (IX+$0F),$01 ; $A371 INC (IX+$10) ; $A374 LD A,(IX+$10) ; $A377 CP $03 ; $A379 JP C,$A24A ; $A37C LD (IX+$10),$01 ; $A380 BIT 2,(IX+$13) ; $A384 JR NZ,$A394 ; $A386 JP $A24A ; } ; Routine at A389 ; ; Used by the routine at #R$A24A. @label=Action_h c$A389 LD HL,($B14F) ; See if hero is carrying anthing marked as stolen. $A38C LD A,($B151) ; $A38F OR L ; $A390 OR H ; $A391 JP P,$A252 ; ; This entry point is used by the routine at #R$A352. @label=Action_i *$A394 LD A,($B158) ; Action: $A397 CP $01 ; $A399 JP NZ,$A252 ; $A39C LD (IX+$16),$0A ; ; This entry point is used by the routines at #R$A3B6 and #R$A3CA. @label=Action_h_0 *$A3A0 LD HL,$B15A ; $A3A3 LD DE,$5BF6 ; $A3A6 LD BC,$0004 ; $A3A9 LDIR ; $A3AB LD A,($B16A) ; $A3AE LD ($5BFA),A ; $A3B1 JR $A3D0 ; } ; Action @label=Action_j c$A3B3 JP $A24A ; ; Action @label=Action_k c$A3B6 JR $A3A0 ; ; Action @label=Action_l c$A3B8 LD B,$01 ; ; This entry point is used by the routine at #R$A3CC. @label=Action_l_0 *$A3BA LD A,($B0DC) ; $A3BD AND A ; $A3BE RET NZ ; $A3BF LD A,($B0E8) ; $A3C2 AND A ; $A3C3 RET NZ ; $A3C4 LD (IX+$16),B ; $A3C7 JP $A22C ; ; Action @label=Action_m c$A3CA JR $A3A0 ; ; Action @label=Action_n c$A3CC LD B,$04 ; $A3CE JR $A3BA ; ; Action ; ; Used by the routines at #R$A24A, #R$A2EF, #R$A2FD and #R$A389. @label=Action_a3d0 c$A3D0 LD A,(IX+$18) ; $A3D3 LD ($A19E),A ; $A3D6 LD L,(IX+$0F) ; $A3D9 LD H,$00 ; $A3DB ADD HL,HL ; $A3DC ADD HL,HL ; $A3DD ADD HL,HL ; $A3DE LD DE,$6903 ; $A3E1 ADD HL,DE ; $A3E2 LD DE,$5BE6 ; $A3E5 LD BC,$0004 ; $A3E8 LDIR ; $A3EA LD L,(IX+$0E) ; value[Person type] $A3ED LD H,$00 ; $A3EF ADD HL,HL ; $A3F0 LD DE,$B135 ; $A3F3 ADD HL,DE ; $A3F4 LD ($A197),HL ; $A3F7 XOR A ; $A3F8 LD (HL),A ; $A3F9 INC HL ; $A3FA LD (HL),A ; $A3FB LD A,($5BFA) ; Get the address of the path person is on. $A3FE CALL $A11A ; $A401 LD HL,$0000 ; $A404 LD ($5BEA),HL ; $A407 CALL $A017 ; $A40A JP C,$A53D ; $A40D LD ($5BEA),IX ; Store address if path found. $A411 LD C,(IX+$00) ; Get axis of path $A414 LD B,(IX+$01) ; $A417 LD HL,($5BF6) ; Stored coordinates. $A41A LD DE,($5BF8) ; $A41E LD A,($5BFA) ; Get direction $A421 BIT 0,A ; $A423 JR Z,$A426 ; $A425 EX DE,HL ; Swap axis and vector for E/W @label=Action_a3d0_0 *$A426 AND A ; $A427 SBC HL,BC ; $A429 JP NZ,$A53D ; $A42C LD L,(IX+$02) ; Check vector is between end 'A' of path... $A42F LD H,(IX+$03) ; $A432 SCF ; $A433 SBC HL,DE ; $A435 JP NC,$A53D ; $A438 LD L,(IX+$04) ; ...and end 'B' of path. $A43B LD H,(IX+$05) ; $A43E AND A ; $A43F SBC HL,DE ; $A441 JP C,$A53D ; $A444 LD IX,($A195) ; $A448 BIT 0,A ; $A44A JR NZ,$A454 ; $A44C LD L,(IX+$07) ; $A44F LD H,(IX+$08) ; $A452 JR $A45A ; @label=Action_a3d0_1 *$A454 LD L,(IX+$05) ; $A457 LD H,(IX+$06) ; @label=Action_a3d0_2 *$A45A CALL $AC5A ; $A45D JP Z,$A53D ; $A460 LD (IX+$0D),$01 ; $A464 INC (IX+$16) ; $A467 LD A,(IX+$16) ; $A46A CP $0D ; $A46C JR Z,$A472 ; $A46E CP $0F ; $A470 JR NZ,$A475 ; @label=Action_a3d0_3 *$A472 LD HL,$0002 ; @label=Action_a3d0_4 *$A475 LD IX,($5BEA) ; $A479 LD A,($5BFA) ; $A47C LD B,$00 ; $A47E LD C,$03 ; ; This entry point is used by the routine at #R$A53D. @label=Action_a3d0_5 *$A480 LD ($A078),HL ; $A483 LD L,(IX+$00) ; $A486 LD H,(IX+$01) ; $A489 PUSH IX ; Store path address. $A48B POP DE ; $A48C LD IX,($A197) ; $A490 LD (IX+$00),E ; $A493 LD (IX+$01),D ; $A496 LD IX,($A195) ; Store for current player as well. $A49A LD (IX+$11),E ; $A49D LD (IX+$12),D ; $A4A0 LD E,A ; $A4A1 LD A,(IX+$11) ; Return if no path found. $A4A4 OR D ; $A4A5 RET Z ; $A4A6 LD A,E ; Check person's camera / compass. $A4A7 BIT 0,A ; $A4A9 JR Z,$A4BD ; ; N/S facing. $A4AB LD (IX+$07),L ; Store as E/W coord. $A4AE LD (IX+$08),H ; $A4B1 LD E,(IX+$05) ; Get N/S coord. $A4B4 LD D,(IX+$06) ; $A4B7 LD HL,($5BF6) ; $A4BA LD A,B ; $A4BB JR $A4CD ; ; E/W facing. @label=Action_a3d0_6 *$A4BD LD (IX+$05),L ; Store as N/S coord. $A4C0 LD (IX+$06),H ; $A4C3 LD E,(IX+$07) ; Get E/W coord. $A4C6 LD D,(IX+$08) ; $A4C9 LD HL,($5BF8) ; $A4CC LD A,C ; ; Difference... @label=Action_a3d0_7 *$A4CD AND A ; Passed the target? $A4CE SBC HL,DE ; $A4D0 JR C,$A4D4 ; $A4D2 XOR $02 ; Yes, reverse direction. @label=Action_a3d0_8 *$A4D4 LD H,(IX+$02) ; $A4D7 LD (IX+$02),A ; $A4DA LD L,(IX+$13) ; Clear flags (7) ????? $A4DD RES 7,L ; $A4DF XOR $02 ; Was previous temp direction same as current direction... $A4E1 CP H ; $A4E2 JR NZ,$A4F9 ; $A4E4 LD A,(IX+$16) ; And current action is (1).. $A4E7 CP $01 ; $A4E9 JR NZ,$A4F9 ; $A4EB SET 7,L ; Then set flag (7). $A4ED LD A,L ; $A4EE CP (IX+$13) ; If the same as current flags... $A4F1 JR NZ,$A4F9 ; $A4F3 LD (IX+$16),$0A ; Set next action as (A) $A4F7 RES 7,L ; and reset flag (7) @label=Action_a3d0_9 *$A4F9 LD (IX+$13),L ; Store new flags value. $A4FC LD HL,($A078) ; ; Routine at A4FF ; ; Used by the routine at #R$A222. Input: IX Pointer to current person. HL @label=_a4ff_People c$A4FF LD A,(IX+$16) ; Get action index $A502 CP $02 ; $A504 JR Z,$A50A ; $A506 CP $06 ; $A508 JR NZ,$A50E ; @label=_a4ff_People_0 *$A50A LD (IX+$0D),$01 ; Wait for one cycle. @label=_a4ff_People_1 *$A50E LD A,(IY+$3E) ; Use time for random number. $A511 AND $7F ; $A513 ADD A,$0A ; $A515 CP L ; If new value is less than existing, use it. $A516 JR C,$A519 ; $A518 LD A,L ; If existing is not zero, use that instead. @label=_a4ff_People_2 *$A519 AND A ; $A51A JR NZ,$A51E ; $A51C LD A,$20 ; Else default to $20 @label=_a4ff_People_3 *$A51E LD (IX+$0A),A ; Set as action countdown. $A521 LD E,A ; $A522 LD D,$00 ; $A524 AND A ; $A525 SBC HL,DE ; $A527 JR Z,$A534 ; $A529 LD A,(IX+$16) ; If using action other than $0a, set waiting time. $A52C CP $0A ; $A52E JR Z,$A534 ; $A530 LD (IX+$0D),$1E ; @label=_a4ff_People_4 *$A534 LD (IX+$14),L ; $A537 LD (IX+$15),H ; $A53A JP $A1A8 ; ; Routine at A53D ; ; Used by the routine at #R$A3D0. @label=_a53d c$A53D LD IX,($A195) ; $A541 LD HL,($5BF6) ; $A544 LD E,(IX+$05) ; $A547 LD D,(IX+$06) ; $A54A LD C,$00 ; $A54C AND A ; $A54D SBC HL,DE ; $A54F JR C,$A553 ; $A551 LD C,$02 ; @label=_a53d_0 *$A553 LD HL,($5BF8) ; $A556 LD E,(IX+$07) ; $A559 LD D,(IX+$08) ; $A55C LD B,$03 ; $A55E AND A ; $A55F SBC HL,DE ; $A561 JR C,$A565 ; $A563 LD B,$01 ; @label=_a53d_1 *$A565 LD A,($5BFA) ; $A568 BIT 0,A ; $A56A JR Z,$A56F ; $A56C LD A,C ; $A56D LD C,B ; $A56E LD B,A ; @label=_a53d_2 *$A56F LD ($A193),BC ; $A573 LD A,($5BFA) ; $A576 XOR $01 ; $A578 CALL $A11A ; See if coordinats is on a path. $A57B LD HL,$0000 ; $A57E LD ($5BF0),HL ; $A581 CALL $A017 ; $A584 JR C,$A5C0 ; Skip if test failed. $A586 LD ($5BF0),IX ; Store address of path found. ; Get the distance of the junctions either side. $A58A LD A,($5BFA) ; Convert camera compass into direction. $A58D XOR $01 ; $A58F CALL $A07A ; Calculate distances of junctions. $A592 LD HL,($A076) ; $A595 LD DE,($A078) ; $A599 LD A,($A193) ; $A59C CP $00 ; $A59E JR Z,$A5A5 ; $A5A0 CP $03 ; $A5A2 JR Z,$A5A5 ; $A5A4 EX DE,HL ; @label=_a53d_3 *$A5A5 LD ($5BF2),HL ; $A5A8 LD ($5BF4),DE ; $A5AC LD A,L ; $A5AD OR H ; $A5AE JR Z,$A5C0 ; $A5B0 LD IX,($5BF0) ; $A5B4 LD A,($5BFA) ; $A5B7 XOR $01 ; $A5B9 LD B,$00 ; $A5BB LD C,$03 ; $A5BD JP $A480 ; @label=_a53d_4 *$A5C0 LD HL,($5BEA) ; $A5C3 LD A,L ; $A5C4 OR H ; $A5C5 JR Z,$A610 ; ; Calculate distant of junctions. $A5C7 LD IX,($5BEA) ; $A5CB LD A,($5BFA) ; $A5CE CALL $A07A ; $A5D1 LD HL,($A076) ; $A5D4 LD DE,($A078) ; $A5D8 LD A,($A194) ; $A5DB CP $00 ; $A5DD JR Z,$A5E4 ; $A5DF CP $03 ; $A5E1 JR Z,$A5E4 ; $A5E3 EX DE,HL ; @label=_a53d_5 *$A5E4 LD ($5BEC),HL ; $A5E7 LD ($5BEE),DE ; $A5EB LD A,L ; $A5EC OR H ; $A5ED JR Z,$A5FD ; $A5EF LD IX,($5BEA) ; $A5F3 LD A,($5BFA) ; $A5F6 LD B,$00 ; $A5F8 LD C,$03 ; $A5FA JP $A480 ; @label=_a53d_6 *$A5FD EX DE,HL ; $A5FE LD A,L ; $A5FF OR H ; $A600 JR Z,$A610 ; $A602 LD IX,($5BEA) ; $A606 LD A,($5BFA) ; $A609 LD B,$02 ; $A60B LD C,$01 ; $A60D JP $A480 ; @label=_a53d_7 *$A610 LD IX,($5BF0) ; $A614 LD HL,($5BF4) ; $A617 LD A,($5BFA) ; $A61A XOR $01 ; $A61C LD B,$02 ; $A61E LD C,$01 ; $A620 JP $A480 ; ; Data block at A623 b$A623 DEFB $20,$21,$22,$23,$24,$25,$20,$21 $A62B DEFB $22,$23,$24,$25,$26 ; Data block at A630 b$A630 DEFB $00,$01,$02,$0A,$0B ; Data block at A635 b$A635 DEFB $04,$05,$00 ; Data block at A638 @label=_a638 b$A638 DEFB $00,$00,$00,$00 ; Pointers to the characters currently visible on screen. @label=CharPtr_Current b$A63C DEFW $0000 ; Data block at A63E b$A63E DEFB $00 ; Table of attributes values to use when colouring an identity badge. @label=Table_BadgeCols b$A63F DEFB $00,$20,$10,$30,$30,$30,$10,$20 $A647 DEFB $10,$20,$10,$38 ; Handle all actors. ; ; Used by the routine at #R$9F13. @label=People_Main c$A64B XOR A ; $A64C LD ($A637),A ; $A64F LD IX,$B135 ; Get address to the start of person data link list. @label=People_Main_0 *$A653 LD L,(IX+$00) ; Get address of next node in list. $A656 LD H,(IX+$01) ; $A659 LD A,L ; Check for end of list. $A65A OR H ; $A65B JP Z,$A7EA ; $A65E LD ($A195),HL ; Store address and.. $A661 CALL $A19F ; $A664 LD IX,($A195) ; Get node address back. $A668 LD HL,($B165) ; Check to see on the same path as the player. $A66B LD E,(IX+$11) ; $A66E LD D,(IX+$12) ; $A671 AND A ; $A672 SBC HL,DE ; $A674 JR Z,$A67C ; ; Next person. @label=People_Main_1 *$A676 LD (IX+$17),$00 ; Not near enough, clear action flag. $A67A JR $A653 ; @label=People_Main_2 *$A67C LD A,($B16D) ; $A67F CP (IX+$18) ; $A682 JR NZ,$A676 ; $A684 LD A,($B160) ; Based on compass, get the coords of both player and person along the path axis. $A687 BIT 0,A ; $A689 JR NZ,$A696 ; $A68B LD HL,($B15C) ; $A68E LD E,(IX+$07) ; $A691 LD D,(IX+$08) ; $A694 JR $A69F ; @label=People_Main_3 *$A696 LD HL,($B15A) ; $A699 LD E,(IX+$05) ; $A69C LD D,(IX+$06) ; @label=People_Main_4 *$A69F BIT 1,A ; $A6A1 JR NZ,$A6A4 ; $A6A3 EX DE,HL ; @label=People_Main_5 *$A6A4 LD ($BB88),HL ; Store players position. $A6A7 CALL $AC5A ; Get difference between the two. $A6AA LD A,H ; If difference is larger than $FF, go onto next person in list. $A6AB AND A ; $A6AC JR NZ,$A676 ; $A6AE LD C,$22 ; $A6B0 BIT 4,(IX+$13) ; $A6B4 JR NZ,$A6C0 ; $A6B6 LD A,(IX+$0B) ; $A6B9 CP (IX+$04) ; $A6BC JR Z,$A6C0 ; $A6BE LD C,$24 ; @label=People_Main_6 *$A6C0 LD A,L ; $A6C1 CP C ; $A6C2 JR NC,$A676 ; $A6C4 LD A,($B0E9) ; $A6C7 AND A ; $A6C8 JP NZ,$A75A ; $A6CB LD A,L ; $A6CC CP $0C ; $A6CE JP NC,$A753 ; $A6D1 LD ($BB8A),A ; $A6D4 LD A,(IX+$0E) ; $A6D7 CP $02 ; $A6D9 JR NZ,$A6FC ; $A6DB LD HL,($B14F) ; $A6DE LD A,($B151) ; $A6E1 OR L ; $A6E2 OR H ; $A6E3 JP P,$A6FC ; $A6E6 LD A,(IX+$16) ; $A6E9 LD HL,$A630 ; $A6EC LD BC,$0005 ; $A6EF CPIR ; $A6F1 JR NZ,$A6FC ; $A6F3 LD A,$01 ; $A6F5 LD ($B0E8),A ; $A6F8 LD A,$0C ; $A6FA JR $A73A ; @label=People_Main_7 *$A6FC CALL $A8E2 ; $A6FF LD A,($B0DC) ; $A702 AND A ; $A703 JR Z,$A74C ; $A705 LD HL,($5E56) ; $A708 LD A,H ; $A709 OR L ; $A70A BIT 4,A ; $A70C JR NZ,$A753 ; $A70E LD HL,($B0E2) ; $A711 LD A,L ; $A712 OR H ; $A713 JR NZ,$A753 ; $A715 LD A,(IX+$16) ; $A718 LD HL,$A630 ; $A71B LD BC,$0007 ; $A71E CPIR ; $A720 JR NZ,$A753 ; $A722 LD ($B0E2),IX ; $A726 BIT 6,(IX+$13) ; $A72A JR NZ,$A753 ; $A72C LD BC,$0002 ; $A72F LD HL,$A635 ; $A732 CPIR ; $A734 LD A,$0E ; $A736 JR Z,$A73A ; $A738 LD A,$0C ; @label=People_Main_8 *$A73A LD (IX+$16),A ; $A73D XOR A ; $A73E LD (IX+$0A),A ; $A741 LD (IX+$15),A ; $A744 LD (IX+$14),A ; $A747 LD (IX+$0D),A ; $A74A JR $A753 ; @label=People_Main_9 *$A74C BIT 3,(IX+$13) ; $A750 CALL NZ,$A934 ; @label=People_Main_10 *$A753 BIT 0,(IX+$13) ; $A757 JP NZ,$A653 ; @label=People_Main_11 *$A75A LD A,$39 ; $A75C BIT 4,(IX+$13) ; $A760 JP NZ,$A79A ; $A763 LD HL,($BB88) ; $A766 AND A ; $A767 SBC HL,DE ; $A769 LD DE,$001E ; $A76C AND A ; $A76D ADC HL,DE ; $A76F JP M,$A789 ; $A772 RES 0,L ; $A774 LD DE,$003D ; $A777 AND A ; $A778 SBC HL,DE ; $A77A JR NC,$A789 ; $A77C ADD HL,DE ; $A77D ADD HL,HL ; $A77E ADD HL,HL ; $A77F LD C,L ; $A780 LD B,$80 ; $A782 PUSH IX ; $A784 PUSH BC ; $A785 LD HL,$A637 ; $A788 INC (HL) ; @label=People_Main_12 *$A789 LD A,(IX+$0B) ; $A78C CP $3C ; $A78E JR C,$A792 ; $A790 SUB $14 ; @label=People_Main_13 *$A792 LD E,A ; $A793 LD D,$00 ; $A795 LD HL,$A5FA ; $A798 ADD HL,DE ; $A799 LD A,(HL) ; @label=People_Main_14 *$A79A LD (IX+$0C),A ; $A79D LD A,($B160) ; $A7A0 SUB (IX+$02) ; $A7A3 BIT 0,A ; $A7A5 JR Z,$A7CD ; $A7A7 RRCA ; $A7A8 RRCA ; $A7A9 PUSH AF ; $A7AA LD L,(IX+$0B) ; $A7AD CALL $ACDD ; $A7B0 POP AF ; $A7B1 PUSH AF ; $A7B2 XOR (HL) ; $A7B3 JP M,$A7BC ; $A7B6 LD L,(IX+$0B) ; $A7B9 CALL $9955 ; @label=People_Main_15 *$A7BC LD L,(IX+$0C) ; $A7BF CALL $ACDD ; $A7C2 POP AF ; $A7C3 XOR (HL) ; $A7C4 JP M,$A7CD ; $A7C7 LD L,(IX+$0C) ; $A7CA CALL $9955 ; @label=People_Main_16 *$A7CD LD A,$11 ; $A7CF LD HL,$B160 ; $A7D2 BIT 1,(HL) ; $A7D4 JR Z,$A7D8 ; $A7D6 LD A,$13 ; @label=People_Main_17 *$A7D8 BIT 4,(IX+$13) ; $A7DC JR Z,$A7E0 ; $A7DE ADD A,$28 ; @label=People_Main_18 *$A7E0 LD (IX+$09),A ; $A7E3 XOR A ; $A7E4 CALL $A992 ; $A7E7 JP $A653 ; @label=People_Main_19 *$A7EA LD HL,$A63C ; $A7ED LD DE,$A638 ; $A7F0 LD BC,$0004 ; $A7F3 LDIR ; $A7F5 LD HL,$5C92 ; $A7F8 LD BC,$0004 ; $A7FB LDIR ; $A7FD LD HL,$5A00 ; $A800 LD DE,$5A01 ; $A803 LD BC,$003F ; $A806 LD (HL),$00 ; $A808 LDIR ; $A80A LD A,($A637) ; @label=People_Main_20 *$A80D AND A ; $A80E JR Z,$A844 ; $A810 POP BC ; $A811 LD HL,($A63E) ; $A814 LD ($A63C),HL ; $A817 POP IX ; $A819 LD ($A63E),IX ; $A81D PUSH AF ; $A81E PUSH BC ; ; Draw a symbol $A81F LD A,(IX+$25) ; Get the first letter in the character's name. $A822 AND $DF ; Make sure it is within the range of the ASCII letters. $A824 LD HL,($BEDC) ; Get the address of the bitmap for the badge sprite from its bitmap information. $A827 LD DE,$0008 ; Create an offset, this is within the bitmap and is where the letter is drawn to. $A82A LD BC,$0002 ; $A82D CALL $9B9E ; Blit the letter into the middle of the badge. $A830 POP BC ; ; Draw identity badge for character. $A831 LD E,(IX+$0E) ; Get index for person type. $A834 LD D,$00 ; Use as an offset to get the colour to use from the badge colour table. $A836 LD HL,$A63F ; $A839 ADD HL,DE ; $A83A LD A,(HL) ; $A83B LD L,$D4 ; Index for the information on the badge. $A83D CALL $9BCE ; $A840 POP AF ; $A841 DEC A ; $A842 JR $A80D ; @label=People_Main_21 *$A844 LD B,$04 ; $A846 LD IX,$A638 ; @label=People_Main_22 *$A84A LD A,(IX+$00) ; $A84D CP (IX+$04) ; $A850 JR NZ,$A857 ; $A852 INC IX ; $A854 DJNZ $A84A ; $A856 RET ; ; Print names of characters visible on screen. @label=People_Main_23 *$A857 LD A,$01 ; Set channel 1 for output stream. $A859 CALL $1601 ; $A85C LD DE,$5A76 ; Colour name displayed on screen using the values in the temporary store. $A85F LD HL,$5C92 ; $A862 LD BC,$0004 ; $A865 LDIR ; $A867 LD DE,$5A96 ; Do same for next line down. $A86A LD BC,$0004 ; $A86D LDIR ; $A86F CALL $AD1A ; PRINT PAPER BLACK, INK WHITE, BRIGHT ON ; Data block at A872 b$A872 DEFB $11 $A873 DEFB $00 $A874 DEFB $10 $A875 DEFB $07 $A876 DEFB $13 $A877 DEFB $01 $A878 DEFB $5E ; Routine at A879 c$A879 LD IX,$A63C ; Table of pointers to characters on screen. $A87D LD B,$02 ; Limited to two other characters on screen. @label=People_Main_24 *$A87F PUSH BC ; $A880 LD L,(IX+$00) ; Get address of character $A883 LD H,(IX+$01) ; $A886 LD A,L ; $A887 OR H ; $A888 JR Z,$A8A1 ; $A88A LD A,$16 ; PRINT AT (B+2), 16 $A88C RST $10 ; $A88D LD A,B ; $A88E ADD A,$02 ; $A890 RST $10 ; $A891 LD A,$16 ; $A893 RST $10 ; $A894 LD DE,$0025 ; Get address of name from character's data and display it. $A897 ADD HL,DE ; $A898 LD B,$04 ; @label=People_Main_25 *$A89A LD A,(HL) ; $A89B CALL $AD9B ; $A89E INC HL ; $A89F DJNZ $A89A ; @label=People_Main_26 *$A8A1 POP BC ; $A8A2 INC IX ; $A8A4 INC IX ; $A8A6 DJNZ $A87F ; $A8A8 RET ; ; Replies from people. @label=Msg_GoodEvening b$A8A9 DEFM "good evening" $A8B5 DEFB $5E @label=Msg_GoodDay $A8B6 DEFM "good day" $A8BE DEFB $5E @label=Msg_MapForFur $A8BF DEFM "a map for a fur" $A8CE DEFB $5E @label=Msg_MapForPlatinum $A8CF DEFM "a map for platinum" $A8E1 DEFB $5E ; Decides if a visible person should greet the player. ; ; Used by the routine at #R$A64B. Input: IX Pre to person data. @label=Person_Greet c$A8E2 BIT 4,(IX+$13) ; $A8E6 RET NZ ; $A8E7 LD A,(IX+$17) ; If set the person has already done an action. $A8EA AND A ; $A8EB RET NZ ; $A8EC BIT 0,(IX+$13) ; $A8F0 RET NZ ; $A8F1 LD (IX+$17),$01 ; Set person, so no other action occurs. $A8F5 LD A,($B0DC) ; $A8F8 AND A ; $A8F9 RET NZ ; $A8FA LD A,($B0E8) ; Do not display any messages if player has just been arrested. $A8FD AND A ; $A8FE RET NZ ; $A8FF PUSH DE ; $A900 CALL $AD1F ; Set up printed area. (AT $05, $0a ) ; Data block at A903 b$A903 DEFB $16 $A904 DEFB $05 $A905 DEFB $0A $A906 DEFB $5E ; Routine at A907 c$A907 LD A,(IX+$0E) ; $A90A CP $0A ; $A90C JR Z,$A91F ; $A90E LD HL,$A8B6 ; Decide on morning or evening. $A911 LD A,($B0D6) ; $A914 AND A ; $A915 JR NZ,$A91A ; $A917 LD HL,$A8A9 ; @label=Person_Greet_0 *$A91A CALL $AD0D ; print the message chosen. $A91D POP DE ; $A91E RET ; ; Bren's messages. @label=Person_Greet_1 *$A91F LD HL,$A8BF ; Set up for the map message. $A922 BIT 5,(IX+$13) ; But check for the platinum message flag. $A926 JR NZ,$A91A ; $A928 LD HL,$A8CF ; $A92B JR $A91A ; ; Indices to objects that cannot be stolen. @label=Obj_NotStealIndicies b$A92D DEFB $14 ; Thiefs License. $A92E DEFB $18 ; Telestone. $A92F DEFB $2B ; Philtre. $A930 DEFB $34 ; Scrip "eve". $A931 DEFB $35 ; Scrip "did". $A932 DEFB $36 ; Scrip "pop". $A933 DEFB $3B ; L-Key. ; Check to see if thief can steal from player. ; ; Used by the routine at #R$A64B. @label=Thief_TryToSteal c$A934 LD A,(IX+$17) ; See if thief has bumped into player. $A937 CP $01 ; $A939 JR Z,$A940 ; $A93B RET C ; $A93C DEC (IX+$17) ; $A93F RET ; @label=Thief_TryToSteal_0 *$A940 LD A,($BB8A) ; $A943 CP $02 ; $A945 RET NC ; $A946 PUSH IX ; $A948 PUSH DE ; $A949 LD (IX+$17),$05 ; $A94D LD A,($B152) ; See if money is selected. $A950 AND A ; If not check to see what is. $A951 JR NZ,$A96F ; $A953 CALL $AE36 ; Clear any money being carried. ; Data block at A956 b$A956 DEFW $B153 $A958 DEFB $04 ; Routine at A959 ; ; Used by the routine at #R$A968. @label=Thief_TryToSteal_1 c$A959 CALL $AD1F ; Display the message to let the player know they have been robbed. ; Data block at A95C @label=Msg_YourPardon b$A95C DEFM "your pardon" $A967 DEFB $5E ; Routine at A968 c$A968 CALL $9C46 ; Update the inventory screen. @label=Thief_TryToSteal_2 *$A96B POP DE ; $A96C POP IX ; $A96E RET ; ; This entry point is used by the routine at #R$A934. @label=Thief_TryToSteal_3 *$A96F LD L,A ; Offset selected index to the address of the pocket it represents. $A970 LD H,$00 ; $A972 LD BC,$B14E ; $A975 ADD HL,BC ; $A976 PUSH HL ; $A977 LD A,(HL) ; Get index of the object selected. $A978 AND $7F ; $A97A LD HL,$A92D ; Compare to the table of objects that cannot be stolen. $A97D LD BC,$0007 ; $A980 CPIR ; $A982 POP HL ; $A983 JR Z,$A96B ; Done if found. $A985 LD (HL),$00 ; Make object stolen by clearing pocket. $A987 LD A,$01 ; Select money. $A989 LD ($B152),A ; $A98C JR $A959 ; ; Blit Shift data. @label=_a98e b$A98E DEFW $0000 $A990 DEFB $00 @label=ObjNode_BlitType $A991 DEFB $00 ; Type of object / blit required for method. ; Blit an object (from object data node), correctly on screen adjusting for compass and position. ; ; Used by the routines at #R$8CFE, #R$8D9F, #R$8EA0 and #R$A64B. Input: IX Address of object data node @label=ObjNode_BlitShft c$A992 PUSH IX ; $A994 LD ($A991),A ; $A997 CP $01 ; $A999 JR Z,$A9A7 ; $A99B LD L,(IX+$0C) ; $A99E CALL $ACDD ; $A9A1 LD HL,($B12D) ; $A9A4 LD ($BB88),HL ; @label=ObjNode_BlitShft_0 *$A9A7 LD L,(IX+$0B) ; Cache the bitmap info $A9AA CALL $ACDD ; $A9AD LD A,(HL) ; Get the width $A9AE AND $7F ; $A9B0 LD ($BB8B),A ; $A9B3 LD E,A ; $A9B4 LD D,$00 ; $A9B6 LD ($A98E),DE ; $A9BA DEC HL ; Get the height in pixels and convert into cells. $A9BB LD A,(HL) ; $A9BC AND $7F ; $A9BE RLA ; $A9BF RLA ; $A9C0 RLA ; $A9C1 LD ($BB8A),A ; $A9C4 LD HL,($B12D) ; Get the bitmap address. $A9C7 PUSH HL ; ; Calculate position on screen. $A9C8 LD A,($B160) ; $A9CB BIT 0,A ; Test for E/W facing camera. $A9CD JR Z,$A9DA ; $A9CF LD HL,($B15A) ; Based on players position N/S $A9D2 LD E,(IX+$05) ; $A9D5 LD D,(IX+$06) ; $A9D8 JR $A9E3 ; @label=ObjNode_BlitShft_1 *$A9DA LD HL,($B15C) ; Based on players position E/W $A9DD LD E,(IX+$07) ; $A9E0 LD D,(IX+$08) ; @label=ObjNode_BlitShft_2 *$A9E3 BIT 1,A ; Test for E/S facing camera. $A9E5 JR NZ,$A9E8 ; $A9E7 EX DE,HL ; Swap around values for calculating difference. @label=ObjNode_BlitShft_3 *$A9E8 AND A ; $A9E9 SBC HL,DE ; Difference will give offset, left or right, of camera. $A9EB LD DE,$0020 ; $A9EE ADD HL,DE ; $A9EF LD DE,($A98E) ; $A9F3 AND A ; $A9F4 SBC HL,DE ; $A9F6 JP P,$AA20 ; $A9F9 LD A,$01 ; $A9FB LD ($A990),A ; $A9FE LD E,L ; $A9FF LD D,H ; $AA00 LD A,L ; $AA01 CPL ; $AA02 LD C,A ; $AA03 LD A,H ; $AA04 CPL ; $AA05 LD B,A ; $AA06 INC BC ; $AA07 INC BC ; $AA08 SRA B ; $AA0A RR C ; $AA0C LD HL,($BB88) ; $AA0F ADD HL,BC ; $AA10 LD ($BB88),HL ; $AA13 POP HL ; $AA14 ADD HL,BC ; $AA15 PUSH HL ; $AA16 LD A,($BB8B) ; $AA19 SUB C ; $AA1A LD ($BB8B),A ; $AA1D XOR A ; $AA1E JR $AA4A ; @label=ObjNode_BlitShft_4 *$AA20 XOR A ; $AA21 LD ($A990),A ; $AA24 LD E,L ; $AA25 LD D,H ; $AA26 SRA H ; $AA28 RR L ; $AA2A LD BC,$0020 ; $AA2D AND A ; $AA2E SBC HL,BC ; $AA30 LD BC,($A98E) ; $AA34 AND A ; $AA35 ADC HL,BC ; $AA37 JP M,$AA46 ; $AA3A LD A,($BB8B) ; $AA3D SUB L ; $AA3E LD ($BB8B),A ; $AA41 LD A,$02 ; $AA43 LD ($A990),A ; @label=ObjNode_BlitShft_5 *$AA46 LD A,E ; $AA47 AND $FE ; $AA49 RRA ; @label=ObjNode_BlitShft_6 *$AA4A LD L,(IX+$09) ; $AA4D LD H,$00 ; $AA4F ADD HL,HL ; $AA50 LD C,L ; $AA51 LD B,H ; $AA52 ADD HL,HL ; $AA53 ADD HL,HL ; $AA54 ADD HL,HL ; $AA55 ADD HL,HL ; $AA56 ADD HL,BC ; $AA57 LD C,A ; $AA58 LD B,$00 ; $AA5A ADD HL,BC ; $AA5B LD BC,$5E69 ; $AA5E ADD HL,BC ; $AA5F LD A,($A991) ; $AA62 AND A ; $AA63 JR NZ,$AAC5 ; $AA65 PUSH DE ; $AA66 PUSH HL ; $AA67 LD A,($BB8B) ; $AA6A LD C,A ; $AA6B BIT 0,E ; $AA6D JR Z,$AA77 ; $AA6F LD A,($A990) ; $AA72 BIT 1,A ; $AA74 JR NZ,$AA77 ; $AA76 INC C ; @label=ObjNode_BlitShft_7 *$AA77 PUSH IX ; $AA79 LD IX,$7A48 ; @label=ObjNode_BlitShft_8 *$AA7D LD A,(IX+$00) ; $AA80 OR (IX+$01) ; $AA83 JR Z,$AA98 ; $AA85 LD E,(IX+$03) ; $AA88 LD D,$00 ; $AA8A LD B,(IX+$02) ; @label=ObjNode_BlitShft_9 *$AA8D ADD IX,DE ; $AA8F DJNZ $AA8D ; $AA91 LD DE,$0004 ; $AA94 ADD IX,DE ; $AA96 JR $AA7D ; @label=ObjNode_BlitShft_10 *$AA98 LD (IX+$00),L ; $AA9B LD (IX+$01),H ; $AA9E LD (IX+$02),C ; $AAA1 LD A,($BB8A) ; $AAA4 LD (IX+$03),A ; $AAA7 LD DE,$0004 ; $AAAA ADD IX,DE ; $AAAC PUSH IX ; $AAAE POP DE ; $AAAF LD B,$00 ; @label=ObjNode_BlitShft_11 *$AAB1 PUSH BC ; $AAB2 PUSH HL ; $AAB3 LDIR ; $AAB5 POP HL ; $AAB6 LD BC,$0022 ; $AAB9 ADD HL,BC ; $AABA POP BC ; $AABB DEC A ; $AABC JR NZ,$AAB1 ; $AABE LD (DE),A ; $AABF INC DE ; $AAC0 LD (DE),A ; $AAC1 POP IX ; $AAC3 POP HL ; $AAC4 POP DE ; @label=ObjNode_BlitShft_12 *$AAC5 BIT 0,E ; $AAC7 JR NZ,$AADC ; $AAC9 LD A,($A991) ; $AACC AND A ; $AACD JR Z,$AAEF ; $AACF CP $01 ; $AAD1 JP Z,$AB9C ; $AAD4 CP $02 ; $AAD6 JP Z,$AC10 ; $AAD9 POP IX ; $AADB RET ; @label=ObjNode_BlitShft_13 *$AADC LD A,($A991) ; $AADF AND A ; $AAE0 JR Z,$AB21 ; $AAE2 CP $01 ; $AAE4 JP Z,$ABBE ; $AAE7 CP $02 ; $AAE9 JP Z,$AC10 ; $AAEC POP IX ; $AAEE RET ; @label=ObjNode_BlitShft_14 *$AAEF LD BC,($BB8A) ; $AAF3 LD DE,($BB88) ; $AAF7 POP IX ; @label=ObjNode_BlitShft_15 *$AAF9 PUSH BC ; $AAFA PUSH HL ; $AAFB PUSH DE ; $AAFC PUSH IX ; @label=ObjNode_BlitShft_16 *$AAFE LD A,(DE) ; $AAFF AND (HL) ; $AB00 OR (IX+$00) ; $AB03 LD (HL),A ; $AB04 INC DE ; $AB05 INC HL ; $AB06 INC IX ; $AB08 DJNZ $AAFE ; $AB0A LD DE,($A98E) ; $AB0E POP IX ; $AB10 ADD IX,DE ; $AB12 POP HL ; $AB13 ADD HL,DE ; $AB14 EX DE,HL ; $AB15 POP HL ; $AB16 LD BC,$0022 ; $AB19 ADD HL,BC ; $AB1A POP BC ; $AB1B DEC C ; $AB1C JR NZ,$AAF9 ; $AB1E POP IX ; $AB20 RET ; @label=ObjNode_BlitShft_17 *$AB21 LD BC,($BB8A) ; $AB25 EX DE,HL ; $AB26 EXX ; $AB27 POP HL ; $AB28 EXX ; $AB29 LD HL,($BB88) ; @label=ObjNode_BlitShft_18 *$AB2C PUSH BC ; $AB2D PUSH HL ; $AB2E PUSH DE ; $AB2F LD A,($A990) ; $AB32 AND $01 ; $AB34 EXX ; $AB35 PUSH HL ; $AB36 LD C,$00 ; $AB38 JR Z,$AB3D ; $AB3A DEC HL ; $AB3B LD C,(HL) ; $AB3C INC HL ; @label=ObjNode_BlitShft_19 *$AB3D EXX ; $AB3E LD C,$0F ; $AB40 JR Z,$AB49 ; $AB42 DEC HL ; $AB43 LD C,(HL) ; $AB44 INC HL ; $AB45 LD A,B ; $AB46 AND A ; $AB47 JR Z,$AB6C ; @label=ObjNode_BlitShft_20 *$AB49 LD A,C ; $AB4A RRD ; $AB4C LD C,A ; $AB4D LD A,(DE) ; $AB4E AND (HL) ; $AB4F EX AF,AF' ; $AB50 LD A,C ; $AB51 RLD ; $AB53 INC HL ; $AB54 EXX ; $AB55 LD A,C ; $AB56 RRD ; $AB58 LD C,A ; $AB59 EX AF,AF' ; $AB5A OR (HL) ; $AB5B EX AF,AF' ; $AB5C RLD ; $AB5E INC HL ; $AB5F EXX ; $AB60 EX AF,AF' ; $AB61 LD (DE),A ; $AB62 INC DE ; $AB63 DJNZ $AB49 ; $AB65 LD A,($A990) ; $AB68 BIT 1,A ; $AB6A JR NZ,$AB82 ; @label=ObjNode_BlitShft_21 *$AB6C LD A,C ; $AB6D RLA ; $AB6E RLA ; $AB6F RLA ; $AB70 RLA ; $AB71 OR $0F ; $AB73 LD C,A ; $AB74 LD A,(DE) ; $AB75 AND C ; $AB76 EXX ; $AB77 SLA C ; $AB79 SLA C ; $AB7B SLA C ; $AB7D SLA C ; $AB7F OR C ; $AB80 EXX ; $AB81 LD (DE),A ; @label=ObjNode_BlitShft_22 *$AB82 EXX ; $AB83 POP HL ; $AB84 LD BC,($A98E) ; $AB88 ADD HL,BC ; $AB89 EXX ; $AB8A POP DE ; $AB8B LD HL,$0022 ; $AB8E ADD HL,DE ; $AB8F EX DE,HL ; $AB90 POP BC ; $AB91 LD HL,($A98E) ; $AB94 ADD HL,BC ; $AB95 POP BC ; $AB96 DEC C ; $AB97 JR NZ,$AB2C ; $AB99 POP IX ; $AB9B RET ; @label=ObjNode_BlitShft_23 *$AB9C LD A,($BB8B) ; $AB9F LD C,A ; $ABA0 LD A,($BB8A) ; $ABA3 LD B,A ; $ABA4 POP DE ; $ABA5 EX DE,HL ; @label=ObjNode_BlitShft_24 *$ABA6 PUSH BC ; $ABA7 PUSH HL ; $ABA8 PUSH DE ; $ABA9 LD B,$00 ; $ABAB LDIR ; $ABAD POP DE ; $ABAE LD HL,$0022 ; $ABB1 ADD HL,DE ; $ABB2 EX DE,HL ; $ABB3 POP BC ; $ABB4 LD HL,($A98E) ; $ABB7 ADD HL,BC ; $ABB8 POP BC ; $ABB9 DJNZ $ABA6 ; $ABBB POP IX ; $ABBD RET ; @label=ObjNode_BlitShft_25 *$ABBE LD BC,($BB8A) ; $ABC2 EX DE,HL ; $ABC3 POP HL ; @label=ObjNode_BlitShft_26 *$ABC4 PUSH BC ; $ABC5 PUSH HL ; $ABC6 PUSH DE ; $ABC7 LD A,(DE) ; $ABC8 RRA ; $ABC9 RRA ; $ABCA RRA ; $ABCB RRA ; $ABCC AND $0F ; $ABCE LD C,A ; $ABCF LD A,($A990) ; $ABD2 AND $01 ; $ABD4 JR Z,$ABDD ; $ABD6 DEC HL ; $ABD7 LD C,(HL) ; $ABD8 INC HL ; $ABD9 LD A,B ; $ABDA AND A ; $ABDB JR Z,$ABF1 ; @label=ObjNode_BlitShft_27 *$ABDD LD A,C ; $ABDE RRD ; $ABE0 LD C,A ; $ABE1 LD A,(HL) ; $ABE2 LD (DE),A ; $ABE3 LD A,C ; $ABE4 RLD ; $ABE6 INC HL ; $ABE7 INC DE ; $ABE8 DJNZ $ABDD ; $ABEA LD A,($A990) ; $ABED BIT 1,A ; $ABEF JR NZ,$ABFE ; @label=ObjNode_BlitShft_28 *$ABF1 LD A,C ; $ABF2 RLA ; $ABF3 RLA ; $ABF4 RLA ; $ABF5 RLA ; $ABF6 AND $F0 ; $ABF8 LD C,A ; $ABF9 LD A,(DE) ; $ABFA AND $0F ; $ABFC OR C ; $ABFD LD (DE),A ; @label=ObjNode_BlitShft_29 *$ABFE POP DE ; $ABFF LD HL,$0022 ; $AC02 ADD HL,DE ; $AC03 EX DE,HL ; $AC04 POP BC ; $AC05 LD HL,($A98E) ; $AC08 ADD HL,BC ; $AC09 POP BC ; $AC0A DEC C ; $AC0B JR NZ,$ABC4 ; $AC0D POP IX ; $AC0F RET ; @label=ObjNode_BlitShft_30 *$AC10 POP IX ; $AC12 RET ; ; Blits a block of data onto the offscreen. ; ; Used by the routine at #R$AC2D. @label=Background_Blit c$AC13 LD E,(HL) ; Offscreen address. $AC14 INC HL ; $AC15 LD D,(HL) ; $AC16 INC HL ; $AC17 LD C,(HL) ; Width in characters $AC18 INC HL ; $AC19 LD A,(HL) ; Height in scans. $AC1A INC HL ; $AC1B LD B,$00 ; @label=Background_Blit_0 *$AC1D PUSH BC ; Blit. $AC1E PUSH DE ; $AC1F LDIR ; $AC21 POP DE ; $AC22 EX DE,HL ; $AC23 LD BC,$0022 ; $AC26 ADD HL,BC ; $AC27 EX DE,HL ; $AC28 POP BC ; $AC29 DEC A ; $AC2A JR NZ,$AC1D ; $AC2C RET ; ; Replaces the background for a moving (onscreen) actor. ; ; Used by the routine at #R$9FE6. @label=Actor_UpdateBg c$AC2D LD HL,$7A48 ; $AC30 LD C,$00 ; Counts number of blocks to blit. @label=Actor_UpdateBg_0 *$AC32 LD A,(HL) ; Add address of offscreen, where stored background is blitted. $AC33 INC HL ; $AC34 OR (HL) ; If set to zero, end of data. $AC35 JR Z,$AC45 ; $AC37 PUSH HL ; Put start of data on stack. $AC38 INC HL ; Get width, height. $AC39 LD B,(HL) ; $AC3A INC HL ; $AC3B LD E,(HL) ; $AC3C INC HL ; $AC3D LD D,$00 ; @label=Actor_UpdateBg_1 *$AC3F ADD HL,DE ; Calculate address of next block of background data. $AC40 DJNZ $AC3F ; $AC42 INC C ; $AC43 JR $AC32 ; ; Blit eaach block onto DF screen. @label=Actor_UpdateBg_2 *$AC45 LD A,C ; @label=Actor_UpdateBg_3 *$AC46 AND A ; $AC47 JR Z,$AC53 ; $AC49 POP HL ; Get address of next background data. $AC4A DEC HL ; $AC4B PUSH AF ; $AC4C CALL $AC13 ; Blit. $AC4F POP AF ; Next. $AC50 DEC A ; $AC51 JR $AC46 ; @label=Actor_UpdateBg_4 *$AC53 LD HL,$0000 ; Clear store data. $AC56 LD ($7A48),HL ; $AC59 RET ; ; ABS(hl-de) ; ; Used by the routines at #R$85AE, #R$8CFE, #R$8EA0, #R$917B, #R$A3D0 and #R$A64B. @label=sub_abs c$AC5A AND A ; $AC5B SBC HL,DE ; $AC5D RET P ; $AC5E LD A,L ; $AC5F CPL ; $AC60 LD L,A ; $AC61 LD A,H ; $AC62 CPL ; $AC63 LD H,A ; $AC64 INC HL ; $AC65 RET ; ; Translate stored x,y position into screen and attribute address. ; ; Used by the routine at #R$9BCE. Input: IX Data Ptr {Y, X, ...} EXIT HL DF(y,x) EXIT DE ATTR(y,x) X,Y is ; aligned to nearest character position. @label=YX_toAddr c$AC66 LD A,(IX+$01) ; Get x position in pixels and convert into columns / bytes. $AC69 RRA ; $AC6A RRA ; $AC6B RRA ; $AC6C AND $1F ; $AC6E LD L,A ; $AC6F LD A,(IX+$00) ; Get y position and translate into character rows, scans etc to create address. $AC72 RLCA ; $AC73 RLCA ; $AC74 LD H,A ; $AC75 AND $E0 ; $AC77 OR L ; $AC78 LD L,A ; $AC79 LD E,A ; $AC7A LD A,H ; $AC7B AND $03 ; $AC7D LD H,A ; $AC7E RLA ; $AC7F RLA ; $AC80 RLA ; $AC81 LD D,A ; $AC82 LD A,(IX+$00) ; $AC85 AND $07 ; $AC87 OR D ; $AC88 LD D,A ; $AC89 LD BC,$5800 ; Offset for attribute address. $AC8C ADD HL,BC ; $AC8D EX DE,HL ; $AC8E LD BC,$4000 ; Offset for screen adress. $AC91 ADD HL,BC ; $AC92 RET ; ; Creates a new node, copies the content of 'TempStore' into it and adds to Bg Link List. ; ; Used by the routines at #R$8C2D, #R$9641 and #R$A15C. Input: TempStore Holds data to be copied into new list. ; EXIT IX = address of new node. Returns with Z set if no more nodes. @label=LinkList_CreateNewBg c$AC93 LD A,($B12C) ; If high byte of link list ptr is zero, then ignore. $AC96 AND A ; $AC97 RET Z ; $AC98 LD IX,($B12B) ; Get address of first spare node. $AC9C LD DE,($B12B) ; $ACA0 LD L,(IX+$00) ; Detach from list $ACA3 LD H,(IX+$01) ; $ACA6 LD ($B12B),HL ; $ACA9 LD HL,$5C92 ; Copy required data into new node. $ACAC LD BC,$000F ; $ACAF LDIR ; $ACB1 OR H ; $ACB2 LD HL,($B133) ; Add node to background link list. $ACB5 LD (IX+$00),L ; $ACB8 LD (IX+$01),H ; $ACBB LD ($B133),IX ; $ACBF RET ; ; Remove a link from a link list. ; ; Used by the routine at #R$8BF5. Input: IX Address of link to remove stack Holds address of previous link to the ; one being removed. @label=List_RemoveLink c$ACC0 LD E,(IX+$00) ; Get ptr the next link in list. $ACC3 LD D,(IX+$01) ; $ACC6 LD HL,($B12B) ; Get ptr to first of the empty links. $ACC9 LD (IX+$00),L ; Move removed link to top of empty link list. $ACCC LD (IX+$01),H ; $ACCF LD ($B12B),IX ; $ACD3 POP HL ; Get return address. $ACD4 POP IX ; Get addres of previous link in main list. $ACD6 LD (IX+$00),E ; Connect existing links together. $ACD9 LD (IX+$01),D ; $ACDC JP (HL) ; Jump to return address found on stack. ; Copies bitmap info into cache. ; ; Used by the routines at #R$917B, #R$9240, #R$9434, #R$969A, #R$9B21, #R$9BCE, #R$9D73, #R$9F13, #R$A64B and ; #R$A992. Input: L Bitmap frame index. @label=Bitmap_CopyFrame c$ACDD LD H,$00 ; Convert of address of bitmap table. $ACDF ADD HL,HL ; $ACE0 ADD HL,HL ; $ACE1 LD DE,$BB8C ; $ACE4 ADD HL,DE ; $ACE5 LD DE,$B12D ; Copy data into cache. $ACE8 LDI ; $ACEA LDI ; $ACEC LDI ; $ACEE LD A,(HL) ; $ACEF LD (DE),A ; $ACF0 RET ; ; Retrieves the bitmap index of an object. ; ; Used by the routines at #R$969A and #R$9D73. Input: A object index EXIT HL Ptr array holding bitmap index. @label=Obj_GetBmpIndex c$ACF1 DEC A ; $ACF2 AND $7F ; $ACF4 LD L,A ; $ACF5 LD H,$00 ; $ACF7 LD DE,$7672 ; $ACFA ADD HL,DE ; $ACFB RET ; ; Searches for start of object noun string. ; ; Used by the routines at #R$7F6F, #R$8354, #R$83D5 and #R$9C46. Input: A Object index. EXIT HL = Noun address. ; Limited to 0x7F objects. @label=Object_GetNounAddr c$ACFC AND $7F ; $ACFE LD E,A ; $ACFF LD HL,$76AE ; $AD02 LD BC,$0000 ; $AD05 LD A,$5E ; @label=Object_GetNounAddr_0 *$AD07 CPIR ; $AD09 DEC E ; $AD0A JR NZ,$AD07 ; $AD0C RET ; ; Prints a string. ; ; Used by the routines at #R$7F6F, #R$8354, #R$83D5, #R$9C46, #R$A8E2 and #R$AD1A. Input: HL String Ptr @label=Print_String c$AD0D LD A,(HL) ; Get next character. $AD0E INC HL ; $AD0F CP $5E ; End of string. $AD11 RET Z ; $AD12 CP $2B ; End of string. $AD14 RET Z ; $AD15 CALL $AD9B ; $AD18 JR $AD0D ; ; Prints a string taking ptr from the stack. ; ; Used by the routines at #R$7F6F, #R$8354, #R$8E32, #R$8F43, #R$9C46, #R$A64B, #R$AD1F, #R$AD4B, #R$AD54, #R$AE8D, ; #R$AF3C and #R$B0A6. Input: Stack Holds ptr to string. @label=Print_StrFromStack c$AD1A POP HL ; Take return address off from stack, this points to text directly after prevous function. $AD1B CALL $AD0D ; $AD1E JP (HL) ; ; Displays message above stage. ; ; Used by the routines at #R$8354, #R$85AE, #R$8A04, #R$8AC4, #R$8F43, #R$9DC1, #R$A8E2, #R$A934 and #R$AD4B. @label=Message_Display c$AD1F PUSH IX ; $AD21 CALL $AE36 ; Blank out message, by colouring black. ; Data for copy routine. b$AD24 DEFW $58A6 ; ATTR for message line. $AD26 DEFB $19 ; Number of bytes to copy. ; Return address from copy routine. c$AD27 LD DE,$0005 ; Beeper $AD2A LD HL,$02BC ; $AD2D CALL $03B5 ; $AD30 LD A,$32 ; $AD32 LD ($B19B),A ; $AD35 LD A,$02 ; $AD37 CALL $1601 ; $AD3A CALL $AD1A ; ; Data block at AD3D b$AD3D DEFB $16 ; PRINT AT 5,6; PAPER 0; INK 7; BRIGHT 1; $AD3E DEFB $05 $AD3F DEFB $06 $AD40 DEFB $11 $AD41 DEFB $00 $AD42 DEFB $10 $AD43 DEFB $07 $AD44 DEFB $13 $AD45 DEFB $01 $AD46 DEFB $5E ; Routine at AD47 c$AD47 POP IX ; $AD49 JR $AD1A ; Print text pointed to by return address. ; Prints message above stage at (5,10) ; ; Used by the routines at #R$83D5, #R$8997, #R$8A04, #R$8B0E and #R$8B40. Overrides the base call which prints at ; (5,6) @label=Message_DisplayAt c$AD4B CALL $AD1F ; ; Data block at AD4E b$AD4E DEFB $16 ; PRINT AT 5,10; (Used by above routine.) $AD4F DEFB $05 $AD50 DEFB $0A $AD51 DEFB $5E ; Routine at AD52 c$AD52 JR $AD1A ; ; Displays object extra string in correct place. ; ; Used by the routines at #R$7F6F, #R$8E32 and #R$9C46. Input: HL Ptr to string. String can be multi lined by ; putting + in place of newline. @label=Object_StringExtraDisplay c$AD54 PUSH IX ; $AD56 PUSH DE ; $AD57 PUSH HL ; $AD58 LD A,$02 ; PRINT #2 $AD5A CALL $1601 ; $AD5D LD A,$03 ; $AD5F LD DE,$5826 ; @label=Object_StringExtraDisplay_0 *$AD62 LD HL,$5C92 ; $AD65 LD BC,$0019 ; $AD68 LDIR ; $AD6A LD HL,$0007 ; $AD6D ADD HL,DE ; $AD6E EX DE,HL ; $AD6F DEC A ; $AD70 JR NZ,$AD62 ; $AD72 CALL $AD1A ; ; Data block at AD75 b$AD75 DEFB $10 ; PRINT INK 6; PAPER 0; BRIGHT 1; $AD76 DEFB $06 $AD77 DEFB $11 $AD78 DEFB $00 $AD79 DEFB $13 $AD7A DEFB $01 $AD7B DEFB $5E ; Routine at AD7C c$AD7C POP HL ; String ptr. $AD7D LD E,$01 ; @label=Object_StringExtraDisplay_1 *$AD7F LD A,$16 ; PRINT AT e,6; $AD81 RST $10 ; $AD82 LD A,E ; $AD83 RST $10 ; $AD84 LD A,$06 ; $AD86 RST $10 ; $AD87 INC E ; Increase line count. @label=Object_StringExtraDisplay_2 *$AD88 LD A,(HL) ; Next character. $AD89 INC HL ; $AD8A CP $2B ; Newline. $AD8C JR Z,$AD7F ; $AD8E CP $5E ; End of string. $AD90 JR Z,$AD97 ; $AD92 CALL $AD9B ; $AD95 JR $AD88 ; @label=Object_StringExtraDisplay_3 *$AD97 POP DE ; $AD98 POP IX ; $AD9A RET ; ; Prints a character with char. set selection. ; ; Used by the routines at #R$7F6F, #R$8354, #R$83D5, #R$9C46, #R$A64B, #R$AD0D, #R$AD54, #R$ADFB, #R$AE74 and ; #R$AE8D. @label=Print_SelectChar c$AD9B PUSH HL ; Preserve 'next character' pointer. $AD9C CP $61 ; Select character set. $AD9E JR NC,$ADA5 ; $ADA0 LD HL,$3C00 ; $ADA3 JR $ADA8 ; @label=Print_SelectChar_0 *$ADA5 LD HL,$FC00 ; @label=Print_SelectChar_1 *$ADA8 LD ($5C36),HL ; $ADAB RST $10 ; Print character. $ADAC POP HL ; $ADAD RET ; ; Add two values together and adjust for BCD. ; ; Used by the routines at #R$ADBA and #R$ADC7. Input: HL 8 digit BCD value to add to. DE 8 digit BCD value to ; add. @label=ValueAddAsBCD c$ADAE LD B,$04 ; $ADB0 AND A ; @label=ValueAddAsBCD_0 *$ADB1 LD A,(DE) ; $ADB2 ADC A,(HL) ; $ADB3 DAA ; $ADB4 LD (HL),A ; $ADB5 INC HL ; $ADB6 INC DE ; $ADB7 DJNZ $ADB1 ; $ADB9 RET ; ; Add to values together, with carry, and adjust to BCD. ; ; Used by the routines at #R$8121, #R$83D5, #R$8F43, #R$9DC1 and #R$ADE1. Input: HL 8 digit BCD value to add to. ; DE 8 digit BCD value to add. @label=ValueAddAsBCDCarry c$ADBA CALL $ADAE ; $ADBD RET NC ; $ADBE LD A,$99 ; $ADC0 LD B,$04 ; @label=ValueAddAsBCDCarry_0 *$ADC2 DEC HL ; $ADC3 LD (HL),A ; $ADC4 DJNZ $ADC2 ; $ADC6 RET ; ; BCD Subtract (hl,4) from (de,4). ; ; Used by the routines at #R$83D5 and #R$ADEA. Input: HL Points to 4 byte BCD number. DE Points to 4 byte BCD ; number to subtract. Sets carry flag if difference is greater than value. @label=BCD_Subtract c$ADC7 PUSH HL ; $ADC8 PUSH DE ; $ADC9 EX DE,HL ; $ADCA LD B,$04 ; $ADCC AND A ; @label=BCD_Subtract_0 *$ADCD LD A,(DE) ; $ADCE SBC A,(HL) ; $ADCF DAA ; $ADD0 LD (DE),A ; $ADD1 INC HL ; $ADD2 INC DE ; $ADD3 DJNZ $ADCD ; $ADD5 POP DE ; $ADD6 POP HL ; $ADD7 RET NC ; $ADD8 CALL $ADAE ; $ADDB SCF ; $ADDC RET ; ; Data block at ADDD @label=BCD_diff. b$ADDD DEFB $00,$00,$00,$00 ; Temp store for BCD number. ; BCD adds DE from (HL) ; ; Used by the routine at #R$9E51. Input: Points to HL BCD number. DE BCD number to add. @label=BCD_AddDE c$ADE1 LD ($ADDD),DE ; $ADE5 LD DE,$ADDD ; $ADE8 JR $ADBA ; ; BCD Subtracts DE from (HL) ; ; Used by the routines at #R$8A04, #R$8AC4 and #R$9E51. Input: Points to HL BCD number. DE BCD number to ; subtract. @label=BCD_SubDE c$ADEA LD ($ADDD),DE ; $ADEE LD DE,$ADDD ; $ADF1 JR $ADC7 ; ; Data block at ADF3 @label=_adf3 b$ADF3 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Prints a decimal BCD string onto screen. ; ; Used by the routines at #R$7F6F, #R$8E32, #R$8F43, #R$9C46 and #R$AE2C. Input: HL Ptr to BCD number. @label=Display_DecimalValue. c$ADFB LD B,$04 ; Number of bytes that make up decimnal value. $ADFD XOR A ; $ADFE LD DE,$0003 ; Start with the most significant digit. $AE01 ADD HL,DE ; $AE02 LD DE,$ADF3 ; @label=Display_DecimalValue._0 *$AE05 LD C,(HL) ; Copy BCD value for each digit in overall number. $AE06 RLD ; $AE08 LD (DE),A ; $AE09 INC DE ; $AE0A RLD ; $AE0C LD (DE),A ; $AE0D INC DE ; $AE0E LD (HL),C ; $AE0F DEC HL ; $AE10 DJNZ $AE05 ; $AE12 LD HL,$ADF3 ; $AE15 LD B,$07 ; $AE17 LD C,$00 ; Set C so that leading zero check is used. Once C is set, check will stop. @label=Display_DecimalValue._1 *$AE19 LD A,(HL) ; Get decimal value. $AE1A OR C ; Skip leading zeros. $AE1B JR Z,$AE23 ; $AE1D LD C,$30 ; Convert into ascii equivalent and print. $AE1F OR C ; $AE20 CALL $AD9B ; @label=Display_DecimalValue._2 *$AE23 INC HL ; Next digit. $AE24 DJNZ $AE19 ; $AE26 LD A,(HL) ; Print final zero. $AE27 OR $30 ; $AE29 JP $AD9B ; ; Displays a decimal held in DE as BCD. @label=Display_DecimalFromDE c$AE2C LD ($ADDD),DE ; $AE30 LD HL,$ADDD ; $AE33 JP $ADFB ; ; Clears a block of memory, ptr held in data {ptr, len}, by copying from $5c92. ; ; Used by the routines at #R$7F6F, #R$8121, #R$871A, #R$8997, #R$8F43, #R$A934, #R$AD1F and #R$AE80. Ptr to data is ; stored directly after call (return address on stack). @label=Block_ClearMem c$AE36 POP HL ; Get address of data. $AE37 LD E,(HL) ; Get pointer to copy to. $AE38 INC HL ; $AE39 LD D,(HL) ; $AE3A INC HL ; $AE3B LD C,(HL) ; Number of bytes to copy. $AE3C INC HL ; $AE3D PUSH HL ; Store address after data as return address. $AE3E LD B,$00 ; $AE40 LD HL,$5C92 ; Address to copy from. $AE43 LDIR ; $AE45 RET ; ; Search through data looking for first non zero byte. ; ; Used by the routines at #R$8121, #R$8F43 and #R$9C46. Input: STACK Ptr to data [Ptr to Data, size] @label=Search_NonZero c$AE46 POP HL ; Get return address from stack. This holds data. $AE47 LD E,(HL) ; Get pointer. $AE48 INC HL ; $AE49 LD D,(HL) ; $AE4A INC HL ; $AE4B LD B,(HL) ; Get Byte count. $AE4C INC HL ; $AE4D PUSH HL ; $AE4E EX DE,HL ; $AE4F XOR A ; Look for the first byte that is not zero. @label=Search_NonZero_0 *$AE50 CP (HL) ; $AE51 RET NZ ; $AE52 INC HL ; $AE53 DJNZ $AE50 ; $AE55 RET ; ; Finds the address of a word using an index. ; ; Used by the routines at #R$9AEE and #R$AE74. Input: A Index of word. EXIT HL holds ptr to word text. EXIT C ; Word length. Words are grouped into letter length, in order starting from one. @label=Dict_GetWord c$AE56 LD HL,$69D7 ; Start with address of 1 letter word. $AE59 LD DE,$0003 ; Number of bytes in the group data structure. $AE5C LD C,D ; Index of group. $AE5D LD B,D ; @label=Dict_GetWord_0 *$AE5E CP (HL) ; See if index is within the current word group. $AE5F JR C,$AE65 ; $AE61 ADD HL,DE ; if not move onto next group. $AE62 INC C ; Increase the number of letters for group. $AE63 JR $AE5E ; @label=Dict_GetWord_1 *$AE65 AND A ; $AE66 SBC HL,DE ; Get difference between index and start of group index. $AE68 SUB (HL) ; $AE69 INC HL ; $AE6A LD E,(HL) ; Get start address of words in group. $AE6B INC HL ; $AE6C LD D,(HL) ; $AE6D EX DE,HL ; $AE6E RET Z ; If first word in list, just return as we have the correct address. @label=Dict_GetWord_2 *$AE6F ADD HL,BC ; Offset address by words size until correct word is found using original index. $AE70 DEC A ; $AE71 JR NZ,$AE6F ; $AE73 RET ; ; Prints dictionary word ; ; Used by the routines at #R$7F6F and #R$AE8D. Input: A Word index. @label=Dict_Print c$AE74 CALL $AE56 ; @label=Dict_Print_0 *$AE77 LD A,(HL) ; $AE78 CALL $AD9B ; $AE7B INC HL ; $AE7C DEC C ; $AE7D JR NZ,$AE77 ; $AE7F RET ; ; Hide area name text. ; ; Used by the routines at #R$7F6F and #R$AE8D. @label=Area_HideName c$AE80 CALL $AE36 ; ; Data block at AE83 b$AE83 DEFW $5AD3 $AE85 DEFB $0D ; Routine at AE86 c$AE86 CALL $AE36 ; ; Data block at AE89 b$AE89 DEFW $5AF3 $AE8B DEFB $0D ; Routine at AE8C c$AE8C RET ; ; Checks for area and displays name. ; ; Used by the routines at #R$7CD4 and #R$7DA8. @label=Area_Check c$AE8D LD A,($B158) ; $AE90 DEC A ; $AE91 RET NZ ; $AE92 LD IX,$696B ; $AE96 LD DE,($B15A) ; @label=Area_Check_0 *$AE9A LD L,(IX+$00) ; $AE9D LD H,(IX+$01) ; $AEA0 AND A ; $AEA1 SBC HL,DE ; $AEA3 JR C,$AEAC ; @label=Area_Check_1 *$AEA5 LD BC,$000C ; $AEA8 ADD IX,BC ; $AEAA JR $AE9A ; @label=Area_Check_2 *$AEAC LD L,(IX+$04) ; $AEAF LD H,(IX+$05) ; $AEB2 AND A ; $AEB3 SBC HL,DE ; $AEB5 JR C,$AEA5 ; $AEB7 LD BC,($B15C) ; $AEBB LD L,(IX+$02) ; $AEBE LD H,(IX+$03) ; $AEC1 AND A ; $AEC2 SBC HL,BC ; $AEC4 JR NC,$AEA5 ; $AEC6 LD L,(IX+$06) ; $AEC9 LD H,(IX+$07) ; $AECC AND A ; $AECD SBC HL,BC ; $AECF JR C,$AEA5 ; $AED1 LD BC,$0008 ; $AED4 ADD IX,BC ; $AED6 PUSH IX ; $AED8 POP DE ; $AED9 LD HL,($B17C) ; $AEDC AND A ; $AEDD SBC HL,DE ; $AEDF RET Z ; ; Display area name. $AEE0 LD ($B17C),DE ; $AEE4 CALL $AE80 ; $AEE7 LD A,$01 ; $AEE9 CALL $1601 ; $AEEC CALL $AD1A ; ; Data block at AEEF b$AEEF DEFB $16 ; AT 6,19; PAPER $00; INK $04; BRIGHT $01 $AEF0 DEFB $06 $AEF1 DEFB $13 $AEF2 DEFB $11 $AEF3 DEFB $00 $AEF4 DEFB $10 $AEF5 DEFB $04 $AEF6 DEFB $13 $AEF7 DEFB $01 $AEF8 DEFB $5E ; Return address from print. c$AEF9 LD HL,($B17C) ; $AEFC LD B,$02 ; Number of lines. @label=Area_Check_3 *$AEFE PUSH BC ; $AEFF LD A,(HL) ; $AF00 INC HL ; $AF01 PUSH HL ; $AF02 CALL $AE74 ; $AF05 LD A,$20 ; Print space. $AF07 CALL $AD9B ; $AF0A POP HL ; next word $AF0B LD A,(HL) ; $AF0C INC HL ; $AF0D PUSH HL ; $AF0E CALL $AE74 ; $AF11 LD A,$16 ; PRINT AT 7,19; $AF13 RST $10 ; $AF14 LD A,$07 ; $AF16 RST $10 ; $AF17 LD A,$13 ; $AF19 RST $10 ; $AF1A POP HL ; $AF1B POP BC ; $AF1C DJNZ $AEFE ; $AF1E LD DE,$0007 ; Beep (Loop, Delay) $AF21 LD HL,$015E ; $AF24 JP $03B5 ; ; Save / Load file data. @label=IO_StartAddr b$AF27 DEFW $B0D6 ; Start address of IO file. @label=IO_Length $AF29 DEFW $0064 ; Number of bytes in IO file. ; IO lead / header data. @label=IO_Lead $AF2B DEFB $03 ; File Type $AF2C DEFM "dun" ; File name @label=IO_Letter $AF2F DEFM "x" ; ASCII value of load/save letter chosen. $AF30 DEFM " " ; Padding for filename. $AF36 DEFW $0000 ; Length of data block. $AF38 DEFW $0000 ; Parameters. $AF3A DEFW $0000 ; Menu, display and handle. ; ; Used by the routine at #R$79B7. @label=Menu c$AF3C XOR A ; $AF3D LD ($B120),A ; $AF40 LD HL,$BB82 ; $AF43 LD DE,$B0D6 ; $AF46 AND A ; $AF47 SBC HL,DE ; $AF49 LD ($AF29),HL ; $AF4C LD (IY+$31),$18 ; $AF50 LD A,$01 ; $AF52 CALL $1601 ; $AF55 LD HL,$4000 ; Clear DF $AF58 LD DE,$4001 ; $AF5B LD BC,$1AFF ; $AF5E LD (HL),$00 ; $AF60 LDIR ; $AF62 LD (IY+$0E),$07 ; $AF66 XOR A ; Black border. $AF67 OUT ($FE),A ; $AF69 CALL $AD1A ; Return address will hold menu string. ; Menu Text. @label=Text_Menu b$AF6C DEFB $10 ; menu. $AF6D DEFB $03 $AF6E DEFB $11 $AF6F DEFB $00 $AF70 DEFB $16 $AF71 DEFB $01 $AF72 DEFB $0B $AF73 DEFM "options" $AF7A DEFB $16 $AF7B DEFB $05 $AF7C DEFB $05 $AF7D DEFM "1. enter dun darach" $AF90 DEFB $16 $AF91 DEFB $07 $AF92 DEFB $05 $AF93 DEFM "2. save game" $AF9F DEFB $16 $AFA0 DEFB $09 $AFA1 DEFB $05 $AFA2 DEFM "3. restore game" $AFB1 DEFB $16 $AFB2 DEFB $0B $AFB3 DEFB $05 $AFB4 DEFM "4. demo mode" $AFC0 DEFB $5E ; Return from print. @label=Menu_0 c$AFC1 LD (IY-$32),$00 ; Clear LAST_K (last key pressed.) @label=Menu_1 *$AFC5 LD A,(IY-$32) ; Check LAST_K, wait for a key. $AFC8 AND A ; $AFC9 JR Z,$AFC5 ; $AFCB CP $31 ; '1' $AFCD JR Z,$AFE0 ; $AFCF CP $32 ; '2' $AFD1 JR Z,$AFE5 ; $AFD3 CP $33 ; '3' $AFD5 JR Z,$B03A ; $AFD7 CP $34 ; '4' $AFD9 JR NZ,$AFC1 ; Ignore any other key. $AFDB LD A,$02 ; Set for demo mode. $AFDD LD ($B120),A ; ; Enter Dun Darach @label=_Menu_Enter *$AFE0 LD (IY+$31),$08 ; $AFE4 RET ; ; Save. @label=_Menu_Save *$AFE5 CALL $B0A6 ; $AFE8 CALL $AD1A ; ; Data block at AFEB b$AFEB DEFB $16 $AFEC DEFB $0E $AFED DEFB $02 $AFEE DEFM "start tape then press a key" $B009 DEFB $5E ; Routine at B00A c$B00A LD (IY-$32),$00 ; @label=Menu_2 *$B00E LD A,(IY-$32) ; $B011 AND A ; $B012 JR Z,$B00E ; $B014 LD IX,$AF2B ; $B018 LD DE,$0011 ; $B01B XOR A ; $B01C CALL $B06D ; $B01F CALL NC,$B08D ; $B022 LD B,$28 ; @label=Menu_3 *$B024 HALT ; $B025 DJNZ $B024 ; $B027 LD IX,($AF27) ; $B02B LD DE,($AF29) ; $B02F LD A,$FF ; $B031 CALL $B06D ; $B034 CALL NC,$B08D ; $B037 JP $AF3C ; ; Restore @label=Menu_Restore *$B03A CALL $B0A6 ; @label=Menu_4 *$B03D LD IX,$5E68 ; $B041 LD DE,$0011 ; $B044 XOR A ; $B045 CALL $B072 ; $B048 JR NC,$B03D ; $B04A LD DE,$5E68 ; $B04D LD HL,$AF2B ; $B050 LD B,$11 ; @label=Menu_5 *$B052 LD A,(DE) ; $B053 CP (HL) ; $B054 JR NZ,$B03D ; $B056 INC DE ; $B057 INC HL ; $B058 DJNZ $B052 ; $B05A LD IX,($AF27) ; $B05E LD DE,($AF29) ; $B062 LD A,$FF ; $B064 CALL $B072 ; $B067 CALL NC,$B08D ; $B06A JP $AF3C ; @label=Menu_6 *$B06D CALL $04C6 ; $B070 JR $B07E ; @label=Menu_7 *$B072 SCF ; $B073 INC D ; $B074 EX AF,AF' ; $B075 DEC D ; $B076 DI ; $B077 LD A,$0F ; $B079 OUT ($FE),A ; $B07B CALL $0562 ; @label=Menu_8 *$B07E PUSH AF ; $B07F XOR A ; $B080 OUT ($FE),A ; $B082 EI ; $B083 LD A,$7F ; $B085 IN A,($FE) ; $B087 RRA ; $B088 JR NC,$B08C ; $B08A POP AF ; $B08B RET ; @label=Menu_9 *$B08C POP AF ; ; Abort @label=Menu_Abort *$B08D CALL $AD1A ; ; Data block at B090 b$B090 DEFB $16 $B091 DEFB $12 $B092 DEFB $05 $B093 DEFM "abandoned" $B09C DEFB $5E ; Routine at B09D c$B09D LD B,$FA ; @label=Menu_10 *$B09F HALT ; $B0A0 DJNZ $B09F ; $B0A2 POP HL ; $B0A3 JP $AF3C ; ; Asks save / load letter from user. ; ; Used by the routine at #R$AF3C. @label=IO_GetLetter c$B0A6 CALL $AD1A ; ; Data block at B0A9 b$B0A9 DEFB $16 $B0AA DEFB $0E $B0AB DEFB $05 $B0AC DEFM "enter version letter" $B0C0 DEFB $5E ; Routine at B0C1 c$B0C1 LD (IY-$32),$00 ; @label=IO_GetLetter_0 *$B0C5 LD A,(IY-$32) ; $B0C8 AND $DF ; $B0CA CP $41 ; From 'A' $B0CC JR C,$B0C5 ; $B0CE CP $5B ; To 'Z' $B0D0 JR NC,$B0C5 ; $B0D2 LD ($AF2F),A ; $B0D5 RET ; ; Main stats and variables. @label=Flag_dayNight b$B0D6 DEFB $00 ; 0 = night, 1 = day. @label=BankAccountLow $B0D7 DEFB $00 ; Units and Tens of bank account (BCD) @label=BankAccountMid $B0D8 DEFB $00 ; Hundreds and Thousands of bank account (BCD) @label=BankAccountHigh $B0D9 DEFB $00 ; Upper values of bank account (BCD) $B0DA DEFB $00,$00 @label=Offer_Count $B0DC DEFB $00 @label=Offer_ObjIndex $B0DD DEFB $00 ; Index of object offered during offer action. @label=Shop_ObjIndex $B0DE DEFB $00,$00,$00,$00 ; Index of object's noun (in shop). @label=Offer_PersonPtr $B0E2 DEFW $0000 ; Pointer to person hero is currently offering to. @label=Obj_Price $B0E4 DEFB $00,$00 ; Cost of an object (in shop) in BCD. $B0E6 DEFW $0000 @label=Hero_ArrestCount $B0E8 DEFB $00 @label=Skar_ShowCount $B0E9 DEFB $00 ; Runs through the revealing Skar routine when set. Starts from $c3 and ; counts down. @label=Event_NumDoors $B0EA DEFB $00 ; Gets increased whenever a door event occurs. @label=Gamble_Counter $B0EB DEFB $00 ; Counter for the gambling room. Runs as follows: Value State 0 Place ; your bets. $01 ~ $50 Wait to start $51 Place your bets, roll both dice ; $52 Right hand dice stopped $53 ~ $FF Display result and wait @label=Account_Cost $B0EC DEFB $00,$00 ; Holds the amount dropped when adding to an account or the cost of a ; bet. @label=Gamble_leftValue $B0EE DEFB $00,$00,$00,$00 ; Holds the amount of money on plinth A for the gambling. @label=Gamble_rightValue $B0F2 DEFB $00,$00,$00,$00 ; Holds the amount of money on plinth B for the gambling. $B0F6 DEFB $00,$00,$00 @label=PictureMatrix_Gallery $B0F9 DEFB $00,$00,$00,$00 ; Holds an array of indices representing the char bitmaps drawn within a ; gallery's picture frame. @label=PictureMatrix_Gallery_Image1 $B0FD DEFB $00 $B0FE DEFB $00,$00,$00,$00 @label=PictureMatrix_Deposit $B102 DEFB $00,$00,$00,$00 ; Picture matrix start for a deposit room. The picture is stored as a ; matrix of character indices. @label=PictureMatrix_Deposit_Image $B106 DEFB $00 ; This byte represents the index used for the pictures clue. $B107 DEFB $00,$00,$00,$00 $B10B DEFB $00,$00,$00,$00,$00,$00,$00,$00 $B113 DEFB $00 $B114 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $B11C DEFB $00 @label=Room_Flags $B11D DEFB $00 ; Set to $50 when 'no more bets' is on, $00 hero can place bets. @label=_b11e $B11E DEFB $00 @label=_frames $B11F DEFB $00 ; Frames counter. @label=Mode_Demo $B120 DEFB $00 ; 2 = Demo mode. @label=KeyStore $B121 DEFB $00,$00,$00,$00,$00,$00,$00 ; Bytes holding last key press. @label=KeyStoreN $B128 DEFB $00 @label=KeyCmd $B129 DEFB $00 ; Holds bit flags representing which commands to act on due to a key ; press. Bit Description 0 Right 1 Left 2 Rotate CW 3 Rotate CCW 4 Offer ; 5 Pick up 6 Drop @label=KeyCmd_Enter $B12A DEFB $00 ; Bit 1 is set when ENTER is pressed. @label=LinkList_Spare_Ptr $B12B DEFW $0000 ; Ptr to spare node link list. ; Cache of bitmap data @label=Bitmap_InfoCache $B12D DEFW $0000 ; Address @label=Bitmap_InfoCache_Height $B12F DEFB $00 ; Height @label=Bitmap_InfoCache_Width $B130 DEFB $00 ; Width @label=Hero_FrameCount $B131 DEFB $00 ; Some sort of frame count $B132 DEFB $00 @label=LinkList_Bg_Ptr $B133 DEFW $0000 ; Ptr to background link list. @label=Ptr_PersonLinkList $B135 DEFW $B945 ; Pointer to the start of the person link list. $B137 DEFW $0000 $B139 DEFW $0000 $B13B DEFW $0000 $B13D DEFW $0000 $B13F DEFW $0000 $B141 DEFW $0000 $B143 DEFW $0000 $B145 DEFW $0000 $B147 DEFW $0000 $B149 DEFW $0000 $B14B DEFW $0000 $B14D DEFB $00 @label=_b14e $B14E DEFB $00 @label=Inv_Pocket1 $B14F DEFB $00 ; Pocket 1, holds index to object being carried. @label=Inv_Pocket2 $B150 DEFB $00 ; Pocket 2, holds index to object being carried. @label=Inv_Pocket3 $B151 DEFB $00 ; Pocket 3, holds index to object being carried. @label=Inv_Select $B152 DEFB $00 ; Index value of item selected (0 = iridi tokens). @label=IridiValue $B153 DEFB $00,$20,$00,$00 ; Number of tokens held as a BCD string. @label=PathFound_IndexCount $B157 DEFB $00 ; Paths counted during a path found search. @label=Room_CurrentStore $B158 DEFB $01 ; Room type (+1) for which to store saved info when entering / leaving. $B159 DEFB $00 @label=Coords_NS $B15A DEFW $058C @label=Coords_EW $B15C DEFW $0474 @label=Hero_Frame $B15E DEFB $13,$00 ; Current bitmap frame of hero. @label=Camera_Compass $B160 DEFB $00,$00 ; Direction compass, camera is facing. [0 North, 1 East, 2 South, 3 ; West] @label=Hero_LastDirection $B162 DEFB $01 ; Last direction of travel. 1 Right 2 Left @label=Hero_CompassFacing $B163 DEFB $02,$00 ; Compass direction that hero is facing. @label=Hero_PathPtr $B165 DEFW $0000 ; Pointer to path data. @label=PathFound_Compass $B167 DEFB $00 ; The compass when a path is found. @label=PathFound_PathPtr $B168 DEFW $0000 ; Pointer to a path when found. $B16A DEFB $00,$00,$00 @label=Room_CurrentIndex $B16D DEFB $00 ; Index of current room (0 - outside) $B16E DEFW $0000 @label=Room_CurrentInfoDataPtr $B170 DEFW $7906 ; Stored ptr to room main data chunk. differs for each room type. @label=PathFound_BackgroundPtr $B172 DEFW $0000 ; Pointer to the background description of a path found. ; Next 8 bytes... Copied from _6903 + (a * 8), see _7da8 @label=Ptr_Path_EW $B174 DEFW $6BAE ; Pointer to E/W path data. @label=Ptr_Path_NS $B176 DEFW $6CAC ; Pointer to N/S path data. @label=Room_Type $B178 DEFB $01 ; Type of room hero is in. 0 outside 1 Seller 2 Broker 3 Deposit 5 ; Iomain Ludum 7 Gallery 8 Castle 9 Bank A Portal B String Room @label=JP_Vector $B179 DEFW $0000 ; Holds vector address for JP (HL). @label=AreaColour $B17B DEFB $28 ; Colour of area used to draw stage. @label=_AreaNamePtr $B17C DEFW $0000 ; Points to address holding place name sentence. @label=ExitFound_Coords $B17E DEFW $0000 ; Copy of exit that was found when entering. @label=ExitFound_A $B180 DEFB $00 @label=ExitFound_RoomIndex $B181 DEFB $00 ; Index of room hero would like to enter (0 - Outside). ; Holds info on doorways. Added as more road is revealed. @label=Door_cache $B182 DEFW $0000 ; Coords along road's axis. This is used for positioning when entering ; and drawing doors. $B184 DEFB $00,$00 $B186 DEFW $0000 $B188 DEFB $00,$00 $B18A DEFW $0000 $B18C DEFB $00,$00 $B18E DEFW $0000 $B190 DEFB $00,$00 $B192 DEFW $0000 $B194 DEFB $00,$00 $B196 DEFW $0000 $B198 DEFB $00,$00 @label=Flag_DoorEntry $B19A DEFB $00 ; 0 None 1 Door entry 3 Door closing @label=Msg_CountDown $B19B DEFB $00 ; Counts down when a message is being displayed on screen. The message ; is cleared when the counter hits zero. @label=PathFound_InOut_Axis $B19C DEFW $0000 ; Data for path leading in/out of screen. @label=PathFound_InOut_Start $B19E DEFW $0000 ; Start of path found. @label=PathFound_InOut_End $B1A0 DEFW $0000 ; End of path found. $B1A2 DEFW $B1A8 $B1A4 DEFW $B1A8 $B1A6 DEFB $01,$01 @label=Path_InOutDescr $B1A8 DEFB $00,$00 ; Description for path leading in / out of screen. @label=PathFound_StartMargin $B1AA DEFW $8020 ; Value used to calculate any part of the screen the path isn't on. $B1AC DEFB $20 $B1AD DEFB $08,$10,$9B,$FF,$9B,$00 ; Paths Paths and descriptions for rooms. ; ; Data for the rooms. @label=Path_InsideEW b$B1B3 DEFB $00 @label=PathFound_EndMargin $B1B4 DEFW $8020 ; Value used to calculate any part of the screen the path isn't on. $B1B6 DEFB $20,$08,$10,$9B,$FF,$9B,$00,$00 ; Path @label=_b1be_path $B1BE DEFW $0068 $B1C0 DEFW $0064 $B1C2 DEFW $0084 $B1C4 DEFW $B1D8 $B1C6 DEFW $B1E2 $B1C8 DEFB $00,$00 @label=_b1ca_path $B1CA DEFW $00C8 $B1CC DEFW $0064 $B1CE DEFW $0084 $B1D0 DEFW $B1E9 $B1D2 DEFW $B1F0 $B1D4 DEFB $00,$00 $B1D6 DEFW $FFFF @label=_b1d8_descr $B1D8 DEFB $74,$00,$12,$08,$00,$10,$00,$EC $B1E0 DEFB $00,$00 @label=_b1e2_descr $B1E2 DEFB $6E,$80,$0C,$05,$ED,$00,$00 @label=_b1e9_descr $B1E9 DEFB $6E,$80,$0C,$05,$ED,$00,$00 @label=_b1f8_descr $B1F0 DEFB $74,$00,$12,$08,$00,$10,$00,$F9 $B1F8 DEFB $00,$00 ; Path @label=_b1fa_path $B1FA DEFW $0080 $B1FC DEFW $0064 $B1FE DEFW $00CC $B200 DEFW $B208 $B202 DEFW $B212 $B204 DEFW $0000 $B206 DEFW $FFFF @label=_b208_descr $B208 DEFB $98,$00,$36,$08,$00,$10,$00,$F0 $B210 DEFB $00,$00 @label=_b212_descr $B212 DEFB $98,$00,$2A,$08,$00,$10,$00,$F1 $B21A DEFB $00,$00 ; Path @label=_b21c_path $B21C DEFW $0080 $B21E DEFW $0064 $B220 DEFW $00CC $B222 DEFW $B22A $B224 DEFW $B234 $B226 DEFB $00,$00 $B228 DEFB $FF,$FF @label=_b22a_descr $B22A DEFB $98,$00,$36,$08,$00,$10,$00,$F2 $B232 DEFB $00,$00 @label=_b234_descr $B234 DEFB $98,$00,$2A,$08,$00,$10,$00,$EF $B23C DEFB $00,$00 ; Path @label=_b234_path $B23E DEFW $0080 $B240 DEFW $0064 $B242 DEFW $00CC $B244 DEFW $B24C $B246 DEFW $B256 $B248 DEFB $00,$00 $B24A DEFB $FF,$FF @label=_b24c_descr $B24C DEFB $98,$00,$36,$08,$00,$10,$00,$FA $B254 DEFB $00,$00 @label=_b256_descr $B256 DEFB $98,$00,$2A,$08,$00,$10,$00,$F6 $B25E DEFB $00,$00 ; Path @label=_b260_path $B260 DEFW $0080 $B262 DEFW $0064 $B264 DEFW $00CC $B266 DEFW $B26E $B268 DEFW $B234 $B26A DEFB $00,$00 $B26C DEFW $FFFF @label=_b26e_descr $B26E DEFB $98,$00,$36,$08,$00,$10,$00,$EE $B276 DEFB $00,$00 @label=_b278_path $B278 DEFW $0080 $B27A DEFW $0064 $B27C DEFW $00CC $B27E DEFW $B286 $B280 DEFW $B256 $B282 DEFW $0000 $B284 DEFW $FFFF @label=_b286_descr $B286 DEFB $98,$00,$36,$08,$00,$10,$00,$F8 $B28E DEFB $00,$00 ; Path @label=_b290_path $B290 DEFW $0080 $B292 DEFW $0064 $B294 DEFW $00CC $B296 DEFW $B29E $B298 DEFW $B234 $B29A DEFB $00,$00 $B29C DEFW $FFFF @label=_b29e_descr $B29E DEFB $98,$00,$36,$08,$00,$10,$00,$F3 $B2A6 DEFB $00,$00 ; Path @label=_b2a8_path $B2A8 DEFW $0080 $B2AA DEFW $0064 $B2AC DEFW $00CC $B2AE DEFW $B2B6 $B2B0 DEFW $B256 $B2B2 DEFB $00,$00 $B2B4 DEFW $FFFF @label=_b2b6_descr $B2B6 DEFB $98,$00,$36,$08,$00,$10,$00,$F5 $B2BE DEFB $00,$00 ; Path @label=_b2c0_path $B2C0 DEFW $0080 $B2C2 DEFW $0064 $B2C4 DEFW $00CC $B2C6 DEFW $B22A $B2C8 DEFW $B212 $B2CA DEFB $00,$00 $B2CC DEFW $FFFF ; Table of pointers to all of the background description strings. Each string describes the furniture displayed in ; the background. @label=PtrTble_BgStr b$B2CE DEFW $B312 $B2D0 DEFW $B317 $B2D2 DEFW $B31D $B2D4 DEFW $B32B $B2D6 DEFW $B33E $B2D8 DEFW $B350 $B2DA DEFW $B364 $B2DC DEFW $B368 $B2DE DEFW $B36E $B2E0 DEFW $B374 $B2E2 DEFW $B385 $B2E4 DEFW $B38A $B2E6 DEFW $B39A $B2E8 DEFW $B3AB $B2EA DEFW $B3BE $B2EC DEFW $B3D0 $B2EE DEFW $B3DC $B2F0 DEFW $B3E5 $B2F2 DEFW $B405 $B2F4 DEFW $B41F $B2F6 DEFW $B44A $B2F8 DEFW $B46A $B2FA DEFW $B489 $B2FC DEFW $B4A4 $B2FE DEFW $B4AD $B300 DEFW $B4C3 $B302 DEFW $B4D7 $B304 DEFW $B4DC $B306 DEFW $B4F8 $B308 DEFW $B504 $B30A DEFW $B524 $B30C DEFW $B52A $B30E DEFW $B534 $B310 DEFW $B538 ; Background description strings @label=BgStr_b312 b$B312 DEFB $05,$9A,$01,$8F,$01 ; [No. of bytes (incl.), item, item, item] @label=BgStr_b317 $B317 DEFB $06,$01,$8F,$01,$10,$9A @label=BgStr_b31d $B31D DEFB $0E,$C8,$05,$B8,$80,$01,$92,$02 $B325 DEFB $87,$B4,$C6,$05,$8B,$02 @label=BgStr_b32b $B32B DEFB $13,$C8,$B8,$01,$86,$B4,$81,$01 $B333 DEFB $A0,$10,$A0,$92,$A0,$10,$A0,$01 $B33B DEFB $81,$86,$B8 @label=BgStr_b33e $B33E DEFB $12,$B8,$06,$C6,$01,$8A,$10,$8A $B346 DEFB $01,$B8,$92,$B8,$01,$87,$8B,$B4 $B34E DEFB $8B,$03 @label=BgStr_b350 $B350 DEFB $14,$98,$C1,$C6,$01,$C1,$87,$98 $B358 DEFB $C6,$C8,$10,$C1,$B4,$87,$01,$C6 $B360 DEFB $10,$98,$01,$C8 @label=BgStr_b364 $B364 DEFB $04,$98,$C6,$01 @label=BgStr_b368 $B368 DEFB $06,$9A,$87,$C1,$10,$9A @label=BgStr_b36e $B36E DEFB $06,$8B,$01,$C6,$01,$C1 @label=BgStr_b374 $B374 DEFB $11,$C8,$C6,$07,$8C,$10,$8C,$01 $B37C DEFB $C7,$01,$C8,$92,$87,$80,$02,$C6 $B384 DEFB $02 @label=BgStr_b385 $B385 DEFB $05,$DD,$E5,$E2,$DE @label=BgStr_b38a $B38A DEFB $10,$87,$89,$B8,$89,$B4,$01,$81 $B392 DEFB $01,$92,$01,$81,$01,$89,$87,$01 @label=BgStr_b39a $B39A DEFB $11,$C1,$98,$8D,$8D,$87,$8D,$10 $B3A2 DEFB $C1,$92,$C8,$8D,$87,$C6,$98,$B4 $B3AA DEFB $C8 @label=BgStr_b3ab $B3AB DEFB $13,$8C,$10,$8C,$8C,$10,$8C,$B4 $B3B3 DEFB $81,$C6,$01,$92,$01,$81,$01,$8C $B3BB DEFB $10,$8C,$01 @label=BgStr_b3be $B3BE DEFB $12,$98,$89,$C6,$01,$C1,$89,$10 $B3C6 DEFB $C1,$87,$C6,$98,$89,$C8,$89,$C1 $B3CE DEFB $C6,$98 @label=BgStr_b3d0 $B3D0 DEFB $0C,$9A,$01,$C8,$B4,$93,$10,$C8 $B3D8 DEFB $10,$B4,$10,$9A @label=BgStr_b3dc $B3DC DEFB $09,$9A,$02,$C6,$B4,$C8,$01,$10 $B3E4 DEFB $9A @label=BgStr_b3e5 $B3E5 DEFB $20,$9A,$03,$C6,$87,$61,$A4,$A5 $B3ED DEFB $10,$A4,$BC,$B4,$62,$A4,$A5,$10 $B3F5 DEFB $A4,$BD,$02,$C2,$C2,$02,$B2,$B4 $B3FD DEFB $B2,$01,$93,$C6,$B4,$03,$10,$9A @label=BgStr_b405 $B405 DEFB $1A,$9A,$02,$A6,$A7,$10,$A6,$01 $B40D DEFB $C6,$01 @label=BgStr_b40f $B40F DEFB $93,$B4,$B2,$87,$01,$A6,$A7,$10 $B417 DEFB $A6,$B4,$B2,$02,$C6,$02,$10,$9A @label=BgStr_b41f $B41F DEFB $2B,$9A,$02,$B4,$C4,$C5,$C3,$C3 $B427 DEFB $10,$C4,$C8,$61,$A4,$A5,$10,$A4 $B42F DEFB $01,$62,$A4,$A5,$10,$A4,$C6,$01 $B437 DEFB $63,$A4,$23,$A5,$9E,$10,$9E,$64 $B43F DEFB $23,$A5,$10,$A4,$01,$93,$01,$C8 $B447 DEFB $03,$10,$9A @label=BgStr_b44a $B44A DEFB $20,$9A,$01,$C4,$C5,$C3,$10,$C4 $B452 DEFB $02,$C6,$02,$93,$01,$C4,$25,$C5 $B45A DEFB $10,$C4,$02,$C8,$C6,$87,$C4,$C5 $B462 DEFB $C3,$C5,$C5,$10,$C4,$02,$10,$9A @label=BgStr_b46a $B46A DEFB $1F,$9A,$B4,$C6,$C8,$B2,$B4,$01 $B472 DEFB $82,$01,$61,$A4,$A5,$10,$A4,$01 $B47A DEFB $83,$01,$A6,$A7,$10,$A6,$87,$C6 $B482 DEFB $C8 @label=BgStr_b483 $B483 DEFB $93,$87,$B4,$02,$10,$9A @label=BgStr_b489 $B489 DEFB $1B,$9A,$B4,$C6,$C8,$82,$01,$83 $B491 DEFB $01,$61,$A4,$A5,$10,$A4,$01,$84 $B499 DEFB $01,$85,$87,$C6,$C8,$93,$87,$B4 $B4A1 DEFB $02,$10,$9A @label=BgStr_b4a4 $B4A4 DEFB $09,$DD,$C6,$02,$26,$95,$02,$C6 $B4AC DEFB $DE @label=BgStr_b4ad $B4AD DEFB $16,$9A,$B4,$C6,$98,$C1,$C1,$C8 $B4B5 DEFB $87,$98,$C6,$C8,$C1,$01,$98,$C1 $B4BD DEFB $95,$98,$C6,$01,$10,$9A @label=BgStr_b4c3 $B4C3 DEFB $14,$9A,$C1,$C8,$98,$95,$C6,$01 $B4CB DEFB $B4,$C1,$C6,$87,$10,$C1,$87,$10 $B4D3 DEFB $98,$B4,$10,$9A @label=BgStr_b4d7 $B4D7 DEFB $05,$DD,$E5,$E1,$DE @label=BgStr_b4dc $B4DC DEFB $1C $B4DD DEFB $9A,$B4,$01,$98,$C1,$C1,$A0,$10 $B4E5 DEFB $A0,$61,$A4,$A5,$10,$A4,$A0,$10 $B4ED DEFB $A0,$01,$83,$C6,$98,$C1,$95,$98 $B4F5 DEFB $02,$10,$9A @label=BgStr_d4f8 $B4F8 DEFB $0C,$9A,$01,$C8,$B4,$93,$10,$C8 $B500 DEFB $10,$B4,$10,$9A @label=BgStr_b504 $B504 DEFB $20,$9A,$98,$B4,$87,$C1,$61,$A4 $B50C DEFB $A5,$10,$A4,$C2,$01,$62,$A4,$A5 $B514 DEFB $10,$A4,$C2,$01,$63,$A4,$A5,$10 $B51C DEFB $A4,$C2,$01,$93,$C1,$B4,$10,$9A @label=BgStr_b524 $B524 DEFB $06,$01,$C6,$94,$C6,$C8 @label=BgStr_b52a $B52A DEFB $0A,$DD,$E5,$E3,$C6,$95,$10,$99 $B532 DEFB $E5,$DE @label=BgStr_b534 $B534 DEFB $04,$DD,$E5,$DE @label=BgStr_b538 $B538 DEFB $05,$DD,$DF,$E5,$DE ; Data block at B53D b$B53D DEFB $74,$65,$74,$68,$20,$69,$73,$20 $B545 DEFB $6A,$61,$69,$6C,$65,$72,$5E,$66 $B54D DEFB $6F,$72,$62,$69,$64,$64,$65,$6E $B555 DEFB $21,$5E,$5E,$38,$20,$72,$6F,$77 $B55D DEFB $73,$20,$61,$6E,$64,$20,$62,$61 $B565 DEFB $72,$2B,$66,$6F,$72,$20,$6B,$65 $B56D DEFB $79,$20,$66,$69,$6E,$64,$20,$73 $B575 DEFB $6B,$61,$72,$5E,$66,$72,$65,$65 $B57D DEFB $21,$20,$73,$68,$6F,$77,$20,$6D $B585 DEFB $65,$20,$74,$68,$65,$20,$6B,$65 $B58D DEFB $79,$2B,$77,$65,$27,$6C,$6C,$20 $B595 DEFB $6C,$65,$61,$76,$65,$5E,$64,$61 $B59D DEFB $72,$61,$63,$68,$20,$64,$6F,$77 $B5A5 DEFB $6E,$5E,$6E,$6F,$20,$65,$78,$69 $B5AD DEFB $74,$5E,$74,$68,$65,$20,$65,$6E $B5B5 DEFB $64,$21,$20,$74,$61,$20,$66,$72 $B5BD DEFB $6F,$6D,$20,$67,$67,$21,$5E ; Rooms Main Data. See also #R$8BDD and #R$85A0 Outside info. @label=Room_MainData b$B5C4 DEFB $1E ; Size of data in bytes (including this one). $B5C5 DEFB $0F ; [Room type (0), Exit mask (F)] $B5C6 DEFB $00,$00,$01,$00,$00,$00,$00 ; North exit [, type (0) (7 bytes)] $B5CD DEFB $00,$00,$01,$00,$00,$00,$00 @label=Outside_SouthExitData $B5D4 DEFB $00,$00,$01 ; South exit [, type (0)] $B5D7 DEFW $0000 ; Position of hero when last outside. $B5D9 DEFW $0000 $B5DB DEFB $00,$00,$01,$00,$00,$00,$00 ; Room [1, Castle] $B5E2 DEFB $0F ; Size of data in bytes. $B5E3 DEFB $85 ; [Room type, Exits ( _ S _ N )] $B5E4 DEFB $30 $B5E5 DEFB $3D $B5E6 DEFB $B5 $B5E7 DEFB $10 ; North Exit [ , type 0 (7 bytes) ] $B5E8 DEFB $00,$01,$BC,$02,$05,$06 $B5EE DEFB $11 ; South Exit [ , type 1 (3 bytes) ] $B5EF DEFB $27 ; Object index for key [D Key] $B5F0 DEFB $4E ; Room [2. ] $B5F1 DEFB $05,$80,$08,$A7,$B5 ; [02] $B5F6 DEFB $10,$0A,$00,$00,$01,$C5,$03,$5C ; [03] $B5FE DEFB $03,$00,$00,$01,$37,$03,$3C,$05 $B606 DEFB $05,$30,$30,$62,$00 ; [04] $B60B DEFB $07,$20,$18,$19,$50,$07,$5E ; [05] $B612 DEFB $05,$30,$30,$00,$00 ; [06] $B617 DEFB $05,$30,$30,$6C,$00 ; [07] ; Broker, 1 Long Lane. $B61C DEFB $07,$20,$18,$0A,$00,$02,$39 ; [08] ; Deposit, 3 Long Lane. $B623 DEFB $05,$30,$30,$00,$00 ; [09] $B628 DEFB $06,$10,$20,$09,$00,$04 ; [0A] $B62E DEFB $06,$10,$20,$04,$00,$03 ; [0B] $B634 DEFB $05,$30,$30,$63,$00 ; [0C] $B639 DEFB $06,$10,$20,$05,$00,$02 ; [0D] $B63F DEFB $06,$10,$20,$07,$00,$01 ; [0E] $B645 DEFB $07,$20,$18,$06,$00,$02,$3A ; [0F] $B64C DEFB $06,$10,$20,$02,$00,$15 ; [10] $B652 DEFB $06,$10,$20,$0B,$50,$01 ; [11] $B658 DEFB $06,$10,$20,$0C,$00,$04 ; [12] ; Room [13, Gallery, Herne Hill] 1 Herne Hill. $B65E DEFB $11 ; Number of bytes in data. $B65F DEFB $70 ; Room type (7) $B660 DEFB $38 ; White background. $B661 DEFB $00 ; Plinth, Where to place the object for matching. $B662 DEFB $20 ; Index of reward object (Brooch) $B663 DEFB $44 ; Arrow character displayed in picture. $B664 DEFB $0E ; Object (Arrow) required. $B665 DEFB $7D ; 'tick' character used when correct object placed. $B666 DEFB $43 ; '+z' character. $B667 DEFB $11 ; Object (Adze) required. $B668 DEFB $7D $B669 DEFB $42 ; 'o' character. $B66A DEFB $17 ; Object (Hoe) required. $B66B DEFB $7D $B66C DEFB $41 ; 'eye' character. $B66D DEFB $07 ; Object (needle) required. $B66E DEFB $7D ; Room [14] $B66F DEFB $06,$10,$38,$0E,$50,$01 ; [14] $B675 DEFB $06,$10,$38,$06,$50,$01 ; [15] $B67B DEFB $06,$10,$30,$0F,$00,$07 $B681 DEFB $06,$10,$30,$10,$00,$05 $B687 DEFB $06,$10,$20,$11,$00,$03 $B68D DEFB $05,$30,$18,$73,$00 $B692 DEFB $06,$10,$20,$12,$50,$01 ; 4 Herne Hill $B698 DEFB $11,$70,$38,$00,$21,$40,$38,$7D $B6A0 DEFB $3F,$05,$7D,$3E,$08,$7D,$3D,$0C $B6A8 DEFB $7D $B6A9 DEFB $05,$30,$30,$79,$00 $B6AE DEFB $06,$10,$18,$17,$50,$02 $B6B4 DEFB $06,$10,$20,$0A,$50,$01 $B6BA DEFB $06,$10,$18,$1B,$00,$01 $B6C0 DEFB $06,$10,$38,$15,$00,$02 $B6C6 DEFB $07,$20,$18,$03,$00,$08,$38 $B6CD DEFB $05,$30,$20,$63,$00 $B6D2 DEFB $07,$20,$30,$0B,$00,$02,$3B $B6D9 DEFB $11,$70,$38,$00,$1E,$50,$1B,$7D $B6E1 DEFB $4F,$1A,$7D,$4E,$13,$7D,$4D,$10 $B6E9 DEFB $7D $B6EA DEFB $05,$30,$30,$6F,$00 ; Room [ ] $B6EF DEFB $0A,$60,$20,$00,$26,$4C,$22,$6B $B6F7 DEFB $65,$79 $B6F9 DEFB $05,$30,$18,$75,$00 $B6FE DEFB $05,$30,$30,$74,$00 $B703 DEFB $22,$5F,$30,$00,$00,$00,$10,$00 $B70B DEFB $01,$1C,$07,$A1,$04,$10,$00,$01 $B713 DEFB $5D,$07,$EC,$04,$10,$00,$01,$BC $B71B DEFB $07,$AB,$04,$10,$00,$01,$7B,$07 $B723 DEFB $4C,$04,$06,$10,$20,$03,$00,$06 ; Argot Bank. $B72B DEFB $20,$9F,$30,$00,$10,$00,$01,$DC $B733 DEFB $05,$FD,$02,$10,$00,$01,$1D,$06 $B73B DEFB $5C,$03,$10,$00,$01,$7C,$06,$1B $B743 DEFB $03,$10,$00,$01,$27,$06,$BC,$02 $B74B DEFB $05,$30,$20,$69,$00,$06,$10,$38 $B753 DEFB $1A,$00,$02,$0D,$AA,$20,$31,$00 $B75B DEFB $2F,$10,$00,$01,$27,$06,$5C,$03 ; Portal, 2 Herne Hill $B763 DEFB $0D,$AA,$38,$31,$00,$30,$10,$00 $B76B DEFB $01,$43,$04,$BC,$02,$0D,$AA,$18 $B773 DEFB $31,$00,$31,$10,$00,$01,$87,$05 $B77B DEFB $6C,$07,$0D,$AA,$30,$31,$00,$2E $B783 DEFB $10,$00,$01,$57,$08,$8C,$05,$05 $B78B DEFB $30,$30,$65,$00,$10,$16,$38,$38 $B793 DEFB $00,$04,$21,$37,$68,$10,$00,$01 $B79B DEFB $BC,$07,$D3,$05,$0A,$60,$30,$00 $B7A3 DEFB $00,$4B,$23,$7C,$7E,$7C,$06,$10 $B7AB DEFB $18,$19,$00,$05,$05,$30,$38,$74 $B7B3 DEFB $00,$07,$31,$20,$00,$18,$12,$26 $B7BB DEFB $05,$30,$18,$61,$00 ; Room [ , Ladyos] $B7C0 DEFB $07,$84,$10,$4C,$B5 $B7C5 DEFB $12 $B7C6 DEFB $31 ; Key $31 (spell "show the lady") $B7C7 DEFB $05,$30,$38,$73,$00,$11,$70,$30 $B7CF DEFB $00,$1F,$48,$15,$7D,$47,$04,$7D $B7D7 DEFB $46,$12,$7D,$45,$09,$7D,$06,$10 $B7DF DEFB $20,$2B,$00,$20,$05,$30,$18,$00 $B7E7 DEFB $00,$05,$30,$38,$65,$00,$07,$34 $B7EF DEFB $20,$00,$24,$12,$2C,$05,$30,$18 $B7F7 DEFB $00,$00 ; Room [ ,Thieves Guild] $B7F9 DEFB $06,$10,$30,$14,$41,$00 $B7FF DEFB $06,$10,$38,$37,$41,$00,$09,$08 $B807 DEFB $30,$00,$01,$70,$03,$CC,$06,$09 $B80F DEFB $08,$30,$00,$01,$30,$02,$AC,$08 $B817 DEFB $09,$08,$30,$00,$01,$30,$02,$FC $B81F DEFB $08,$09,$08,$30,$00,$01,$30,$02 $B827 DEFB $4C,$09,$09,$08,$30,$00,$01,$30 $B82F DEFB $02,$9C,$09,$09,$08,$30,$00,$01 $B837 DEFB $30,$02,$EC,$09,$09,$08,$30,$00 $B83F DEFB $01,$30,$02,$3C,$0A,$09,$08,$30 $B847 DEFB $00,$01,$30,$02,$8C,$0A,$0B,$8C $B84F DEFB $30,$57,$B5,$11,$33,$4D,$11,$00 $B857 DEFB $4C,$0F,$8A,$30,$58,$B5,$10,$00 $B85F DEFB $01,$30,$02,$5C,$08,$11,$00,$4E $B867 DEFB $12,$43,$30,$00,$3A,$3B,$6F,$61 $B86F DEFB $6B,$61,$74,$78,$11,$33,$4B,$11 $B877 DEFB $00,$4F,$15,$47,$20,$00,$39,$00 $B87F DEFB $64,$70,$65,$61,$74,$78,$11,$27 $B887 DEFB $01,$11,$00,$4C,$31,$00,$69,$0F $B88F DEFB $8C,$20,$79,$B5,$10,$3B,$01,$4C $B897 DEFB $04,$40,$06,$11,$00,$4D,$05,$30 $B89F DEFB $20,$68,$00,$06,$10,$38,$13,$50 $B8A7 DEFB $01,$05,$30,$38,$6B,$00,$05,$80 $B8AF DEFB $08,$9B,$B5,$07,$81,$00,$AF,$B5 $B8B7 DEFB $12,$3B,$06,$10,$20,$1D,$00,$10 $B8BF DEFB $05,$30,$18,$6E,$00,$05,$30,$30 $B8C7 DEFB $00,$00,$06,$10,$30,$08,$00,$01 $B8CF DEFB $05,$30,$20,$72,$00,$07,$38,$20 $B8D7 DEFB $00,$3C,$12,$29,$05,$30,$38,$6D $B8DF DEFB $00,$05,$30,$18,$69,$00,$0A,$60 $B8E7 DEFB $30,$00,$00,$49,$25,$7C,$3C,$7C $B8EF DEFB $06,$10,$20,$31,$00,$10 ; Secret room, Park Row. $B8F5 DEFB $05 ; Size $B8F6 DEFB $80 ; [Type (8), no exit data] $B8F7 DEFB $20,$57,$B5 ; 3 bytes of data. ; 28 Park Row $B8FA DEFB $05 $B8FB DEFB $30 ; [Type 3, no exit data] $B8FC DEFB $30,$74,$00 ; Strong room, north wall. $B8FF DEFB $05 ; Size $B900 DEFB $B0 ; [Type (8), no exit data] $B901 DEFB $20,$00,$32 ; 3 bytes of data. ; Gallery, north wall. $B904 DEFB $06 ; Size $B905 DEFB $10 ; [Type (1), blank exit mask] $B906 DEFB $18,$28,$00,$06 ; 85 Leaf lane. $B90A DEFB $05,$30,$30,$65,$00 ; 86 Leaf Lane. $B90F DEFB $05,$30,$38,$79,$00 ; 59 West Wall $B914 DEFB $05 $B915 DEFB $30,$20,$70,$00,$05,$30,$18,$00 $B91D DEFB $00,$0A,$60,$20,$00,$00,$4A,$24 $B925 DEFB $7C,$50,$7C,$08,$38,$10,$00,$25 $B92D DEFB $11,$37,$33,$0B,$33,$18,$00,$00 $B935 DEFB $31,$00,$4E,$31,$00,$6A,$08,$38 $B93D DEFB $10,$00,$00,$31,$00,$69,$00,$00 ; People Data, Skar @label=People_Skar b$B945 DEFW $B96E ; [00] Ptr to next person in list. $B947 DEFB $00 ; [02] Compass. $B948 DEFB $29 ; [03] Start frame. $B949 DEFB $35 ; [04] End frame. $B94A DEFW $080C ; [05] N/S coord. $B94C DEFW $06A8 ; [07] E/W coord. $B94E DEFB $12 ; [09] $B94F DEFB $00 ; [0A] Current action countdown. $B950 DEFB $29 ; [0B] Current bitmap frame index. $B951 DEFB $00 ; [0C] $B952 DEFB $00 ; [0D] Waiting for next action countdown. $B953 DEFB $01 ; [0E] Identifier $B954 DEFB $01 ; [0F] $B955 DEFB $01 ; [10] $B956 DEFB $00 ; [11] Current path ptr. $B957 DEFB $00 ; [12] $B958 DEFB $03 ; [13] Bit flags $B959 DEFB $00 ; [14] $B95A DEFB $00 ; [15] $B95B DEFB $00 ; [16] Subroutine index. See #R$A202 $B95C DEFB $00 ; [17] Action flags $B95D DEFB $00 ; [18] $B95E DEFW $03D4 $B960 DEFW $02BC $B962 DEFB $03,$00 $B964 DEFW $080C $B966 DEFW $06A8 $B968 DEFB $00,$00 $B96A DEFM "skar" ; People Data, Ryde @label=People_Ryde b$B96E DEFW $B997 $B970 DEFB $00,$3D,$49,$93,$05,$5C,$03,$12 $B978 DEFB $00,$3D,$00,$00,$02,$01,$01,$00 $B980 DEFB $00,$04,$00,$00,$00,$00,$00,$3C $B988 DEFB $05,$C9,$07,$00,$0C,$7F,$05,$5C $B990 DEFB $03,$03,$2C $B993 DEFM "ryde" ; People Data, Kara @label=People_Kara b$B997 DEFW $B9C0 $B999 DEFB $00,$29,$35,$39,$06,$6C,$07,$12 $B9A1 DEFB $00,$29,$00,$00,$03,$01,$01,$00 $B9A9 DEFB $00,$0C,$00,$00,$00,$00,$00,$9C $B9B1 DEFB $04,$7F,$05,$02,$1C,$39,$06,$6C $B9B9 DEFB $07,$01,$22 $B9BC DEFM "kara" ; People Data, Keli @label=People_Keli b$B9C0 DEFW $B9E9 $B9C2 DEFB $00,$29,$35,$1C,$07,$4F,$05,$12 $B9CA DEFB $00,$29,$00,$00,$04,$01,$01,$00 $B9D2 DEFB $00,$0C,$00,$00,$00,$00,$00,$7C $B9DA DEFB $06,$05,$04,$02,$42,$1C,$07,$2F $B9E2 DEFB $05,$02,$00 $B9E5 DEFM "keli" ; People Data, Kahn @label=People_Kahn b$B9E9 DEFW $BA12 $B9EB DEFB $00,$3D,$49,$69,$08,$CC,$06,$12 $B9F3 DEFB $00,$3D,$00,$00,$05,$01,$01,$00 $B9FB DEFB $00,$08,$00,$00,$00,$00,$00,$7C $BA03 DEFB $06,$B4,$07,$00,$00,$69,$08,$CC $BA0B DEFB $06,$01,$5C $BA0E DEFM "kahn" ; People Data, Dain @label=People_Dain b$BA12 DEFW $BA3B $BA14 DEFB $02,$3D,$49,$78,$00,$80,$00,$12 $BA1C DEFB $00,$49,$00,$00,$06,$09,$02,$A8 $BA24 DEFB $B2,$46,$00,$00,$05,$00,$5F,$CC $BA2C DEFB $06,$95,$04,$00,$00,$FC,$03,$33 $BA34 DEFB $03,$00,$00 $BA37 DEFM "dain" ; People Data, Mhor @label=People_Mhor b$BA3B DEFW $BA64 $BA3D DEFB $00,$29,$35,$83,$05,$3C,$05,$12 $BA45 DEFB $00,$29,$00,$00,$07,$01,$01,$00 $BA4D DEFB $00,$00,$00,$00,$00,$00,$00,$FC $BA55 DEFB $03,$33,$03,$00,$5F,$CC,$06,$0C $BA5D DEFB $03,$00,$00 $BA60 DEFM "mhor" ; People Data, Teth @label=People_Teth b$BA64 DEFW $BA8D $BA66 DEFB $00,$3D,$49,$78,$00,$80,$00,$12 $BA6E DEFB $00,$49,$00,$00,$08,$09,$02,$A8 $BA76 DEFB $B2,$44,$00,$00,$05,$00,$53,$BC $BA7E DEFB $02,$05,$06,$02,$00,$AC,$08,$F5 $BA86 DEFB $06,$02,$00 $BA89 DEFM "teth" ; People Data, Pita @label=People_Pita b$BA8D DEFW $BAB6 $BA8F DEFB $00,$29,$35,$8C,$05,$3F,$04,$12 $BA97 DEFB $00,$29,$00,$00,$09,$01,$01,$00 $BA9F DEFB $00,$04,$00,$00,$00,$00,$00,$DC $BAA7 DEFB $05,$41,$05,$02,$12,$8C,$05,$3F $BAAF DEFB $04,$02,$04 $BAB2 DEFM "pita" ; People Data, Bren @label=People_Bren b$BAB6 DEFW $BADF $BAB8 DEFB $00,$3D,$49,$E9,$05,$FC,$03,$12 $BAC0 DEFB $00,$3D,$00,$00,$0A,$01,$01,$00 $BAC8 DEFB $00,$24,$00,$00,$00,$00,$00,$BC $BAD0 DEFB $07,$D3,$05,$00,$33,$E9,$05,$FC $BAD8 DEFB $03,$01,$07 $BADB DEFM "bren" ; People Data, Loeg @label=People_Loeg b$BADF DEFW $BB08 $BAE1 DEFB $00,$3D,$49,$78,$00,$80,$00,$12 $BAE9 DEFB $00,$49,$00,$00,$0B,$09,$02,$A8 $BAF1 DEFB $B2,$40,$00,$00,$05,$00,$4F,$AC $BAF9 DEFB $08,$C1,$05,$02,$00,$4C,$04,$40 $BB01 DEFB $06,$00,$00 $BB04 DEFM "loeg" ; People Data, rat @label=People_rat b$BB08 DEFW $0000 ; End of link $BB0A DEFB $00 ; Compass $BB0B DEFB $36 ; Start frame $BB0C DEFB $38 ; End frame $BB0D DEFW $08AC ; Coords N/S $BB0F DEFW $06F5 ; Coords E/W $BB11 DEFB $00,$00,$36,$00,$00,$0C,$01,$01 $BB19 DEFB $00,$00,$12,$00,$00,$00,$00,$00 $BB21 DEFB $BC,$07,$52,$05,$00,$00,$AC,$08 $BB29 DEFB $F5,$06,$02,$53,$00 @label=Hero_LastStepFrame $BB2E DEFB $04 ; Keeps track of which frame was used when a full step was taken. ; Data block at BB2F @label=Room_CurrentPtr b$BB2F DEFW $0000 ; Pointer to current room. @label=Ptr_CurrentExitData $BB31 DEFW $0000 ; Address of new room's exit data / Basic exit at $85AC @label=Room_CurrentDataPtr $BB33 DEFW $0000 ; Points to data within the current room data. $BB35 DEFW $0000 @label=Shop_InfoData $BB37 DEFB $00 ; Used by shop as info data, see s#R$B170 @label=Shop_Shelves $BB38 DEFB $00,$00 ; Holds index of items on shop shelves. $BB3A DEFB $00 @label=_bb3b $BB3B DEFB $00,$00,$00 ; Data block at BB3E @label=_bb3e b$BB3E DEFB $00 ; [0] $BB3F DEFB $00 ; [1] $BB40 DEFB $00 ; [2] $BB41 DEFB $00 ; [3] $BB42 DEFB $00 ; [4] $BB43 DEFB $8B,$00,$80,$00,$10,$00,$00,$00 $BB4B DEFB $00,$00,$05,$00,$9D,$00,$80,$00 $BB53 DEFB $10,$00,$00,$00,$00,$00,$0C,$00 $BB5B DEFB $AF,$00,$80,$00,$10,$00,$00 ; Information for each of the dice. @label=Gamble_Dice1 b$BB62 DEFB $51 ; [0] Character index to blit. $BB63 DEFB $51 ; [1] First charater index. $BB64 DEFB $57 ; [2] End character index. (Not inclusive) $BB65 DEFB $00 ; [3] Count down to end of roll. $BB66 DEFB $00 ; [4] Start offset for when blitting character. $BB67 DEFW $0095 ; [5] E/W coordinate. $BB69 DEFW $0080 ; [7] N/S coordinate. $BB6B DEFB $10,$00,$00,$53,$51,$57,$00,$00 $BB73 DEFB $9B,$00,$80,$00,$10,$00,$00,$00 $BB7B DEFB $00,$00,$00,$00,$00,$00,$00,$01 $BB83 DEFB $00,$00,$00,$00,$00 ; Data block at BB88 @label=TempAl b$BB88 DEFB $70 @label=TempAh $BB89 DEFB $C0 @label=TempBl $BB8A DEFB $87 @label=TempBh $BB8B DEFB $01 ; Table of pointers for bitmaps. All dimensions are in 8x8 character cells. @label=Bitmap_PtrTable b$BB8C DEFW $0000 ; [Address] @label=Bitmap_PtrTableOffHeight $BB8E DEFB $81 ; [Height] @label=Bitmap_PtrTableOffWidth $BB8F DEFB $01 ; [Width] $BB90 DEFW $0008 $BB92 DEFB $00,$00 $BB94 DEFW $0008 $BB96 DEFB $87,$04 $BB98 DEFW $00E8 $BB9A DEFB $87,$04 $BB9C DEFW $01C8 $BB9E DEFB $87,$04 $BBA0 DEFW $02A8 $BBA2 DEFB $87,$04 $BBA4 DEFW $0388 $BBA6 DEFB $87,$04 $BBA8 DEFW $0468 $BBAA DEFB $87,$04 $BBAC DEFW $0548 $BBAE DEFB $00,$00 $BBB0 DEFW $0548 $BBB2 DEFB $87,$04 $BBB4 DEFW $0628 $BBB6 DEFB $87,$04 $BBB8 DEFW $0708 $BBBA DEFB $87,$04 $BBBC DEFW $07E8 $BBBE DEFB $87,$04 $BBC0 DEFW $08C8 $BBC2 DEFB $87,$04 $BBC4 DEFW $09A8 $BBC6 DEFB $87,$04 $BBC8 DEFW $0A88 $BBCA DEFB $00,$00 $BBCC DEFW $0A88 $BBCE DEFB $87,$02 $BBD0 DEFW $0AF8 @label=_bbd2 $BBD2 DEFB $00,$00 $BBD4 DEFW $0AF8 $BBD6 DEFB $87,$04 $BBD8 DEFW $0BD8 $BBDA DEFB $87,$04 $BBDC DEFW $0CB8 $BBDE DEFB $00,$00 $BBE0 DEFW $0CB8 $BBE2 DEFB $81,$01 $BBE4 DEFW $0CC0 $BBE6 DEFB $00,$00 $BBE8 DEFW $0CC0 $BBEA DEFB $00,$00 $BBEC DEFW $0CC0 $BBEE DEFB $00,$00 $BBF0 DEFW $0CC0 $BBF2 DEFB $00,$00 $BBF4 DEFW $0CC0 $BBF6 DEFB $00,$00 $BBF8 DEFW $0CC0 $BBFA DEFB $00,$00 $BBFC DEFW $0CC0 $BBFE DEFB $00,$00 $BC00 DEFW $0CC0 $BC02 DEFB $00,$00 $BC04 DEFW $0CC0 $BC06 DEFB $00,$00 @label=Bitmap_HeroMaskPtr $BC08 DEFW $0CC0 $BC0A DEFB $00,$00 $BC0C DEFW $0CC0 $BC0E DEFB $87,$04 $BC10 DEFW $0DA0 $BC12 DEFB $87,$04 $BC14 DEFW $0E80 $BC16 DEFB $87,$04 $BC18 DEFW $0F60 $BC1A DEFB $87,$04 $BC1C DEFW $1040 $BC1E DEFB $87,$04 $BC20 DEFW $1120 $BC22 DEFB $87,$04 $BC24 DEFW $1200 $BC26 DEFB $87,$02 $BC28 DEFW $1270 $BC2A DEFB $87,$04 @label=BmpInfo29_Woman $BC2C DEFW $1350 $BC2E DEFB $00,$00 $BC30 DEFW $1350 $BC32 DEFB $87,$04 $BC34 DEFW $1430 $BC36 DEFB $87,$04 $BC38 DEFW $1510 $BC3A DEFB $87,$04 $BC3C DEFW $15F0 $BC3E DEFB $87,$04 $BC40 DEFW $16D0 $BC42 DEFB $87,$04 $BC44 DEFW $17B0 $BC46 DEFB $87,$04 $BC48 DEFW $1890 $BC4A DEFB $87,$04 $BC4C DEFW $1970 $BC4E DEFB $87,$04 $BC50 DEFW $1A50 $BC52 DEFB $87,$04 $BC54 DEFW $1B30 $BC56 DEFB $87,$04 $BC58 DEFW $1C10 $BC5A DEFB $87,$04 $BC5C DEFW $1CF0 $BC5E DEFB $87,$04 @label=BmpInfo35_Woman $BC60 DEFW $1DD0 $BC62 DEFB $87,$02 $BC64 DEFW $1E40 $BC66 DEFB $82,$02 $BC68 DEFW $1E60 $BC6A DEFB $82,$02 $BC6C DEFW $1E80 $BC6E DEFB $82,$02 $BC70 DEFW $1EA0 $BC72 DEFB $82,$02 $BC74 DEFW $1EC0 $BC76 DEFB $00,$00 $BC78 DEFW $1EC0 $BC7A DEFB $00,$00 $BC7C DEFW $1EC0 $BC7E DEFB $00,$00 $BC80 DEFW $1EC0 $BC82 DEFB $87,$04 $BC84 DEFW $1FA0 $BC86 DEFB $87,$04 $BC88 DEFW $2080 $BC8A DEFB $87,$04 $BC8C DEFW $2160 $BC8E DEFB $87,$04 $BC90 DEFW $2240 $BC92 DEFB $87,$04 $BC94 DEFW $2320 $BC96 DEFB $87,$04 $BC98 DEFW $2400 $BC9A DEFB $87,$04 $BC9C DEFW $24E0 $BC9E DEFB $87,$04 $BCA0 DEFW $25C0 $BCA2 DEFB $87,$04 $BCA4 DEFW $26A0 $BCA6 DEFB $87,$04 $BCA8 DEFW $2780 $BCAA DEFB $87,$04 $BCAC DEFW $2860 $BCAE DEFB $87,$04 $BCB0 DEFW $2940 $BCB2 DEFB $87,$02 $BCB4 DEFW $29B0 $BCB6 DEFB $00,$00 $BCB8 DEFW $29B0 $BCBA DEFB $00,$00 $BCBC DEFW $29B0 $BCBE DEFB $00,$00 $BCC0 DEFW $29B0 $BCC2 DEFB $00,$00 $BCC4 DEFW $29B0 $BCC6 DEFB $00,$00 @label=BmpPtr_Objects $BCC8 DEFW $29B0 $BCCA DEFB $00,$00 $BCCC DEFW $29B0 $BCCE DEFB $82,$01 $BCD0 DEFW $29C0 $BCD2 DEFB $82,$02 $BCD4 DEFW $29E0 $BCD6 DEFB $81,$01 $BCD8 DEFW $29E8 $BCDA DEFB $83,$03 $BCDC DEFW $2A30 $BCDE DEFB $83,$02 $BCE0 DEFW $2A60 $BCE2 DEFB $83,$03 $BCE4 DEFW $2AA8 $BCE6 DEFB $82,$02 $BCE8 DEFW $2AC8 $BCEA DEFB $81,$01 $BCEC DEFW $2AD0 $BCEE DEFB $82,$01 $BCF0 DEFW $2AE0 $BCF2 DEFB $82,$02 $BCF4 DEFW $2B00 $BCF6 DEFB $82,$01 $BCF8 DEFW $2B10 $BCFA DEFB $82,$01 $BCFC DEFW $2B20 $BCFE DEFB $81,$02 $BD00 DEFW $2B30 $BD02 DEFB $82,$02 $BD04 DEFW $2B50 $BD06 DEFB $82,$02 $BD08 DEFW $2B70 $BD0A DEFB $82,$01 $BD0C DEFW $2B80 $BD0E DEFB $82,$01 $BD10 DEFW $2B90 $BD12 DEFB $83,$01 $BD14 DEFW $2BA8 $BD16 DEFB $82,$02 $BD18 DEFW $2BC8 $BD1A DEFB $82,$02 $BD1C DEFW $2BE8 $BD1E DEFB $82,$02 $BD20 DEFW $2C08 $BD22 DEFB $81,$01 $BD24 DEFW $2C10 $BD26 DEFB $82,$02 $BD28 DEFW $2C30 $BD2A DEFB $82,$02 $BD2C DEFW $2C50 $BD2E DEFB $83,$01 $BD30 DEFW $2C68 $BD32 DEFB $82,$02 $BD34 DEFW $2C88 $BD36 DEFB $82,$01 $BD38 DEFW $2C98 $BD3A DEFB $82,$02 $BD3C DEFW $2CB8 $BD3E DEFB $82,$02 $BD40 DEFW $2CD8 $BD42 DEFB $82,$02 $BD44 DEFW $2CF8 $BD46 DEFB $82,$02 ; Message at BD48 @label=Dictionary_10w b$BD48 DEFM $18,"-",$00,$00,$18,"-",$00,$00,$18,"-" $BD52 DEFM $00,$00,$18,"-",$00,$00,$18,"-",$00,$00 $BD5C DEFM $18,"-",$00,$00,$18,"-",$00,$00,$18,"-" $BD66 DEFM $00,$00,$18,"-",$00,$00,$18,"-",$00,$00 $BD70 DEFM $18,"-",$00,$00,$18,"-",$00,$00,$18,"-" ; Furniture bitmap table of pointers. @label=BmpPtr_FurnitureA b$BD7A DEFB $00,$00 $BD7C DEFW $2D18 $BD7E DEFB $00,$00 $BD80 DEFW $2D18 $BD82 DEFB $00,$00 $BD84 DEFW $2D18 $BD86 DEFB $00,$00 $BD88 DEFW $2D18 $BD8A DEFB $00,$00 $BD8C DEFW $2D18 $BD8E DEFB $85,$08 $BD90 DEFW $2E58 $BD92 DEFB $85,$08 @label=BmpInfo82_PictureFrame $BD94 DEFW $2F98 $BD96 DEFB $85,$05 $BD98 DEFW $3060 $BD9A DEFB $81,$01 $BD9C DEFW $3068 $BD9E DEFB $81,$01 $BDA0 DEFW $3070 $BDA2 DEFB $81,$01 $BDA4 DEFW $3078 $BDA6 DEFB $84,$02 $BDA8 DEFW $30B8 $BDAA DEFB $82,$02 $BDAC DEFW $30D8 $BDAE DEFB $81,$01 $BDB0 DEFW $30E0 $BDB2 DEFB $84,$02 $BDB4 DEFW $3120 $BDB6 DEFB $84,$03 $BDB8 DEFW $3180 $BDBA DEFB $84,$03 $BDBC DEFW $31E0 $BDBE DEFB $84,$02 $BDC0 DEFW $3220 $BDC2 DEFB $84,$02 $BDC4 DEFW $3320 $BDC6 DEFB $00,$00 @label=BmpInfo8F_Sign $BDC8 DEFW $3260 $BDCA DEFB $81,$08 @label=BmpInfo90_Arch $BDCC DEFW $32A0 $BDCE DEFB $82,$03 @label=BmpInfo91_ $BDD0 DEFW $33C0 $BDD2 DEFB $00,$00 @label=BmpInfo92_DoorNumbered $BDD4 DEFW $32D0 $BDD6 DEFB $87,$05 @label=BmpInfo93_DoorInner $BDD8 DEFW $33E8 $BDDA DEFB $87,$05 @label=BmpInfo94 $BDDC DEFW $3500 $BDDE DEFB $81,$05 $BDE0 DEFW $3528 $BDE2 DEFB $87,$05 $BDE4 DEFW $3730 $BDE6 DEFB $00,$00 $BDE8 DEFW $3730 $BDEA DEFB $00,$00 $BDEC DEFW $3640 $BDEE DEFB $84,$04 $BDF0 DEFW $37B0 $BDF2 DEFB $00,$00 $BDF4 DEFW $36C0 $BDF6 DEFB $88,$02 $BDF8 DEFW $3740 $BDFA DEFB $8A,$02 $BDFC DEFW $38D0 $BDFE DEFB $00,$00 $BE00 DEFW $38D0 $BE02 DEFB $00,$00 @label=BmpInfo9E_ShopKeeper $BE04 DEFW $37E0 $BE06 DEFB $86,$02 $BE08 DEFW $3990 $BE0A DEFB $00,$00 $BE0C DEFW $3840 $BE0E DEFB $87,$01 $BE10 DEFW $3A00 $BE12 DEFB $00,$00 $BE14 DEFW $3878 $BE16 DEFB $81,$01 $BE18 DEFW $3880 $BE1A DEFB $81,$01 @label=BmpInfoA4_CounterLeft $BE1C DEFW $3888 $BE1E DEFB $83,$02 @label=BmpInfoA5_CounterCentre $BE20 DEFW $38B8 $BE22 DEFB $83,$01 @label=BmpInfoA6_CounterRight $BE24 DEFW $38D0 $BE26 DEFB $83,$02 $BE28 DEFW $3900 $BE2A DEFB $83,$01 ; Data block at BE2C @label=Dictionary_w9 b$BE2C DEFM $A0,":",$00,$00,$A0,":",$00,$00,$A0 $BE35 DEFM ":",$00,$00,$A0,":",$00,$00,$A0,":" $BE3E DEFM $00,$00,$A0,":",$00,$00,$A0,":",$00 $BE47 DEFM $00,$A0,":",$00,$00,$A0,":",$00,$00 ; Furniture bitmap table of pointers. @label=BmpPtr_FurnitureB b$BE50 DEFW $3AA0 ; [Address] $BE52 DEFB $00,$00 ; [Height (0x7F only), Width] $BE54 DEFW $3918 ; [Address] $BE56 DEFB $85,$03 ; [Height (0x7F only), Width] $BE58 DEFW $3990 ; [Address] $BE5A DEFB $81,$01 ; [Height (0x7F only), Width] $BE5C DEFW $3998 ; [Address] $BE5E DEFB $82,$02 ; [Height (0x7F only), Width] $BE60 DEFW $3B40 ; [Address] $BE62 DEFB $00,$00 ; [Height (0x7F only), Width] $BE64 DEFW $3B40 ; [Address] $BE66 DEFB $00,$00 ; [Height (0x7F only), Width] $BE68 DEFW $3B40 ; [Address] $BE6A DEFB $00,$00 ; [Height (0x7F only), Width] $BE6C DEFW $39B8 ; [Address] $BE6E DEFB $85,$02 ; [Height (0x7F only), Width] $BE70 DEFW $3B90 ; [Address] $BE72 DEFB $00,$00 ; [Height (0x7F only), Width] $BE74 DEFW $3B90 ; [Address] $BE76 DEFB $00,$00 ; [Height (0x7F only), Width] $BE78 DEFW $3A08 ; [Address] $BE7A DEFB $81,$01 ; [Height (0x7F only), Width] $BE7C DEFW $3A10 ; [Address] $BE7E DEFB $85,$01 ; [Height (0x7F only), Width] $BE80 DEFW $3A38 ; [Address] $BE82 DEFB $85,$01 ; [Height (0x7F only), Width] $BE84 DEFW $3BE8 ; [Address] $BE86 DEFB $00,$00 ; [Height (0x7F only), Width] $BE88 DEFW $3BE8 ; [Address] $BE8A DEFB $00,$00 ; [Height (0x7F only), Width] $BE8C DEFW $3BE8 ; [Address] $BE8E DEFB $00,$00 ; [Height (0x7F only), Width] $BE90 DEFW $3A60 ; [Address] $BE92 DEFB $84,$04 ; [Height (0x7F only), Width] $BE94 DEFW $3AE0 ; [Address] $BE96 DEFB $83,$03 ; [Height (0x7F only), Width] $BE98 DEFW $3B28 ; [Address] $BE9A DEFB $81,$01 ; [Height (0x7F only), Width] $BE9C DEFW $3B30 ; [Address] $BE9E DEFB $81,$01 ; [Height (0x7F only), Width] $BEA0 DEFW $3B38 ; [Address] $BEA2 DEFB $82,$01 ; [Height (0x7F only), Width] @label=BmpInfoC6_Torch $BEA4 DEFW $3B48 ; [Address] $BEA6 DEFB $82,$01 ; [Height (0x7F only), Width] $BEA8 DEFW $3B58 ; [Address] $BEAA DEFB $82,$02 ; [Height (0x7F only), Width] $BEAC DEFW $3B78 ; [Address] $BEAE DEFB $82,$02 ; [Height (0x7F only), Width] $BEB0 DEFW $3B98 ; [Address] $BEB2 DEFB $85,$05 ; [Height (0x7F only), Width] $BEB4 DEFW $3C60 ; [Address] $BEB6 DEFB $81,$02 ; [Height (0x7F only), Width] @label=BmpPtr_RoadLeadingIn $BEB8 DEFW $3C70 ; [Address] $BEBA DEFB $81,$04 ; [Height (0x7F only), Width] $BEBC DEFW $3C90 ; [Address] $BEBE DEFB $81,$04 ; [Height (0x7F only), Width] @label=BmpPtr_RoadEdgeTop $BEC0 DEFW $3CB0 ; [Address] $BEC2 DEFB $81,$02 ; [Height (0x7F only), Width] @label=BmpPtr_RoadEdgeBottom $BEC4 DEFW $3CC0 ; [Address] $BEC6 DEFB $81,$02 ; [Height (0x7F only), Width] $BEC8 DEFW $3E58 ; [Address] $BECA DEFB $00,$00 ; [Height (0x7F only), Width] $BECC DEFW $3CD0 ; [Address] $BECE DEFB $86,$01 ; [Height (0x7F only), Width] $BED0 DEFW $3D00 ; [Address] $BED2 DEFB $81,$13 ; [Height (0x7F only), Width] $BED4 DEFW $3F20 ; [Address] $BED6 DEFB $00,$00 ; [Height (0x7F only), Width] @label=BmpPtr_DigitSet $BED8 DEFW $3D98 ; [Address] $BEDA DEFB $81,$05 ; [Height (0x7F only), Width] $BEDC DEFW $3DC0 ; [Address] $BEDE DEFB $82,$02 ; [Height (0x7F only), Width] @label=BmpPtr_LettersThin $BEE0 DEFW $3DE0 ; [Address] $BEE2 DEFB $8E,$01 ; [Height (0x7F only), Width] ; Link List ; ; Start of link list. $0A links of $0F bytes. @label=LinkList_bee4 b$BEE4 DEFW $41E8 $BEE6 DEFB $00,$00,$E8,$41,$00,$00,$E8,$41 $BEEE DEFB $00,$00,$E8,$41,$00 $BEF3 DEFW $E800 $BEF5 DEFB $41,$00,$00,$E8,$41,$00,$00,$E8 $BEFD DEFB $41,$00,$00,$E8,$41 $BF02 DEFW $0000 $BF04 DEFB $E8,$41,$00,$00,$E8,$41,$00,$00 $BF0C DEFB $E8,$41,$00,$00,$E8 $BF11 DEFW $0041 $BF13 DEFB $00,$E8,$41,$00,$00,$E8,$41,$00 $BF1B DEFB $00,$E8,$41,$00,$00 $BF20 DEFW $41E8 $BF22 DEFB $00,$00,$E8,$41,$00,$00,$E8,$41 $BF2A DEFB $00,$00,$E8,$41,$00 $BF2F DEFW $E800 $BF31 DEFB $41,$00,$00,$E8,$41,$00,$00,$E8 $BF39 DEFB $41,$00,$00,$E8,$41 $BF3E DEFW $0000 $BF40 DEFB $E8,$41,$00,$00,$E8,$41,$00,$00 $BF48 DEFB $E8,$41,$00,$00,$E8 $BF4D DEFW $0041 $BF4F DEFB $00,$00,$00,$00,$00,$E8,$41,$00 $BF57 DEFB $00,$E8,$41,$00,$00 $BF5C DEFW $41E8 $BF5E DEFB $00,$00,$E8,$41,$00,$00,$E8,$41 $BF66 DEFB $00,$00,$E8,$41,$00 $BF6B DEFW $0000 $BF6D DEFB $00,$00,$00,$00,$00,$00,$00,$58 $BF75 DEFB $42,$00,$00,$58,$42 $BF7A DEFB $00,$00,$58,$42,$00,$00,$58,$42 $BF82 DEFB $00,$00,$58,$42,$00,$00,$58,$42 $BF8A DEFB $00,$00,$50,$3E ; Bitmap scratchpad. @label=_bf8e b$BF8E DEFB $3E,$20,$20,$38,$20,$20,$3E,$00 ; Hero's bitmaps. @label=Bmp_Hero1 b$BF96 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $BF9E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $BFA6 DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $BFAE DEFB $00,$01,$C7,$78,$00,$00,$7E,$C4 $BFB6 DEFB $00,$01,$F6,$84,$00,$00,$7F,$94 $BFBE DEFB $00,$00,$7F,$84,$00,$00,$3D,$84 $BFC6 DEFB $00,$00,$72,$08,$00,$00,$F8,$70 $BFCE DEFB $00,$01,$FC,$80,$00,$01,$3B,$80 $BFD6 DEFB $00,$02,$1C,$80,$00,$04,$3F,$80 $BFDE DEFB $00,$04,$7F,$80,$00,$08,$FF,$80 $BFE6 DEFB $00,$11,$FF,$00,$00,$11,$FF,$00 $BFEE DEFB $00,$23,$FE,$00,$00,$23,$FE,$00 $BFF6 DEFB $00,$25,$FE,$00,$00,$47,$3D,$00 $BFFE DEFB $00,$4F,$C8,$80,$00,$4F,$F4,$80 $C006 DEFB $00,$9F,$FA,$60,$01,$1F,$F9,$10 $C00E DEFB $01,$1B,$F9,$10,$01,$3B,$F8,$A0 $C016 DEFB $00,$DB,$F0,$C0,$00,$1D,$F8,$00 $C01E DEFB $00,$1D,$FC,$00,$00,$1E,$FE,$00 $C026 DEFB $00,$1E,$FE,$00,$00,$3E,$FE,$00 $C02E DEFB $00,$3F,$7F,$00,$00,$3F,$FF,$00 $C036 DEFB $00,$7F,$3F,$80,$01,$FF,$1F,$80 $C03E DEFB $02,$FE,$1F,$80,$04,$7E,$0F,$80 $C046 DEFB $04,$3C,$0F,$C0,$0E,$10,$08,$40 $C04E DEFB $11,$60,$08,$40,$61,$80,$0F,$C0 $C056 DEFB $82,$00,$04,$80,$84,$00,$04,$80 $C05E DEFB $44,$00,$08,$80,$43,$00,$04,$40 $C066 DEFB $20,$80,$04,$38,$1F,$00,$04,$04 $C06E DEFB $00,$00,$02,$04,$00,$00,$03,$F8 @label=Bmp_Hero2 $C076 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C07E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C086 DEFB $00,$00,$00,$00,$00,$00,$40,$00 $C08E DEFB $00,$00,$23,$F0,$00,$01,$DF,$78 $C096 DEFB $00,$00,$7E,$C4,$00,$00,$76,$84 $C09E DEFB $00,$00,$3F,$94,$00,$00,$1F,$84 $C0A6 DEFB $00,$00,$3D,$84,$00,$00,$72,$08 $C0AE DEFB $00,$00,$F8,$70,$00,$01,$3C,$80 $C0B6 DEFB $00,$01,$1B,$80,$00,$01,$1C,$80 $C0BE DEFB $00,$02,$3F,$80,$00,$02,$3F,$80 $C0C6 DEFB $00,$02,$7F,$80,$00,$04,$7F,$00 $C0CE DEFB $00,$04,$7F,$00,$00,$04,$FE,$00 $C0D6 DEFB $00,$0C,$FE,$00,$00,$0C,$FE,$00 $C0DE DEFB $00,$0C,$BC,$00,$00,$0C,$D8,$00 $C0E6 DEFB $00,$1C,$F4,$00,$00,$1C,$FB,$00 $C0EE DEFB $00,$1E,$78,$80,$00,$1C,$7C,$80 $C0F6 DEFB $00,$1E,$74,$80,$00,$1B,$FB,$00 $C0FE DEFB $00,$1D,$FC,$00,$00,$1D,$FE,$00 $C106 DEFB $00,$0E,$FE,$00,$00,$0E,$FF,$00 $C10E DEFB $00,$0F,$7F,$00,$00,$0F,$FF,$80 $C116 DEFB $00,$1F,$DF,$C0,$00,$7F,$CF,$C0 $C11E DEFB $03,$FF,$87,$E0,$04,$3F,$8F,$E0 $C126 DEFB $06,$1F,$0F,$E0,$19,$1C,$09,$C0 $C12E DEFB $21,$10,$10,$40,$21,$E0,$1C,$20 $C136 DEFB $22,$00,$13,$40,$44,$00,$21,$80 $C13E DEFB $44,$00,$42,$00,$44,$00,$4C,$00 $C146 DEFB $24,$00,$87,$00,$18,$00,$80,$80 $C14E DEFB $00,$00,$80,$80,$00,$00,$7F,$00 @label=Bmp_Hero3 $C156 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C15E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C166 DEFB $00,$00,$03,$F0,$00,$00,$3F,$78 $C16E DEFB $00,$00,$7E,$C4,$00,$00,$B6,$84 $C176 DEFB $00,$00,$7F,$94,$00,$00,$9F,$84 $C17E DEFB $00,$00,$3D,$84,$00,$00,$72,$08 $C186 DEFB $00,$00,$F8,$70,$00,$00,$BC,$80 $C18E DEFB $00,$01,$1B,$80,$00,$01,$1C,$80 $C196 DEFB $00,$01,$3F,$80,$00,$02,$3F,$80 $C19E DEFB $00,$02,$7F,$80,$00,$02,$7F,$00 $C1A6 DEFB $00,$02,$7F,$00,$00,$02,$7E,$00 $C1AE DEFB $00,$02,$7E,$00,$00,$06,$7E,$00 $C1B6 DEFB $00,$0A,$7C,$00,$00,$0E,$78,$00 $C1BE DEFB $00,$1E,$48,$00,$00,$1E,$7C,$00 $C1C6 DEFB $00,$1F,$3A,$00,$00,$1F,$1A,$00 $C1CE DEFB $00,$0F,$1E,$00,$00,$0B,$B8,$00 $C1D6 DEFB $00,$05,$FC,$00,$00,$05,$FC,$00 $C1DE DEFB $00,$02,$FC,$00,$00,$02,$FC,$00 $C1E6 DEFB $00,$03,$7C,$00,$00,$03,$3E,$00 $C1EE DEFB $00,$03,$BE,$00,$00,$07,$BE,$00 $C1F6 DEFB $00,$1F,$BE,$00,$00,$FF,$BE,$00 $C1FE DEFB $01,$0F,$FE,$00,$01,$87,$7C,$00 $C206 DEFB $06,$47,$7C,$00,$08,$44,$98,$00 $C20E DEFB $08,$79,$08,$00,$08,$81,$84,$00 $C216 DEFB $11,$01,$4C,$00,$11,$02,$38,$00 $C21E DEFB $11,$02,$20,$00,$09,$02,$40,$00 $C226 DEFB $06,$04,$38,$00,$00,$04,$04,$00 $C22E DEFB $00,$04,$04,$00,$00,$03,$F8,$00 @label=Bmp_Hero4 $C236 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C23E DEFB $00,$00,$03,$F0,$00,$00,$0F,$78 $C246 DEFB $00,$00,$1E,$C4,$00,$00,$16,$84 $C24E DEFB $00,$00,$7F,$94,$00,$00,$BF,$84 $C256 DEFB $00,$00,$7D,$84,$00,$00,$B2,$08 $C25E DEFB $00,$00,$78,$70,$00,$00,$FC,$80 $C266 DEFB $00,$01,$CE,$80,$00,$03,$87,$80 $C26E DEFB $00,$05,$84,$80,$00,$0B,$8F,$80 $C276 DEFB $00,$13,$8F,$80,$00,$13,$8F,$00 $C27E DEFB $00,$13,$8F,$00,$00,$13,$CE,$00 $C286 DEFB $00,$0B,$CE,$00,$00,$0B,$CE,$00 $C28E DEFB $00,$07,$C4,$00,$00,$06,$C4,$00 $C296 DEFB $00,$0F,$A4,$00,$00,$1F,$E4,$00 $C29E DEFB $00,$1F,$F3,$00,$00,$1F,$F0,$80 $C2A6 DEFB $00,$0F,$E8,$80,$00,$0F,$EC,$80 $C2AE DEFB $00,$0F,$EF,$00,$00,$07,$EC,$00 $C2B6 DEFB $00,$07,$EE,$00,$00,$07,$DE,$00 $C2BE DEFB $00,$07,$DF,$00,$00,$07,$DF,$00 $C2C6 DEFB $00,$07,$DF,$80,$00,$07,$DF,$80 $C2CE DEFB $00,$0F,$DF,$80,$00,$0F,$DF,$00 $C2D6 DEFB $00,$0F,$DF,$00,$00,$7F,$BC,$00 $C2DE DEFB $00,$9F,$70,$00,$00,$9F,$60,$00 $C2E6 DEFB $00,$BF,$C0,$00,$00,$A1,$00,$00 $C2EE DEFB $00,$A0,$80,$00,$00,$58,$80,$00 $C2F6 DEFB $00,$57,$00,$00,$00,$31,$00,$00 $C2FE DEFB $00,$12,$00,$00,$00,$0A,$00,$00 $C306 DEFB $00,$11,$C0,$00,$00,$10,$30,$00 $C30E DEFB $00,$10,$10,$00,$00,$0F,$E0,$00 @label=Bmp_Hero5 $C316 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C31E DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $C326 DEFB $00,$00,$07,$78,$00,$00,$1E,$C4 $C32E DEFB $00,$00,$36,$84,$00,$00,$7F,$94 $C336 DEFB $00,$01,$FF,$84,$00,$00,$7D,$84 $C33E DEFB $00,$00,$B2,$08,$00,$00,$78,$70 $C346 DEFB $00,$00,$FC,$80,$00,$01,$EF,$80 $C34E DEFB $00,$03,$C4,$80,$00,$07,$C7,$80 $C356 DEFB $00,$0B,$C7,$80,$00,$13,$C7,$80 $C35E DEFB $00,$27,$C7,$00,$00,$27,$C7,$00 $C366 DEFB $00,$27,$C6,$00,$00,$47,$C6,$00 $C36E DEFB $00,$4F,$C6,$00,$00,$4C,$C4,$00 $C376 DEFB $00,$4E,$22,$00,$00,$4F,$F1,$00 $C37E DEFB $00,$9F,$F8,$80,$00,$9F,$FC,$60 $C386 DEFB $00,$9F,$F7,$10,$00,$7F,$F5,$10 $C38E DEFB $00,$1F,$F7,$E0,$00,$0F,$F6,$00 $C396 DEFB $00,$0F,$EF,$80,$00,$07,$EF,$C0 $C39E DEFB $00,$07,$EF,$E0,$00,$07,$FF,$E0 $C3A6 DEFB $00,$0F,$E7,$E0,$00,$0F,$C7,$C0 $C3AE DEFB $00,$0F,$CF,$C0,$00,$1F,$CF,$C0 $C3B6 DEFB $00,$1F,$90,$80,$00,$1F,$90,$40 $C3BE DEFB $00,$3F,$9C,$80,$00,$7F,$27,$00 $C3C6 DEFB $00,$CE,$24,$00,$00,$82,$44,$00 $C3CE DEFB $00,$82,$44,$00,$00,$F6,$43,$00 $C3D6 DEFB $00,$4C,$30,$80,$00,$4C,$08,$80 $C3DE DEFB $00,$48,$07,$00,$00,$48,$00,$00 $C3E6 DEFB $00,$87,$00,$00,$00,$80,$80,$00 $C3EE DEFB $00,$80,$80,$00,$00,$7F,$00,$00 @label=Bmp_Hero6 $C3F6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C3FE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C406 DEFB $00,$00,$03,$F0,$00,$00,$07,$78 $C40E DEFB $00,$00,$3E,$C4,$00,$01,$F6,$84 $C416 DEFB $00,$00,$7F,$94,$00,$00,$FF,$84 $C41E DEFB $00,$00,$1D,$84,$00,$00,$32,$08 $C426 DEFB $00,$00,$78,$70,$00,$00,$FC,$80 $C42E DEFB $00,$01,$EF,$80,$00,$03,$C4,$80 $C436 DEFB $00,$05,$C7,$80,$00,$0B,$C7,$80 $C43E DEFB $00,$13,$C7,$80,$00,$17,$C7,$00 $C446 DEFB $00,$27,$C7,$00,$00,$27,$C6,$00 $C44E DEFB $00,$47,$C6,$00,$00,$4F,$C6,$00 $C456 DEFB $00,$97,$E4,$00,$00,$97,$E2,$00 $C45E DEFB $00,$AC,$F1,$C0,$01,$2F,$38,$20 $C466 DEFB $02,$2F,$DE,$20,$02,$2F,$F5,$20 $C46E DEFB $01,$DF,$F4,$C0,$00,$1F,$F6,$00 $C476 DEFB $00,$1F,$DE,$00,$00,$0F,$DF,$00 $C47E DEFB $00,$0F,$DF,$00,$00,$0F,$DF,$80 $C486 DEFB $00,$1F,$FF,$80,$00,$1F,$BF,$C0 $C48E DEFB $00,$1F,$9F,$C0,$00,$3F,$8F,$C0 $C496 DEFB $00,$7F,$0F,$E0,$00,$7F,$0F,$C0 $C49E DEFB $00,$FE,$07,$E0,$01,$FC,$0E,$20 $C4A6 DEFB $03,$38,$08,$20,$02,$08,$04,$E0 $C4AE DEFB $03,$08,$07,$A0,$03,$C8,$02,$2E $C4B6 DEFB $02,$30,$01,$11,$04,$20,$01,$01 $C4BE DEFB $08,$40,$01,$06,$08,$40,$01,$18 $C4C6 DEFB $08,$30,$00,$E0,$06,$08,$00,$00 $C4CE DEFB $01,$08,$00,$00,$00,$F0,$00,$00 @label=Bmp_Hero7 $C4D6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C4DE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C4E6 DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $C4EE DEFB $00,$01,$C7,$78,$00,$00,$7E,$C4 $C4F6 DEFB $00,$01,$F6,$84,$00,$00,$7F,$94 $C4FE DEFB $00,$00,$7F,$84,$00,$00,$3D,$84 $C506 DEFB $00,$00,$72,$08,$00,$00,$F0,$70 $C50E DEFB $00,$01,$F8,$80,$00,$01,$FF,$80 $C516 DEFB $00,$02,$EC,$80,$00,$05,$C7,$80 $C51E DEFB $00,$05,$C7,$80,$00,$09,$C7,$80 $C526 DEFB $00,$11,$C7,$00,$00,$11,$C7,$00 $C52E DEFB $00,$23,$C2,$00,$00,$23,$C2,$00 $C536 DEFB $00,$27,$E2,$00,$00,$47,$61,$00 $C53E DEFB $00,$4F,$D8,$80,$00,$CF,$F4,$40 $C546 DEFB $01,$1F,$FA,$20,$01,$3F,$F9,$10 $C54E DEFB $00,$DF,$E9,$10,$00,$1F,$E8,$90 $C556 DEFB $00,$1F,$E8,$E0,$00,$1F,$D8,$00 $C55E DEFB $00,$1F,$DC,$00,$00,$1F,$DE,$00 $C566 DEFB $00,$1F,$BE,$00,$00,$3F,$BE,$00 $C56E DEFB $00,$3F,$BF,$00,$00,$3F,$FF,$00 $C576 DEFB $00,$7F,$3F,$80,$01,$FF,$1F,$80 $C57E DEFB $02,$FE,$1F,$80,$04,$7E,$0F,$80 $C586 DEFB $04,$3C,$0F,$C0,$0E,$10,$08,$40 $C58E DEFB $11,$60,$08,$40,$61,$80,$0F,$C0 $C596 DEFB $42,$00,$04,$80,$42,$00,$04,$80 $C59E DEFB $42,$00,$08,$60,$33,$00,$04,$3C $C5A6 DEFB $10,$80,$04,$02,$08,$40,$04,$02 $C5AE DEFB $04,$40,$03,$FC,$03,$80,$00,$00 @label=Bmp_Hero8 $C5B6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C5BE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C5C6 DEFB $00,$00,$00,$00,$00,$00,$40,$00 $C5CE DEFB $00,$00,$23,$F0,$00,$01,$DF,$78 $C5D6 DEFB $00,$00,$7E,$C4,$00,$00,$76,$84 $C5DE DEFB $00,$00,$3F,$94,$00,$00,$1F,$84 $C5E6 DEFB $00,$00,$3D,$84,$00,$00,$7A,$08 $C5EE DEFB $00,$00,$D8,$70,$00,$01,$8C,$80 $C5F6 DEFB $00,$03,$8C,$80,$00,$03,$0F,$80 $C5FE DEFB $00,$07,$1C,$80,$00,$07,$1F,$80 $C606 DEFB $00,$07,$1F,$80,$00,$07,$1F,$00 $C60E DEFB $00,$07,$1F,$00,$00,$07,$1E,$00 $C616 DEFB $00,$0F,$0E,$00,$00,$0B,$8C,$00 $C61E DEFB $00,$0E,$8C,$00,$00,$0F,$C8,$00 $C626 DEFB $00,$1F,$E4,$00,$00,$1F,$F3,$00 $C62E DEFB $00,$1F,$F8,$80,$00,$1F,$FC,$80 $C636 DEFB $00,$1F,$EC,$80,$00,$0F,$EF,$00 $C63E DEFB $00,$0F,$EE,$00,$00,$0F,$EF,$00 $C646 DEFB $00,$0F,$EF,$00,$00,$0F,$EF,$80 $C64E DEFB $00,$0F,$CF,$C0,$00,$1F,$DF,$C0 $C656 DEFB $00,$1F,$1F,$E0,$00,$1F,$E7,$E0 $C65E DEFB $00,$7F,$C7,$E0,$03,$FF,$8F,$C0 $C666 DEFB $04,$3E,$09,$40,$06,$1E,$10,$20 $C66E DEFB $19,$1C,$1C,$40,$21,$10,$13,$80 $C676 DEFB $21,$E0,$21,$00,$22,$00,$42,$00 $C67E DEFB $44,$00,$4C,$00,$44,$00,$87,$80 $C686 DEFB $44,$00,$80,$80,$24,$00,$80,$00 $C68E DEFB $18,$00,$7F,$00,$00,$00,$00,$00 @label=Bmp_Hero9 $C696 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C69E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C6A6 DEFB $00,$00,$03,$F0,$00,$00,$3F,$78 $C6AE DEFB $00,$00,$7E,$C4,$00,$00,$B6,$84 $C6B6 DEFB $00,$00,$7F,$94,$00,$00,$9F,$84 $C6BE DEFB $00,$00,$3D,$84,$00,$00,$72,$08 $C6C6 DEFB $00,$00,$F8,$70,$00,$00,$CC,$80 $C6CE DEFB $00,$01,$8E,$80,$00,$01,$8F,$80 $C6D6 DEFB $00,$01,$9C,$80,$00,$03,$1F,$80 $C6DE DEFB $00,$03,$1F,$80,$00,$03,$1F,$00 $C6E6 DEFB $00,$03,$1F,$00,$00,$03,$1E,$00 $C6EE DEFB $00,$03,$1E,$00,$00,$06,$9E,$00 $C6F6 DEFB $00,$0F,$9C,$00,$00,$0F,$CE,$00 $C6FE DEFB $00,$1F,$C4,$00,$00,$1F,$E6,$00 $C706 DEFB $00,$1F,$F1,$00,$00,$1F,$F1,$00 $C70E DEFB $00,$0F,$FE,$00,$00,$0F,$F8,$00 $C716 DEFB $00,$07,$FC,$00,$00,$07,$F4,$00 $C71E DEFB $00,$07,$F4,$00,$00,$03,$F4,$00 $C726 DEFB $00,$03,$F4,$00,$00,$03,$EE,$00 $C72E DEFB $00,$03,$EE,$00,$00,$03,$EE,$00 $C736 DEFB $00,$07,$EE,$00,$00,$1F,$EE,$00 $C73E DEFB $00,$FF,$DC,$00,$01,$0F,$BC,$00 $C746 DEFB $01,$87,$FC,$00,$06,$46,$9C,$00 $C74E DEFB $08,$45,$04,$00,$08,$78,$88,$00 $C756 DEFB $08,$81,$70,$00,$11,$01,$10,$00 $C75E DEFB $11,$02,$20,$00,$11,$01,$3C,$00 $C766 DEFB $09,$01,$02,$00,$06,$01,$02,$00 $C76E DEFB $00,$00,$FC,$00,$00,$00,$00,$00 @label=Bmp_Hero10 $C776 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C77E DEFB $00,$00,$03,$F0,$00,$00,$0F,$78 $C786 DEFB $00,$00,$1E,$C4,$00,$00,$76,$84 $C78E DEFB $00,$00,$FF,$94,$00,$01,$7F,$84 $C796 DEFB $00,$00,$FD,$84,$00,$01,$72,$08 $C79E DEFB $00,$00,$F0,$70,$00,$01,$F8,$80 $C7A6 DEFB $00,$01,$3C,$80,$00,$01,$1B,$80 $C7AE DEFB $00,$02,$3C,$80,$00,$02,$3F,$80 $C7B6 DEFB $00,$02,$7F,$80,$00,$04,$7F,$00 $C7BE DEFB $00,$04,$7F,$00,$00,$04,$FE,$00 $C7C6 DEFB $00,$0C,$FE,$00,$00,$0C,$FE,$00 $C7CE DEFB $00,$0C,$BC,$00,$00,$0C,$D8,$00 $C7D6 DEFB $00,$1C,$F4,$00,$00,$1C,$FB,$00 $C7DE DEFB $00,$3E,$78,$80,$00,$3C,$7C,$80 $C7E6 DEFB $00,$1E,$7B,$00,$00,$1B,$F8,$00 $C7EE DEFB $00,$0B,$F8,$00,$00,$0D,$F8,$00 $C7F6 DEFB $00,$0D,$FC,$00,$00,$0D,$FC,$00 $C7FE DEFB $00,$0E,$FE,$00,$00,$07,$7E,$00 $C806 DEFB $00,$07,$7F,$00,$00,$07,$7F,$00 $C80E DEFB $00,$0F,$7F,$00,$00,$0C,$FE,$00 $C816 DEFB $00,$3F,$FE,$00,$00,$43,$F8,$00 $C81E DEFB $00,$61,$E0,$00,$01,$91,$C0,$00 $C826 DEFB $02,$13,$80,$00,$02,$1E,$00,$00 $C82E DEFB $02,$21,$00,$00,$04,$61,$00,$00 $C836 DEFB $04,$5F,$00,$00,$04,$52,$00,$00 $C83E DEFB $02,$52,$00,$00,$01,$A1,$C0,$00 $C846 DEFB $00,$10,$30,$00,$00,$10,$10,$00 $C84E DEFB $00,$0F,$E0,$00,$00,$00,$00,$00 @label=Bmp_Hero11 $C856 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C85E DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $C866 DEFB $00,$00,$07,$78,$00,$00,$1E,$C4 $C86E DEFB $00,$00,$76,$84,$00,$01,$FF,$94 $C876 DEFB $00,$01,$7F,$84,$00,$00,$BD,$84 $C87E DEFB $00,$00,$62,$08,$00,$00,$F0,$70 $C886 DEFB $00,$01,$38,$80,$00,$01,$1C,$80 $C88E DEFB $00,$02,$1B,$80,$00,$04,$3C,$80 $C896 DEFB $00,$04,$7F,$80,$00,$08,$FF,$80 $C89E DEFB $00,$11,$FF,$00,$00,$11,$FF,$00 $C8A6 DEFB $00,$23,$FE,$00,$00,$23,$FE,$00 $C8AE DEFB $00,$27,$FE,$00,$00,$47,$FD,$00 $C8B6 DEFB $00,$4D,$F8,$80,$00,$4F,$74,$80 $C8BE DEFB $00,$9F,$9A,$60,$01,$1F,$F9,$10 $C8C6 DEFB $01,$17,$F9,$10,$00,$B7,$F8,$A0 $C8CE DEFB $00,$7B,$F0,$00,$00,$3B,$FC,$00 $C8D6 DEFB $00,$3B,$FE,$00,$00,$1C,$FF,$00 $C8DE DEFB $00,$1F,$7F,$80,$00,$1F,$FF,$80 $C8E6 DEFB $00,$3F,$9F,$80,$00,$3F,$1F,$00 $C8EE DEFB $00,$3F,$3F,$00,$00,$7F,$3F,$00 $C8F6 DEFB $00,$7E,$42,$00,$00,$7E,$41,$00 $C8FE DEFB $00,$FE,$72,$00,$01,$FC,$9C,$00 $C906 DEFB $03,$38,$90,$00,$02,$09,$10,$00 $C90E DEFB $02,$09,$10,$00,$03,$D9,$0C,$00 $C916 DEFB $01,$30,$82,$00,$01,$20,$22,$00 $C91E DEFB $01,$20,$1C,$00,$02,$1C,$00,$00 $C926 DEFB $02,$02,$00,$00,$02,$02,$00,$00 $C92E DEFB $01,$FC,$00,$00,$00,$00,$00,$00 @label=Bmp_Hero12 $C936 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C93E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $C946 DEFB $00,$00,$01,$F0,$00,$00,$07,$78 $C94E DEFB $00,$00,$3E,$C4,$00,$01,$F6,$84 $C956 DEFB $00,$00,$7F,$94,$00,$00,$FF,$84 $C95E DEFB $00,$00,$3D,$84,$00,$00,$72,$08 $C966 DEFB $00,$00,$F8,$70,$00,$03,$1C,$80 $C96E DEFB $00,$04,$1B,$80,$00,$08,$3C,$80 $C976 DEFB $00,$08,$FF,$80,$00,$11,$FF,$80 $C97E DEFB $00,$22,$FF,$80,$00,$23,$FF,$00 $C986 DEFB $00,$25,$FF,$00,$00,$4B,$FE,$00 $C98E DEFB $00,$4B,$FE,$00,$00,$93,$FD,$00 $C996 DEFB $00,$97,$3D,$00,$00,$A7,$CC,$C0 $C99E DEFB $00,$AD,$FA,$20,$01,$1B,$F9,$20 $C9A6 DEFB $01,$1B,$F8,$A0,$00,$FB,$F8,$40 $C9AE DEFB $00,$1B,$F0,$00,$00,$1B,$F8,$00 $C9B6 DEFB $00,$1D,$FC,$00,$00,$1E,$FE,$00 $C9BE DEFB $00,$1E,$FE,$00,$00,$1F,$7F,$00 $C9C6 DEFB $00,$3F,$FF,$00,$00,$3F,$7F,$80 $C9CE DEFB $00,$3F,$3F,$80,$00,$7F,$1F,$80 $C9D6 DEFB $00,$FE,$1F,$80,$01,$FC,$1F,$80 $C9DE DEFB $03,$F8,$1F,$80,$06,$70,$0F,$C0 $C9E6 DEFB $04,$10,$1C,$40,$06,$10,$10,$40 $C9EE DEFB $07,$90,$09,$C0,$04,$60,$0F,$40 $C9F6 DEFB $08,$40,$04,$5C,$10,$80,$02,$22 $C9FE DEFB $10,$80,$02,$02,$10,$60,$02,$0C $CA06 DEFB $0C,$10,$02,$30,$02,$10,$01,$C0 $CA0E DEFB $01,$E0,$00,$00,$00,$00,$00,$00 @label=Bmp_HeroSide $CA16 DEFB $00,$00,$00,$FC,$01,$DE,$03,$B1 $CA1E DEFB $01,$A1,$07,$E5,$07,$E1,$0F,$E1 $CA26 DEFB $0F,$82,$06,$1C,$07,$10,$0F,$88 $CA2E DEFB $09,$FC,$08,$C4,$08,$FC,$08,$FC $CA36 DEFB $08,$FC,$08,$FC,$08,$FC,$08,$FC $CA3E DEFB $08,$FC,$08,$FC,$0C,$FC,$0C,$78 $CA46 DEFB $0C,$76,$0E,$32,$1F,$1E,$1F,$83 $CA4E DEFB $1F,$E1,$1F,$F2,$0F,$FC,$0F,$F8 $CA56 DEFB $0F,$F8,$05,$F8,$05,$FC,$06,$FC $CA5E DEFB $06,$7C,$07,$7C,$07,$7C,$07,$7C $CA66 DEFB $03,$7C,$07,$7C,$0F,$7C,$0B,$78 $CA6E DEFB $09,$F8,$09,$08,$06,$04,$06,$04 $CA76 DEFB $07,$E4,$05,$18,$0D,$10,$09,$20 $CA7E DEFB $0A,$1C,$06,$02,$02,$02,$01,$FC @label=Bmp_HeroBack $CA86 DEFB $00,$00,$00,$00,$00,$03,$E0,$00 $CA8E DEFB $00,$07,$F0,$00,$00,$07,$F0,$00 $CA96 DEFB $00,$0E,$D8,$00,$00,$0E,$D8,$00 $CA9E DEFB $00,$0D,$F8,$00,$00,$0D,$F8,$00 $CAA6 DEFB $00,$1F,$F8,$00,$00,$7F,$FE,$00 $CAAE DEFB $00,$BF,$FD,$00,$00,$B7,$ED,$00 $CAB6 DEFB $01,$3B,$4C,$80,$01,$3A,$1C,$80 $CABE DEFB $02,$7A,$1E,$40,$02,$7C,$3E,$40 $CAC6 DEFB $02,$7F,$FE,$40,$02,$7F,$FE,$40 $CACE DEFB $02,$7F,$7E,$40,$04,$BF,$7D,$20 $CAD6 DEFB $04,$BF,$FD,$20,$04,$BF,$FD,$20 $CADE DEFB $04,$BF,$7D,$20,$05,$3F,$FC,$A0 $CAE6 DEFB $05,$18,$18,$A0,$05,$18,$18,$A0 $CAEE DEFB $09,$BF,$FD,$90,$08,$BF,$FF,$10 $CAF6 DEFB $08,$BF,$FF,$10,$07,$7F,$FE,$E0 $CAFE DEFB $00,$7F,$FF,$00,$00,$FB,$DF,$00 $CB06 DEFB $00,$FD,$FF,$00,$01,$FF,$BF,$80 $CB0E DEFB $01,$FE,$7F,$80,$01,$FE,$7F,$80 $CB16 DEFB $03,$FC,$3F,$C0,$03,$FC,$3F,$C0 $CB1E DEFB $01,$F8,$1F,$80,$03,$F8,$1F,$C0 $CB26 DEFB $03,$F0,$0F,$C0,$03,$F0,$0F,$C0 $CB2E DEFB $07,$F0,$0F,$E0,$08,$10,$08,$10 $CB36 DEFB $08,$08,$10,$10,$08,$18,$10,$10 $CB3E DEFB $07,$70,$0E,$E0,$04,$40,$02,$20 $CB46 DEFB $04,$40,$02,$20,$04,$40,$02,$20 $CB4E DEFB $06,$80,$01,$60,$07,$80,$01,$E0 $CB56 DEFB $08,$C0,$03,$10,$08,$40,$02,$10 $CB5E DEFB $08,$40,$02,$10,$07,$C0,$03,$E0 @label=Bmp_HeroFwd $CB66 DEFB $00,$00,$00,$00,$00,$03,$E0,$00 $CB6E DEFB $00,$07,$F0,$00,$00,$04,$10,$00 $CB76 DEFB $00,$0C,$18,$00,$00,$0D,$58,$00 $CB7E DEFB $00,$0C,$18,$00,$00,$0E,$38,$00 $CB86 DEFB $00,$0C,$18,$00,$00,$72,$36,$00 $CB8E DEFB $00,$91,$C5,$00,$00,$98,$0D,$00 $CB96 DEFB $01,$1C,$1C,$80,$01,$1B,$EC,$80 $CB9E DEFB $02,$3D,$DC,$40,$02,$3F,$7C,$40 $CBA6 DEFB $02,$7F,$FE,$40,$02,$7F,$FE,$40 $CBAE DEFB $02,$7E,$FE,$40,$04,$B9,$CD,$20 $CBB6 DEFB $04,$BF,$FD,$20,$04,$BF,$FD,$20 $CBBE DEFB $04,$BF,$FD,$20,$05,$3F,$FC,$A0 $CBC6 DEFB $05,$18,$98,$A0,$05,$18,$98,$A0 $CBCE DEFB $09,$BF,$FD,$90,$08,$BF,$FF,$10 $CBD6 DEFB $08,$BF,$FF,$10,$07,$7F,$FE,$E0 $CBDE DEFB $00,$7F,$FF,$00,$00,$FB,$DF,$00 $CBE6 DEFB $00,$FD,$FF,$00,$01,$FF,$BF,$80 $CBEE DEFB $01,$FE,$7F,$80,$01,$FE,$7F,$80 $CBF6 DEFB $03,$FC,$3F,$C0,$03,$FC,$3F,$C0 $CBFE DEFB $01,$F8,$1F,$80,$03,$F8,$1F,$C0 $CC06 DEFB $03,$F0,$0F,$C0,$03,$F0,$0F,$C0 $CC0E DEFB $07,$F0,$0F,$E0,$08,$10,$08,$10 $CC16 DEFB $08,$08,$10,$10,$08,$18,$10,$10 $CC1E DEFB $07,$70,$0E,$E0,$04,$40,$02,$20 $CC26 DEFB $04,$40,$02,$20,$04,$40,$02,$20 $CC2E DEFB $06,$80,$01,$60,$07,$80,$01,$E0 $CC36 DEFB $08,$C0,$03,$10,$08,$40,$02,$10 $CC3E DEFB $08,$40,$02,$10,$07,$C0,$03,$E0 @label=Bmp_BlankTile $CC46 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Hero's mask. @label=Bmp_HeroMask1 b$CC4E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CC56 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CC5E DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $CC66 DEFB $00,$01,$C7,$F8,$00,$00,$7F,$F8 $CC6E DEFB $00,$01,$FF,$F8,$00,$00,$7F,$F8 $CC76 DEFB $00,$00,$7F,$F8,$00,$00,$3F,$F8 $CC7E DEFB $00,$00,$7F,$F0,$00,$00,$FF,$E0 $CC86 DEFB $00,$01,$FF,$80,$00,$01,$FF,$80 $CC8E DEFB $00,$03,$FF,$80,$00,$07,$FF,$80 $CC96 DEFB $00,$07,$FF,$80,$00,$0F,$FF,$80 $CC9E DEFB $00,$1F,$FF,$00,$00,$1F,$FF,$00 $CCA6 DEFB $00,$3F,$FE,$00,$00,$3F,$FE,$00 $CCAE DEFB $00,$3F,$FE,$00,$00,$7F,$FF,$00 $CCB6 DEFB $00,$7F,$FF,$80,$00,$7F,$F7,$80 $CCBE DEFB $00,$FF,$FB,$E0,$01,$FF,$F9,$F0 $CCC6 DEFB $01,$FF,$F9,$F0,$01,$FF,$F8,$E0 $CCCE DEFB $00,$DF,$F0,$C0,$00,$1F,$F8,$00 $CCD6 DEFB $00,$1F,$FC,$00,$00,$1F,$FE,$00 $CCDE DEFB $00,$1F,$FE,$00,$00,$3F,$FE,$00 $CCE6 DEFB $00,$3F,$FF,$00,$00,$3F,$FF,$00 $CCEE DEFB $00,$7F,$3F,$80,$01,$FF,$1F,$80 $CCF6 DEFB $03,$FE,$1F,$80,$07,$FE,$0F,$80 $CCFE DEFB $07,$FC,$0F,$C0,$0F,$F0,$0F,$C0 $CD06 DEFB $1F,$E0,$0F,$C0,$7F,$80,$0F,$C0 $CD0E DEFB $FE,$00,$07,$80,$FC,$00,$07,$80 $CD16 DEFB $7C,$00,$0F,$80,$7F,$00,$07,$C0 $CD1E DEFB $3F,$80,$07,$F8,$1F,$00,$07,$FC $CD26 DEFB $00,$00,$03,$FC,$00,$00,$03,$F8 @label=Bmp_HeroMask2 $CD2E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CD36 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CD3E DEFB $00,$00,$00,$00,$00,$00,$40,$00 $CD46 DEFB $00,$00,$23,$F0,$00,$01,$DF,$F8 $CD4E DEFB $00,$00,$7F,$F8,$00,$00,$7F,$F8 $CD56 DEFB $00,$00,$3F,$F8,$00,$00,$1F,$F8 $CD5E DEFB $00,$00,$3F,$F8,$00,$00,$7F,$F0 $CD66 DEFB $00,$00,$FF,$E0,$00,$01,$FF,$80 $CD6E DEFB $00,$01,$FF,$80,$00,$01,$FF,$80 $CD76 DEFB $00,$03,$FF,$80,$00,$03,$FF,$80 $CD7E DEFB $00,$03,$FF,$80,$00,$07,$FF,$00 $CD86 DEFB $00,$07,$FF,$00,$00,$07,$FE,$00 $CD8E DEFB $00,$0F,$FE,$00,$00,$0F,$FE,$00 $CD96 DEFB $00,$0F,$FC,$00,$00,$0F,$F8,$00 $CD9E DEFB $00,$1F,$FC,$00,$00,$1F,$FF,$00 $CDA6 DEFB $00,$1F,$FF,$80,$00,$1F,$FF,$80 $CDAE DEFB $00,$1F,$F7,$80,$00,$1F,$FB,$00 $CDB6 DEFB $00,$1F,$F8,$00,$00,$1F,$FC,$00 $CDBE DEFB $00,$0F,$FE,$00,$00,$0F,$FE,$00 $CDC6 DEFB $00,$0F,$FF,$00,$00,$0F,$FF,$80 $CDCE DEFB $00,$1F,$DF,$C0,$00,$7F,$CF,$C0 $CDD6 DEFB $03,$FF,$87,$E0,$07,$FF,$8F,$E0 $CDDE DEFB $07,$FF,$0F,$E0,$1F,$FC,$0F,$C0 $CDE6 DEFB $3F,$F0,$1F,$C0,$3F,$E0,$1F,$E0 $CDEE DEFB $3E,$00,$1F,$C0,$7C,$00,$3F,$80 $CDF6 DEFB $7C,$00,$7E,$00,$7C,$00,$7C,$00 $CDFE DEFB $3C,$00,$FF,$00,$18,$00,$FF,$80 $CE06 DEFB $00,$00,$FF,$80,$00,$00,$7F,$00 @label=Bmp_HeroMask3 $CE0E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CE16 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CE1E DEFB $00,$00,$03,$F0,$00,$00,$3F,$F8 $CE26 DEFB $00,$00,$7F,$F8,$00,$00,$BF,$F8 $CE2E DEFB $00,$00,$7F,$F8,$00,$00,$9F,$F8 $CE36 DEFB $00,$00,$3F,$F8,$00,$00,$7F,$F0 $CE3E DEFB $00,$00,$FF,$E0,$00,$00,$FF,$80 $CE46 DEFB $00,$01,$FF,$80,$00,$01,$FF,$80 $CE4E DEFB $00,$01,$FF,$80,$00,$03,$FF,$80 $CE56 DEFB $00,$03,$FF,$80,$00,$03,$FF,$00 $CE5E DEFB $00,$03,$FF,$00,$00,$03,$FE,$00 $CE66 DEFB $00,$03,$FE,$00,$00,$07,$FE,$00 $CE6E DEFB $00,$0F,$FC,$00,$00,$0F,$F8,$00 $CE76 DEFB $00,$1F,$F8,$00,$00,$1F,$FC,$00 $CE7E DEFB $00,$1F,$FE,$00,$00,$1F,$FE,$00 $CE86 DEFB $00,$0F,$FE,$00,$00,$0F,$F8,$00 $CE8E DEFB $00,$07,$FC,$00,$00,$07,$FC,$00 $CE96 DEFB $00,$03,$FC,$00,$00,$03,$FC,$00 $CE9E DEFB $00,$03,$FC,$00,$00,$03,$FE,$00 $CEA6 DEFB $00,$03,$FE,$00,$00,$07,$FE,$00 $CEAE DEFB $00,$1F,$FE,$00,$00,$FF,$FE,$00 $CEB6 DEFB $01,$FF,$FE,$00,$01,$FF,$7C,$00 $CEBE DEFB $07,$FF,$7C,$00,$0F,$FC,$F8,$00 $CEC6 DEFB $0F,$F9,$F8,$00,$0F,$81,$FC,$00 $CECE DEFB $1F,$01,$FC,$00,$1F,$03,$F8,$00 $CED6 DEFB $1F,$03,$E0,$00,$0F,$03,$C0,$00 $CEDE DEFB $06,$07,$F8,$00,$00,$07,$FC,$00 $CEE6 DEFB $00,$07,$FC,$00,$00,$03,$F8,$00 @label=Bmp_HeroMask4 $CEEE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CEF6 DEFB $00,$00,$03,$F0,$00,$00,$0F,$F8 $CEFE DEFB $00,$00,$1F,$F8,$00,$00,$1F,$F8 $CF06 DEFB $00,$00,$7F,$F8,$00,$00,$BF,$F8 $CF0E DEFB $00,$00,$7F,$F8,$00,$00,$BF,$F0 $CF16 DEFB $00,$00,$7F,$E0,$00,$00,$FF,$80 $CF1E DEFB $00,$01,$FF,$80,$00,$03,$FF,$80 $CF26 DEFB $00,$07,$FF,$80,$00,$0F,$FF,$80 $CF2E DEFB $00,$1F,$FF,$80,$00,$1F,$FF,$00 $CF36 DEFB $00,$1F,$FF,$00,$00,$1F,$FE,$00 $CF3E DEFB $00,$0F,$FE,$00,$00,$0F,$FE,$00 $CF46 DEFB $00,$07,$FC,$00,$00,$07,$FC,$00 $CF4E DEFB $00,$0F,$FC,$00,$00,$1F,$FC,$00 $CF56 DEFB $00,$1F,$FF,$00,$00,$1F,$FF,$80 $CF5E DEFB $00,$0F,$FF,$80,$00,$0F,$FF,$80 $CF66 DEFB $00,$0F,$FF,$00,$00,$07,$FC,$00 $CF6E DEFB $00,$07,$FE,$00,$00,$07,$FE,$00 $CF76 DEFB $00,$07,$FF,$00,$00,$07,$FF,$00 $CF7E DEFB $00,$07,$FF,$80,$00,$07,$FF,$80 $CF86 DEFB $00,$0F,$FF,$80,$00,$0F,$FF,$00 $CF8E DEFB $00,$1F,$FF,$00,$00,$3F,$FC,$00 $CF96 DEFB $00,$3F,$F0,$00,$00,$FF,$E0,$00 $CF9E DEFB $01,$FF,$C0,$00,$01,$FF,$00,$00 $CFA6 DEFB $03,$FF,$80,$00,$03,$FF,$80,$00 $CFAE DEFB $03,$EF,$80,$00,$03,$EF,$00,$00 $CFB6 DEFB $01,$EF,$00,$00,$00,$DF,$E0,$00 $CFBE DEFB $00,$0F,$F8,$00,$00,$0F,$F8,$00 $CFC6 DEFB $00,$07,$F0,$00,$00,$00,$00,$00 @label=Bmp_HeroMask5 $CFCE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $CFD6 DEFB $00,$00,$00,$00,$00,$00,$03,$F0 $CFDE DEFB $00,$00,$07,$F8,$00,$00,$1F,$F8 $CFE6 DEFB $00,$00,$3F,$F8,$00,$00,$7F,$F8 $CFEE DEFB $00,$01,$FF,$F8,$00,$00,$7F,$F8 $CFF6 DEFB $00,$00,$BF,$F0,$00,$00,$7F,$E0 $CFFE DEFB $00,$00,$FF,$80,$00,$01,$FF,$80 $D006 DEFB $00,$03,$FF,$80,$00,$03,$FF,$80 $D00E DEFB $00,$07,$FF,$80,$00,$07,$FF,$80 $D016 DEFB $00,$0F,$FF,$00,$00,$0F,$FF,$00 $D01E DEFB $00,$1F,$FE,$00,$00,$1F,$FE,$00 $D026 DEFB $00,$3F,$FE,$00,$00,$3F,$FC,$00 $D02E DEFB $00,$7F,$FE,$00,$00,$7F,$FF,$00 $D036 DEFB $00,$FF,$FF,$80,$00,$FF,$FF,$E0 $D03E DEFB $00,$FF,$FD,$F0,$00,$7F,$FE,$F0 $D046 DEFB $00,$1F,$FE,$70,$00,$0F,$FC,$00 $D04E DEFB $00,$0F,$FE,$00,$00,$07,$FF,$00 $D056 DEFB $00,$07,$FF,$80,$00,$07,$FF,$80 $D05E DEFB $00,$0F,$E7,$C0,$00,$0F,$C7,$C0 $D066 DEFB $00,$0F,$CF,$C0,$00,$1F,$CF,$C0 $D06E DEFB $00,$1F,$9F,$80,$00,$1F,$9F,$00 $D076 DEFB $00,$3F,$9F,$00,$00,$7F,$3E,$00 $D07E DEFB $00,$FE,$3C,$00,$00,$FE,$7C,$00 $D086 DEFB $00,$FE,$7C,$00,$00,$FE,$7F,$00 $D08E DEFB $00,$7C,$3F,$80,$00,$7C,$1F,$80 $D096 DEFB $00,$78,$07,$00,$00,$78,$00,$00 $D09E DEFB $00,$FF,$00,$00,$00,$FF,$80,$00 $D0A6 DEFB $00,$FF,$80,$00,$00,$7F,$00,$00 @label=Bmp_HeroMask6 $D0AE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D0B6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D0BE DEFB $00,$00,$03,$F0,$00,$00,$07,$F8 $D0C6 DEFB $00,$00,$3F,$F8,$00,$01,$FF,$F8 $D0CE DEFB $00,$00,$7F,$F8,$00,$00,$FF,$F8 $D0D6 DEFB $00,$00,$1F,$F8,$00,$00,$3F,$F0 $D0DE DEFB $00,$00,$7F,$E0,$00,$00,$FF,$80 $D0E6 DEFB $00,$01,$FF,$80,$00,$03,$FF,$80 $D0EE DEFB $00,$07,$FF,$80,$00,$0F,$FF,$80 $D0F6 DEFB $00,$3F,$FF,$80,$00,$3F,$FF,$00 $D0FE DEFB $00,$3F,$FF,$00,$00,$3F,$FE,$00 $D106 DEFB $00,$7F,$FE,$00,$00,$7F,$FE,$00 $D10E DEFB $00,$FF,$FC,$00,$00,$FF,$FE,$00 $D116 DEFB $00,$FF,$FF,$C0,$01,$FF,$FF,$E0 $D11E DEFB $03,$FF,$FF,$E0,$03,$FF,$FD,$E0 $D126 DEFB $01,$DF,$FC,$C0,$00,$1F,$FE,$00 $D12E DEFB $00,$1F,$FE,$00,$00,$0F,$FF,$00 $D136 DEFB $00,$0F,$FF,$00,$00,$0F,$FF,$80 $D13E DEFB $00,$1F,$FF,$80,$00,$1F,$BF,$C0 $D146 DEFB $00,$1F,$9F,$C0,$00,$3F,$8F,$C0 $D14E DEFB $00,$7F,$0F,$E0,$00,$7F,$0F,$C0 $D156 DEFB $00,$FE,$07,$E0,$01,$FC,$0F,$E0 $D15E DEFB $03,$F8,$1F,$E0,$03,$F8,$07,$E0 $D166 DEFB $03,$F8,$07,$E0,$03,$F8,$03,$EE $D16E DEFB $03,$F0,$01,$FF,$07,$E0,$01,$FF $D176 DEFB $0F,$C0,$01,$FE,$0F,$C0,$01,$F8 $D17E DEFB $0F,$F0,$00,$E0,$07,$F8,$00,$00 $D186 DEFB $01,$F8,$00,$00,$00,$F0,$00,$00 @label=Bmp_HeroMaskSide $D18E DEFB $00,$00,$00,$00,$00,$78,$00,$FC $D196 DEFB $01,$FE,$03,$FE,$03,$FE,$03,$FE $D19E DEFB $07,$FE,$07,$FE,$03,$F0,$07,$F0 $D1A6 DEFB $0F,$F8,$0F,$F8,$0F,$F8,$0F,$F8 $D1AE DEFB $0F,$F8,$0F,$F8,$0F,$F8,$0F,$F8 $D1B6 DEFB $0F,$F8,$0F,$F8,$07,$F8,$0F,$F8 $D1BE DEFB $0F,$F8,$0F,$F8,$1F,$FE,$1F,$FE $D1C6 DEFB $1F,$FE,$1F,$FC,$0F,$F8,$07,$F8 $D1CE DEFB $07,$F8,$07,$F8,$07,$F8,$03,$F8 $D1D6 DEFB $03,$F8,$03,$F8,$03,$F8,$03,$F8 $D1DE DEFB $03,$F8,$07,$F8,$07,$F8,$07,$F8 $D1E6 DEFB $07,$F8,$07 $D1E9 DEFB $F8,$03,$FC,$07,$FC,$07,$FC,$07 $D1F1 DEFB $F8,$0F,$F0,$0F,$E0,$0F,$FC,$07 $D1F9 DEFB $FE,$03,$FE,$01,$FC @label=Bmp_HeroMaskFacing $D1FE DEFB $00,$00,$00,$00,$00,$03,$E0,$00 $D206 DEFB $00,$07,$F0,$00,$00,$07,$F0,$00 $D20E DEFB $00,$0F,$F8,$00,$00,$0F,$F8,$00 $D216 DEFB $00,$0F,$F8,$00,$00,$0F,$F8,$00 $D21E DEFB $00,$1F,$F8,$00,$00,$7F,$FE,$00 $D226 DEFB $00,$FF,$FF,$00,$00,$FF,$FF,$00 $D22E DEFB $01,$FF,$FF,$80,$01,$FF,$FF,$80 $D236 DEFB $03,$FF,$FF,$C0,$03,$FF,$FF,$C0 $D23E DEFB $03,$FF,$FF,$C0,$03,$FF,$FF,$C0 $D246 DEFB $03,$FF,$FF,$C0,$07,$BF,$FD,$E0 $D24E DEFB $07,$BF,$FD,$E0,$07,$BF,$FD,$E0 $D256 DEFB $07,$BF,$FD,$E0,$07,$3F,$FC,$E0 $D25E DEFB $07,$1F,$F8,$E0,$07,$1F,$F8,$E0 $D266 DEFB $0F,$BF,$FD,$F0,$0F,$BF,$FF,$F0 $D26E DEFB $0F,$BF,$FF,$F0,$07,$7F,$FE,$E0 $D276 DEFB $00,$7F,$FF,$00,$00,$FF,$FF,$00 $D27E DEFB $00,$FF,$FF,$00,$01,$FF,$FF,$80 $D286 DEFB $01,$FE,$7F,$80,$01,$FE,$7F,$80 $D28E DEFB $03,$FC,$3F,$C0,$03,$FC,$3F,$C0 $D296 DEFB $01,$F8,$1F,$80,$03,$F8,$1F,$C0 $D29E DEFB $03,$F0,$0F,$C0,$03,$F0,$0F,$C0 $D2A6 DEFB $07,$F0,$0F,$E0,$0F,$F0,$0F,$F0 $D2AE DEFB $0F,$F8,$1F,$F0,$0F,$F8,$1F,$F0 $D2B6 DEFB $07,$F0,$0F,$E0,$07,$C0,$03,$E0 $D2BE DEFB $07,$C0,$03,$E0,$07,$C0,$03,$E0 $D2C6 DEFB $07,$80,$01,$E0,$07,$80,$01,$E0 $D2CE DEFB $0F,$C0,$03,$F0,$0F,$C0,$03,$F0 $D2D6 DEFB $0F,$C0,$03,$F0,$07,$C0,$03,$E0 ; Women bitmap @label=Bmp_Woman1 b$D2DE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D2E6 DEFB $00,$00,$00,$00,$00,$08,$1F,$80 $D2EE DEFB $00,$06,$7F,$E0,$00,$07,$FB,$E0 $D2F6 DEFB $00,$DD,$FE,$20,$00,$6F,$5E,$20 $D2FE DEFB $0A,$FE,$F0,$60,$07,$FF,$E0,$20 $D306 DEFB $13,$FF,$E4,$20,$0F,$DD,$C8,$40 $D30E DEFB $07,$EF,$C2,$80,$01,$7F,$E4,$00 $D316 DEFB $01,$F7,$E4,$00,$06,$0D,$FC,$00 $D31E DEFB $00,$10,$FC,$00,$00,$20,$FE,$00 $D326 DEFB $00,$20,$FE,$00,$00,$43,$FF,$00 $D32E DEFB $00,$87,$BE,$00,$00,$8F,$EE,$00 $D336 DEFB $01,$17,$FC,$00,$01,$17,$FC,$00 $D33E DEFB $01,$2F,$FC,$00,$02,$4B,$FA,$00 $D346 DEFB $04,$5E,$B9,$80,$04,$9F,$FC,$40 $D34E DEFB $08,$BF,$F2,$20,$09,$3F,$FA,$40 $D356 DEFB $09,$37,$F9,$80,$0D,$37,$F8,$00 $D35E DEFB $07,$3B,$F8,$00,$00,$1B,$FC,$00 $D366 DEFB $00,$0D,$E4,$00,$00,$1E,$C2,$00 $D36E DEFB $00,$13,$C2,$00,$00,$10,$82,$00 $D376 DEFB $00,$20,$C1,$00,$00,$61,$21,$00 $D37E DEFB $01,$82,$30,$80,$03,$C2,$10,$80 $D386 DEFB $07,$E4,$18,$80,$07,$F8,$08,$80 $D38E DEFB $0F,$F0,$0F,$C0,$11,$E0,$1F,$E0 $D396 DEFB $61,$80,$1F,$E0,$42,$00,$0F,$C0 $D39E DEFB $42,$00,$04,$80,$42,$00,$04,$80 $D3A6 DEFB $33,$00,$08,$60,$10,$80,$04,$3C $D3AE DEFB $08,$40,$04,$02,$04,$40,$04,$02 $D3B6 DEFB $03,$80,$03,$FC,$00,$00,$00,$00 @label=Bmp_Woman2 $D3BE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D3C6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D3CE DEFB $00,$08,$9F,$80,$00,$07,$FF,$E0 $D3D6 DEFB $00,$07,$FB,$E0,$00,$1D,$FE,$20 $D3DE DEFB $00,$7F,$5E,$20,$00,$3E,$F0,$60 $D3E6 DEFB $01,$2F,$E0,$20,$00,$EF,$E4,$20 $D3EE DEFB $06,$9D,$C8,$40,$03,$EF,$C2,$80 $D3F6 DEFB $0B,$7F,$E4,$00,$07,$B7,$FC,$00 $D3FE DEFB $01,$EC,$FC,$00,$07,$E8,$7E,$00 $D406 DEFB $03,$48,$7E,$00,$00,$10,$7F,$00 $D40E DEFB $00,$10,$DE,$00,$00,$11,$EC,$00 $D416 DEFB $00,$11,$FC,$00,$00,$23,$F8,$00 $D41E DEFB $00,$23,$F8,$00,$00,$23,$F8,$00 $D426 DEFB $00,$23,$98,$00,$00,$13,$EC,$00 $D42E DEFB $00,$13,$FB,$00,$00,$13,$F8,$80 $D436 DEFB $00,$13,$FC,$80,$00,$11,$FD,$80 $D43E DEFB $00,$11,$FF,$00,$00,$0D,$FB,$00 $D446 DEFB $00,$0F,$F1,$80,$00,$0F,$70,$80 $D44E DEFB $00,$09,$E0,$40,$00,$08,$30,$40 $D456 DEFB $00,$08,$48,$20,$00,$10,$44,$20 $D45E DEFB $00,$10,$82,$20,$00,$60,$82,$20 $D466 DEFB $03,$E1,$04,$40,$07,$F2,$0C,$40 $D46E DEFB $07,$F4,$1F,$C0,$19,$F8,$1F,$C0 $D476 DEFB $21,$F0,$1F,$C0,$21,$E0,$13,$80 $D47E DEFB $22,$00,$21,$00,$44,$00,$42,$00 $D486 DEFB $44,$00,$4C,$00,$44,$00,$87,$80 $D48E DEFB $24,$00,$80,$80,$18,$00,$80,$80 $D496 DEFB $00,$00,$7F,$00,$00,$00,$00,$00 @label=Bmp_Woman3 $D49E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D4A6 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $D4AE DEFB $00,$00,$3F,$E0,$00,$03,$FB,$E0 $D4B6 DEFB $00,$8D,$FE,$20,$00,$7F,$5E,$20 $D4BE DEFB $00,$3E,$F0,$60,$00,$2F,$E0,$20 $D4C6 DEFB $00,$EF,$E4,$20,$06,$9D,$C8,$40 $D4CE DEFB $03,$EF,$C2,$80,$03,$7F,$E4,$00 $D4D6 DEFB $01,$BF,$FC,$00,$01,$FE,$7C,$00 $D4DE DEFB $07,$EE,$7E,$00,$03,$6C,$7E,$00 $D4E6 DEFB $00,$6C,$7F,$00,$00,$CC,$7E,$00 $D4EE DEFB $00,$0C,$4C,$00,$00,$0C,$FC,$00 $D4F6 DEFB $00,$0C,$F8,$00,$00,$04,$D8,$00 $D4FE DEFB $00,$04,$68,$00,$00,$0E,$38,$00 $D506 DEFB $00,$1F,$18,$00,$00,$1F,$8C,$00 $D50E DEFB $00,$1F,$C6,$00,$00,$1F,$E2,$00 $D516 DEFB $00,$1F,$E2,$00,$00,$1F,$FC,$00 $D51E DEFB $00,$0B,$FC,$00,$00,$05,$FC,$00 $D526 DEFB $00,$05,$FC,$00,$00,$03,$0C,$00 $D52E DEFB $00,$03,$04,$00,$00,$03,$04,$00 $D536 DEFB $00,$03,$84,$00,$00,$03,$84,$00 $D53E DEFB $00,$07,$84,$00,$00,$19,$88,$00 $D546 DEFB $00,$F8,$88,$00,$01,$FC,$88,$00 $D54E DEFB $01,$FD,$F8,$00,$06,$7F,$FC,$00 $D556 DEFB $08,$7D,$FC,$00,$08,$79,$F8,$00 $D55E DEFB $08,$81,$78,$00,$11,$01,$10,$00 $D566 DEFB $11,$02,$20,$00,$11,$01,$3C,$00 $D56E DEFB $09,$01,$02,$00,$06,$01,$02,$00 $D576 DEFB $00,$00,$FC,$00,$00,$00,$00,$00 @label=Bmp_Woman4 $D57E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D586 DEFB $00,$00,$1F,$80,$00,$00,$3F,$E0 $D58E DEFB $00,$00,$FB,$E0,$00,$01,$EE,$20 $D596 DEFB $00,$07,$DE,$20,$00,$06,$F0,$60 $D59E DEFB $00,$0D,$E0,$20,$00,$0F,$E4,$20 $D5A6 DEFB $00,$1D,$C8,$40,$00,$6F,$C2,$80 $D5AE DEFB $00,$7F,$E4,$00,$00,$B7,$FC,$00 $D5B6 DEFB $00,$EF,$7C,$00,$00,$EE,$3E,$00 $D5BE DEFB $00,$FE,$3E,$00,$00,$6E,$3F,$00 $D5C6 DEFB $00,$EE,$3E,$00,$00,$3E,$34,$00 $D5CE DEFB $00,$1E,$3C,$00,$00,$1E,$38,$00 $D5D6 DEFB $00,$1E,$38,$00,$00,$0E,$50,$00 $D5DE DEFB $00,$0E,$38,$00,$00,$1F,$18,$00 $D5E6 DEFB $00,$1F,$88,$00,$00,$1F,$C4,$00 $D5EE DEFB $00,$0F,$E3,$00,$00,$0F,$F0,$80 $D5F6 DEFB $00,$07,$F8,$80,$00,$07,$FF,$00 $D5FE DEFB $00,$07,$F6,$00,$00,$07,$F6,$00 $D606 DEFB $00,$07,$F7,$00,$00,$02,$FD,$00 $D60E DEFB $00,$02,$09,$80,$00,$02,$10,$80 $D616 DEFB $00,$06,$10,$80,$00,$04,$11,$00 $D61E DEFB $00,$1C,$13,$00,$00,$3C,$2C,$00 $D626 DEFB $00,$3C,$30,$00,$00,$CC,$20,$00 $D62E DEFB $01,$0C,$40,$00,$01,$0F,$40,$00 $D636 DEFB $01,$1F,$C0,$00,$02,$3F,$C0,$00 $D63E DEFB $02,$2F,$80,$00,$02,$29,$00,$00 $D646 DEFB $01,$29,$00,$00,$00,$D0,$E0,$00 $D64E DEFB $00,$08,$18,$00,$00,$08,$08,$00 $D656 DEFB $00,$07,$F0,$00,$00,$00,$00,$00 @label=Bmp_Woman5 $D65E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D666 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $D66E DEFB $00,$00,$3F,$E0,$00,$00,$FB,$E0 $D676 DEFB $00,$01,$F6,$20,$00,$0F,$DE,$20 $D67E DEFB $00,$7E,$F0,$60,$02,$FD,$E0,$20 $D686 DEFB $01,$DF,$E4,$20,$00,$7D,$C8,$40 $D68E DEFB $00,$6F,$C2,$80,$00,$FF,$E4,$00 $D696 DEFB $01,$B7,$FC,$00,$01,$EF,$FC,$00 $D69E DEFB $00,$EF,$7E,$00,$01,$FE,$3E,$00 $D6A6 DEFB $00,$7E,$3F,$00,$00,$D6,$36,$00 $D6AE DEFB $00,$1E,$3C,$00,$00,$2E,$3C,$00 $D6B6 DEFB $00,$2E,$38,$00,$00,$4E,$30,$00 $D6BE DEFB $00,$4F,$1C,$00,$00,$9F,$03,$00 $D6C6 DEFB $00,$9F,$C0,$C0,$00,$9F,$FC,$20 $D6CE DEFB $00,$9F,$FF,$20,$01,$2F,$F6,$C0 $D6D6 DEFB $01,$2F,$F6,$00,$00,$CF,$EF,$00 $D6DE DEFB $00,$0F,$EC,$80,$00,$07,$EC,$40 $D6E6 DEFB $00,$06,$18,$20,$00,$04,$2C,$20 $D6EE DEFB $00,$0C,$24,$20,$00,$08,$44,$40 $D6F6 DEFB $00,$08,$48,$40,$00,$18,$4E,$C0 $D6FE DEFB $00,$10,$9F,$80,$00,$10,$9F,$C0 $D706 DEFB $00,$31,$1F,$80,$00,$79,$27,$00 $D70E DEFB $00,$FE,$24,$00,$00,$FE,$44,$00 $D716 DEFB $00,$FE,$44,$00,$00,$7E,$43,$00 $D71E DEFB $00,$4C,$20,$80,$00,$48,$08,$80 $D726 DEFB $00,$48,$07,$00,$00,$87,$00,$00 $D72E DEFB $00,$80,$80,$00,$00,$80,$80,$00 $D736 DEFB $00,$7F,$00,$00,$00,$00,$00,$00 @label=Bmp_Woman6 $D73E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D746 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $D74E DEFB $00,$80,$EF,$E0,$00,$78,$DB,$E0 $D756 DEFB $09,$AF,$F6,$20,$06,$F3,$DE,$20 $D75E DEFB $09,$DE,$F0,$60,$07,$E5,$E0,$20 $D766 DEFB $09,$DF,$E4,$20,$1F,$FD,$C8,$40 $D76E DEFB $0F,$EF,$C2,$80,$09,$FF,$E4,$00 $D776 DEFB $03,$B6,$FC,$00,$00,$EF,$7E,$00 $D77E DEFB $00,$0E,$3E,$00,$00,$0E,$3F,$00 $D786 DEFB $00,$1E,$37,$80,$00,$1E,$3F,$00 $D78E DEFB $00,$2E,$3E,$00,$00,$2E,$3E,$00 $D796 DEFB $00,$4E,$3C,$00,$00,$8B,$18,$00 $D79E DEFB $01,$1D,$07,$00,$01,$2F,$C0,$E0 $D7A6 DEFB $02,$2F,$FC,$10,$02,$5F,$FF,$10 $D7AE DEFB $02,$5F,$F4,$E0,$01,$9F,$F4,$00 $D7B6 DEFB $00,$1F,$F6,$00,$00,$1F,$F6,$00 $D7BE DEFB $00,$1F,$F6,$00,$00,$0F,$F7,$00 $D7C6 DEFB $00,$0F,$ED,$00,$00,$11,$F8,$80 $D7CE DEFB $00,$10,$70,$80,$00,$10,$50,$40 $D7D6 DEFB $00,$20,$98,$40,$00,$20,$88,$40 $D7DE DEFB $00,$41,$08,$40,$00,$82,$08,$40 $D7E6 DEFB $01,$84,$08,$40,$03,$E8,$05,$E0 @label=Bmp_Woman7 $D7EE DEFB $03,$F8,$0F,$E0,$03,$F8,$0F,$E0 $D7F6 DEFB $03,$F8,$07,$E0,$02,$30,$07,$A0 $D7FE DEFB $04,$20,$02,$2E,$08,$40,$01,$11 $D806 DEFB $08,$40,$01,$01,$08,$30,$01,$06 $D80E DEFB $06,$08,$01,$18,$01,$08,$00,$E0 $D816 DEFB $00,$F0,$00,$00,$00,$00,$00,$00 @label=Bmp_Woman8 $D81E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D826 DEFB $00,$00,$00,$00,$00,$08,$1F,$80 $D82E DEFB $00,$06,$7F,$E0,$00,$07,$FB,$E0 $D836 DEFB $00,$DD,$FE,$20,$00,$6F,$5E,$20 $D83E DEFB $0A,$FE,$F0,$60,$07,$FF,$E0,$20 $D846 DEFB $13,$FF,$E4,$20,$0F,$DD,$C8,$40 $D84E DEFB $07,$EF,$C2,$80,$01,$7F,$E4,$00 $D856 DEFB $01,$F7,$E4,$00,$06,$0F,$FC,$00 $D85E DEFB $00,$1F,$7C,$00,$00,$2E,$3E,$00 $D866 DEFB $00,$2E,$3E,$00,$00,$4E,$3F,$00 $D86E DEFB $00,$8E,$3E,$00,$00,$8E,$2E,$00 $D876 DEFB $01,$16,$3C,$00,$01,$17,$3C,$00 $D87E DEFB $01,$2F,$18,$00,$02,$4B,$8C,$00 $D886 DEFB $02,$5E,$C4,$00,$06,$9F,$E2,$00 $D88E DEFB $08,$BF,$F1,$00,$09,$3F,$F8,$80 $D896 DEFB $06,$3F,$F8,$80,$00,$3F,$EC,$80 $D89E DEFB $00,$3F,$EB,$80,$00,$1F,$EC,$00 $D8A6 DEFB $00,$11,$DC,$00,$00,$10,$FA,$00 $D8AE DEFB $00,$10,$62,$00,$00,$10,$42,$00 $D8B6 DEFB $00,$20,$C1,$00,$00,$21,$21,$00 $D8BE DEFB $00,$61,$30,$80,$01,$82,$10,$80 $D8C6 DEFB $03,$C2,$18,$80,$07,$E4,$08,$80 $D8CE DEFB $07,$F8,$0F,$C0,$0F,$F0,$1F,$E0 $D8D6 DEFB $11,$E0,$1F,$E0,$61,$80,$0F,$C0 $D8DE DEFB $42,$00,$04,$80,$42,$00,$04,$80 $D8E6 DEFB $42,$00,$08,$60,$33,$00,$04,$3C $D8EE DEFB $10,$80,$04,$02,$08,$40,$04,$02 $D8F6 DEFB $04,$40,$03,$FC,$03,$80,$00,$00 @label=Bmp_Woman9 $D8FE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D906 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D90E DEFB $00,$08,$9F,$80,$00,$07,$FF,$E0 $D916 DEFB $00,$07,$FB,$E0,$00,$1D,$FE,$20 $D91E DEFB $00,$7F,$5E,$20,$00,$3E,$F0,$60 $D926 DEFB $01,$2F,$E0,$20,$00,$EF,$E4,$20 $D92E DEFB $06,$9D,$C8,$40,$03,$EF,$C2,$80 $D936 DEFB $0B,$7F,$E4,$00,$07,$B7,$FC,$00 $D93E DEFB $01,$EC,$FC,$00,$07,$EC,$FE,$00 $D946 DEFB $03,$4C,$7E,$00,$00,$0C,$7F,$00 $D94E DEFB $00,$0C,$7E,$00,$00,$0C,$4C,$00 $D956 DEFB $00,$0C,$7C,$00,$00,$0C,$78,$00 $D95E DEFB $00,$06,$68,$00,$00,$06,$3C,$00 $D966 DEFB $00,$07,$0E,$00,$00,$0F,$C1,$00 $D96E DEFB $00,$1F,$F1,$00,$00,$1F,$F9,$00 $D976 DEFB $00,$1F,$EE,$00,$00,$1F,$EC,$00 $D97E DEFB $00,$1F,$EE,$00,$00,$0F,$EF,$00 $D986 DEFB $00,$0F,$DD,$80,$00,$08,$D8,$80 $D98E DEFB $00,$08,$70,$40,$00,$08,$30,$40 $D996 DEFB $00,$08,$48,$20,$00,$10,$44,$20 $D99E DEFB $00,$10,$42,$20,$00,$10,$42,$20 $D9A6 DEFB $00,$60,$84,$40,$03,$E1,$8C,$40 $D9AE DEFB $07,$F2,$1F,$C0,$07,$F6,$1F,$C0 $D9B6 DEFB $19,$FC,$1F,$C0,$21,$F0,$13,$80 $D9BE DEFB $21,$E0,$21,$00,$22,$00,$42,$00 $D9C6 DEFB $44,$00,$4C,$00,$44,$00,$87,$80 $D9CE DEFB $44,$00,$80,$80,$24,$00,$80,$80 $D9D6 DEFB $18,$00,$7F,$00,$00,$00,$00,$00 @label=Bmp_Woman10 $D9DE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $D9E6 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $D9EE DEFB $00,$00,$3F,$E0,$00,$03,$FB,$E0 $D9F6 DEFB $00,$8D,$FE,$20,$00,$7F,$5E,$20 $D9FE DEFB $00,$3E,$F0,$60,$00,$2F,$E0,$20 $DA06 DEFB $00,$EF,$E4,$20,$06,$9D,$C8,$40 $DA0E DEFB $03,$EF,$C2,$80,$03,$7F,$E4,$00 $DA16 DEFB $01,$BF,$FC,$00,$01,$FE,$7C,$00 $DA1E DEFB $07,$EE,$7E,$00,$03,$6C,$7E,$00 $DA26 DEFB $00,$6C,$7F,$00,$00,$CC,$7E,$00 $DA2E DEFB $00,$0C,$4C,$00,$00,$0C,$FC,$00 $DA36 DEFB $00,$04,$F8,$00,$00,$04,$E8,$00 $DA3E DEFB $00,$0C,$78,$00,$00,$0E,$38,$00 $DA46 DEFB $00,$1F,$18,$00,$00,$1F,$8C,$00 $DA4E DEFB $00,$1F,$C6,$00,$00,$1F,$E2,$00 $DA56 DEFB $00,$0F,$E2,$00,$00,$0F,$FC,$00 $DA5E DEFB $00,$07,$EC,$00,$00,$07,$FC,$00 $DA66 DEFB $00,$06,$14,$00,$00,$02,$14,$00 $DA6E DEFB $00,$02,$12,$00,$00,$03,$12,$00 $DA76 DEFB $00,$03,$12,$00,$00,$03,$12,$00 $DA7E DEFB $00,$06,$12,$00,$00,$18,$22,$00 $DA86 DEFB $00,$F8,$44,$00,$01,$FC,$8C,$00 $DA8E DEFB $01,$FD,$F8,$00,$06,$7F,$FC,$00 $DA96 DEFB $08,$7D,$FC,$00,$08,$79,$F8,$00 $DA9E DEFB $08,$81,$78,$00,$11,$01,$10,$00 $DAA6 DEFB $11,$02,$20,$00,$11,$01,$3C,$00 $DAAE DEFB $09,$01,$02,$00,$06,$01,$02,$00 $DAB6 DEFB $00,$00,$FC,$00,$00,$00,$00,$00 @label=Bmp_Woman11 $DABE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DAC6 DEFB $00,$00,$1F,$80,$00,$00,$3F,$E0 $DACE DEFB $00,$00,$FB,$E0,$00,$01,$EE,$20 $DAD6 DEFB $00,$07,$DE,$20,$00,$06,$F0,$60 $DADE DEFB $00,$0D,$E0,$20,$00,$0F,$E4,$20 $DAE6 DEFB $00,$1D,$C8,$40,$00,$6F,$C2,$80 $DAEE DEFB $00,$7F,$E4,$00,$00,$B6,$FC,$00 $DAF6 DEFB $00,$EE,$7C,$00,$00,$EC,$7E,$00 $DAFE DEFB $00,$FC,$7E,$00,$00,$78,$FF,$00 $DB06 DEFB $00,$F1,$FE,$00,$00,$31,$CC,$00 $DB0E DEFB $00,$13,$FC,$00,$00,$13,$F8,$00 $DB16 DEFB $00,$11,$38,$00,$00,$09,$D4,$00 $DB1E DEFB $00,$0C,$FA,$00,$00,$1C,$F9,$80 $DB26 DEFB $00,$1C,$7C,$40,$00,$1E,$7A,$40 $DB2E DEFB $00,$0E,$7D,$80,$00,$0E,$7C,$00 $DB36 DEFB $00,$07,$FC,$00,$00,$07,$FC,$00 $DB3E DEFB $00,$05,$FE,$00,$00,$06,$F6,$00 $DB46 DEFB $00,$07,$E3,$00,$00,$02,$41,$00 $DB4E DEFB $00,$02,$21,$80,$00,$02,$30,$80 $DB56 DEFB $00,$06,$30,$80,$00,$04,$C1,$00 $DB5E DEFB $00,$1F,$03,$00,$00,$3F,$0C,$00 $DB66 DEFB $00,$3F,$B0,$00,$00,$CF,$A0,$00 $DB6E DEFB $01,$0F,$C0,$00,$01,$0F,$00,$00 $DB76 DEFB $01,$1F,$80,$00,$02,$3F,$80,$00 $DB7E DEFB $02,$2F,$80,$00,$02,$29,$00,$00 $DB86 DEFB $01,$29,$00,$00,$00,$D0,$E0,$00 $DB8E DEFB $00,$08,$18,$00,$00,$08,$08,$00 $DB96 DEFB $00,$07,$F0,$00,$00,$00,$00,$00 @label=Bmp_Woman12 $DB9E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DBA6 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $DBAE DEFB $00,$00,$3F,$E0,$00,$00,$FB,$E0 $DBB6 DEFB $00,$01,$F6,$20,$00,$0F,$DE,$20 $DBBE DEFB $00,$7E,$F0,$60,$02,$FD,$E0,$20 $DBC6 DEFB $01,$DF,$E4,$20,$00,$7D,$C8,$40 $DBCE DEFB $00,$6F,$C2,$80,$00,$FF,$E4,$00 $DBD6 DEFB $01,$B6,$FC,$00,$01,$EE,$7C,$00 $DBDE DEFB $00,$EC,$7E,$00,$01,$FC,$7E,$00 $DBE6 DEFB $00,$78,$FF,$00,$00,$D1,$FE,$00 $DBEE DEFB $00,$11,$CC,$00,$00,$23,$FC,$00 $DBF6 DEFB $00,$23,$FA,$00,$00,$46,$71,$00 $DBFE DEFB $00,$47,$D1,$00,$00,$4F,$F8,$80 $DC06 DEFB $00,$8F,$FC,$60,$00,$9F,$FE,$10 $DC0E DEFB $00,$8D,$FD,$10,$00,$8D,$FE,$E0 $DC16 DEFB $00,$9E,$FE,$00,$00,$EE,$FD,$00 $DC1E DEFB $00,$0E,$F8,$80,$00,$07,$30,$40 $DC26 DEFB $00,$07,$D8,$20,$00,$04,$2C,$20 $DC2E DEFB $00,$0C,$24,$20,$00,$08,$44,$40 $DC36 DEFB $00,$08,$48,$40,$00,$18,$4E,$C0 $DC3E DEFB $00,$10,$9F,$80,$00,$10,$9F,$C0 $DC46 DEFB $00,$31,$1F,$80,$00,$79,$27,$00 $DC4E DEFB $00,$FE,$24,$00,$00,$FE,$44,$00 $DC56 DEFB $00,$FE,$44,$00,$00,$7E,$43,$00 $DC5E DEFB $00,$4C,$20,$80,$00,$48,$08,$80 $DC66 DEFB $00,$48,$07,$00,$00,$87,$00,$00 $DC6E DEFB $00,$80,$80,$00,$00,$80,$80,$00 $DC76 DEFB $00,$7F,$00,$00,$00,$00,$00,$00 @label=Bmp_woman13 $DC7E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DC86 DEFB $00,$00,$00,$00,$00,$00,$1F,$80 $DC8E DEFB $00,$80,$EF,$E0,$00,$78,$DB,$E0 $DC96 DEFB $09,$AF,$F6,$20,$06,$F3,$DE,$20 $DC9E DEFB $09,$DE,$F0,$60,$07,$E5,$E0,$20 $DCA6 DEFB $09,$DF,$E4,$20,$1F,$FD,$C8,$40 $DCAE DEFB $0F,$EF,$C2,$80,$09,$FF,$E4,$00 $DCB6 DEFB $03,$B6,$FC,$00,$0C,$EC,$7C,$00 $DCBE DEFB $00,$A8,$7E,$00,$00,$18,$7E,$00 $DCC6 DEFB $00,$30,$FF,$00,$00,$21,$FE,$00 $DCCE DEFB $00,$41,$CC,$00,$00,$C7,$FC,$00 $DCD6 DEFB $00,$8F,$F2,$00,$00,$8E,$61,$00 $DCDE DEFB $00,$9F,$61,$00,$00,$9F,$F0,$C0 $DCE6 DEFB $01,$1F,$F4,$30,$01,$1F,$FA,$10 $DCEE DEFB $02,$3D,$FD,$10,$02,$3D,$FC,$E0 $DCF6 DEFB $02,$3E,$FE,$00,$00,$3E,$7E,$00 $DCFE DEFB $01,$DF,$7F,$00,$00,$0F,$B9,$80 $DD06 DEFB $00,$0F,$B0,$80,$00,$08,$F0,$40 $DD0E DEFB $00,$08,$60,$40,$00,$08,$38,$20 $DD16 DEFB $00,$10,$4C,$20,$00,$10,$C4,$20 $DD1E DEFB $00,$20,$84,$20,$00,$41,$04,$20 $DD26 DEFB $00,$C2,$04,$20,$01,$F4,$02,$F0 $DD2E DEFB $01,$FC,$07,$F0,$01,$FC,$07,$F0 $DD36 DEFB $01,$FC,$03,$F0,$01,$18,$03,$D0 $DD3E DEFB $02,$10,$01,$16,$04,$20,$00,$89 $DD46 DEFB $04,$20,$00,$81,$04,$18,$00,$83 $DD4E DEFB $03,$04,$00,$8C,$00,$84,$00,$70 $DD56 DEFB $00,$78,$00,$00,$00,$00,$00,$00 @label=Bmp_WomanStanding $DD5E DEFB $00,$00,$00,$00,$00,$FC,$01,$FF $DD66 DEFB $03,$DF,$07,$71,$1F,$F1,$1F,$83 $DD6E DEFB $2F,$01,$3F,$21,$2E,$42,$3F,$1C $DD76 DEFB $DF,$D0,$B6,$F0,$EC,$78,$E8,$F8 $DD7E DEFB $78,$FC,$58,$FE,$F1,$FE,$B1,$CC $DD86 DEFB $D3,$FC,$73,$F8,$51,$30,$09,$D0 $DD8E DEFB $0C,$F8,$1C,$F8,$1C,$7C,$1E,$78 $DD96 DEFB $0E,$7C,$0E,$7C,$07,$FC,$07,$FC $DD9E DEFB $0F,$F8,$06,$18,$04,$18,$06,$08 $DDA6 DEFB $05,$08,$05,$08,$02,$88,$02,$88 $DDAE DEFB $03,$08,$05,$08,$05,$10,$07,$10 $DDB6 DEFB $0F,$F8,$0F,$F8,$07,$F0,$05,$F8 $DDBE DEFB $05,$F0,$05,$10,$0D,$10,$09,$20 $DDC6 DEFB $0A,$1C,$06,$02,$02,$02,$01,$FC ; [36] Rat @label=Bmp_Rat1 b$DDCE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DDD6 DEFB $00,$00,$00,$00,$00,$00,$40,$00 $DDDE DEFB $80,$00,$8F,$80,$DF,$E6,$7F,$FF $DDE6 DEFB $3F,$FF,$1F,$FD,$0E,$18,$03,$10 ; [37] @label=Bmp_Rat2 $DDEE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DDF6 DEFB $00,$00,$00,$00,$00,$00,$80,$00 $DDFE DEFB $80,$00,$80,$00,$CF,$80,$7F,$E6 $DE06 DEFB $7F,$FF,$3F,$FF,$1F,$FD,$0E,$0C ; [38] @label=Bmp_Rat3 $DE0E DEFB $00,$00,$00,$00,$00,$00,$00,$80 $DE16 DEFB $00,$E0,$00,$F0,$01,$E0,$01,$E0 $DE1E DEFB $01,$F0,$05,$F8,$09,$E0,$0B,$E0 $DE26 DEFB $0B,$E0,$0F,$E0,$0F,$F0,$07,$F0 ; Block @label=Bmp_Block b$DE2E DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $DE36 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $DE3E DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $DE46 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; Man bitmap @label=Bmp_Man1 b$DE4E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DE56 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DE5E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DE66 DEFB $00,$00,$07,$C0,$00,$00,$0F,$E0 $DE6E DEFB $00,$00,$3F,$90,$00,$00,$3F,$08 $DE76 DEFB $00,$00,$7D,$30,$00,$00,$7F,$08 $DE7E DEFB $00,$00,$79,$10,$00,$00,$E0,$90 $DE86 DEFB $00,$01,$F1,$E0,$00,$03,$3A,$00 $DE8E DEFB $00,$02,$19,$00,$00,$04,$19,$00 $DE96 DEFB $00,$08,$39,$00,$00,$08,$7D,$00 $DE9E DEFB $00,$10,$F9,$00,$00,$21,$F1,$00 $DEA6 DEFB $00,$23,$E2,$00,$00,$47,$E2,$00 $DEAE DEFB $00,$45,$C6,$00,$00,$46,$8D,$00 $DEB6 DEFB $00,$4F,$C8,$80,$00,$4F,$FC,$40 $DEBE DEFB $00,$9F,$FA,$20,$01,$1F,$F9,$10 $DEC6 DEFB $01,$1B,$F9,$10,$01,$3B,$F0,$B0 $DECE DEFB $00,$DB,$F8,$E0,$00,$1D,$FC,$00 $DED6 DEFB $00,$1D,$FC,$00,$00,$1E,$FE,$00 $DEDE DEFB $00,$1E,$FE,$00,$00,$3E,$FE,$00 $DEE6 DEFB $00,$3F,$7F,$00,$00,$3F,$FF,$00 $DEEE DEFB $00,$7F,$3F,$80,$01,$FF,$1F,$80 $DEF6 DEFB $02,$FE,$1F,$80,$04,$7E,$0F,$80 $DEFE DEFB $04,$3C,$0F,$C0,$0E,$10,$08,$40 $DF06 DEFB $11,$60,$08,$40,$61,$80,$0F,$C0 $DF0E DEFB $82,$00,$04,$80,$84,$00,$04,$80 $DF16 DEFB $44,$00,$08,$80,$43,$00,$04,$40 $DF1E DEFB $20,$80,$04,$38,$1F,$00,$04,$04 $DF26 DEFB $00,$00,$02,$04,$00,$00,$03,$F8 @label=Bmp_Man2 $DF2E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DF36 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DF3E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $DF46 DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $DF4E DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $DF56 DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $DF5E DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $DF66 DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $DF6E DEFB $00,$03,$3A,$00,$00,$03,$19,$00 $DF76 DEFB $00,$04,$19,$00,$00,$04,$39,$00 $DF7E DEFB $00,$08,$7D,$00,$00,$08,$79,$00 $DF86 DEFB $00,$18,$71,$00,$00,$18,$F2,$00 $DF8E DEFB $00,$18,$E2,$00,$00,$18,$E2,$00 $DF96 DEFB $00,$18,$AC,$00,$00,$1C,$C8,$00 $DF9E DEFB $00,$1C,$FC,$00,$00,$3C,$FB,$00 $DFA6 DEFB $00,$3C,$78,$80,$00,$3C,$7C,$80 $DFAE DEFB $00,$3E,$74,$80,$00,$1B,$FB,$00 $DFB6 DEFB $00,$1D,$F8,$00,$00,$1D,$FC,$00 $DFBE DEFB $00,$0E,$FE,$00,$00,$0E,$FE,$00 $DFC6 DEFB $00,$0F,$7F,$00,$00,$0F,$FF,$80 $DFCE DEFB $00,$1F,$DF,$C0,$00,$7F,$CF,$C0 $DFD6 DEFB $03,$FF,$87,$E0,$04,$3F,$8F,$E0 $DFDE DEFB $06,$1F,$0F,$E0,$19,$1C,$09,$C0 $DFE6 DEFB $21,$10,$10,$40,$21,$E0,$1C,$20 $DFEE DEFB $22,$00,$13,$40,$44,$00,$21,$80 $DFF6 DEFB $44,$00,$42,$00,$44,$00,$4C,$00 $DFFE DEFB $24,$00,$87,$00,$18,$00,$80,$80 $E006 DEFB $00,$00,$80,$80,$00,$00,$7F,$00 @label=Bmp_Man3 $E00E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E016 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E01E DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E026 DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E02E DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E036 DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E03E DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E046 DEFB $00,$03,$3A,$00,$00,$03,$19,$00 $E04E DEFB $00,$04,$19,$00,$00,$04,$39,$00 $E056 DEFB $00,$08,$7D,$00,$00,$08,$79,$00 $E05E DEFB $00,$08,$71,$00,$00,$08,$F2,$00 $E066 DEFB $00,$18,$E2,$00,$00,$18,$E2,$00 $E06E DEFB $00,$18,$C4,$00,$00,$18,$84,$00 $E076 DEFB $00,$18,$EC,$00,$00,$3C,$FB,$00 $E07E DEFB $00,$3C,$78,$80,$00,$3E,$7C,$80 $E086 DEFB $00,$1E,$3B,$00,$00,$1B,$18,$00 $E08E DEFB $00,$05,$9C,$00,$00,$05,$FC,$00 $E096 DEFB $00,$02,$FC,$00,$00,$02,$FC,$00 $E09E DEFB $00,$03,$7C,$00,$00,$03,$3E,$00 $E0A6 DEFB $00,$03,$BE,$00,$00,$07,$BE,$00 $E0AE DEFB $00,$1F,$BE,$00,$00,$FF,$BE,$00 $E0B6 DEFB $01,$0F,$FE,$00,$01,$87,$7C,$00 $E0BE DEFB $06,$47,$7C,$00,$08,$44,$98,$00 $E0C6 DEFB $08,$79,$08,$00,$08,$81,$84,$00 $E0CE DEFB $11,$01,$4C,$00,$11,$02,$38,$00 $E0D6 DEFB $11,$02,$20,$00,$09,$02,$40,$00 $E0DE DEFB $06,$04,$38,$00,$00,$04,$04,$00 $E0E6 DEFB $00,$04,$04,$00,$00,$03,$F8,$00 @label=Bmp_man4 $E0EE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E0F6 DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E0FE DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E106 DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E10E DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E116 DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E11E DEFB $00,$03,$3A,$00,$00,$03,$19,$00 $E126 DEFB $00,$06,$1D,$00,$00,$0E,$1C,$80 $E12E DEFB $00,$16,$1C,$80,$00,$26,$1A,$80 $E136 DEFB $00,$26,$18,$80,$00,$26,$19,$00 $E13E DEFB $00,$27,$19,$00,$00,$27,$0A,$00 $E146 DEFB $00,$2F,$0A,$00,$00,$2E,$8E,$00 $E14E DEFB $00,$1F,$C4,$00,$00,$1F,$E4,$00 $E156 DEFB $00,$1F,$F3,$00,$00,$1F,$F0,$80 $E15E DEFB $00,$0F,$E8,$80,$00,$0F,$EC,$80 $E166 DEFB $00,$0F,$EF,$00,$00,$07,$EC,$00 $E16E DEFB $00,$07,$EE,$00,$00,$07,$DE,$00 $E176 DEFB $00,$07,$DF,$00,$00,$07,$DF,$00 $E17E DEFB $00,$07,$DF,$80,$00,$07,$DF,$80 $E186 DEFB $00,$0F,$DF,$80,$00,$0F,$DF,$00 $E18E DEFB $00,$0F,$DF,$00,$00,$7F,$BC,$00 $E196 DEFB $00,$9F,$70,$00,$00,$9F,$60,$00 $E19E DEFB $00,$BF,$C0,$00,$00,$A1,$00,$00 $E1A6 DEFB $00,$A0,$80,$00,$00,$58,$80,$00 $E1AE DEFB $00,$57,$00,$00,$00,$31,$00,$00 $E1B6 DEFB $00,$12,$00,$00,$00,$0A,$00,$00 $E1BE DEFB $00,$11,$C0,$00,$00,$10,$30,$00 $E1C6 DEFB $00,$10,$10,$00,$00,$0F,$E0,$00 @label=Bmp_Man5 $E1CE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E1D6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E1DE DEFB $00,$00,$07,$C0,$00,$00,$0F,$E0 $E1E6 DEFB $00,$00,$3F,$90,$00,$00,$3F,$08 $E1EE DEFB $00,$00,$7D,$30,$00,$00,$7F,$08 $E1F6 DEFB $00,$00,$79,$10,$00,$00,$E0,$90 $E1FE DEFB $00,$01,$F1,$E0,$00,$03,$3A,$00 $E206 DEFB $00,$03,$19,$00,$00,$06,$19,$00 $E20E DEFB $00,$0E,$18,$80,$00,$16,$1C,$80 $E216 DEFB $00,$26,$1E,$80,$00,$4E,$1C,$80 $E21E DEFB $00,$4E,$1D,$00,$00,$4E,$1D,$00 $E226 DEFB $00,$4E,$3A,$00,$00,$5F,$1A,$00 $E22E DEFB $00,$4D,$06,$00,$00,$4F,$81,$00 $E236 DEFB $00,$9F,$E0,$80,$00,$9F,$F8,$60 $E23E DEFB $00,$9F,$F6,$10,$00,$7F,$F7,$10 $E246 DEFB $00,$1F,$F6,$E0,$00,$0F,$F7,$00 $E24E DEFB $00,$0F,$EF,$80,$00,$07,$EF,$C0 $E256 DEFB $00,$07,$EF,$E0,$00,$07,$FF,$E0 $E25E DEFB $00,$0F,$E7,$E0,$00,$0F,$C7,$C0 $E266 DEFB $00,$0F,$CF,$C0,$00,$1F,$CF,$C0 $E26E DEFB $00,$1F,$90,$80,$00,$1F,$90,$40 $E276 DEFB $00,$3F,$9C,$80,$00,$7F,$27,$00 $E27E DEFB $00,$CE,$24,$00,$00,$82,$44,$00 $E286 DEFB $00,$82,$44,$00,$00,$F6,$43,$00 $E28E DEFB $00,$4C,$20,$80,$00,$4C,$08,$80 $E296 DEFB $00,$48,$07,$00,$00,$48,$00,$00 $E29E DEFB $00,$87,$00,$00,$00,$80,$80,$00 $E2A6 DEFB $00,$80,$80,$00,$00,$7F,$00,$00 @label=Bmp_Man6 $E2AE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2B6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E2BE DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E2C6 DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E2CE DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E2D6 DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E2DE DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E2E6 DEFB $00,$03,$3A,$00,$00,$07,$19,$00 $E2EE DEFB $00,$0E,$19,$00,$00,$16,$18,$80 $E2F6 DEFB $00,$16,$18,$80,$00,$26,$1A,$80 $E2FE DEFB $00,$46,$18,$80,$00,$47,$11,$00 $E306 DEFB $00,$4F,$19,$00,$00,$93,$0A,$00 $E30E DEFB $00,$97,$86,$00,$00,$97,$C2,$00 $E316 DEFB $00,$AD,$F1,$C0,$01,$2F,$38,$20 $E31E DEFB $02,$2F,$FE,$20,$02,$2F,$F5,$20 $E326 DEFB $01,$DF,$F4,$C0,$00,$1F,$F6,$00 $E32E DEFB $00,$1F,$DE,$00,$00,$0F,$DF,$00 $E336 DEFB $00,$0F,$DF,$00,$00,$0F,$DF,$80 $E33E DEFB $00,$1F,$FF,$80,$00,$1F,$BF,$C0 $E346 DEFB $00,$1F,$9F,$C0,$00,$3F,$8F,$C0 $E34E DEFB $00,$7F,$0F,$C0,$00,$7F,$0F,$E0 $E356 DEFB $00,$FE,$07,$E0,$01,$FC,$0E,$20 $E35E DEFB $03,$38,$08,$20,$02,$08,$04,$E0 $E366 DEFB $03,$08,$07,$A0,$03,$C8,$02,$2E $E36E DEFB $02,$30,$01,$11,$04,$20,$01,$01 $E376 DEFB $08,$40,$01,$06,$08,$40,$01,$18 $E37E DEFB $08,$30,$00,$E0,$06,$08,$00,$00 $E386 DEFB $01,$08,$00,$00,$00,$F0,$00,$00 @label=Bmp_Man7 $E38E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E396 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E39E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E3A6 DEFB $00,$00,$07,$C0,$00,$00,$0F,$E0 $E3AE DEFB $00,$00,$3F,$90,$00,$00,$3F,$08 $E3B6 DEFB $00,$00,$7D,$30,$00,$00,$7F,$08 $E3BE DEFB $00,$00,$79,$10,$00,$00,$E0,$90 $E3C6 DEFB $00,$01,$F1,$E0,$00,$03,$3A,$00 $E3CE DEFB $00,$03,$19,$00,$00,$06,$19,$00 $E3D6 DEFB $00,$0E,$18,$80,$00,$16,$18,$80 $E3DE DEFB $00,$26,$1A,$80,$00,$46,$18,$80 $E3E6 DEFB $00,$4F,$11,$00,$00,$4F,$0D,$00 $E3EE DEFB $00,$4B,$82,$00,$00,$8D,$C1,$00 $E3F6 DEFB $00,$9F,$70,$80,$00,$9F,$F8,$40 $E3FE DEFB $01,$1F,$FE,$20,$01,$1F,$F9,$10 $E406 DEFB $01,$BF,$E9,$10,$00,$DF,$EC,$90 $E40E DEFB $00,$1F,$EC,$E0,$00,$1F,$DC,$00 $E416 DEFB $00,$1F,$DC,$00,$00,$1F,$DE,$00 $E41E DEFB $00,$1F,$BE,$00,$00,$3F,$BE,$00 $E426 DEFB $00,$3F,$BF,$00,$00,$3F,$FF,$00 $E42E DEFB $00,$7F,$3F,$80,$01,$FF,$1F,$80 $E436 DEFB $02,$FE,$1F,$80,$04,$7E,$0F,$80 $E43E DEFB $04,$3C,$0F,$C0,$0E,$10,$08,$40 $E446 DEFB $11,$60,$08,$40,$61,$80,$0F,$C0 $E44E DEFB $42,$00,$04,$80,$42,$00,$04,$80 $E456 DEFB $42,$00,$08,$60,$33,$00,$04,$3C $E45E DEFB $10,$80,$04,$02,$08,$40,$04,$02 $E466 DEFB $04,$40,$03,$FC,$03,$80,$00,$00 @label=Bmp_Man8 $E46E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E476 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E47E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E486 DEFB $00,$00,$07,$C0,$00,$00,$0F,$E0 $E48E DEFB $00,$00,$3F,$90,$00,$00,$3F,$08 $E496 DEFB $00,$00,$7D,$30,$00,$00,$7F,$08 $E49E DEFB $00,$00,$79,$10,$00,$00,$E0,$90 $E4A6 DEFB $00,$01,$F1,$E0,$00,$03,$3A,$00 $E4AE DEFB $00,$03,$19,$00,$00,$06,$1D,$00 $E4B6 DEFB $00,$06,$1C,$80,$00,$06,$1C,$80 $E4BE DEFB $00,$06,$1A,$80,$00,$06,$18,$80 $E4C6 DEFB $00,$06,$19,$00,$00,$0F,$19,$00 $E4CE DEFB $00,$0F,$1A,$00,$00,$0B,$8A,$00 $E4D6 DEFB $00,$0E,$8A,$00,$00,$0F,$C4,$00 $E4DE DEFB $00,$1F,$E2,$00,$00,$1F,$F1,$00 $E4E6 DEFB $00,$1F,$F8,$80,$00,$1F,$FC,$80 $E4EE DEFB $00,$1F,$EC,$80,$00,$0F,$EB,$00 $E4F6 DEFB $00,$0F,$EC,$00,$00,$0F,$EE,$00 $E4FE DEFB $00,$0F,$EF,$00,$00,$0F,$EF,$80 $E506 DEFB $00,$0F,$CF,$80,$00,$1F,$DF,$C0 $E50E DEFB $00,$1F,$7F,$E0,$00,$1F,$F7,$E0 $E516 DEFB $00,$7F,$C7,$E0,$03,$FF,$8F,$E0 $E51E DEFB $04,$3E,$09,$C0,$06,$1E,$10,$40 $E526 DEFB $19,$1C,$1C,$20,$21,$10,$13,$40 $E52E DEFB $21,$E0,$21,$80,$22,$00,$42,$00 $E536 DEFB $44,$00,$4C,$00,$44,$00,$87,$00 $E53E DEFB $44,$00,$80,$80,$24,$00,$80,$80 $E546 DEFB $18,$00,$7F,$00,$00,$00,$00,$00 @label=Bmp_Man9 $E54E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E556 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E55E DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E566 DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E56E DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E576 DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E57E DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E586 DEFB $00,$03,$3A,$00,$00,$03,$19,$00 $E58E DEFB $00,$06,$19,$00,$00,$06,$39,$00 $E596 DEFB $00,$0C,$3D,$00,$00,$0C,$39,$00 $E59E DEFB $00,$0C,$31,$00,$00,$0C,$32,$00 $E5A6 DEFB $00,$0C,$62,$00,$00,$06,$22,$00 $E5AE DEFB $00,$0E,$14,$00,$00,$0F,$0C,$00 $E5B6 DEFB $00,$1F,$C4,$00,$00,$1F,$E2,$00 $E5BE DEFB $00,$1F,$F1,$00,$00,$1F,$F1,$00 $E5C6 DEFB $00,$0F,$FE,$00,$00,$0F,$F8,$00 $E5CE DEFB $00,$07,$FC,$00,$00,$07,$F4,$00 $E5D6 DEFB $00,$07,$F6,$00,$00,$03,$F6,$00 $E5DE DEFB $00,$03,$F6,$00,$00,$03,$EE,$00 $E5E6 DEFB $00,$03,$EE,$00,$00,$03,$EE,$00 $E5EE DEFB $00,$07,$EE,$00,$00,$1F,$EE,$00 $E5F6 DEFB $00,$FF,$DC,$00,$01,$0F,$BC,$00 $E5FE DEFB $01,$87,$FC,$00,$06,$46,$9C,$00 $E606 DEFB $08,$45,$04,$00,$08,$78,$88,$00 $E60E DEFB $08,$81,$70,$00,$11,$01,$10,$00 $E616 DEFB $11,$02,$20,$00,$11,$01,$3C,$00 $E61E DEFB $09,$01,$02,$00,$06,$01,$02,$00 $E626 DEFB $00,$00,$FC,$00,$00,$00,$00,$00 @label=Bmp_Man10 $E62E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E636 DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E63E DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E646 DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E64E DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E656 DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E65E DEFB $00,$03,$3A,$00,$00,$03,$19,$00 $E666 DEFB $00,$04,$19,$00,$00,$04,$39,$00 $E66E DEFB $00,$08,$7D,$00,$00,$08,$79,$00 $E676 DEFB $00,$08,$71,$00,$00,$08,$F2,$00 $E67E DEFB $00,$08,$E2,$00,$00,$08,$E2,$00 $E686 DEFB $00,$08,$84,$00,$00,$0C,$84,$00 $E68E DEFB $00,$1C,$EC,$00,$00,$1C,$FB,$00 $E696 DEFB $00,$3C,$78,$80,$00,$3C,$3C,$80 $E69E DEFB $00,$1E,$3B,$00,$00,$1B,$F8,$00 $E6A6 DEFB $00,$0B,$F8,$00,$00,$0D,$F8,$00 $E6AE DEFB $00,$0D,$FC,$00,$00,$0D,$FC,$00 $E6B6 DEFB $00,$0E,$FE,$00,$00,$07,$7E,$00 $E6BE DEFB $00,$07,$7F,$00,$00,$07,$7F,$00 $E6C6 DEFB $00,$0F,$7F,$00,$00,$0C,$FE,$00 $E6CE DEFB $00,$3F,$FE,$00,$00,$43,$F8,$00 $E6D6 DEFB $00,$61,$E0,$00,$01,$91,$C0,$00 $E6DE DEFB $02,$13,$80,$00,$02,$1E,$00,$00 $E6E6 DEFB $02,$21,$00,$00,$04,$61,$00,$00 $E6EE DEFB $04,$5F,$00,$00,$04,$52,$00,$00 $E6F6 DEFB $02,$52,$00,$00,$01,$A1,$C0,$00 $E6FE DEFB $00,$10,$30,$00,$00,$10,$10,$00 $E706 DEFB $00,$0F,$E0,$00,$00,$00,$00,$00 @label=Bmp_Man11 $E70E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E716 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E71E DEFB $00,$00,$07,$C0,$00,$00,$0F,$E0 $E726 DEFB $00,$00,$3F,$90,$00,$00,$3F,$08 $E72E DEFB $00,$00,$7D,$30,$00,$00,$7F,$08 $E736 DEFB $00,$00,$79,$10,$00,$00,$E0,$90 $E73E DEFB $00,$01,$F1,$E0,$00,$03,$3A,$00 $E746 DEFB $00,$02,$19,$00,$00,$04,$19,$00 $E74E DEFB $00,$08,$39,$00,$00,$08,$7D,$00 $E756 DEFB $00,$10,$F9,$00,$00,$21,$F1,$00 $E75E DEFB $00,$23,$E2,$00,$00,$47,$E2,$00 $E766 DEFB $00,$45,$C6,$00,$00,$46,$8D,$00 $E76E DEFB $00,$4F,$C8,$80,$00,$4F,$FC,$40 $E776 DEFB $00,$9F,$FA,$20,$01,$1F,$F9,$10 $E77E DEFB $01,$1B,$F9,$10,$01,$3B,$F0,$B0 $E786 DEFB $00,$FB,$F8,$40,$00,$3B,$FC,$00 $E78E DEFB $00,$3B,$FE,$00,$00,$1C,$FF,$00 $E796 DEFB $00,$1F,$7F,$80,$00,$1F,$FF,$80 $E79E DEFB $00,$3F,$9F,$80,$00,$3F,$1F,$00 $E7A6 DEFB $00,$3F,$3F,$00,$00,$7F,$3F,$00 $E7AE DEFB $00,$7E,$42,$00,$00,$7E,$41,$00 $E7B6 DEFB $00,$FE,$72,$00,$01,$FC,$9C,$00 $E7BE DEFB $03,$38,$90,$00,$02,$09,$10,$00 $E7C6 DEFB $02,$09,$10,$00,$03,$D9,$0C,$00 $E7CE DEFB $01,$30,$82,$00,$01,$20,$22,$00 $E7D6 DEFB $01,$20,$1C,$00,$02,$1C,$00,$00 $E7DE DEFB $02,$02,$00,$00,$02,$02,$00,$00 $E7E6 DEFB $01,$FC,$00,$00,$00,$00,$00,$00 @label=Bmp_Man12 $E7EE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E7F6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $E7FE DEFB $00,$00,$00,$00,$00,$00,$07,$C0 $E806 DEFB $00,$00,$0F,$E0,$00,$00,$3F,$90 $E80E DEFB $00,$00,$3F,$08,$00,$00,$7D,$30 $E816 DEFB $00,$00,$7F,$08,$00,$00,$79,$10 $E81E DEFB $00,$00,$E0,$90,$00,$01,$F1,$E0 $E826 DEFB $00,$03,$3A,$00,$00,$02,$19,$00 $E82E DEFB $00,$04,$19,$00,$00,$08,$39,$00 $E836 DEFB $00,$08,$3D,$00,$00,$10,$71,$00 $E83E DEFB $00,$20,$E1,$00,$00,$23,$E2,$00 $E846 DEFB $00,$47,$E2,$00,$00,$4B,$C6,$00 $E84E DEFB $00,$97,$45,$00,$00,$A7,$CC,$C0 $E856 DEFB $00,$AD,$FA,$20,$01,$1B,$F9,$20 $E85E DEFB $01,$1B,$F8,$A0,$00,$FB,$F8,$C0 $E866 DEFB $00,$1B,$F0,$00,$00,$1B,$F0,$00 $E86E DEFB $00,$1D,$FC,$00,$00,$1E,$FE,$00 $E876 DEFB $00,$1E,$FE,$00,$00,$1F,$7F,$00 $E87E DEFB $00,$3F,$FF,$00,$00,$3F,$7F,$80 $E886 DEFB $00,$3F,$3F,$80,$00,$7F,$1F,$80 $E88E DEFB $00,$FE,$1F,$C0,$01,$FC,$1F,$C0 $E896 DEFB $03,$F8,$1F,$80,$06,$70,$0F,$C0 $E89E DEFB $04,$10,$1C,$40,$06,$10,$10,$40 $E8A6 DEFB $07,$90,$09,$C0,$04,$60,$0F,$40 $E8AE DEFB $08,$40,$04,$5C,$10,$80,$02,$22 $E8B6 DEFB $10,$80,$02,$02,$10,$60,$02,$0C $E8BE DEFB $0C,$10,$02,$30,$02,$10,$01,$C0 $E8C6 DEFB $01,$E0,$00,$00,$00,$00,$00,$00 @label=Bmp_ManStanding $E8CE DEFB $00,$00,$00,$00,$00,$F8,$01,$FC $E8D6 DEFB $03,$F2,$07,$E1,$07,$A6,$0F,$E1 $E8DE DEFB $07,$A2,$0D,$12,$07,$0C,$0F,$D0 $E8E6 DEFB $0C,$E8,$18,$64,$18,$E4,$18,$F4 $E8EE DEFB $11,$E4,$11,$E4,$11,$E4,$11,$C8 $E8F6 DEFB $11,$C8,$11,$88,$19,$98,$09,$98 $E8FE DEFB $18,$D4,$3C,$F2,$3C,$72,$3C,$3C $E906 DEFB $1E,$38,$1B,$F8,$0B,$F8,$0D,$F8 $E90E DEFB $0F,$F8,$05,$F8,$05,$FC,$06,$FC $E916 DEFB $06,$7C,$07,$7C,$07,$7C,$07,$7C $E91E DEFB $03,$7C,$07,$7C,$0F,$7C,$0B,$78 $E926 DEFB $09,$F8,$09,$08,$06,$04,$06,$04 $E92E DEFB $07,$E4,$05,$18,$0D,$10,$09,$20 $E936 DEFB $0A,$1C,$06,$02,$02,$02,$01,$FC ; Object bitmaps @label=Bmp_Bottle b$E93E DEFB $18,$18,$18,$3C,$3C,$3C,$3C,$2C $E946 DEFB $2C,$2C,$2C,$2C,$3C,$3C,$3C,$18 @label=Bmp_Brooch $E94E DEFB $07,$E0,$1F,$F8,$3C,$3C,$70,$0E $E956 DEFB $67,$F6,$7B,$DE,$34,$2C,$28,$14 $E95E DEFB $31,$0C,$32,$0C,$32,$0C,$31,$8C $E966 DEFB $28,$14,$14,$28,$0B,$D0,$07,$E0 @label=Bmp_Tokens $E96E DEFB $00,$00,$18,$24,$66,$99,$99,$66 @label=Bmp_Barrel $E976 DEFB $00,$00,$00,$07,$FF,$C0,$07,$6D $E97E DEFB $C0,$07,$7D,$C0,$07,$7D,$C0,$0F $E986 DEFB $7D,$E0,$0E,$FE,$E0,$0E,$EE,$E0 $E98E DEFB $0E,$EE,$E0,$0E,$FE,$F0,$1E,$FE $E996 DEFB $F0,$1D,$EF,$70,$1D,$EF,$70,$1D $E99E DEFB $EF,$70,$1E,$FE,$F0,$1E,$FE,$E0 $E9A6 DEFB $0E,$EE,$E0,$0E,$EE,$E0,$0E,$FE $E9AE DEFB $E0,$0F,$7D,$C0,$07,$7D,$C0,$07 $E9B6 DEFB $7D,$C0,$07,$6D,$C0,$07,$FF,$C0 @label=Bmp_Axe $E9BE DEFB $01,$80,$01,$80,$E0,$87,$B1,$8D $E9C6 DEFB $A8,$95,$A7,$E5,$A1,$85,$A7,$E5 $E9CE DEFB $A9,$95,$B0,$8D,$E1,$87,$01,$80 $E9D6 DEFB $01,$80,$00,$80,$00,$80,$01,$80 $E9DE DEFB $01,$80,$01,$80,$01,$80,$00,$80 $E9E6 DEFB $01,$80,$01,$80,$01,$80,$01,$80 @label=Bmp_Moleskin $E9EE DEFB $00,$18,$00,$00,$18,$00,$00,$3C $E9F6 DEFB $00,$00,$7E,$00,$10,$7E,$08,$53 $E9FE DEFB $FF,$CA,$3F,$FF,$FC,$1F,$FF,$F8 $EA06 DEFB $07,$FF,$E0,$01,$FF,$80,$01,$FF $EA0E DEFB $80,$01,$FF,$80,$01,$FF,$80,$01 $EA16 DEFB $FF,$80,$01,$FF,$80,$03,$FF,$C0 $EA1E DEFB $03,$FF,$C0,$03,$FF,$C0,$07,$FF $EA26 DEFB $E0,$3F,$FF,$FC,$1F,$FF,$F8,$38 $EA2E DEFB $3C,$1C,$00,$18,$00,$00,$18,$00 @label=Bmp_Swatch $EA36 DEFB $3F,$80,$40,$C0,$61,$C0,$83,$E0 $EA3E DEFB $83,$E0,$85,$A0,$85,$A0,$85,$20 $EA46 DEFB $85,$90,$84,$90,$84,$90,$84,$90 $EA4E DEFB $84,$50,$A4,$90,$A4,$90,$FC,$F0 @label=Bmp_Token $EA56 DEFB $00,$00,$18,$24,$66,$99,$99,$66 @label=Bmp_Key $EA5E DEFB $18,$1E,$1C,$1F,$18,$18,$18,$18 $EA66 DEFB $3C,$66,$C3,$C3,$C3,$C3,$66,$3C @label=Bmp_Script $EA6E DEFB $00,$00,$00,$00,$00,$00,$03,$FE $EA76 DEFB $02,$03,$02,$01,$01,$21,$02,$49 $EA7E DEFB $02,$29,$02,$01,$02,$59,$02,$01 $EA86 DEFB $07,$FF,$04,$03,$04,$02,$07,$FF @label=Bmp_Thing $EA8E DEFB $10,$18,$14,$1C,$14,$12,$12,$12 $EA96 DEFB $22,$25,$3F,$37,$3F,$35,$3B,$1E @label=Bmp_Needle $EA9E DEFB $08,$14,$14,$14,$14,$08,$08,$08 $EAA6 DEFB $08,$08,$08,$08,$08,$08,$08,$08 @label=Bmp_Bullion $EAAE DEFB $00,$00,$3F,$FC,$56,$02,$AB,$01 $EAB6 DEFB $D5,$FF,$AB,$01,$D5,$01,$FF,$FF @label=Bmp_Last $EABE DEFB $03,$C0,$02,$E0,$03,$70,$03,$B8 $EAC6 DEFB $03,$80,$03,$80,$03,$80,$03,$80 $EACE DEFB $33,$86,$33,$86,$33,$C6,$37,$E6 $EAD6 DEFB $37,$F6,$36,$76,$34,$36,$38,$1E @label=Bmp_Pepper $EADE DEFB $03,$F0,$04,$A8,$08,$04,$0F,$FC $EAE6 DEFB $04,$08,$04,$E8,$04,$A8,$04,$E8 $EAEE DEFB $04,$88,$04,$88,$04,$88,$04,$08 $EAF6 DEFB $07,$B8,$08,$04,$04,$08,$07,$F8 @label=Bmp_Arrow $EAFE DEFB $54,$38,$54,$38,$10,$10,$10,$10 $EB06 DEFB $10,$10,$10,$10,$10,$10,$38,$10 @label=Bmp_Book $EB0E DEFB $7E,$7E,$7E,$C3,$7E,$7E,$7E,$7E $EB16 DEFB $7E,$7E,$7E,$C3,$7E,$C3,$7E,$7E @label=Bmp_Foil $EB1E DEFB $08,$08,$18,$08,$7F,$67,$3E,$1C $EB26 DEFB $08,$08,$08,$08,$08,$08,$08,$08 $EB2E DEFB $08,$08,$08,$08,$08,$08,$08,$08 @label=Bmp_Adze $EB36 DEFB $00,$08,$00,$1C,$00,$FE,$07,$01 $EB3E DEFB $18,$01,$20,$FE,$21,$1C,$41,$1C $EB46 DEFB $42,$1C,$22,$1C,$14,$1C,$08,$14 $EB4E DEFB $00,$1C,$00,$14,$00,$1C,$00,$1C @label=Bmp_Salt $EB56 DEFB $03,$F0,$04,$A8,$08,$04,$0F,$FC $EB5E DEFB $04,$08,$04,$E8,$04,$88,$04,$E8 $EB66 DEFB $04,$28,$04,$28,$04,$E8,$04,$08 $EB6E DEFB $07,$B8,$08,$04,$04,$08,$07,$F8 @label=Bmp_Razor $EB76 DEFB $00,$00,$30,$00,$30,$00,$3F,$FC $EB7E DEFB $40,$0C,$3F,$F8,$18,$00,$18,$00 $EB86 DEFB $1C,$00,$0C,$00,$0E,$00,$06,$00 $EB8E DEFB $07,$00,$03,$80,$03,$80,$01,$80 @label=Bmp_BlankA $EB96 DEFB $00,$00,$00,$00,$00,$00,$00,$00 @label=Bmp_Hammer $EB9E DEFB $73,$90,$4E,$E8,$40,$08,$4E,$E8 $EBA6 DEFB $72,$90,$03,$80,$03,$80,$03,$80 $EBAE DEFB $03,$80,$03,$80,$03,$80,$03,$80 $EBB6 DEFB $03,$80,$03,$80,$03,$80,$03,$80 @label=Bmp_Q $EBBE DEFB $00,$00,$07,$E0,$0F,$F0,$1E,$F8 $EBC6 DEFB $1A,$B8,$1A,$B8,$3A,$BC,$3A,$BC $EBCE DEFB $3B,$BC,$3F,$FC,$1F,$F8,$3F,$FC $EBD6 DEFB $77,$EE,$38,$1C,$1F,$F8,$07,$E0 @label=Bmp_Hoe $EBDE DEFB $7F,$7F,$63,$77,$3E,$1C,$14,$14 $EBE6 DEFB $14,$14,$14,$14,$14,$14,$14,$14 $EBEE DEFB $14,$14,$14,$14,$14,$1C,$14,$1C @label=Bmp_Stone $EBF6 DEFB $07,$E0,$1F,$F8,$3F,$FC,$7F,$FC $EBFE DEFB $7D,$FE,$F9,$FE,$FB,$FF,$F3,$FF $EC06 DEFB $F3,$FF,$F3,$FF,$7B,$FF,$7D,$FE $EC0E DEFB $3F,$FE,$3F,$FC,$1F,$F0,$07,$C0 @label=Bmp_Relic $EC16 DEFB $66,$99,$81,$95,$76,$14,$14,$14 $EC1E DEFB $14,$14,$14,$76,$95,$81,$99,$66 @label=Bmp_Shield $EC26 DEFB $1F,$F8,$60,$06,$8F,$F1,$86,$61 $EC2E DEFB $93,$C9,$B9,$9D,$80,$01,$FF,$FF $EC36 DEFB $FC,$3F,$FE,$7F,$C3,$C3,$6B,$D6 $EC3E DEFB $33,$CC,$1B,$D8,$0F,$F0,$03,$C0 @label=Bmp_Rue $EC46 DEFB $03,$F0,$04,$A8,$08,$04,$0F,$FC $EC4E DEFB $04,$08,$04,$E8,$04,$A8,$04,$C8 $EC56 DEFB $04,$A8,$04,$A8,$04,$A8,$04,$08 $EC5E DEFB $07,$B8,$08,$04,$04,$08,$07,$F8 @label=Bmp_Lyre $EC66 DEFB $00,$00,$00,$00,$78,$1E,$DC,$3B $EC6E DEFB $18,$18,$3F,$FC,$3A,$5C,$3A,$5C $EC76 DEFB $3A,$5C,$3A,$5C,$3A,$5C,$3A,$5C $EC7E DEFB $3E,$7C,$1D,$B8,$06,$60,$03,$C0 @label=Bmp_L $EC86 DEFB $FF,$FF,$83,$C1,$93,$C9,$BB,$DD $EC8E DEFB $93,$C9,$83,$C1,$FF,$FF,$FF,$FF $EC96 DEFB $FF,$FF,$80,$01,$95,$A9,$86,$61 $EC9E DEFB $8F,$F1,$86,$61,$60,$06,$1F,$F8 ; Bitmap of the shop window with sign. @label=Bmp_WindowWithSign b$ECA6 DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 $ECAE DEFB $FC,$77,$77,$57,$77,$75,$03,$F0 $ECB6 DEFB $F8,$55,$52,$54,$45,$55,$01,$F0 $ECBE DEFB $E0,$77,$52,$77,$47,$67,$00,$70 $ECC6 DEFB $E0,$54,$52,$54,$45,$52,$20,$70 $ECCE DEFB $F8,$54,$52,$54,$45,$52,$01,$F0 $ECD6 DEFB $FC,$54,$72,$57,$75,$52,$03,$F0 $ECDE DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 $ECE6 DEFB $1F,$FF,$FF,$FF,$FF,$FF,$FF,$00 $ECEE DEFB $10,$00,$00,$00,$00,$00,$01,$00 $ECF6 DEFB $17,$FF,$FF,$FF,$FF,$FF,$FD,$00 $ECFE DEFB $17,$FF,$BF,$FB,$FF,$BF,$FD,$00 $ED06 DEFB $16,$52,$AB,$1A,$98,$AE,$8D,$00 $ED0E DEFB $16,$A1,$B5,$CB,$3D,$B7,$0D,$00 $ED16 DEFB $17,$5A,$AB,$AA,$BE,$AF,$8D,$00 $ED1E DEFB $16,$A8,$B6,$EB,$3D,$B7,$5D,$00 $ED26 DEFB $17,$4A,$AB,$EA,$BE,$AA,$ED,$00 $ED2E DEFB $16,$9C,$B7,$DB,$7F,$BD,$ED,$00 $ED36 DEFB $17,$D6,$AB,$EA,$DF,$B6,$FD,$00 $ED3E DEFB $17,$FF,$BF,$FB,$FF,$BF,$FD,$00 $ED46 DEFB $14,$00,$00,$00,$00,$00,$05,$00 $ED4E DEFB $17,$FF,$BF,$FB,$FF,$BF,$FD,$00 $ED56 DEFB $16,$DD,$AA,$AA,$AA,$AD,$ED,$00 $ED5E DEFB $17,$55,$B5,$5B,$51,$BF,$FD,$00 $ED66 DEFB $17,$FF,$B9,$FB,$BF,$AD,$FD,$00 $ED6E DEFB $17,$FF,$BF,$FB,$FF,$B8,$BD,$00 $ED76 DEFB $16,$50,$B0,$AB,$4A,$BC,$BD,$00 $ED7E DEFB $16,$76,$AF,$4A,$EE,$BE,$FD,$00 $ED86 DEFB $17,$06,$AA,$AB,$14,$BF,$FD,$00 $ED8E DEFB $17,$FC,$AF,$5A,$EB,$BF,$FD,$00 $ED96 DEFB $16,$F6,$AE,$AA,$E7,$B6,$CD,$00 $ED9E DEFB $16,$FA,$AF,$CA,$AA,$B6,$DD,$00 $EDA6 DEFB $16,$F6,$AD,$AA,$E6,$AB,$AD,$00 $EDAE DEFB $16,$7C,$AF,$8A,$EB,$B5,$5D,$00 $EDB6 DEFB $17,$FF,$BF,$FB,$FF,$BF,$FD,$00 $EDBE DEFB $17,$FF,$FF,$FF,$FF,$FF,$FD,$00 $EDC6 DEFB $14,$00,$00,$00,$00,$00,$05,$00 $EDCE DEFB $17,$FF,$FF,$FF,$FF,$FF,$FD,$00 $EDD6 DEFB $10,$00,$00,$00,$00,$00,$01,$00 $EDDE DEFB $1F,$FF,$FF,$FF,$FF,$FF,$FF,$00 ; Bitmap of the shop triple window with sign. @label=BmpTripleWindowWithSign b$EDE6 DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 $EDEE DEFB $FC,$00,$00,$00,$00,$00,$03,$F0 $EDF6 DEFB $F8,$00,$00,$00,$00,$00,$01,$F0 $EDFE DEFB $E0,$00,$00,$00,$00,$00,$00,$70 $EE06 DEFB $E0,$00,$00,$00,$00,$00,$00,$70 $EE0E DEFB $F8,$00,$00,$00,$00,$00,$01,$F0 $EE16 DEFB $FC,$00,$00,$00,$00,$00,$03,$F0 $EE1E DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 $EE26 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE2E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE36 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE3E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE46 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EE4E DEFB $0F,$FE,$00,$7F,$F0,$03,$FF,$80 $EE56 DEFB $30,$01,$81,$80,$0C,$0C,$00,$60 $EE5E DEFB $2F,$BE,$81,$7D,$F4,$0B,$EF,$A0 $EE66 DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EE6E DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EE76 DEFB $2D,$B6,$81,$6D,$B4,$0B,$6D,$A0 $EE7E DEFB $2F,$BE,$81,$7D,$F4,$0B,$EF,$A0 $EE86 DEFB $20,$00,$81,$00,$04,$08,$00,$20 $EE8E DEFB $2F,$BE,$81,$7D,$F4,$0B,$EF,$A0 $EE96 DEFB $2D,$B6,$81,$6D,$B4,$0B,$6D,$A0 $EE9E DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEA6 DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEAE DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEB6 DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEBE DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEC6 DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EECE DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EED6 DEFB $28,$A2,$81,$45,$14,$0A,$28,$A0 $EEDE DEFB $2D,$B6,$81,$6D,$B4,$0B,$6D,$A0 $EEE6 DEFB $2F,$BE,$81,$7D,$F4,$0B,$EF,$A0 $EEEE DEFB $30,$01,$81,$80,$0C,$0C,$00,$60 $EEF6 DEFB $0F,$FE,$00,$7F,$F0,$03,$FF,$80 $EEFE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF06 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF0E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF16 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EF1E DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Bitmap of the picture frames found in galleries. @label=Bmp_PictureFrame b$EF26 DEFB $00,$00,$00,$00,$00,$00,$00,$18 $EF2E DEFB $00,$00,$00,$00,$66,$00,$00,$0E $EF36 DEFB $00,$81,$00,$70,$11,$18,$81,$18 $EF3E DEFB $88,$10,$E7,$00,$E7,$08,$10,$00 $EF46 DEFB $00,$00,$08,$09,$FF,$FF,$FF,$90 $EF4E DEFB $05,$5D,$BA,$55,$A0,$05,$BE,$5D $EF56 DEFB $FE,$A0,$05,$75,$3A,$7F,$A0,$09 $EF5E DEFB $EE,$5C,$BA,$90,$09,$7C,$B8,$5D $EF66 DEFB $90,$05,$E8,$5C,$3E,$A0,$05,$71 $EF6E DEFB $B8,$77,$A0,$05,$BB,$F5,$BA,$A0 $EF76 DEFB $19,$BA,$5D,$AA,$98,$21,$59,$8E $EF7E DEFB $55,$84,$21,$B8,$0C,$BE,$84,$41 $EF86 DEFB $5D,$BA,$5D,$82,$41,$BA,$5D,$FF $EF8E DEFB $82,$21,$75,$FA,$55,$84,$21,$BA $EF96 DEFB $F5,$AA,$84,$19,$FF,$EA,$1D,$98 $EF9E DEFB $05,$75,$A8,$1D,$A0,$05,$BA,$5D $EFA6 DEFB $AA,$A0,$05,$7F,$BA,$1D,$A0,$09 $EFAE DEFB $A2,$5D,$BE,$90,$09,$63,$FE,$77 $EFB6 DEFB $90,$05,$A2,$7F,$AA,$A0,$05,$7F $EFBE DEFB $BA,$7F,$A0,$05,$AA,$5D,$BA,$A0 $EFC6 DEFB $09,$FF,$FF,$FF,$90,$10,$00,$00 $EFCE DEFB $00,$08,$10,$E7,$00,$E7,$08,$11 $EFD6 DEFB $18,$81,$18,$88,$0E,$00,$81,$00 $EFDE DEFB $70,$00,$00,$66,$00,$00,$00,$00 $EFE6 DEFB $18,$00,$00,$00,$00,$00,$00,$00 $EFEE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EFF6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $EFFE DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Skinny window @label=Bmp_WindowSkinny b$F006 DEFB $0F,$E0,$10,$10,$26,$C8,$4E,$E4 $F00E DEFB $92,$92,$F2,$9E,$A2,$8A,$A2,$8A $F016 DEFB $A2,$8A,$A2,$8A,$A2,$8A,$A2,$8A $F01E DEFB $B6,$DA,$BE,$FA,$80,$02,$BE,$FA $F026 DEFB $B6,$DA,$A2,$8A,$A2,$8A,$A2,$8A $F02E DEFB $A2,$8A,$A2,$8A,$A2,$8A,$A2,$8A $F036 DEFB $A2,$8A,$A2,$8A,$A2,$8A,$A2,$8A $F03E DEFB $B6,$DA,$BE,$FA,$C0,$06,$FF,$FE ; Brick @label=Bmp_Brick1 b$F046 DEFB $00,$00,$7F,$38,$80,$C4,$80,$C4 $F04E DEFB $80,$C4,$80,$44,$80,$44,$7F,$F8 $F056 DEFB $1F,$F0,$20,$08,$20,$08,$30,$08 $F05E DEFB $18,$08,$10,$08,$1F,$F0,$00,$00 ; Edging @label=Bmp_Edging b$F066 DEFB $FF,$00,$00,$FF,$00,$00,$00,$00 ; Secure Grid Window @label=Bmp_WindowGrid b$F06E DEFB $7C,$3E,$87,$E1,$84,$21,$82,$41 $F076 DEFB $7E,$7E,$FF,$FF,$80,$01,$BF,$FD $F07E DEFB $BD,$BD,$B2,$4D,$B2,$4D,$AF,$F5 $F086 DEFB $B2,$4D,$B2,$4D,$AF,$F5,$B2,$4D $F08E DEFB $B2,$4D,$AF,$F5,$B2,$4D,$B2,$4D $F096 DEFB $AF,$F5,$B2,$4D,$B2,$4D,$AF,$F5 $F09E DEFB $B2,$4D,$B2,$4D,$BD,$BD,$BF,$FD $F0A6 DEFB $A0,$05,$BF,$FD,$80,$01,$FF,$FF ; Left hand of large window @label=Bmp_WindowLeftLarge b$F0AE DEFB $3F,$FF,$FF,$20,$00,$00,$2F,$FF $F0B6 DEFB $FF,$2F,$F7,$F7,$2C,$08,$08,$2C $F0BE DEFB $08,$08,$2C,$88,$08,$2D,$48,$08 $F0C6 DEFB $2C,$88,$08,$2C,$08,$08,$2B,$F7 $F0CE DEFB $F7,$2C,$08,$08,$2C,$08,$08,$2C $F0D6 DEFB $08,$08,$2C,$08,$08,$2C,$08,$08 $F0DE DEFB $2C,$08,$08,$2C,$08,$08,$2B,$F7 $F0E6 DEFB $F7,$2C,$08,$08,$2C,$08,$08,$2C $F0EE DEFB $08,$88,$2C,$09,$48,$2C,$08,$88 $F0F6 DEFB $2C,$08,$08,$2C,$08,$08,$2F,$F7 $F0FE DEFB $F7,$2F,$FF,$FF,$28,$00,$00,$2F $F106 DEFB $FF,$FF,$20,$00,$00,$3F,$FF,$FF ; Left hand of medium window @label=Bmp_WindowLeftMid b$F10E DEFB $FF,$FF,$F8,$80,$00,$08,$BF,$FF $F116 DEFB $E8,$BF,$DF,$E8,$B0,$20,$68,$B0 $F11E DEFB $20,$68,$B0,$20,$68,$B0,$20,$68 $F126 DEFB $B0,$20,$68,$B0,$20,$68,$AF,$DF $F12E DEFB $A8,$B0,$20,$68,$B0,$20,$68,$B2 $F136 DEFB $20,$68,$B5,$20,$68,$B2,$20,$68 $F13E DEFB $B0,$20,$68,$B0,$20,$68,$AF,$DF $F146 DEFB $A8,$B0,$20,$68,$B0,$20,$68,$B0 $F14E DEFB $24,$68,$B0,$2A,$68,$B0,$24,$68 $F156 DEFB $B0,$20,$68,$B0,$20,$68,$BF,$DF $F15E DEFB $E8,$BF,$FF,$E8,$A0,$00,$28,$BF $F166 DEFB $FF,$E8,$80,$00,$08,$FF,$FF,$F8 ; Half of roundel @label=Bmp_Roundel b$F16E DEFB $00,$00,$00,$0E,$00,$31,$00,$C1 $F176 DEFB $01,$01,$01,$01,$06,$01,$09,$06 $F17E DEFB $08,$99,$10,$75,$10,$69,$20,$55 $F186 DEFB $20,$69,$20,$D5,$20,$A9,$1F,$55 $F18E DEFB $20,$FE,$20,$D5,$20,$A9,$20,$55 $F196 DEFB $10,$69,$10,$75,$08,$8E,$09,$03 $F19E DEFB $06,$01,$02,$01,$01,$01,$00,$C1 $F1A6 DEFB $00,$31,$00,$0E,$00,$00,$00,$00 ; Patterned glass window @label=Bmp_WindowGlass b$F1AE DEFB $7F,$FE,$92,$49,$92,$49,$92,$49 $F1B6 DEFB $7F,$FE,$FF,$FF,$80,$01,$BF,$FD $F1BE DEFB $BF,$FD,$B1,$8D,$B1,$8D,$B5,$8D $F1C6 DEFB $B1,$8D,$BF,$FD,$B1,$8D,$B5,$AD $F1CE DEFB $B1,$8D,$BF,$FD,$B1,$8D,$B1,$AD $F1D6 DEFB $B1,$8D,$BF,$FD,$B1,$8D,$B1,$8D $F1DE DEFB $B1,$AD,$B1,$8D,$BF,$FD,$BF,$FD $F1E6 DEFB $A0,$05,$BF,$FD,$80,$01,$FF,$FF ; Bitmap of sign. @label=Bmp_Sign b$F1EE DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 $F1F6 DEFB $F0,$07,$77,$77,$01,$DC,$00,$F0 $F1FE DEFB $F0,$04,$54,$52,$01,$54,$00,$F0 $F206 DEFB $E0,$05,$67,$72,$01,$94,$00,$70 $F20E DEFB $E0,$05,$54,$52,$01,$54,$00,$70 $F216 DEFB $F0,$05,$54,$52,$01,$54,$00,$F0 $F21E DEFB $F0,$07,$57,$52,$01,$5C,$00,$F0 $F226 DEFB $7F,$FF,$FF,$FF,$FF,$FF,$FF,$E0 ; Left hand side of Arch. @label=Bmp_ArchLeft b$F22E DEFB $81,$B0,$60,$81,$90,$61,$00,$88 $F236 DEFB $72,$00,$89,$93,$80,$86,$12,$C1 $F23E DEFB $1A,$09,$7F,$22,$08,$87,$C2,$08 $F246 DEFB $85,$E1,$1F,$81,$A1,$70,$81,$93 $F24E DEFB $80,$80,$8C,$00,$01,$98,$00,$00 $F256 DEFB $A0,$00,$C1,$C0,$00,$7F,$80,$00 ; Numbered door @label=Bmp_DoorNumbered b$F25E DEFB $00,$01,$FF,$80,$00,$7C,$FF,$00 $F266 DEFB $FF,$7E,$87,$03,$00,$C0,$81,$80 $F26E DEFB $01,$FF,$80,$01,$80,$00,$C3,$00 $F276 DEFB $01,$FF,$FF,$E7,$FF,$FF,$9F,$FF $F27E DEFB $FF,$FF,$F9,$8B,$00,$00,$00,$C1 $F286 DEFB $86,$77,$7B,$EE,$61,$86,$88,$84 $F28E DEFB $11,$61,$86,$88,$84,$11,$61,$FA $F296 DEFB $88,$84,$11,$5F,$86,$88,$84,$11 $F29E DEFB $61,$86,$88,$84,$11,$61,$86,$88 $F2A6 DEFB $84,$11,$61,$86,$8B,$FF,$D1,$61 $F2AE DEFB $FA,$8A,$00,$51,$61,$86,$8A,$E7 $F2B6 DEFB $51,$5F,$86,$8A,$85,$51,$61,$86 $F2BE DEFB $8A,$85,$51,$61,$86,$8A,$E7,$51 $F2C6 DEFB $61,$86,$8A,$A5,$51,$5F,$FA,$8A $F2CE DEFB $A5,$51,$61,$86,$8A,$E7,$51,$61 $F2D6 DEFB $86,$8A,$00,$51,$61,$86,$8B,$FF $F2DE DEFB $D1,$61,$86,$88,$84,$11,$61,$FA $F2E6 DEFB $88,$84,$11,$61,$86,$88,$84,$11 $F2EE DEFB $5F,$86,$88,$84,$11,$61,$86,$88 $F2F6 DEFB $84,$11,$61,$86,$88,$84,$11,$61 $F2FE DEFB $86,$88,$84,$11,$61,$86,$88,$BE $F306 DEFB $11,$61,$86,$88,$B6,$11,$5F,$FA $F30E DEFB $88,$BE,$11,$61,$86,$88,$84,$11 $F316 DEFB $61,$86,$88,$84,$11,$61,$86,$88 $F31E DEFB $84,$11,$61,$86,$88,$84,$11,$61 $F326 DEFB $86,$88,$84,$11,$5F,$FA,$88,$84 $F32E DEFB $11,$61,$86,$88,$84,$11,$61,$86 $F336 DEFB $88,$84,$11,$61,$86,$88,$84,$11 $F33E DEFB $61,$86,$88,$84,$11,$61,$86,$88 $F346 DEFB $84,$11,$61,$86,$88,$84,$11,$5F @label=Bmp_DoorNumberPanel $F34E DEFB $86,$88,$84,$11,$61,$FA,$88,$84 ; Door panel that holds number. $F356 DEFB $11,$61,$86,$88,$84,$11,$61,$86 $F35E DEFB $88,$84,$11,$61,$86,$88,$84,$11 $F366 DEFB $61,$86,$88,$84,$11,$61,$86,$F7 $F36E DEFB $7B,$EF,$61,$FB,$00,$00,$00,$DF ; Inner Door @label=Bmp_DoorInner b$F376 DEFB $7F,$F8,$FE,$3F,$FE,$80,$07,$83 $F37E DEFB $C0,$01,$80,$00,$92,$00,$01,$80 $F386 DEFB $00,$92,$00,$01,$80,$00,$BA,$00 $F38E DEFB $01,$80,$00,$92,$00,$01,$83,$FF $F396 DEFB $83,$FF,$81,$7F,$FF,$FF,$FF,$FE $F39E DEFB $83,$77,$7B,$EE,$81,$83,$88,$84 $F3A6 DEFB $11,$C1,$47,$88,$84,$11,$E3,$7F $F3AE DEFB $88,$84,$11,$BE,$45,$88,$84,$11 $F3B6 DEFB $E2,$83,$88,$84,$11,$C1,$83,$88 $F3BE DEFB $84,$11,$C1,$83,$8B,$FF,$D1,$C1 $F3C6 DEFB $83,$8A,$00,$51,$C3,$43,$8A,$FF $F3CE DEFB $51,$C2,$7F,$8A,$FF,$51,$FE,$45 $F3D6 DEFB $8A,$FF,$51,$A2,$83,$8A,$00,$51 $F3DE DEFB $C1,$83,$8A,$FF,$51,$C1,$83,$8A $F3E6 DEFB $FF,$51,$C1,$83,$8A,$FF,$51,$C1 $F3EE DEFB $43,$8A,$00,$51,$C1,$43,$8B,$FF $F3F6 DEFB $D1,$C1,$C3,$88,$84,$11,$A1,$87 $F3FE DEFB $88,$84,$11,$BE,$FD,$88,$84,$11 $F406 DEFB $A2,$87,$88,$84,$11,$C2,$83,$88 $F40E DEFB $84,$11,$C3,$83,$88,$84,$11,$C1 $F416 DEFB $43,$88,$84,$11,$C1,$45,$88,$84 $F41E DEFB $11,$C1,$7D,$88,$84,$11,$C2,$C5 $F426 DEFB $88,$84,$11,$E6,$83,$88,$84,$11 $F42E DEFB $BA,$83,$88,$84,$11,$C1,$83,$88 $F436 DEFB $84,$11,$C1,$83,$88,$84,$11,$C1 $F43E DEFB $43,$88,$84,$11,$C1,$7D,$88,$84 $F446 DEFB $11,$C1,$47,$88,$84,$11,$C1,$83 $F44E DEFB $88,$84,$11,$E2,$83,$88,$84,$11 $F456 DEFB $BE,$47,$88,$84,$11,$E2,$7D,$88 $F45E DEFB $84,$11,$C1,$45,$88,$84,$11,$C1 $F466 DEFB $C3,$88,$84,$11,$C1,$83,$88,$84 $F46E DEFB $11,$C7,$8F,$88,$84,$11,$C1,$93 $F476 DEFB $88,$84,$11,$B1,$83,$88,$84,$11 $F47E DEFB $C1,$83,$88,$84,$11,$C1,$83,$F7 $F486 DEFB $7B,$EF,$C7,$FE,$00,$00,$00,$7F ; Secret Door @label=Bmp_SecretDoor b$F48E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F496 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F49E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F4A6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F4AE DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Portal @label=Bmp_DoorPortal b$F4B6 DEFB $00,$7C,$FE,$1E,$00,$7C,$83,$01 $F4BE DEFB $F1,$BE,$87,$02,$00,$30,$D1,$85 $F4C6 DEFB $02,$00,$20,$51,$83,$02,$00,$20 $F4CE DEFB $81,$E1,$87,$00,$71,$81,$81,$FF $F4D6 DEFB $FF,$FF,$01,$81,$80,$00,$03,$87 $F4DE DEFB $81,$8F,$FF,$F1,$C1,$83,$3F,$FF $F4E6 DEFB $FC,$C1,$C7,$7F,$FF,$FE,$62,$7C $F4EE DEFB $7F,$FF,$FE,$7E,$46,$FF,$FF,$FF $F4F6 DEFB $22,$82,$FF,$FF,$FF,$41,$82,$FF $F4FE DEFB $FF,$FF,$41,$82,$FF,$FF,$FF,$41 $F506 DEFB $C2,$FF,$81,$FF,$41,$42,$FF,$00 $F50E DEFB $FF,$42,$7E,$FF,$00,$FF,$7E,$44 $F516 DEFB $FE,$00,$7F,$22,$82,$FE,$00,$7F $F51E DEFB $41,$82,$FE,$00,$7F,$41,$82,$FE $F526 DEFB $00,$7F,$41,$82,$FE,$00,$7F,$41 $F52E DEFB $82,$FE,$00,$7F,$42,$82,$FE,$00 $F536 DEFB $7F,$42,$84,$FE,$00,$7F,$43,$7C $F53E DEFB $FE,$00,$7F,$61,$44,$FE,$00,$7F $F546 DEFB $3F,$42,$FE,$00,$7F,$61,$C2,$FE $F54E DEFB $00,$7F,$41,$82,$FE,$00,$7F,$41 $F556 DEFB $82,$FE,$00,$7F,$42,$82,$FE,$00 $F55E DEFB $7F,$22,$42,$FE,$00,$7F,$3E,$66 $F566 DEFB $FE,$00,$7F,$23,$5C,$FE,$00,$7F $F56E DEFB $41,$82,$FF,$FF,$FF,$41,$82,$FF $F576 DEFB $FF,$FF,$41,$82,$FF,$FF,$FF,$41 $F57E DEFB $82,$FF,$FF,$FF,$42,$82,$FF,$FF $F586 DEFB $FF,$3E,$82,$FF,$FF,$FF,$62,$46 $F58E DEFB $FF,$FF,$FF,$41,$7C,$FF,$FF,$FF $F596 DEFB $41,$46,$FF,$FF,$FF,$62,$82,$FF $F59E DEFB $FF,$FF,$3E,$82,$FF,$FF,$FF,$22 $F5A6 DEFB $82,$FA,$30,$1F,$43,$E2,$FF,$FF $F5AE DEFB $FF,$41,$82,$E0,$06,$0F,$71,$8C $F5B6 DEFB $FF,$FF,$FF,$49,$82,$C0,$00,$07 $F5BE DEFB $41,$82,$F8,$00,$3F,$41,$E3,$80 $F5C6 DEFB $00,$01,$C1,$FE,$00,$00,$00,$7F ; Data block at F5CE b$F5CE DEFB $00,$00,$00,$00,$00,$07,$BF,$80 $F5D6 DEFB $00,$08,$40,$40,$00,$08,$40,$40 $F5DE DEFB $00,$08,$40,$60,$00,$08,$40,$20 $F5E6 DEFB $00,$08,$40,$20,$00,$07,$BF,$C0 $F5EE DEFB $00,$3F,$87,$FC,$00,$40,$68,$02 $F5F6 DEFB $00,$40,$18,$02,$00,$40,$18,$02 $F5FE DEFB $00,$40,$18,$02,$00,$40,$18,$02 $F606 DEFB $00,$3F,$F7,$FC,$00,$00,$00,$00 $F60E DEFB $00,$03,$F8,$00,$0F,$FA,$06,$7F $F616 DEFB $10,$06,$02,$81,$10,$06,$02,$81 $F61E DEFB $10,$06,$05,$81,$10,$06,$05,$01 $F626 DEFB $10,$05,$05,$01,$0F,$F9,$F8,$FF $F62E DEFB $0F,$FF,$0F,$F8,$11,$00,$90,$04 $F636 DEFB $11,$00,$90,$04,$11,$80,$90,$04 $F63E DEFB $11,$80,$90,$04,$11,$80,$90,$04 $F646 DEFB $0E,$7F,$0F,$F8,$00,$00,$00,$00 ; Left hand edge of wall. @label=Bmp_WallEdgeLeft b$F64E DEFB $FE,$80,$81,$80,$81,$80,$81,$C0 $F656 DEFB $81,$80,$83,$80,$7E,$E0,$83,$F0 $F65E DEFB $80,$08,$80,$0C,$80,$0C,$80,$08 $F666 DEFB $80,$08,$80,$0C,$80,$0C,$80,$08 $F66E DEFB $9B,$F0,$6F,$C0,$90,$20,$80,$30 $F676 DEFB $80,$30,$80,$30,$80,$20,$80,$20 $F67E DEFB $7F,$C0,$83,$00,$83,$80,$83,$00 $F686 DEFB $83,$00,$82,$00,$7C,$00,$8E,$00 $F68E DEFB $86,$00,$86,$00,$8F,$00,$7F,$80 $F696 DEFB $83,$00,$81,$80,$81,$80,$81,$80 $F69E DEFB $81,$80,$81,$80,$83,$80,$7F,$00 $F6A6 DEFB $8F,$00,$87,$00,$86,$00,$87,$80 $F6AE DEFB $8F,$E0,$7F,$F0,$80,$30,$80,$30 $F6B6 DEFB $80,$30,$80,$30,$80,$20,$80,$20 ; Data block at F6BE b$F6BE DEFB $80,$30,$7F,$F0,$83,$E0,$81,$C0 $F6C6 DEFB $81,$C0,$81,$C0,$83,$C0,$7F,$80 ; Left hand edge of wall when looking in. @label=Bmp_WallAngledLeft b$F6CE DEFB $FF,$81,$FF,$01,$FE,$01,$FE,$01 $F6D6 DEFB $FF,$01,$CB,$0F,$C1,$9E,$81,$F9 $F6DE DEFB $81,$81,$83,$01,$C7,$01,$FF,$03 $F6E6 DEFB $FE,$0E,$FF,$BE,$FF,$C3,$FF,$81 $F6EE DEFB $FF,$81,$FF,$81,$FF,$81,$FF,$C1 $F6F6 DEFB $FF,$C3,$FF,$E2,$FF,$FD,$FF,$E1 $F6FE DEFB $FF,$01,$F9,$81,$C1,$81,$C1,$81 $F706 DEFB $C0,$81,$E3,$C1,$C0,$81,$C0,$87 $F70E DEFB $E0,$8E,$C1,$F9,$C7,$C1,$FF,$81 $F716 DEFB $FF,$81,$FF,$01,$FF,$01,$FF,$03 $F71E DEFB $FF,$06,$FF,$1D,$FF,$B1,$FF,$C1 $F726 DEFB $FF,$01,$FF,$01,$FF,$01,$FF,$01 $F72E DEFB $FF,$03,$FF,$06,$FF,$0F,$FF,$B9 $F736 DEFB $FF,$F1,$FF,$81,$FF,$01,$FF,$01 $F73E DEFB $FF,$03,$F1,$17,$C5,$1D,$C1,$19 $F746 DEFB $C1,$31,$C3,$C1,$E3,$03,$C7,$83 $F74E DEFB $FD,$06,$F9,$04,$E1,$88,$A1,$90 $F756 DEFB $83,$A0,$C1,$C0,$C1,$00,$C3,$00 $F75E DEFB $8E,$00,$CC,$00,$98,$00,$B0,$00 $F766 DEFB $E0,$00,$C0,$00,$80,$00,$00,$00 ; [9E] Left Half of shopkeeper. @label=Bmp_ShopKeeperHalf b$F76E DEFB $00,$00,$00,$07,$00,$0F,$00,$0C $F776 DEFB $00,$18,$00,$1E,$00,$18,$00,$1D $F77E DEFB $00,$3E,$00,$E4,$01,$23,$01,$30 $F786 DEFB $02,$30,$02,$30,$04,$78,$06,$6E $F78E DEFB $09,$4B,$08,$EA,$10,$EA,$13,$6A $F796 DEFB $16,$6A,$24,$6A,$E4,$EA,$88,$CA $F79E DEFB $FF,$FF,$00,$00,$00,$00,$FF,$FF $F7A6 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00 $F7AE DEFB $FF,$FF,$00,$00,$C3,$C3,$E7,$E7 $F7B6 DEFB $5E,$5E,$3C,$3C,$7A,$7A,$E7,$E7 $F7BE DEFB $C3,$C3,$00,$00,$FF,$FF,$00,$00 $F7C6 DEFB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF $F7CE DEFB $FF,$80,$80,$FF,$40,$7F,$2A,$2A $F7D6 DEFB $2A,$2A,$2A,$2A,$2A,$2A,$2A,$2A $F7DE DEFB $2A,$2A,$2A,$2A,$2A,$2A,$2A,$2A $F7E6 DEFB $2A,$2A,$2A,$2A,$2A,$2A,$2A,$2A $F7EE DEFB $2A,$2A,$2A,$2A,$2A,$2A,$2A,$2A $F7F6 DEFB $2A,$2A,$2A,$2A,$2A,$2A,$2A,$2A $F7FE DEFB $2A,$7F,$40,$40,$FF,$80,$80,$FF ; Data block at F806 @label=_Bmp_Fire1 b$F806 DEFB $0C,$2C,$3D,$7D,$77,$FF,$DD,$F7 @label=_Bmp_Fire2 $F80E DEFB $30,$34,$AC,$AE,$FE,$BB,$EF,$FF ; [A4] Left handside of counter. @label=Bmp_CounterLeft b$F816 DEFB $FF,$FF,$80,$00,$80,$00,$FF,$FF $F81E DEFB $1F,$FF,$0F,$FF,$0F,$7F,$03,$E0 $F826 DEFB $03,$CF,$03,$D8,$03,$D3,$03,$D7 $F82E DEFB $03,$D6,$03,$D6,$03,$D6,$03,$D7 $F836 DEFB $03,$D3,$03,$D8,$03,$CF,$03,$E0 $F83E DEFB $07,$7F,$07,$FF,$0F,$FF,$0F,$FF ; [A5] Centre of counter. @label=Bmp_CounterCentre b$F846 DEFB $FF,$00,$00,$FF,$FF,$FF,$FF,$00 $F84E DEFB $FF,$00,$C3,$E7,$5E,$3C,$7A,$E7 $F856 DEFB $C3,$00,$FF,$00,$FF,$FF,$FF,$FF ; [A6] Left hand of Shelf. @label=Bmp_ShelfLeft b$F85E DEFB $FF,$FF,$80,$00,$80,$00,$FF,$FF $F866 DEFB $1F,$FF,$00,$00,$00,$00,$00,$00 $F86E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F876 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F87E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F886 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F88E DEFB $FF,$00,$00,$FF,$FF,$FB,$7E,$34 $F896 DEFB $3C,$34,$34,$3C,$18,$18,$3C,$18 $F89E DEFB $3C,$34,$34,$3C,$7E,$E7,$E7,$C3 ; Bitmap of chair. @label=Bmp_Chair1 b$F8A6 DEFB $00,$18,$00,$00,$2C,$00,$18,$18 $F8AE DEFB $18,$34,$7E,$2C,$3C,$81,$3C,$19 $F8B6 DEFB $00,$98,$1A,$3C,$58,$1C,$6A,$38 $F8BE DEFB $18,$D5,$18,$19,$AA,$98,$19,$55 $F8C6 DEFB $98,$19,$AA,$98,$19,$55,$98,$19 $F8CE DEFB $AA,$98,$19,$55,$98,$19,$AA,$98 $F8D6 DEFB $19,$55,$98,$3C,$EB,$3C,$7E,$34 $F8DE DEFB $7E,$7E,$3C,$7E,$7E,$00,$7E,$7B $F8E6 DEFB $E7,$DE,$7E,$BA,$FE,$35,$55,$2C $F8EE DEFB $3F,$FF,$FC,$34,$00,$2C,$37,$FF $F8F6 DEFB $EC,$3F,$FF,$FC,$18,$00,$18,$18 $F8FE DEFB $00,$18,$3C,$00,$3C,$18,$00,$18 $F906 DEFB $3C,$00,$3C,$37,$FF,$EC,$36,$00 $F90E DEFB $6C,$3F,$FF,$FC,$3C,$00,$3C,$3C $F916 DEFB $00,$3C,$18,$00,$18,$18,$00,$18 ; Data block at F91E @label=Bmp_Blank b$F91E DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at F926 @label=Bmp_BrickSingle b$F926 DEFB $00,$00,$00,$FE,$01,$01,$01,$01 $F92E DEFB $03,$01,$02,$01,$02,$01,$01,$FE $F936 DEFB $1F,$F0,$20,$08,$20,$08,$20,$08 $F93E DEFB $20,$08,$20,$08,$1F,$F0,$00,$00 ; Data block at F946 @label=Bmp_Shrub b$F946 DEFB $08,$00,$22,$00,$4A,$80,$B4,$00 $F94E DEFB $28,$00,$68,$40,$09,$A8,$1B,$AC $F956 DEFB $0D,$50,$07,$B8,$06,$90,$2A,$44 $F95E DEFB $51,$A2,$AC,$48,$2D,$70,$6B,$B4 $F966 DEFB $0D,$50,$07,$B8,$06,$90,$2A,$44 $F96E DEFB $51,$A2,$AC,$48,$2D,$70,$6B,$B4 $F976 DEFB $35,$68,$08,$D4,$29,$D0,$14,$40 $F97E DEFB $19,$28,$2B,$70,$0D,$20,$0E,$54 $F986 DEFB $54,$A4,$81,$88,$15,$C0,$4B,$90 $F98E DEFB $07,$C0,$05,$E0,$03,$80,$01,$00 ; Data block at F996 @label=Bmp_BlankAgain b$F996 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at F99E @label=Bmp_FlagA b$F99E DEFB $FF,$81,$BD,$A5,$BD,$A5,$A5,$81 $F9A6 DEFB $FF,$80,$80,$80,$80,$80,$80,$80 $F9AE DEFB $80,$80,$80,$80,$80,$80,$00,$00 $F9B6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F9BE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F9C6 DEFB $FF,$81,$BD,$A5,$BD,$A5,$BD,$81 $F9CE DEFB $FF,$80,$80,$80,$80,$80,$80,$80 $F9D6 DEFB $80,$80,$80,$80,$80,$80,$00,$00 $F9DE DEFB $00,$00,$00,$00,$00,$00,$00,$00 $F9E6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 ; Data block at F9EE @label=Bmp_Brick b$F9EE DEFB $00,$00,$00,$00,$7F,$00,$3F,$E0 $F9F6 DEFB $80,$80,$40,$10,$80,$80,$40,$10 $F9FE DEFB $80,$C0,$40,$10,$80,$40,$40,$10 $FA06 DEFB $80,$40,$40,$10,$7F,$80,$3F,$E0 $FA0E DEFB $0F,$F8,$3F,$FC,$10,$04,$44,$02 $FA16 DEFB $10,$04,$44,$02,$10,$04,$46,$02 $FA1E DEFB $10,$04,$46,$02,$10,$04,$46,$02 $FA26 DEFB $0F,$F8,$39,$FC,$00,$00,$00,$00 $FA2E DEFB $00,$00,$00,$00,$01,$FD,$FC,$E0 $FA36 DEFB $02,$02,$03,$10,$02,$02,$03,$10 $FA3E DEFB $06,$02,$03,$10,$04,$02,$01,$10 $FA46 DEFB $04,$02,$01,$10,$03,$FD,$FF,$E0 $FA4E DEFB $3F,$E0,$7F,$C0,$40,$10,$80,$20 $FA56 DEFB $40,$10,$80,$20,$40,$10,$C0,$20 $FA5E DEFB $40,$10,$60,$20,$40,$10,$40,$20 $FA66 DEFB $3F,$E0,$7F,$C0,$00,$00,$00,$00 $FA6E DEFB $FF,$FF,$FF,$BF,$FF,$FD,$DF,$FF $FA76 DEFB $FB,$EF,$FF,$F7,$F7,$FF,$EF,$FB $FA7E DEFB $FF,$DF,$FF,$FF,$FF,$FE,$00,$7F $FA86 DEFB $FE,$00,$7F,$FE,$00,$7F,$FE,$00 $FA8E DEFB $7F,$FE,$00,$7F,$FE,$00,$7F,$FE $FA96 DEFB $00,$7F,$FE,$00,$7F,$FE,$00,$7F $FA9E DEFB $FE,$00,$7F,$FF,$FF,$FF,$FD,$55 $FAA6 DEFB $5F,$FA,$AA,$AF,$F5,$55,$57,$EA $FAAE DEFB $AA,$AB,$D5,$55,$55,$FF,$FF,$FF $FAB6 DEFB $FF,$00,$00,$FF,$00,$00,$00,$00 $FABE DEFB $FF,$80,$80,$FF,$11,$1F,$0A,$0E $FAC6 DEFB $00,$20,$23,$71,$53,$73,$7F,$7D $FACE DEFB $FF,$00,$00,$FF,$00,$00,$00,$00 ; [C6] Torch. @label=Bmp_Torch b$FAD6 DEFB $FF,$FF,$FD,$FD,$FB,$7E,$3C,$3C $FADE DEFB $3C,$3C,$3C,$38,$3C,$1C,$1C,$18 $FAE6 DEFB $38,$38,$6D,$6C,$C2,$86,$82,$82 $FAEE DEFB $82,$82,$82,$82,$45,$44,$39,$38 $FAF6 DEFB $03,$80,$04,$40,$08,$20,$08,$20 $FAFE DEFB $08,$20,$08,$20,$04,$40,$03,$80 $FB06 DEFB $00,$00,$0F,$F8,$10,$04,$10,$04 $FB0E DEFB $10,$04,$10,$04,$10,$04,$0F,$F8 $FB16 DEFB $7F,$F8,$80,$44,$80,$44,$80,$C4 $FB1E DEFB $80,$C4,$80,$C4,$7F,$38,$00,$00 ; (C9) Bitmap of compass @label=Bmp_Compass b$FB26 DEFB $00,$00,$18,$00,$00,$00,$00,$3C $FB2E DEFB $00,$00,$00,$00,$3C,$00,$00,$00 $FB36 DEFB $00,$18,$00,$00,$00,$00,$18,$00 $FB3E DEFB $00,$00,$00,$7E,$00,$00,$03,$80 $FB46 DEFB $FF,$01,$C0,$03,$80,$7F,$01,$C0 $FB4E DEFB $03,$80,$00,$01,$C0,$00,$40,$00 $FB56 DEFB $02,$00,$00,$20,$3C,$04,$00,$00 $FB5E DEFB $10,$22,$08,$00,$00,$08,$22,$10 $FB66 DEFB $00,$00,$04,$22,$20,$00,$00,$00 $FB6E DEFB $22,$00,$00,$00,$00,$00,$00,$00 $FB76 DEFB $03,$00,$00,$00,$C0,$07,$00,$08 $FB7E DEFB $00,$E0,$67,$22,$1C,$1C,$E6,$FF $FB86 DEFB $2A,$3E,$22,$FF,$FF,$2A,$08,$3C $FB8E DEFB $FF,$27,$2A,$08,$20,$E4,$07,$14 $FB96 DEFB $08,$1E,$E0,$03,$00,$08,$00,$C0 $FB9E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FBA6 DEFB $00,$00,$00,$04,$1C,$20,$00,$00 $FBAE DEFB $08,$20,$10,$00,$00,$10,$1C,$08 $FBB6 DEFB $00,$00,$20,$02,$04,$00,$00,$40 $FBBE DEFB $3C,$02,$00,$03,$80,$00,$01,$C0 $FBC6 DEFB $03,$80,$FF,$01,$C0,$03,$80,$FF $FBCE DEFB $01,$C0,$00,$00,$7E,$00,$00,$00 $FBD6 DEFB $00,$18,$00,$00,$00,$00,$18,$00 $FBDE DEFB $00,$00,$00,$3C,$00,$00,$00,$00 $FBE6 DEFB $3C,$00,$00,$00,$00,$18,$00,$00 ; Bitmap of road leading into screen. @label=Bmp_JunctionIn b$FBEE DEFB $00,$00,$00,$00,$00,$00,$08,$10 $FBF6 DEFB $30,$0C,$50,$0A,$60,$06,$C0,$03 ; Bitmap of road leading into screen. @label=Bmp_RoadIn b$FBFE DEFB $00,$40 @label=Charset_Start $FC00 DEFB $02,$00,$01,$80,$01,$80,$05,$00 ; No bitmaps here, but start address is here to allow for char($20) ; onwards. $FC08 DEFB $00,$A0,$03,$00,$00,$C0,$12,$00 $FC10 DEFB $00,$48,$14,$00,$00,$28,$0C,$00 $FC18 DEFB $00,$30,$08,$00,$00,$10 ; Bitmap of road leading out of screen. @label=BMP_JunctionOut b$FC1E DEFB $00,$00,$00,$00,$08,$00,$00,$10 $FC26 DEFB $D0,$00,$00,$0B,$A0,$00,$00,$05 $FC2E DEFB $20,$00,$00,$04,$60,$00,$00,$06 $FC36 DEFB $80,$00,$00,$01,$80,$00,$00,$01 ; Bitmap of road edge. @label=BMP_RoadEdgeTop b$FC3E DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FC46 DEFB $00,$00,$00,$00,$AA,$49,$47,$6E ; Bitmap of road edge. @label=BMP_RoadEdgeBottom b$FC4E DEFB $00,$00,$00,$00,$00,$00,$AA,$49 $FC56 DEFB $47,$6E,$00,$00,$00,$00,$00,$00 ; (D0) Vertical border ornament @label=Bmp_BorderOrnamentV b$FC5E DEFB $1C,$22,$49,$5D,$49,$22,$1C,$00 $FC66 DEFB $00,$61,$B3,$A7,$8B,$73,$07,$07 $FC6E DEFB $0F,$1B,$33,$63,$63,$63,$63,$63 $FC76 DEFB $63,$77,$3A,$1C,$1C,$3A,$77,$63 $FC7E DEFB $63,$63,$63,$63,$63,$33,$1B,$0F $FC86 DEFB $07,$07,$73,$8B,$A7,$B3,$61,$01 ; (D1) Horizontal border ornament @label=BmpBorderOrnamentH b$FC8E DEFB $FF,$FF,$F0,$FC,$3F,$F0,$FC,$3F $FC96 DEFB $F0,$FC,$3F,$F0,$FC,$3F,$F0,$FC $FC9E DEFB $1F,$FF,$FE,$7F,$FF,$F9,$FE,$7F $FCA6 DEFB $F9,$FE,$7F,$F9,$FE,$7F,$F9,$FE $FCAE DEFB $7F,$F9,$FE,$7F,$FF,$FC,$21,$E0 $FCB6 DEFB $17,$85,$E0,$17,$85,$E0,$17,$85 $FCBE DEFB $E0,$17,$85,$E0,$17,$85,$F0,$0F $FCC6 DEFB $08,$10,$70,$0F,$03,$C0,$0F,$03 $FCCE DEFB $C0,$0F,$03,$C0,$0F,$03,$C0,$0F $FCD6 DEFB $03,$E0,$1C,$10,$48,$38,$1E,$87 $FCDE DEFB $A0,$1E,$87,$A0,$1E,$87,$A0,$1E $FCE6 DEFB $87,$A0,$1E,$87,$D0,$38,$24,$C8 $FCEE DEFB $1F,$F9,$FE,$7F,$F9,$FE,$7F,$F9 $FCF6 DEFB $FE,$7F,$F9,$FE,$7F,$F9,$FF,$3F $FCFE DEFB $F0,$26,$F8,$0F,$F0,$FC,$3F,$F0 $FD06 DEFB $FC,$3F,$F0,$FC,$3F,$F0,$FC,$3F $FD0E DEFB $F0,$FC,$1F,$E0,$3E,$70,$00,$00 $FD16 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FD1E DEFB $00,$00,$00,$00,$00,$00,$00,$1C ; Digit character set. ; ; Each digit takes up a nibble and requires copying and shifting when bein used. @label=Bmp_DigitSet b$FD26 DEFB $00,$00,$00,$00,$00,$72,$77,$47 $FD2E DEFB $77,$77,$56,$51,$44,$45,$55,$52 $FD36 DEFB $11,$54,$41,$55,$52,$77,$57,$71 $FD3E DEFB $77,$52,$41,$71,$51,$51,$52,$41 $FD46 DEFB $15,$51,$51,$77,$77,$17,$71,$77 ; Identifier used for people @label=Bmp_PersonLabel b$FD4E DEFB $FF,$FF,$FF,$FF,$DE,$7B,$E0,$07 $FD56 DEFB $E0,$07,$E3,$C7,$E2,$07,$C2,$03 $FD5E DEFB $C3,$83,$E2,$07,$E2,$07,$E3,$C7 $FD66 DEFB $E0,$07,$DE,$7B,$FF,$FF,$FF,$FF ; Bitmaps 8x8 bitmaps and letters. @label=Bmp_LettersThin b$FD6E DEFB $00,$77,$55,$77,$55,$55,$57,$00 $FD76 DEFB $00,$77,$45,$45,$45,$45,$77,$00 $FD7E DEFB $00,$77,$44,$77,$44,$44,$74,$00 $FD86 DEFB $00,$75,$45,$57,$55,$55,$75,$00 $FD8E DEFB $00,$77,$21,$21,$25,$25,$77,$00 $FD96 DEFB $00,$54,$74,$64,$74,$54,$57,$00 $FD9E DEFB $00,$75,$77,$57,$57,$55,$55,$00 $FDA6 DEFB $00,$77,$55,$57,$54,$54,$74,$00 $FDAE DEFB $00,$77,$55,$56,$55,$75,$75,$00 $FDB6 DEFB $00,$77,$42,$72,$12,$12,$72,$00 $FDBE DEFB $00,$55,$55,$55,$55,$57,$72,$00 $FDC6 DEFB $00,$55,$55,$52,$55,$75,$75,$00 $FDCE DEFB $00,$57,$51,$77,$24,$24,$27,$00 $FDD6 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FDDE DEFB $31,$D4 $FDE0 DEFB $00,$00,$08,$08,$3E,$08,$08,$08 $FDE8 DEFB $1C,$5D,$6B,$36,$1C,$1C,$36,$63 $FDF0 DEFB $BA,$44,$7C,$82,$FE,$82,$7C,$38 $FDF8 DEFB $00,$00,$1C,$22,$22,$36,$77,$00 $FE00 DEFB $00,$E0,$AC,$A4,$E7,$85,$85,$87 $FE08 DEFB $00,$00,$1C,$22,$C9,$22,$1C,$00 $FE10 DEFB $00,$00,$1C,$22,$22,$22,$1C,$00 $FE18 DEFB $00,$00,$4F,$E2,$44,$0F,$00,$00 $FE20 DEFB $00,$08,$1C,$2A,$08,$08,$08,$00 $FE28 DEFB $00,$00,$E7,$18,$18,$E7,$00,$00 $FE30 DEFB $E7,$84,$87,$E0,$20,$24,$24,$E7 $FE38 DEFB $00,$3F,$00,$00,$08,$08,$08,$0F $FE40 DEFB $00,$A7,$E5,$E6,$A5,$A5,$A5,$00 $FE48 DEFB $FF,$BD,$A5,$BD,$A1,$A1,$42,$3C $FE50 DEFB $FF,$B9,$A5,$A5,$A5,$B9,$42,$3C $FE58 DEFB $FF,$BD,$A5,$BD,$A5,$BD,$42,$3C $FE60 DEFB $FF,$A5,$BD,$BD,$A5,$A5,$42,$3C $FE68 DEFB $00,$8E,$84,$84,$A4,$E4,$24,$00 $FE70 DEFB $24,$24,$FF,$24,$24,$FF,$24,$24 $FE78 DEFB $08,$18,$28,$48,$88,$48,$28,$18 $FE80 DEFB $E7,$82,$82,$E2,$22,$22,$22,$E2 $FE88 DEFB $00,$00,$00,$18,$18,$00,$00,$00 $FE90 DEFB $C0,$C0,$00,$00,$00,$00,$03,$03 $FE98 DEFB $C0,$C0,$00,$18,$18,$00,$03,$03 $FEA0 DEFB $C3,$C3,$00,$00,$00,$00,$C3,$C3 $FEA8 DEFB $C3,$C3,$00,$18,$18,$00,$C3,$C3 $FEB0 DEFB $C3,$C3,$00,$C3,$C3,$00,$C3,$C3 $FEB8 DEFB $00,$00,$00,$18,$18,$00,$00,$00 $FEC0 DEFB $BA,$1D,$BB,$1F,$BA,$19,$B8,$F5 $FEC8 DEFB $AA,$55,$BE,$5D,$FF,$54,$A0,$5D $FED0 DEFB $FF,$B0,$75,$B8,$5C,$B8,$5C,$BA $FED8 DEFB $59,$BA,$74,$EE,$71,$FA,$71,$BB $FEE0 DEFB $5D,$A8,$01,$BE,$77,$A2,$7F,$BA $FEE8 DEFB $75,$FA,$7F,$A2,$77,$A2,$7F,$AA $FEF0 DEFB $55,$FE,$7F,$B8,$5D,$BE,$77,$BA $FEF8 DEFB $A8,$59,$BA,$1D,$FF,$7F,$BA,$5D $FF00 DEFB $4D,$9E,$5F,$B8,$5D,$F8,$F5,$EA $FF08 DEFB $00,$00,$18,$24,$3C,$44,$3C,$00 $FF10 DEFB $00,$60,$20,$3C,$22,$22,$3C,$00 $FF18 DEFB $00,$00,$18,$24,$60,$24,$18,$00 $FF20 DEFB $00,$06,$04,$3C,$44,$44,$3C,$00 $FF28 DEFB $00,$00,$38,$44,$FC,$40,$38,$00 $FF30 DEFB $00,$0C,$10,$18,$10,$10,$10,$00 $FF38 DEFB $00,$00,$38,$46,$44,$3C,$44,$38 $FF40 DEFB $60,$40,$40,$78,$44,$44,$4C,$00 $FF48 DEFB $10,$20,$00,$30,$10,$10,$10,$10 $FF50 DEFB $00,$00,$0C,$04,$04,$0C,$24,$18 $FF58 DEFB $60,$20,$28,$30,$30,$28,$24,$00 $FF60 DEFB $00,$10,$10,$30,$10,$10,$1C,$00 $FF68 DEFB $00,$00,$E8,$54,$54,$54,$56,$00 $FF70 DEFB $00,$00,$F8,$44,$44,$4C,$48,$00 $FF78 DEFB $00,$00,$38,$44,$C6,$44,$38,$00 $FF80 DEFB $00,$00,$78,$44,$64,$78,$40,$60 $FF88 DEFB $00,$00,$3C,$46,$44,$3C,$04,$0E $FF90 DEFB $00,$00,$1C,$64,$24,$38,$24,$00 $FF98 DEFB $00,$04,$3C,$40,$7C,$04,$78,$00 $FFA0 DEFB $3C,$08,$10,$20,$20,$20,$18,$00 $FFA8 DEFB $00,$00,$64,$24,$44,$44,$38,$00 $FFB0 DEFB $00,$00,$4C,$44,$28,$38,$10,$00 $FFB8 DEFB $00,$00,$C4,$54,$54,$54,$68,$00 $FFC0 DEFB $00,$00,$44,$38,$10,$38,$44,$00 $FFC8 DEFB $00,$00,$44,$46,$44,$3C,$44,$38 $FFD0 DEFB $00,$40,$7C,$08,$10,$30,$7C,$00 $FFD8 DEFB $00,$00,$18,$24,$3C,$44,$3C,$00 ; [7C] $FFE0 DEFB $00,$00,$00,$00,$00,$00,$00,$00 $FFE8 DEFB $FF,$FD,$F9,$B3,$C7,$EF,$FF,$FF $FFF0 DEFB $00,$E4,$84,$E5,$25,$27,$E1,$00 $FFF8 DEFB $3C,$42,$99,$A1,$A1,$99,$42,$3C