![]() |
Routines |
| Prev: F6FD | Up: Map | Next: F788 |
|
Used by the entry point at F6A6.
|
||||||||||||||
| F71A | PUSH HL | Remember HL and BC | ||||||||||||
| F71B | PUSH BC | |||||||||||||
| F71C | LD A,($F7D4) | Get the current frame number. | ||||||||||||
| F71F | NEG | Subtract it from the base Y co-ordinate and store in F7D2 and F7D3. | ||||||||||||
| F721 | LD D,A | |||||||||||||
| F722 | LD E,$00 | |||||||||||||
| F724 | ADD HL,DE | |||||||||||||
| F725 | LD ($F7D2),HL | |||||||||||||
| F728 | LD B,C | Put the number of characters in B. | ||||||||||||
| F729 | LD C,L | Convert the Y co-ordinate to a offset for a screen address. | ||||||||||||
| F72A | LD L,H | |||||||||||||
| F72B | LD H,$00 | |||||||||||||
| F72D | ADD HL,HL | |||||||||||||
| F72E | LD DE,$EA60 | Add to the base pointer at EA60 to get a screen address. | ||||||||||||
| F731 | ADD HL,DE | |||||||||||||
| F732 | LD A,(HL) | Put the screen address in HL. | ||||||||||||
| F733 | INC HL | |||||||||||||
| F734 | LD H,(HL) | |||||||||||||
| F735 | LD L,A | |||||||||||||
| F736 | LD E,C | Add the X co-ordinate. | ||||||||||||
| F737 | LD D,$00 | |||||||||||||
| F739 | ADD HL,DE | |||||||||||||
| F73A | LD (HL),$00 | Erase the character. | ||||||||||||
| F73C | LD DE,$9260 | Also erase it in the screen buffer (9260). | ||||||||||||
| F73F | ADD HL,DE | |||||||||||||
| F740 | LD (HL),$00 | |||||||||||||
| F742 | LD HL,($F7D2) | Get the wall position. | ||||||||||||
| F745 | LD DE,$F800 | Move to the next position by subtracting 8 from the Y co-ordinate. | ||||||||||||
| F748 | ADD HL,DE | |||||||||||||
| F749 | LD ($F7D2),HL | Set this as the new position. | ||||||||||||
| F74C | DJNZ $F72A | Loop back if there are more characters to do. | ||||||||||||
| F74E | LD A,($F7D4) | Get current frame number. | ||||||||||||
| F751 | INC A | Increment it, but if this reaches 8, reset to 0. | ||||||||||||
| F752 | AND $07 | |||||||||||||
| F754 | POP BC | Restore co-ordinates and width. | ||||||||||||
| F755 | POP HL | |||||||||||||
| F756 | LD ($F7D4),A | Store next frame number and return if it is 0. | ||||||||||||
| F759 | RET NZ | |||||||||||||
|
Erase the wall from the set of graphics, and change it to mid-air.
|
||||||||||||||
| F75A | LD IY,$C54E | C54E is the store of static graphics for this room. | ||||||||||||
| F75E | CALL $F6FD | Erase the wall. | ||||||||||||
| F761 | RES 0,(IX+$00) | Clear the flag to mark a wall as being erased. | ||||||||||||
| F765 | LD A,($9649) | Get the current room (9649). | ||||||||||||
| F768 | CP $06 | Is it 06? | ||||||||||||
| F76A | JR NZ,$F771 | Jump forward if not. | ||||||||||||
| F76C | SET 5,(IX+$00) | Set the wall as cleared and return. | ||||||||||||
| F770 | RET | |||||||||||||
| F771 | CP $0B | Is this room 00B? | ||||||||||||
| F773 | JR NZ,$F77A | Jump forward if not. | ||||||||||||
| F775 | SET 4,(IX+$00) | Set the wall as cleared and return. | ||||||||||||
| F779 | RET | |||||||||||||
| F77A | CP $0F | Is this room 00F? | ||||||||||||
| F77C | JR NZ,$F783 | Jump forward if not. | ||||||||||||
| F77E | SET 3,(IX+$00) | Set the wall as cleared and return. | ||||||||||||
| F782 | RET | |||||||||||||
| F783 | SET 2,(IX+$00) | Must be room 0E. Set the wall as cleared and return. | ||||||||||||
| F787 | RET | |||||||||||||
| Prev: F6FD | Up: Map | Next: F788 |