| Chase H.Q. | Routines |
| Prev: C0E1 | Up: Map | Next: C2E7 |
|
Called by $8F82 etc. being self modified.
|
||||
| C15B | LD A,IYl | A = IY.low | ||
| C15D | CP $00 | Compare to <self modified> | ||
| C15F | RET NZ | Return if non-zero | ||
| C160 | LD A,$00 | A = <self modified> | ||
| C162 | LD D,$EE | D = $EE | ||
| C164 | DEC A | A-- | ||
| C165 | JR Z,$C169 | Jump if zero | ||
| C167 | LD D,$FF | D = $FF | ||
| C169 | LD E,D | E = D | ||
| C16A | LD ($C21D),DE | Self modify 'LD DE,x' @ C21C | ||
| C16E | LD ($C2E4),SP | Save SP to restore later (self modify) | ||
| C172 | LD A,(IY+$4E) | L = ~((IY[$4E] - 2) << 1) | ||
| C175 | SUB $02 | |||
| C177 | ADD A,A | |||
| C178 | CPL | |||
| C179 | LD L,A | |||
| C17A | LD C,$00 | C = 0 | ||
| C17C | LD H,$EB | H = $EB | ||
| C17E | LD A,(HL) | A = *HL | ||
| C17F | OR A | Set flags | ||
| C180 | JP Z,$C18E | Jump if zero | ||
| C183 | LD D,$10 | D = 16 | ||
| C185 | JP P,$C19C | Jump if positive | ||
| C188 | LD D,$16 | D = 22 | ||
| C18A | LD L,$1F | L = 31 | ||
| C18C | JR $C1C8 | Jump | ||
| C18E | DEC L | A = HL[-1] | ||
| C18F | LD A,(HL) | |||
| C190 | INC L | |||
| C191 | AND $F8 | Divide by 8 | ||
| C193 | RRCA | |||
| C194 | RRCA | |||
| C195 | RRCA | |||
| C196 | SRL A | A >>= 1 | ||
| C198 | RR C | Rotate C | ||
| C19A | INC A | A++ | ||
| C19B | LD D,A | D = A | ||
| C19C | LD H,$E8 | H = $E8 | ||
| C19E | LD A,(HL) | A = *HL | ||
| C19F | OR A | Set flags | ||
| C1A0 | JR Z,$C1AA | Jump if zero | ||
| C1A2 | LD E,$10 | E = 16 | ||
| C1A4 | JP M,$C1BC | Jump if negative | ||
| C1A7 | JP $C188 | Jump | ||
| C1AA | DEC L | L-- | ||
| C1AB | LD A,(HL) | A = *HL + 8 | ||
| C1AC | ADD A,$08 | |||
| C1AE | JR C,$C188 | Jump if carry | ||
| C1B0 | AND $F8 | Divide by 8 | ||
| C1B2 | RRCA | |||
| C1B3 | RRCA | |||
| C1B4 | RRCA | |||
| C1B5 | LD B,A | B = A | ||
| C1B6 | SRL A | E = 16 - (A >> 1) | ||
| C1B8 | CPL | |||
| C1B9 | ADD A,$11 | |||
| C1BB | LD E,A | |||
| C1BC | LD A,$20 | A = 32 - B | ||
| C1BE | SUB B | |||
| C1BF | LD L,$20 | L = 32 | ||
| C1C1 | RL C | Rotate left | ||
| C1C3 | JR C,$C1C7 | Jump if carry | ||
| C1C5 | DEC L | L-- | ||
| C1C6 | DEC A | A-- | ||
| C1C7 | LD C,A | C = A | ||
| C1C8 | LD A,D | A = D | ||
| C1C9 | LD ($C222),A | Self modify 'JR x' @ C221 -- jump table target | ||
| C1CC | LD A,E | A = E | ||
| C1CD | LD ($C237),A | Self modify 'JR x' @ C236 -- jump table target | ||
| C1D0 | LD A,(IY+$35) | A = IY[$35] | ||
| C1D3 | LD B,A | B = A | ||
| C1D4 | AND $0F | H = (A & 15) + $F0 | ||
| C1D6 | ADD A,$F0 | |||
| C1D8 | LD H,A | |||
| C1D9 | LD A,B | A = ((B & $70) << 1) + L | ||
| C1DA | AND $70 | |||
| C1DC | ADD A,A | |||
| C1DD | ADD A,L | |||
| C1DE | JR NC,$C1E1 | Jump if no carry | ||
| C1E0 | DEC A | A-- | ||
| C1E1 | LD L,A | L = A | ||
| C1E2 | LD A,$80 | A = 128 - B | ||
| C1E4 | SUB B | |||
| C1E5 | EX AF,AF' | Bank/unbank | ||
| C1E6 | LD A,($A23F) | E = fast_counter & $E0 | ||
| C1E9 | AND $E0 | |||
| C1EB | LD E,A | |||
| C1EC | RRC E | E >>= 2 | ||
| C1EE | RRC E | |||
| C1F0 | SUB E | A -= E | ||
| C1F1 | RRC E | E >>= 2 | ||
| C1F3 | RRC E | |||
| C1F5 | SUB E | A -= E | ||
| C1F6 | ADD A,IYl | A += IY.low | ||
| C1F8 | LD D,$E6 | D = $E6 | ||
| C1FA | LD E,A | E = A | ||
| C1FB | LD A,(IY+$00) | B = IY[0] - B | ||
| C1FE | SUB B | |||
| C1FF | LD B,A | |||
| C200 | LD A,(DE) | A = *DE | ||
| C201 | LD E,A | E = A | ||
| C202 | LD A,IYl | A = (16 - IY.low) + E | ||
| C204 | CPL | |||
| C205 | ADD A,$11 | |||
| C207 | ADD A,E | |||
| C208 | EXX | Bank/unbank | ||
| C209 | LD B,A | B = A | ||
| C20A | EXX | Bank/unbank | ||
| C20B | SUB B | A -= B | ||
| C20C | LD D,A | D = A | ||
| C20D | EX AF,AF' | Bank/unbank | ||
| C20E | ADD A,D | A = D | ||
| C20F | JP P,$C21A | Jump if positive | ||
| C212 | LD E,A | E = A | ||
| C213 | SUB $81 | A -= $81 | ||
| C215 | NEG | A = -A | ||
| C217 | ADD A,D | A += D | ||
| C218 | LD D,A | D = A | ||
| C219 | LD A,E | A = E | ||
| C21A | EX AF,AF' | Bank/unbank | ||
| C21B | LD B,D | B = D | ||
|
Pixels of tunnel loaded here. Top byte, D, seems to affect bottom row? Bottom byte, E, affects whole pattern. The LD E,D later would explain that.
|
||||
| C21C | LD DE,$EEEE | DE = <self modified> -- pixels of tunnel | ||
|
Loop
|
||||
| C21F | LD SP,HL | Put it in SP (so we can use PUSH for speed) | ||
| C220 | LD A,L | A = L | ||
| C221 | JR $C221 | Jump table (self modified) | ||
| C223 | PUSH DE | |||
| C224 | PUSH DE | |||
| C225 | PUSH DE | |||
| C226 | PUSH DE | |||
| C227 | PUSH DE | |||
| C228 | PUSH DE | |||
| C229 | PUSH DE | |||
| C22A | PUSH DE | |||
| C22B | PUSH DE | |||
| C22C | PUSH DE | |||
| C22D | PUSH DE | |||
| C22E | PUSH DE | |||
| C22F | PUSH DE | |||
| C230 | PUSH DE | |||
| C231 | PUSH DE | |||
| C232 | PUSH DE | |||
| C233 | SUB C | A -= C | ||
| C234 | LD L,A | L = A | ||
| C235 | LD SP,HL | Put it in SP (so we can use PUSH for speed) | ||
| C236 | JR $C236 | Jump table (self modified) | ||
| C238 | PUSH DE | |||
| C239 | PUSH DE | |||
| C23A | PUSH DE | |||
| C23B | PUSH DE | |||
| C23C | PUSH DE | |||
| C23D | PUSH DE | |||
| C23E | PUSH DE | |||
| C23F | PUSH DE | |||
| C240 | PUSH DE | |||
| C241 | PUSH DE | |||
| C242 | PUSH DE | |||
| C243 | PUSH DE | |||
| C244 | PUSH DE | |||
| C245 | PUSH DE | |||
| C246 | PUSH DE | |||
| C247 | PUSH DE | |||
| C248 | ADD A,C | A += C | ||
| C249 | LD L,A | L = A | ||
| C24A | LD A,H | A = H | ||
| C24B | DEC H | H-- | ||
| C24C | AND $0F | A &= 15 | ||
| C24E | JP NZ,$C25B | Jump if non-zero | ||
| C251 | LD A,L | L -= 32 | ||
| C252 | SUB $20 | |||
| C254 | LD L,A | |||
| C255 | JR C,$C25B | Jump if carry | ||
| C257 | LD A,H | H -= 16 | ||
| C258 | ADD A,$10 | |||
| C25A | LD H,A | |||
| C25B | RLC D | |||
| C25D | LD E,D | E = D | ||
| C25E | DJNZ $C21F | Loop | ||
| C260 | EXX | Bank/unbank | ||
| C261 | SRL B | B >>= 1 | ||
| C263 | LD A,B | A = B | ||
| C264 | SRL B | B >>= 2 | ||
| C266 | SRL B | |||
| C268 | SUB B | A -= B | ||
| C269 | LD B,A | B = A | ||
| C26A | EX AF,AF' | Bank/unbank | ||
| C26B | AND A | Set flags | ||
| C26C | JP M,$C2E3 | Jump if negative | ||
| C26F | ADD A,B | A += B | ||
| C270 | JP P,$C27B | Jump if positive | ||
| C273 | LD E,A | E = A | ||
| C274 | SUB $81 | A -= $81 | ||
| C276 | NEG | A = -A | ||
| C278 | ADD A,B | A = B | ||
| C279 | LD B,A | B = A | ||
| C27A | LD A,E | A = E | ||
| C27B | EX AF,AF' | Bank/unbank | ||
| C27C | LD A,B | A = B | ||
| C27D | EXX | Bank/unbank | ||
| C27E | LD B,A | B = A | ||
| C27F | LD A,L | A = L | ||
| C280 | AND $0F | A &= 15 | ||
| C282 | JR NZ,$C285 | Jump if non-zero | ||
| C284 | DEC L | L-- | ||
| C285 | LD C,$0F | C = 15 | ||
|
Loop
|
||||
| C287 | LD SP,HL | Put it in SP (so we can use PUSH for speed) | ||
| C288 | PUSH DE | |||
| C289 | PUSH DE | |||
| C28A | PUSH DE | |||
| C28B | PUSH DE | |||
| C28C | PUSH DE | |||
| C28D | PUSH DE | |||
| C28E | PUSH DE | |||
| C28F | PUSH DE | |||
| C290 | PUSH DE | |||
| C291 | PUSH DE | |||
| C292 | PUSH DE | |||
| C293 | PUSH DE | |||
| C294 | PUSH DE | |||
| C295 | PUSH DE | |||
| C296 | PUSH DE | |||
| C297 | LD A,H | A = H | ||
| C298 | DEC H | H-- | ||
| C299 | AND C | A &= C | ||
| C29A | JP NZ,$C2A7 | Jump if non-zero | ||
| C29D | LD A,L | L -= 32 | ||
| C29E | SUB $20 | |||
| C2A0 | LD L,A | |||
| C2A1 | JR C,$C2A7 | Jump if carry | ||
| C2A3 | LD A,H | H += 16 | ||
| C2A4 | ADD A,$10 | |||
| C2A6 | LD H,A | |||
| C2A7 | RLC D | |||
| C2A9 | LD E,D | E = D | ||
| C2AA | DJNZ $C287 | Loop | ||
| C2AC | EX AF,AF' | |||
| C2AD | AND A | Set flags | ||
| C2AE | JP M,$C2E3 | Jump if negative | ||
| C2B1 | CPL | B = ~A + $82 | ||
| C2B2 | ADD A,$82 | |||
| C2B4 | LD B,A | |||
| C2B5 | LD DE,$0000 | DE = 0 | ||
| C2B8 | LD A,$00 | A = <self modified> | ||
| C2BA | AND A | Set flags | ||
| C2BB | JR Z,$C2C1 | Jump if zero | ||
| C2BD | DEC A | A-- | ||
| C2BE | JR NZ,$C2E3 | Jump if non-zero | ||
| C2C0 | DEC DE | DE-- | ||
| C2C1 | LD SP,HL | Put it in SP (so we can use PUSH for speed) | ||
| C2C2 | PUSH DE | |||
| C2C3 | PUSH DE | |||
| C2C4 | PUSH DE | |||
| C2C5 | PUSH DE | |||
| C2C6 | PUSH DE | |||
| C2C7 | PUSH DE | |||
| C2C8 | PUSH DE | |||
| C2C9 | PUSH DE | |||
| C2CA | PUSH DE | |||
| C2CB | PUSH DE | |||
| C2CC | PUSH DE | |||
| C2CD | PUSH DE | |||
| C2CE | PUSH DE | |||
| C2CF | PUSH DE | |||
| C2D0 | PUSH DE | |||
| C2D1 | LD A,H | A = H | ||
| C2D2 | DEC H | H-- | ||
| C2D3 | AND C | A &= C | ||
| C2D4 | JP NZ,$C2E1 | Jump if non-zero | ||
|
Scanline increment pattern.
|
||||
| C2D7 | LD A,L | L -= 32 | ||
| C2D8 | SUB $20 | |||
| C2DA | LD L,A | |||
| C2DB | JR C,$C2E1 | Jump if carry | ||
| C2DD | LD A,H | H -= 16 | ||
| C2DE | ADD A,$10 | |||
| C2E0 | LD H,A | |||
| C2E1 | DJNZ $C2C1 | Next scanline ? | ||
| C2E3 | LD SP,$0000 | Restore SP (self modified) | ||
| C2E6 | RET | Return | ||
| Prev: C0E1 | Up: Map | Next: C2E7 |