| alien | Routines |
| Prev: 33223 | Up: Map | Next: 33589 |
|
Walk handler for straight wall glyphs (126/127/132/133): a no-op, the walk keeps its current heading.
|
||||
| 33275 | RET | |||
|
ArmCornerTopLeft — walk handler for corner glyph 128, which joins a south-going edge to an east-going one: a walker heading north exits east; any other heading exits south.
|
||||
| 33276 | LD HL,(31244) | L = low byte of current heading | ||
| 33279 | LD A,L | |||
| 33280 | LD DE,32 | default: turn south | ||
| 33283 | LD HL,20 | |||
| 33286 | CP 224 | heading north (-32, low byte 224)? | ||
| 33288 | JR NZ,33296 | |||
| 33290 | LD DE,1 | yes: turn east | ||
| 33293 | LD HL,1 | |||
| 33296 | LD (31244),DE | |||
| 33300 | LD (31246),HL | |||
| 33303 | RET | |||
|
ArmCornerBottomLeft — corner glyph 129 joins a north-going edge to an east-going one: heading south exits east; otherwise exits north.
|
||||
| 33304 | LD HL,(31244) | L = low byte of current heading | ||
| 33307 | LD A,L | |||
| 33308 | LD DE,1 | default: turn east | ||
| 33311 | LD HL,1 | |||
| 33314 | CP 32 | heading south? | ||
| 33316 | JR Z,33324 | |||
| 33318 | LD DE,65504 | no: turn north (DE = -32, HL = -20) | ||
| 33321 | LD HL,65516 | |||
| 33324 | LD (31244),DE | |||
| 33328 | LD (31246),HL | |||
| 33331 | RET | |||
|
ArmCornerBottomRight — corner glyph 130 joins a west-going edge to a north-going one: heading east exits north; otherwise exits west.
|
||||
| 33332 | LD HL,(31244) | L = low byte of current heading | ||
| 33335 | LD A,L | |||
| 33336 | LD DE,65504 | default: turn north (DE = -32, HL = -20) | ||
| 33339 | LD HL,65516 | |||
| 33342 | CP 1 | heading east? | ||
| 33344 | JR Z,33352 | |||
| 33346 | LD DE,65535 | no: turn west | ||
| 33349 | LD HL,65535 | |||
| 33352 | LD (31244),DE | |||
| 33356 | LD (31246),HL | |||
| 33359 | RET | |||
|
ArmCornerTopRight — corner glyph 131 joins a west-going edge to a south-going one: heading east exits south; otherwise exits west.
|
||||
| 33360 | LD HL,(31244) | L = low byte of current heading | ||
| 33363 | LD A,L | |||
| 33364 | LD DE,32 | default: turn south | ||
| 33367 | LD HL,20 | |||
| 33370 | CP 1 | heading east? | ||
| 33372 | JR Z,33380 | |||
| 33374 | LD DE,65535 | no: turn west | ||
| 33377 | LD HL,65535 | |||
| 33380 | LD (31244),DE | |||
| 33384 | LD (31246),HL | |||
| 33387 | RET | |||
|
ArmEndNode — walk handler for the duct grille (125) and junction nodes (142/143): pops DrawDoorArm's looping return address, paints the node cell cyan and ends the walk.
|
||||
| 33388 | POP AF | |||
| 33389 | LD HL,(31255) | |||
| 33392 | LD (HL),5 | |||
| 33394 | RET | |||
| 33395 | LD DE,12 | |||
| 33398 | LD HL,22528 | |||
| 33401 | LD C,19 | |||
| 33403 | LD B,20 | |||
| 33405 | LD (HL),0 | |||
| 33407 | INC HL | |||
| 33408 | DJNZ 33405 | |||
| 33410 | ADD HL,DE | |||
| 33411 | DEC C | |||
| 33412 | JR NZ,33403 | |||
| 33414 | LD HL,26121 | |||
| 33417 | CALL 31312 | |||
| 33420 | RET | |||
| 33421 | LD A,(31242) | |||
| 33424 | AND 63 | |||
| 33426 | LD L,A | |||
| 33427 | LD H,0 | |||
| 33429 | PUSH HL | |||
| 33430 | ADD HL,HL | |||
| 33431 | ADD HL,HL | |||
| 33432 | POP DE | |||
| 33433 | ADD HL,DE | |||
| 33434 | LD DE,29346 | |||
| 33437 | ADD HL,DE | |||
| 33438 | LD DE,29632 | |||
| 33441 | LD B,4 | |||
| 33443 | LD C,(HL) | |||
| 33444 | CP C | |||
| 33445 | JR Z,33457 | |||
| 33447 | LD A,(31242) | |||
| 33450 | AND 63 | |||
| 33452 | CP C | |||
| 33453 | JR Z,33457 | |||
| 33455 | LD A,C | |||
| 33456 | LD (DE),A | |||
| 33457 | INC DE | |||
| 33458 | INC HL | |||
| 33459 | DJNZ 33443 | |||
| 33461 | LD B,4 | |||
| 33463 | LD HL,29632 | |||
| 33466 | LD C,57 | |||
| 33468 | LD A,(HL) | |||
| 33469 | CP 255 | |||
| 33471 | JR Z,33474 | |||
| 33473 | LD (HL),C | |||
| 33474 | INC C | |||
| 33475 | INC HL | |||
| 33476 | DJNZ 33468 | |||
| 33478 | RET | |||
| 33479 | LD HL,20576 | |||
| 33482 | LD (31257),HL | |||
| 33485 | LD B,128 | |||
| 33487 | PUSH BC | |||
| 33488 | XOR A | |||
| 33489 | CALL 31370 | |||
| 33492 | LD HL,31257 | |||
| 33495 | INC (HL) | |||
| 33496 | POP BC | |||
| 33497 | DJNZ 33487 | |||
| 33499 | RET | |||
| 33500 | LD HL,23009 | |||
| 33503 | LD DE,29 | |||
| 33506 | LD C,3 | |||
| 33508 | LD B,3 | |||
| 33510 | LD (HL),57 | |||
| 33512 | INC HL | |||
| 33513 | DJNZ 33510 | |||
| 33515 | DEC C | |||
| 33516 | ADD HL,DE | |||
| 33517 | JR NZ,33508 | |||
| 33519 | LD DE,72 | |||
| 33522 | LD HL,30216 | |||
| 33525 | LD A,(31241) | |||
| 33528 | DEC A | |||
| 33529 | JR Z,33535 | |||
| 33531 | LD B,A | |||
| 33532 | ADD HL,DE | |||
| 33533 | DJNZ 33532 | |||
| 33535 | EX DE,HL | |||
| 33536 | LD HL,18657 | |||
|
This entry point is used by the routine at 42821.
|
||||
| 33539 | LD (31257),HL | |||
| 33542 | LD B,3 | |||
| 33544 | LD C,3 | |||
| 33546 | PUSH BC | |||
| 33547 | LD HL,(31257) | |||
| 33550 | LD B,8 | |||
| 33552 | LD A,(DE) | |||
| 33553 | LD (HL),A | |||
| 33554 | INC H | |||
| 33555 | INC DE | |||
| 33556 | DJNZ 33552 | |||
| 33558 | LD HL,31257 | |||
| 33561 | INC (HL) | |||
| 33562 | POP BC | |||
| 33563 | DEC C | |||
| 33564 | JR NZ,33546 | |||
| 33566 | PUSH DE | |||
| 33567 | LD HL,(31257) | |||
| 33570 | LD DE,29 | |||
| 33573 | LD A,L | |||
| 33574 | CP 224 | |||
| 33576 | JR C,33581 | |||
| 33578 | LD DE,1821 | |||
| 33581 | ADD HL,DE | |||
| 33582 | LD (31257),HL | |||
| 33585 | POP DE | |||
| 33586 | DJNZ 33544 | |||
| 33588 | RET | |||
| Prev: 33223 | Up: Map | Next: 33589 |