lorom ;Beam swapping by dewhi100 ;Please give credit. ;This enables beam swapping outside of the pause menu ;Note- If you use JAM's patch to enable Splazma, comment the "Spazer-Plasma saftey" lines in the code below to enable more beam combinations. org $90E6B3 JSR Freespace org $90FA80 Freespace: LDA $008F ;debug LDA $008B ;Controller input ORA $008F BIT $09B8 ;Item cancel bit BNE + ;if not pressed, just leave JMP end + LDA $008B ;Controller input ORA $008F BIT $09BC ;Aim Down bit BNE + JMP end + LDA $09B8 ;Item cancel bit AND $008F ;Newly pressed buttons BNE ++ ;Branch if already pressed LDA $09BC ;Aim Down bit AND $008F ;Newly pressed buttons BNE ++ ;Branch if already pressed BRA +++ ++ LDA $09A6 ;Unequip all beams AND #$1000 ;(Except charge) STA $09A6 ; JSL $90AC8D +++ ;Spazer LDA $008F ;Newly pressed buttons BIT $09AA ;Up bit BEQ +++ ;Branch if not pressed LDA $09A8 ;Collected beams AND #$0004 ;Spazer bit ORA $09A6 ;Equipped beams AND #$FFF7 ;Spazer-Plasma saftey. STA $09A6 ;Equipped beams += Spazer JSL $90AC8D +++ ;Ice LDA $008F ;Newly pressed buttons BIT $09AC ;Up bit BEQ +++ ;Branch if not pressed LDA $09A8 ;Collected beams AND #$0002 ;Ice bit ORA $09A6 ;Equipped beams STA $09A6 ;Equipped beams += Ice JSL $90AC8D +++ ;Plasma LDA $008F ;Newly pressed buttons BIT $09AE ;Up bit BEQ +++ ;Branch if not pressed LDA $09A8 ;Collected beams AND #$0008 ;Plasma bit ORA $09A6 ;Equipped beams AND #$FFFB ;Spazer-Plasma saftey. STA $09A6 ;Equipped beams += Plasma JSL $90AC8D +++ ;Wave LDA $008F ;Newly pressed buttons BIT $09B0 ;Up bit BEQ +++ ;Branch if not pressed LDA $09A8 ;Collected beams AND #$0001 ;Wave bit ORA $09A6 ;Equipped beams STA $09A6 ;Equipped beams += Wave JSL $90AC8D +++ ;Disable movement LDA $09AA ORA $09AC ORA $09AE ORA $09B0 EOR #$FFFF ;Creates a mask of everything except the Directional buttons. PHA AND $008F ;Mask both button input bytes. STA $008F STA $0093 ;Don't forget the mirror, just in case. PLA AND $008B STA $008B end: JSR $E90F RTS