| Chase H.Q. | Routines |
| Prev: 8F5F | Up: Map | Next: 916C |
|
This gets used on stage 3 when drawing the overhead structure graphics.
sampled IX=$EAB2 DE=$6F26 HL=$9052 BC=$1420 (when in stage3!)
|
||||
| draw_overhead | 9052 | PUSH IX | Preserve | |
| 9054 | PUSH DE | |||
| 9055 | PUSH BC | |||
| 9056 | LD A,(IX+$01) | A = IX[1] | ||
| 9059 | AND A | Set flags | ||
| 905A | CALL Z,draw_stretchy_object_left | |||
| 905D | POP BC | Restore (restore DE to HL) | ||
| 905E | POP HL | |||
| 905F | POP IX | |||
| 9061 | INC HL | HL++ | ||
| 9062 | LD E,(HL) | DE = wordat(HL); HL++ | ||
| 9063 | INC HL | |||
| 9064 | LD D,(HL) | |||
| 9065 | INC DE | DE += 2 | ||
| 9066 | INC DE | |||
| 9067 | LD A,($A23F) | A = fast_counter & $E0 | ||
| 906A | AND $E0 | |||
| 906C | LD L,A | L = A | ||
| 906D | RRC L | |||
| 906F | RRC L | |||
| 9071 | SUB L | A -= L | ||
| 9072 | RRC L | |||
| 9074 | RRC L | |||
| 9076 | SUB L | A -= L | ||
| 9077 | ADD A,B | A += B | ||
| 9078 | LD L,A | L = A | ||
| 9079 | LD H,$E6 | H = $E6 | ||
| 907B | LD A,(IY+$00) | A = IY[0] - IY[$35] | ||
| 907E | SUB (IY+$35) | |||
| 9081 | LD C,A | C = A | ||
| 9082 | LD A,(HL) | A = *HL | ||
| 9083 | LD L,A | L = A | ||
| 9084 | SRL A | SRL A | ||
| 9086 | ADD A,L | A += L | ||
| 9087 | SUB C | A -= C | ||
| 9088 | LD ($90F2),A | Self modify 'SUB x' at $90F1 | ||
| 908B | LD A,B | A = B - 1 | ||
| 908C | DEC A | |||
| 908D | CP $09 | |||
| 908F | JR C,do_9093 | |||
| 9091 | LD A,$09 | A = $09 | ||
| do_9093 | 9093 | LD B,A | B = A | |
| 9094 | ADD A,A | HL = A * 2 + DE | ||
| 9095 | LD L,A | |||
| 9096 | LD H,$00 | |||
| 9098 | ADD HL,DE | |||
| 9099 | LD C,(HL) | C = *HL | ||
| 909A | LD A,B | A = B | ||
| 909B | ADD A,A | HL = ((A * 2) + B + 20) + DE | ||
| 909C | ADD A,B | |||
| 909D | ADD A,$14 | |||
| 909F | LD L,A | |||
| 90A0 | LD H,$00 | |||
| 90A2 | ADD HL,DE | |||
| 90A3 | LD D,$01 | D = 1 | ||
| 90A5 | LD A,(IX+$01) | A = IX[1] | ||
| 90A8 | AND A | Set flags | ||
| 90A9 | JP M,do_90c4 | |||
| 90AC | RET NZ | |||
| 90AD | LD A,(IX+$00) | A = IX[0] + $18 - C | ||
| 90B0 | ADD A,$18 | |||
| 90B2 | SUB C | |||
| 90B3 | JR C,do_90c4 | |||
| 90B5 | SUB $08 | A -= 8 | ||
| 90B7 | JR C,do_90c4 | |||
| 90B9 | CP $08 | |||
| 90BB | JR C,do_90c4 | |||
| 90BD | SRL A | A >>= 3 | ||
| 90BF | SRL A | |||
| 90C1 | SRL A | |||
| 90C3 | LD D,A | D = A | ||
| do_90c4 | 90C4 | DEC IX | IX -= 2 | |
| 90C6 | DEC IX | |||
| 90C8 | LD E,$1F | E = $1F | ||
| 90CA | LD A,(IX+$01) | A = IX[1] | ||
| 90CD | AND A | Set flags | ||
| 90CE | RET M | |||
| 90CF | JR NZ,do_90e4 | |||
| 90D1 | LD A,(IX+$00) | A = IX[0] + C | ||
| 90D4 | ADD A,C | |||
| 90D5 | JR C,do_90e4 | |||
| 90D7 | JR Z,do_90e4 | |||
| 90D9 | CP $F7 | |||
| 90DB | JR NC,do_90e4 | |||
| 90DD | SRL A | A >>= 3 | ||
| 90DF | SRL A | |||
| 90E1 | SRL A | |||
| 90E3 | LD E,A | E = A | ||
| do_90e4 | 90E4 | LD C,D | C = D | |
| 90E5 | LD A,E | A = E * 2 - C | ||
| 90E6 | SUB C | |||
| 90E7 | ADD A,A | |||
| 90E8 | CPL | A = ~A + $3D | ||
| 90E9 | ADD A,$3D | |||
| 90EB | LD ($9116),A | *$9116 = A -- Self modify jump table target | ||
| 90EE | LD A,(IY+$35) | A = IY[$35] | ||
| 90F1 | SUB $00 | A -= <self modified> -- self modified by $9088 | ||
| 90F3 | RET M | |||
| 90F4 | PUSH AF | |||
| 90F5 | INC A | A++ | ||
| 90F6 | LD B,(HL) | B = *HL | ||
| 90F7 | SUB B | A -= B | ||
| 90F8 | JR NC,do_90fc | |||
| 90FA | ADD A,B | A += B | ||
| 90FB | LD B,A | B = A | ||
| do_90fc | 90FC | INC HL | HL++ | |
| 90FD | LD E,(HL) | DE = wordat(HL); HL++ | ||
| 90FE | INC HL | |||
| 90FF | LD D,(HL) | |||
| 9100 | POP AF | |||
| 9101 | LD L,A | L = A | ||
| 9102 | AND $0F | H = (A & $0F) + $F0 | ||
| 9104 | ADD A,$F0 | |||
| 9106 | LD H,A | |||
| 9107 | LD A,L | L = (L & $70) * 2 + C | ||
| 9108 | AND $70 | |||
| 910A | ADD A,A | |||
| 910B | ADD A,C | |||
| 910C | LD L,A | |||
| 910D | JR do_9113 | |||
| do_continue | 910F | INC DE | DE++ | |
| 9110 | DJNZ do_9113 | |||
| 9112 | RET | Return | ||
| do_9113 | 9113 | LD A,(DE) | A = *DE | |
| 9114 | LD C,L | C = L | ||
| do_9115 | 9115 | JR do_9115 | Self modified | |
| 9117 | LD (HL),A | *HL++ = A -- 28 times | ||
| 9118 | INC L | |||
| 9119 | LD (HL),A | |||
| 911A | INC L | |||
| 911B | LD (HL),A | |||
| 911C | INC L | |||
| 911D | LD (HL),A | |||
| 911E | INC L | |||
| 911F | LD (HL),A | |||
| 9120 | INC L | |||
| 9121 | LD (HL),A | |||
| 9122 | INC L | |||
| 9123 | LD (HL),A | |||
| 9124 | INC L | |||
| 9125 | LD (HL),A | |||
| 9126 | INC L | |||
| 9127 | LD (HL),A | |||
| 9128 | INC L | |||
| 9129 | LD (HL),A | |||
| 912A | INC L | |||
| 912B | LD (HL),A | |||
| 912C | INC L | |||
| 912D | LD (HL),A | |||
| 912E | INC L | |||
| 912F | LD (HL),A | |||
| 9130 | INC L | |||
| 9131 | LD (HL),A | |||
| 9132 | INC L | |||
| 9133 | LD (HL),A | |||
| 9134 | INC L | |||
| 9135 | LD (HL),A | |||
| 9136 | INC L | |||
| 9137 | LD (HL),A | |||
| 9138 | INC L | |||
| 9139 | LD (HL),A | |||
| 913A | INC L | |||
| 913B | LD (HL),A | |||
| 913C | INC L | |||
| 913D | LD (HL),A | |||
| 913E | INC L | |||
| 913F | LD (HL),A | |||
| 9140 | INC L | |||
| 9141 | LD (HL),A | |||
| 9142 | INC L | |||
| 9143 | LD (HL),A | |||
| 9144 | INC L | |||
| 9145 | LD (HL),A | |||
| 9146 | INC L | |||
| 9147 | LD (HL),A | |||
| 9148 | INC L | |||
| 9149 | LD (HL),A | |||
| 914A | INC L | |||
| 914B | LD (HL),A | |||
| 914C | INC L | |||
| 914D | LD (HL),A | |||
| 914E | INC L | |||
| 914F | LD (HL),A | |||
| 9150 | INC L | |||
| 9151 | LD (HL),A | *HL = A | ||
| 9152 | LD L,C | L = C -- restore | ||
|
Move to next scanline.
|
||||
| 9153 | LD A,H | Save for checking in a moment | ||
| 9154 | DEC H | Move to next scanline (visually upwards) | ||
| 9155 | AND $0F | Would it have rolled over into the top nibble? | ||
| 9157 | JP NZ,do_continue | No - continue | ||
|
It rolled over.
|
||||
| 915A | LD A,H | Put back the bit stolen by rollover | ||
| 915B | ADD A,$10 | |||
| 915D | LD H,A | |||
| 915E | LD A,L | Move to next chunk of 16 scanlines | ||
| 915F | SUB $20 | |||
| 9161 | LD L,A | |||
| 9162 | JP NC,do_continue | Continue if it didn't roll over | ||
| 9165 | LD A,H | Otherwise move to the next chunk of 128 scanlines (would put us outside the back buffer) | ||
| 9166 | SUB $10 | |||
| 9168 | LD H,A | |||
| 9169 | JP do_continue | Loop | ||
| Prev: 8F5F | Up: Map | Next: 916C |