LST OFF * * PCS -- PINBALL STUFF * ORG $8554 OBJ $7000 * * CONSTANTS * LIBOBJ EQU 3 * PARAM EQU $00 TEMP EQU $07 XTEMP EQU TEMP+1 YTEMP EQU XTEMP+1 TEMP2 EQU YTEMP+1 * BASE1 EQU $10 BASE2 EQU BASE1+2 SHIFTOUT EQU BASE2+2 SIGN EQU SHIFTOUT+1 SHIFTCOUNT EQU SIGN+1 * PLAYER EQU $80 PLAYERCNT EQU PLAYER+1 BALLS EQU PLAYERCNT+1 SLEEPCNT EQU BALLS+1 PBASE1 EQU SLEEPCNT+1 PBASE2 EQU PBASE1+2 PBASE3 EQU PBASE2+2 PBASE4 EQU PBASE3+2 LASTY EQU PBASE4+2 LIVEBALLS EQU LASTY+1 GAMEMODE EQU LIVEBALLS+1 * STGL EQU $3E * OBJ EQU $91 NEXTOBJ EQU OBJ+2 OBJCOUNT EQU NEXTOBJ+1 OBJID EQU OBJCOUNT+5 FILLCOLOR EQU OBJID+1 VRTXCOUNT EQU FILLCOLOR+1 LBASE EQU VRTXCOUNT+1 * STACKTEMP EQU $AE RELOAD EQU $1E1C * RUNLEN EQU $C0 PDL0 EQU RUNLEN+1 PDL1 EQU PDL0+1 BUTN0 EQU PDL1+1 BUTN1 EQU BUTN0+1 PTIMER1 EQU BUTN1+1 PTIMER2 EQU PTIMER1+1 KBD EQU PTIMER2+1 * SERIES EQU KBD+1 SLICE EQU SERIES+1 STEMP EQU SLICE+1 DSCORE EQU STEMP+1 DBONUS EQU DSCORE+1 BMULT EQU DBONUS+1 INITMODE EQU BMULT+1 SCBASE EQU INITMODE+1 * BSTAT EQU SCBASE+2 Y2 EQU BSTAT+4 * SHFRSLT EQU $800 SHFOUT EQU SHFRSLT+$600 DIV7 EQU SHFOUT+$600 MOD7 EQU DIV7+$100 LO EQU MOD7+$100 HI EQU LO+$C0 * SETMODE EQU HI+$10F XOFFDRAW EQU SETMODE+$62 CHARTO EQU XOFFDRAW+$435 PRCHAR EQU CHARTO+$A PRINT EQU PRCHAR+$38 CHAR EQU PRINT+$19 * DRAWBALL EQU $7C66 INITBALL EQU $7C90 ;INITB2 ADVANCE EQU $80DE * P1STATE EQU $8F00 P2STATE EQU P1STATE+$200 P3STATE EQU P2STATE+$200 P4STATE EQU P3STATE+$200 * SLEEPCODE EQU $9700 SLEEPLO EQU $9800 SLEEPHI EQU $9900 SLEEPERS EQU $9A00 * PBTBLO EQU $400 PBTBHI EQU PBTBLO+$C0 VECTLO EQU PBTBHI+$C0 VECTHI EQU VECTLO+$80 RUNCHN EQU VECTHI+$80 TIME EQU RUNCHN+$80 * LOGIC EQU $4000 WSET EQU $4018 PBDATA EQU $401C PBDX EQU $6F40 WMOD2 EQU $80BC WMOD3 EQU $7CD6 WMOD4 EQU $81DA * * MAIN PINBALL CONTROL * MAIN LDA #0 STA STGL LDA #$FF MAIN0 STA GAMEMODE JSR MAKETBLS JSR INITWORLD STA $C050 STA $C052 STA $C054 STA $C057 MAIN1 JSR MAIN2 JMP MAIN1 * DISKPLAY LDA #0 BEQ MAIN0 * MAIN2 JSR MAKEBDSPLY * LDA #14 STA TEMP WAIT1 LDA #0 JSR $FCA8 DEC TEMP BNE WAIT1 * LDA #0 STA SLEEPCNT JSR INITPLAYERS JSR GETPLAYERCNT LDY #0 MAIN3 STY BALLS LDY #0 MAIN4 STY PLAYER JSR PRINTPLAYER LDA #$38 JSR DOSOUND JSR DOBALL JSR TALLY LDA #0 STA BMULT JSR PRBMULT LDY PLAYER JSR PRINTPLAYER LDY PLAYER INY CPY PLAYERCNT BCC MAIN4 * LDY BALLS JSR MAKEBALL LDY BALLS INY CPY #5 BCC MAIN3 BCS MAIN2 * GETPLAYERCNT LDY #0 JSR PRINTPLAYER STA $C010 GETPL2 LDY #0 GETPL3 LDA $C061 ORA $C062 BPL GETPL5 * STY PLAYERCNT GETPL4 STY XTEMP JSR PRINTPLAYER LDY XTEMP DEY BPL GETPL4 INC PLAYERCNT WAIT3 LDA $C061 ORA $C062 BMI WAIT3 RTS * QUIT PLA PLA PLA PLA JSR CLOSE2 LDA STACKTEMP JMP RELOAD * GETPL5 LDA $C000 BPL GETPL3 STA $C010 CMP #$9B BNE NOQUIT BIT GAMEMODE BPL QUIT NOQUIT AND #$7F CMP #$20 BNE GETPL3 INY CPY #4 BCC GETPL6 * LDY #1 JSR PRINTPLAYER LDY #2 JSR PRINTPLAYER LDY #3 JSR PRINTPLAYER JMP GETPL2 * GETPL6 STY XTEMP JSR PRINTPLAYER LDY XTEMP BNE GETPL3 * MAKEBDSPLY LDY #4 MAKBD2 STY YTEMP JSR MAKEBALL LDY YTEMP DEY BPL MAKBD2 RTS * MAKEBALL TYA CLC ADC #$23 STA MBALL+3 LDA #MBALL JMP XOFFDRAW * MBALL DA *+7 HEX 4800000501 HEX 0E1F1F1F0E * INITPLAYERS LDY #44 LDA #0 STA DSCORE STA DBONUS INITPL2 STA SCORE1,Y DEY BPL INITPL2 * JSR INITSOUND LDA #0 STA INITMODE JSR INITOBJS * LDX #0 JSR SAVEPLAYER LDX #1 JSR SAVEPLAYER LDX #2 JSR SAVEPLAYER LDX #3 JMP SAVEPLAYER * * TALLY BMULT * BONUS, SCORE * TALLY LDY PLAYER LDA SCTBLO,Y STA SCBASE LDA SCTBHI,Y STA SCBASE+1 TALLY2 LDY #7 TALLY3 LDX #0 LDA (SCBASE),Y CLC ADC BONUS,Y TALLY4 CMP #10 BCC TALLY5 SBC #10 INX BCS TALLY4 TALLY5 STA (SCBASE),Y TXA DEY ADC (SCBASE),Y STA (SCBASE),Y TYA BNE TALLY3 * LDA BMULT CMP #1 BEQ TALLY7 TALLY6 DEC BMULT BPL TALLY2 TALLY7 LDA #0 LDY #7 TALLY8 STA BONUS,Y DEY BPL TALLY8 JMP SCORE * * MAKE SOME TABLES * MAKETBLS LDA #>SHFRSLT STA BASE1+1 LDA #>SHFOUT STA BASE2+1 LDY #0 STY BASE1 STY BASE2 LDA #1 STA SHIFTCOUNT * MAKT2 LDA #0 STA SHIFTOUT TYA AND #$80 STA SIGN TYA AND #$7F LDX SHIFTCOUNT MAKT3 ASL ROL SHIFTOUT DEX BNE MAKT3 * ROL ;TO 7-BIT FORMAT ROL SHIFTOUT LSR * ORA SIGN ;ADD ORIGINAL SIGN CMP #$80 BNE *+4 LDA #$00 ;FILTER OUT $80'S STA (BASE1),Y * LDA SHIFTOUT ORA SIGN CMP #$80 BNE *+4 LDA #$00 STA (BASE2),Y * INY BNE MAKT2 * INC BASE1+1 INC BASE2+1 INC SHIFTCOUNT LDA SHIFTCOUNT CMP #7 BNE MAKT2 * * NOW MAKE DIV7,MOD7,LO,HI * LDA #0 TAY TAX MAKT4 STA MOD7,Y PHA TXA STA DIV7,Y PLA CLC ADC #1 CMP #7 BCC *+5 INX SBC #7 * INY BNE MAKT4 * LDY #0 LDA #$20 STA TEMP MAKT5 STA HI,Y STA HI+8,Y STA HI+64,Y STA HI+72,Y STA HI+128,Y STA HI+136,Y PHA LDA #$00 STA LO,Y LDA #$80 STA LO+8,Y LDA #$28 STA LO+64,Y LDA #$A8 STA LO+72,Y LDA #$50 STA LO+128,Y LDA #$D0 STA LO+136,Y PLA CLC ADC #4 CMP #$40 BCS MAKT7 MAKT6 INY BNE MAKT5 * MAKT7 INC TEMP TYA CLC ADC #8 TAY LDA TEMP CMP #$24 BCC MAKT6 * * MAKE SLEEPLO, HI * LDA #SLEEPERS STA TEMP+1 LDY #0 STY SLEEPCNT MAKT8 STA SLEEPHI,Y LDA TEMP STA SLEEPLO,Y CLC ADC #22 STA TEMP LDA TEMP+1 ADC #0 STA TEMP+1 INY BNE MAKT8 * * NOW SET UP THE GAME * LDA PBDATA STA OBJCOUNT LDY #0 STY RUNLEN JSR GETOBJ SETUP2 LDA OBJID CMP #BMMSG JSR PRINT JSR PRBMULT * LDX #3 INITSCR2 STX PLAYER LDA SCVERT,X STA CHAR+2 LDA SCTBLO,X TAY LDA SCTBHI,X TAX JSR PRSCORE LDX PLAYER DEX BPL INITSCR2 * LDY #$58 LDX #$18 LDA #0 JSR CHARTO LDA #BMSG JSR PRINT LDY #BONUS * PRSCORE STY SCBASE STX SCBASE+1 * PRSCORE2 LDY #0 JSR SETMODE * LDY CHAR+2 LDX #$27 LDA #0 JSR CHARTO * LDY #8 PRSCR2 STY YTEMP LDA (SCBASE),Y JSR PRCHAR DEC CHAR+3 LDA #0 STA CHAR+4 LDY YTEMP DEY BNE PRSCR2 * LDY #2 JMP SETMODE * SCORE LDX PLAYER LDA SCVERT,X STA CHAR+2 LDY SCTBLO,X LDA SCTBHI,X TAX LDA DSCORE JSR DOSCORE * LDA #$58 STA CHAR+2 LDA #BONUS STA SCBASE+1 LDA DBONUS LDY #5 JSR DOSCORE2 LDA #0 STA DSCORE STA DBONUS RTS * DOSCORE STY SCBASE STX SCBASE+1 LDY #7 DOSCORE2 CLC ADC (SCBASE),Y BCC *+4 LDA #255 STA (SCBASE),Y DOSCOR2 LDX #0 LDA (SCBASE),Y DOSCOR3 CMP #10 BCC DOSCOR4 SBC #10 INX BCS DOSCOR3 DOSCOR4 STA (SCBASE),Y TXA DEY ADC (SCBASE),Y STA (SCBASE),Y TYA BNE DOSCOR2 JMP PRSCORE2 * PRBMULT LDY #0 JSR SETMODE LDY #$48 LDX #$20 LDA #0 JSR CHARTO LDX BMULT INX CPX #6 BCS PRBMUL2 STX BMULT TXA JSR PRCHAR PRBMUL2 LDY #2 JMP SETMODE * PRINTPLAYER LDA SCVERT,Y STA CHAR+2 LDA #$18 STA CHAR+3 LDA #0 STA CHAR+4 LDA PMSGLO,Y LDX PMSGHI,Y JMP PRINT * PMSGLO DA P1MSG DA >P2MSG DA >P3MSG DA >P4MSG * P1MSG HEX 19150A220E1B81 P2MSG HEX 19150A220E1B82 P3MSG HEX 19150A220E1B83 P4MSG HEX 19150A220E1B84 BMSG HEX 0B18171E9C BMMSG HEX 0B18171E1CA1 * SCVERT HEX 788898A8 SCTBLO DA SCORE1 DA >SCORE2 DA >SCORE3 DA >SCORE4 * SCORE1 HEX 000000000000000000 SCORE2 HEX 000000000000000000 SCORE3 HEX 000000000000000000 SCORE4 HEX 000000000000000000 BONUS HEX 000000000000000000 * DOSOUND CMP SERIES BMI DOS2 STA SERIES LDA #0 STA SLICE DOS2 RTS * SOUND BIT STGL BMI SOUND5 LDA SERIES BMI SOUND5 SOUND1 CLC ADC SLICE TAX STX STEMP LDY EFFECTS,X SOUND2 LDX NOTES-12,Y BEQ SOUND4 SOUND3 PHA PLA DEX BNE SOUND3 LDA $C030 INY BNE SOUND2 SOUND4 INC SLICE LDX STEMP LDA EFFECTS+1,X BNE SOUND5 * INITSOUND LDY #$FF STY SERIES INY STY SLICE SOUND5 RTS * EFFECTS HEX 540C5400 ;0 HEX 0C1824303C485400 ;4 HEX 54483C3024180C00 ;12 HEX 540C540C540C540C0C243C54543C2400 ;20 HEX 0C1824303C4854483C303C483C303C483C303C00 ;36 HEX 0C1824303C485454483C3024180C1824303C4800 ;56 HEX 0C1824300C1824300C1824300C1824300C182400 ;76 * NOTES HEX 103010301030103010301000 ;$0 HEX 183818381838183818381800 ;$0C HEX 204020402040204020402000 ;$18 HEX 284828482848284828482800 ;$24 HEX 305030503050305030503000 ;$30 HEX 385838583858385838583800 ;$3C HEX 406040604060406040604000 ;$48 HEX 486848684868486848684800 ;$54 * WIRING LDX #0 WIR2 LDA #0 STA TEMP STX XTEMP JSR GETST BPL WIR4 INX JSR GETST BPL WIR4 INX JSR GETST BPL WIR4 * INX STX XTEMP LDA TEMP BEQ WIR4 LDA LOGIC,X STA YTEMP AND #$0F TAY LDA BONUSTBL,Y CLC ADC DBONUS BCC *+4 LDA #255 STA DBONUS LDA YTEMP BPL WIR3 * JSR PRBMULT * WIR3 LDA YTEMP AND #$70 LSR LSR LSR LSR BEQ *+9 TAX LDA SOUNDTBL-1,X JSR DOSOUND * DEC XTEMP JSR TURNOFF DEC XTEMP JSR TURNOFF DEC XTEMP JSR TURNOFF * WIR4 LDA XTEMP AND #$FC CLC ADC #4 TAX CPX #24 BCC WIR2 RTS * BONUSTBL HEX 000102030405060708090A141E283264 SOUNDTBL HEX 00040C1424384C * GETST LDA LOGIC,X BEQ GETS2 INC TEMP TAY LDA VECTLO,Y STA BASE1 LDA VECTHI,Y STA BASE1+1 LDY #8 LDA (BASE1),Y RTS GETS2 LDA #$80 GETS3 RTS * TURNOFF LDX XTEMP LDA LOGIC,X BEQ GETS3 TAY LDA VECTLO,Y STA LBASE LDA VECTHI,Y STA LBASE+1 LDY #12 LDA (LBASE),Y STA TMOD1 INY LDA (LBASE),Y STA TMOD1+1 TMOD1 EQU *+1 JMP $FFFF * * DO A BALL * DOBALL LDA #0 STA INITMODE JSR INITOBJS LDX PLAYER JSR RESTOREPLAYER DOBALL2 LDA #0 STA LIVEBALLS JSR PLAY * LDA $C000 BPL DOBALL2B STA $C010 CMP #$9B BNE DOBALL2A BIT GAMEMODE BMI DOBALL2B PLA PLA PLA PLA JSR CLOSEOBJS LDX PLAYER JSR SAVEPLAYER LDA STACKTEMP JMP RELOAD * DOBALL2A CMP #$93 BNE DOBALL2B EOR STGL STA STGL * DOBALL2B LDA LIVEBALLS BNE DOBALL2 * LDA #0 STA PTIMER1 DOBALL3 JSR PLAY LDA PTIMER1 BNE DOBALL3 * LDX PLAYER JSR SAVEPLAYER LDA #$80 STA INITMODE JMP INITOBJS * * PINBALL MAIN LOOP * PLAY INC PTIMER1 BNE *+4 INC PTIMER2 LDA PTIMER1 AND #$1F BNE PLAY2 LDX #0 JSR $FB1E TYA STA PDL0 PLAY2 LDA PTIMER1 CLC ADC #$10 AND #$1F BNE PLAY3 LDX #1 JSR $FB1E TYA STA PDL1 PLAY3 LDA $C061 STA BUTN0 LDA $C062 STA BUTN1 * WMOD1 EQU *+1 LDA #16 JSR $FCA8 * LDY #0 PLAY4 CPY RUNLEN ;127 LIBOBJS BCS PLAY10 STY NEXTOBJ * LDX RUNCHN,Y LDA TIME,X AND PTIMER1 BNE PLAY9 * LDA VECTLO,X STA LBASE LDA VECTHI,X STA LBASE+1 LDY #10 LDA (LBASE),Y STA PMOD1 INY LDA (LBASE),Y STA PMOD1+1 PMOD1 EQU *+1 JSR $FFFF * LDY NEXTOBJ LDX RUNCHN,Y LDA TIME,X BNE PLAY9 LDY #16 LDA (LBASE),Y ROL BCS PLAY9 BPL PLAY6 * LDY SLEEPCNT CPY #255 BEQ PLAY9 INC SLEEPCNT LDA PLAYER STA SLEEPCODE,Y LDA SLEEPLO,Y STA BASE1 LDA SLEEPHI,Y STA BASE1+1 LDY #22 PLAY5 LDA (LBASE),Y STA (BASE1),Y DEY BPL PLAY5 JSR INITBALL JSR DRAWBALL JMP PLAY7 * PLAY6 LDA Y2 CMP LASTY BEQ PLAY8 PLAY7 LDA #$FF STA LIVEBALLS BNE PLAY9 PLAY8 LDA #$80 STA (LBASE),Y JSR DRAWBALL * PLAY9 LDY NEXTOBJ INY BNE PLAY4 * PLAY10 LDA PTIMER1 AND #$1F BNE *+5 JSR SCORE LDA PTIMER1 AND #$03 BNE SLEEP JSR SOUND JSR WIRING * SLEEP LDY #0 SLEEP2 CPY SLEEPCNT BCS SLEEP7 STY NEXTOBJ LDA SLEEPCODE,Y CMP PLAYER BNE SLEEP6 * LDA SLEEPLO,Y STA LBASE LDA SLEEPHI,Y STA LBASE+1 LDY #10 LDA (LBASE),Y STA PMOD2 INY LDA (LBASE),Y STA PMOD2+1 PMOD2 EQU *+1 JSR $FFFF * LDA BSTAT ROL BCS SLEEP3 ;EATEN BMI SLEEP6 ;CAUGHT LDA Y2 CMP LASTY BEQ SLEEP3 ;OFF BOARD LDA #$FF STA LIVEBALLS BNE SLEEP6 * SLEEP3 JSR DRAWBALL LDY NEXTOBJ CPY SLEEPCNT BEQ SLEEP5 LDX SLEEPCNT LDA SLEEPLO-1,X STA BASE1 LDA SLEEPHI-1,X STA BASE1+1 LDA SLEEPCODE-1,X STA SLEEPCODE,Y LDY #22 SLEEP4 LDA (BASE1),Y STA (LBASE),Y DEY BPL SLEEP4 SLEEP5 DEC SLEEPCNT * SLEEP6 LDY NEXTOBJ INY BNE SLEEP2 SLEEP7 RTS * INITOBJS LDY #0 INITOBJ2 CPY RUNLEN BEQ SLEEP7 STY NEXTOBJ * LDX RUNCHN,Y LDA VECTLO,X STA LBASE LDA VECTHI,X STA LBASE+1 LDY #12 LDA (LBASE),Y STA IMOD2 INY LDA (LBASE),Y STA IMOD2+1 IMOD2 EQU *+1 JSR $FFFF LDY NEXTOBJ INY BNE INITOBJ2 * CLOSEOBJS LDA #$FF STA INITMODE JSR INITOBJS CLOSE2 LDY #0 CLOSOBJS2 CPY RUNLEN BEQ SLEEP7 STY NEXTOBJ LDX RUNCHN,Y LDA VECTLO,X STA LBASE LDA VECTHI,X STA LBASE+1 LDA TIME,X LDY #8 STA (LBASE),Y LDY NEXTOBJ INY BNE CLOSOBJS2 * GETOBJ LDA #PBDATA+1 STA OBJ+1 STY NEXTOBJ LDY #0 GETNEXTOBJ LDA PBDATA,Y CLC ADC OBJ STA OBJ LDA #0 ADC OBJ+1 STA OBJ+1 CPY NEXTOBJ BEQ GETOBJ3 INY BNE GETNEXTOBJ GETOBJ3 LDY #0 LDA (OBJ),Y ;GET OBJECT ID STA OBJID * * GET THE OBJECT'S L-BASE * INY LDA (OBJ),Y STA FILLCOLOR INY LDA (OBJ),Y STA VRTXCOUNT * LDA VRTXCOUNT ASL ADC #3 ADC OBJ STA LBASE LDA OBJ+1 ADC #0 STA LBASE+1 RTS * * SAVE PLAYER'S STATE * SAVEPLAYER JSR PBASES LDY #0 SAVEP2 CPY RUNLEN BCS SAVEP3 STY NEXTOBJ LDX RUNCHN,Y LDA VECTLO,X STA LBASE LDA VECTHI,X STA LBASE+1 * LDY #0 LDA (LBASE),Y STA PARAM INY LDA (LBASE),Y STA PARAM+1 LDY #8 LDA (LBASE),Y STA PARAM+2 LDY #16 LDA (LBASE),Y STA PARAM+3 * LDY NEXTOBJ LDA PARAM STA (PBASE1),Y LDA PARAM+1 STA (PBASE2),Y LDA PARAM+2 STA (PBASE3),Y LDA PARAM+3 STA (PBASE4),Y INY BNE SAVEP2 * SAVEP3 LDY #0 SAVEP4 CPY SLEEPCNT BCS SAVEP6 STY NEXTOBJ LDA SLEEPCODE,Y CMP PLAYER BNE SAVEP5 LDA SLEEPLO,Y STA LBASE LDA SLEEPHI,Y STA LBASE+1 JSR DRAWBALL SAVEP5 LDY NEXTOBJ INY BNE SAVEP4 SAVEP6 RTS * * RESTORE A PLAYER * RESTOREPLAYER JSR PBASES LDA #$80 STA BUTN0 STA BUTN1 ;FLIPPER PROBLEM * LDY #0 RESTP2 CPY RUNLEN BCS SAVEP3 STY NEXTOBJ LDX RUNCHN,Y LDA VECTLO,X STA LBASE LDA VECTHI,X STA LBASE+1 LDA TIME,X STA STEMP * LDA (PBASE1),Y STA PARAM LDA (PBASE2),Y STA PARAM+1 LDA (PBASE3),Y STA PARAM+2 LDA (PBASE4),Y STA PARAM+3 * RESTP3 LDY #0 LDA (LBASE),Y CMP PARAM BNE RESTP4 INY LDA (LBASE),Y CMP PARAM+1 BEQ RESTP6 * RESTP4 LDA STEMP CMP #3 BNE RESTP5 LDY #10 LDA (LBASE),Y STA RMOD1 INY LDA (LBASE),Y STA RMOD1+1 RMOD1 EQU *+1 JSR $FFFF JMP RESTP3 RESTP5 JSR ADVANCE JMP RESTP3 * RESTP6 LDA PARAM+2 LDX STEMP CPX #$1F ;DROPTARGETS BEQ *+6 LDY #8 STA (LBASE),Y LDA PARAM+3 LDX STEMP ;BALLS BEQ *+12 CPX #$1F BNE *+4 ORA PARAM+2 LDY #16 STA (LBASE),Y * LDY NEXTOBJ INY BNE RESTP2 * PBASES LDA #0 STA PBASE1 STA PBASE3 LDA #$80 STA PBASE2 STA PBASE4 LDA PLTBHI,X STA PBASE1+1 STA PBASE2+1 CLC ADC #1 STA PBASE3+1 STA PBASE4+1 RTS * PLTBHI DA >P1STATE DA >P2STATE DA >P3STATE DA >P4STATE * INITWORLD LDX WSET LDA GRAVTBL,X STA WMOD4 LDX WSET+1 LDA TIMETBL,X STA WMOD1 LDX WSET+2 LDA KICKTBL,X STA WMOD3 LDX WSET+3 LDA ELASTLO,X STA WMOD2 LDA ELASTHI,X STA WMOD2+1 RTS * GRAVTBL HEX FF7F3F1F0F070301 TIMETBL HEX 302018100C080401 KICKTBL HEX 04080C1018202838 ELASTLO HEX 80400000C0804000 ELASTHI HEX 7878787877777777