
FINDSTAIRS:
    JSR LF32F                  ;SET BANK NUMBER
    LDY #$00
LE96B:
    LDA [$55], Y               ;GET AN X COORDINATE
    CMP #$FF                   ;IF ITS $FF EXIT
    BEQ LE9A5
    INY
    CMP <$42                   ;COMPARE TO PLAYER X
    BNE LE97E                  ;IF NO MATCH, GO HERE
    LDA [$55], Y               ;GET A Y COORDINATE
    AND #$3F                   ;MASK OUT PLAYER DIRECTION BITS
    CMP <$43                   ;COMPARE TO PLAYER Y
    BEQ LE983                  ;IF A MATCH, GO HERE
LE97E:
    INY
    INY
    INY                        ;SET INDEX TO NEXT SET OF STAIRS TO CHECK
    BNE LE96B                  ;CHECK NEXT SET OF STAIRS
LE983:
    INY                        ;WE HAVE FOUND A MATCH
    INY
    LDA [$55], Y               ;GET THE STAIRS NUMBER
    PHA                        ;SAVE IT
    DEY
    LDA [$55], Y               ;GET THE MAP NUMBER
    ORA #$40                   ;SET THE FLAG TO NOT USE DEFAULT X AND Y COORDINATES
    BNE LE9AE                  ;THIS IS A RELATIVE JUMP

;NOT USING THIS YET

    LDX #$4A
LE991:
    LDA MAPCOORDS + 1, X
    CMP <$43
    BCC LE9A5
    BNE LE9A1
    LDA MAPCOORDS, X
    CMP <$42
    BEQ LE9A6
LE9A1:
    DEX
    DEX
    BPL LE991
LE9A5:
    RTS

LE9A6:
    TXA
    LSR A
    TAX
    LDA MAPNUMBER, X
    STA <$67

;USING THIS

LE9AE:
    STA <MAPNMBR               ;SAVE MAP NUMBER
    ASL A                      ;MULTIPLY BY 2 (USE AS AN INDEX INTO A POINTER TABLE)
    PHA                        ;SAVE IT
    ROL A
    ROL A                      ;USE BITS 7 AND 6 FOR A JUMP NUMBER
    AND #$03                   ;4 POSSIBLE JUMPS
    JSR DOJUMP                 ;DO THE JUMP

    .DW JUMP1
    .DW JUMP2
    .DW JUMP3
    .DW JUMP4

;THESE ARE THE DIFFERENT ROUTINES FOR SETTING UP YOUR NEW STARTING POSITION

JUMP4:
    RTS

JUMP3:
    RTS

JUMP2:
    PLA                        ;MAP NUMBER x2
    JSR LEA86                  ;GET POINTER TO NEW MAP
    JSR LF32F                  ;SET BANK NUMBER TO NEW MAP
    LDA #$05
    JSR GETPOINTER             ;MAKE POINTER TO NEW STAIRS TABLE
    STX <$02                   ;POINTER LB
    STA <$03                   ;POINTER HB
    PLA                        ;GET STAIRS NUMBER
    ASL A
    ASL A                      ;MULTIPLY BY 4 (SIZE OF EACH SET OF STAIRS)
    TAY
    LDA [$02], Y               ;GET AN X COORDINATE
    STA <$42                   ;STORE IT IN PLAYER X
    INY
    LDA [$02], Y               ;GET A Y COORDINATE
    TAX
    AND #$3F                   ;MASK OUT BITS USED FOR PLAYER DIRECTION
    STA <$43                   ;STORE IT IN PLAYER Y
    TXA
    AND #$C0                   ;MASK OUT ALL BUT PLAYER DIRECTION BITS
    ROL A                      ;GET 7TH BIT
    ROL A                      ;GET 6TH BIT
    ROL A                      ;THIS WILL ALWAYS BE ZERO
    STA $0418                  ;SAVE PLAYER DIRECTION
    BCC LEA3C
    LDA #$00
    STA $0704
    STA $0705
    STA <$E8
    STA <$EA
    PLA
    JSR LEA86
LEA3C:
    JSR FADEOUT                ;FADE PALETTE OUT
    LDA <MAPNMBR
    ASL A                      ;GET 7TH BIT
    LDA #$00                   ;WE WANT 7TH BIT ONLY
    ROL A                      ;THIS IS EITHER ZERO OR ONE
    STA <JUMPNMBR              ;JUMP NUMBER TO MAP LOADING ROUTINE
    JMP LC046                  ;LOAD NEW MAP

JUMP1:
    RTS

;GET A MAP ADDRESS FROM THE MAP TABLE

LEA86:
    AND #$7F                   ;GET RID OF 7TH BIT
    TAX                        ;USE MAP NUMBER x2 AS AN INDEX INTO MAP POINTER TABLE
    LDA MAPTABLE, X            ;GET MAP POINTER LB
    STA <$4F                   ;SAVE IT
    LDA MAPTABLE + 1, X        ;GET MAP POINTER HB
    STA <$50                   ;SAVE IT
    TXA                        ;MAP NUMBER x2
    LSR A                      ;DIVIDE BY 2
    TAX                        ;USE AS AN INDEX INTO BANK NUMBER TABLE
    LDA BANKNUMBER, X          ;GET BANK NUMBER
    STA <$4C                   ;SAVE IT
    RTS

MAPCOORDS:

MAPNUMBER:

MAPTABLE:

BANKNUMBER:

