;$83887-$8396D or so ;Now compilable with xkas ;Could probably optimize it more but I don't care. lorom org $90B887 LDA $0A76 BEQ + PHP JMP $BCD1 ; Hyper Beam. + JSR $AC39 ; Check if allowed to shoot BCS ++ -- LDA $0DC2 ; Check charge held CMP #$0080 BPL + RTS + STZ $0DC0 LDA #$0002 JSL $809021 ; Clear charge sound RTS ++ ; Fire a beam. I think. LDX #$0000 - LDA $0C2C, X ; Damage array... this is used to check if projectiles are live? BEQ + INX INX CPX #$000A BMI - DEX DEX + STX $14 JSR $BA56 ; Setup acceleration and starting position, based on Samus's pose BCS -- ; Whoops, can't fire in this pose. I don't think this ever happens LDA #$000A STA $18AC LDX $14 LDA #$0004 STA $0C90, X ; Trail timer LDA $09A6 ORA #$8000 STA $0C18, X ; Projectile type STZ $0DC0 JSL $938000 ; Sets up... damage, instruction (graphic only probably), Delay, and Size for beams LDA $0C18, X BIT #$0001 BNE +++ STZ $0BDC, X STZ $0BF0, X STX $0DDE JSR $BD64 ; $83D64 IN ROM LDX $0DDE LDA $0C18,X BIT #$0F00 BNE ++ BRA + +++ STZ $0BDC, X STZ $0BF0, X STX $0DDE JSR $BDB2 ; $83DB2 IN ROM + STX $14 LDA $0C18, X AND #$000F ASL A TAY LDA $B96E, Y STA $0C68, X ; Code to run. Handles movement, trails, and deletion ++ RTS ;Code has been updated for point-blank collisions ;Out of date code: ;AD760AF004084CD1BC2039ACB014ADC20DC980001001609CC00DA902002221908060A20000BD2C0CF009E8E8E00A0030F4CACA86142056BAB0D4A90A008DAC18A614A904009D900CADA6090900809D180C9CC00D22008093BD180C890100D0119EDC0B9EF00B8EDE0D2064BDAEDE0D800C9EDC0B9EF00B8EDE0D20B2BD8614BD180C290F000AA8B96EB99D680C60