base:for_speed_we_need
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:for_speed_we_need [2015-04-17 04:31] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== For Speed We Need ===== | ||
+ | All code is Turbo Assembler, but it should also work in TASS (Crossplatform turbo assembler). You will need to draw some car sprites, background, get some music etc and then enter the following code (Or just rip the stuff from FSWN V1 on the TND web site or CSDB). | ||
+ | Music at $1000-$1fff | ||
+ | ,Charset at $2000-$2800 | ||
+ | ,Sprites at $2800-$3000 | ||
+ | ,Screen map is at $4000-$5000 | ||
+ | < | ||
+ | ; | ||
+ | |||
+ | ;SETUP THE PERAMETERS FOR THE GAME | ||
+ | |||
+ | SCRTXT | ||
+ | ;IS LOCATED | ||
+ | |||
+ | SPEEDCOUNT = $02 ;THE STORAGE FOR THE | ||
+ | ; | ||
+ | |||
+ | STORE = $03F0 ;COLLISION STORAGE | ||
+ | |||
+ | SHIELD | ||
+ | CLOCKDELAY = $0341 ;DELAY FOR THE GAME | ||
+ | ;TIME | ||
+ | |||
+ | LEVEL = $0342 ;THE ACTUAL SPEED OF | ||
+ | ;THE ENEMY CARS | ||
+ | |||
+ | SYNC = $0C | ||
+ | |||
+ | RASNUM | ||
+ | POINTER | ||
+ | |||
+ | |||
+ | |||
+ | *= $5800 ;JUMP ADDRESS | ||
+ | |||
+ | ;ALL IRQ VECTORS TURNED OFF | ||
+ | |||
+ | GAME SEI | ||
+ | LDA #$81 | ||
+ | STA $DC0D | ||
+ | STA $DD0D | ||
+ | LDA #$00 | ||
+ | STA $D01A | ||
+ | LDA #$31 | ||
+ | STA $0314 | ||
+ | LDA #$EA | ||
+ | STA $0315 | ||
+ | |||
+ | ;1. CLEAR THE SCREEN. (DON'T USE | ||
+ | ;JSR $E544, AS IT CAN FAIL TO WORK | ||
+ | ;PROPERLY ON A C128. | ||
+ | |||
+ | ;SCREEN GETS CLEARED USING THE SPACEBAR | ||
+ | ;CHARSET. | ||
+ | |||
+ | |||
+ | |||
+ | LDX #$00 | ||
+ | STX POINTER | ||
+ | CLEARSCN LDA #$20 | ||
+ | STA $0400,X | ||
+ | STA $0500,X | ||
+ | STA $0600,X | ||
+ | STA $06E8,X | ||
+ | INX | ||
+ | BNE CLEARSCN | ||
+ | LDA #$00 | ||
+ | STA $D021 | ||
+ | STA $D020 | ||
+ | |||
+ | ;INITIALIZE THE GAME MUSIC | ||
+ | |||
+ | LDA #$00 | ||
+ | TAX | ||
+ | TAY | ||
+ | JSR $1000 | ||
+ | |||
+ | ;INITIALIZE EVERYTHING ELSE, SO THAT THE | ||
+ | ;GAME RESTARTS. | ||
+ | |||
+ | SEI | ||
+ | LDA #$00 | ||
+ | STA $D021 | ||
+ | STA $D020 | ||
+ | |||
+ | LDA #$01 ;LEVEL 1 IS SET | ||
+ | STA LEVEL | ||
+ | |||
+ | LDA #$00 ; | ||
+ | STA SPEEDCOUNT ;AND DELAY ARE | ||
+ | STA CLOCKDELAY ;ZEROED | ||
+ | |||
+ | LDA #$06 ; | ||
+ | STA SHIELD | ||
+ | |||
+ | LDA #$18 ; | ||
+ | STA $D018 ;SCREEN MULTI | ||
+ | STA $D016 ;COLOUR IS ON | ||
+ | |||
+ | LDA #$FF ;ALL SPRITES AND | ||
+ | STA $D01C ;MULTICOLS ARE | ||
+ | STA $D015 ;ACTIVATED | ||
+ | |||
+ | ;2. COPY ALL THE GRAPHIC DATAS TO THE | ||
+ | ;SCREEN AND FILL THE WHOLE SCREEN WITH | ||
+ | ;GREEN MULTICOLOUR ($0D). | ||
+ | |||
+ | LDX #$00 | ||
+ | COPY1A | ||
+ | STA $D800,X | ||
+ | STA $D900,X | ||
+ | STA $DA00,X | ||
+ | STA $DAE8,X | ||
+ | LDA $4000,X | ||
+ | STA $0400,X | ||
+ | LDA $4100,X | ||
+ | STA $0500,X | ||
+ | LDA $4200,X | ||
+ | STA $0600,X | ||
+ | LDA $42E8,X | ||
+ | STA $06E8,X | ||
+ | INX | ||
+ | BNE COPY1A | ||
+ | |||
+ | LDA #$09 ; | ||
+ | STA $D812 | ||
+ | STA $D813 | ||
+ | STA $D812+(1*40) | ||
+ | STA $D813+(1*40) | ||
+ | STA $D812+(2*40) | ||
+ | STA $D813+(2*40) | ||
+ | STA $D812+(3*40) | ||
+ | STA $D813+(3*40) | ||
+ | STA $D812+(4*40) | ||
+ | STA $D813+(4*40) | ||
+ | STA $D812+(5*40) | ||
+ | STA $D813+(5*40) | ||
+ | STA $D812+(6*40) | ||
+ | STA $D813+(6*40) | ||
+ | STA $D812+(7*40) | ||
+ | STA $D813+(7*40) | ||
+ | STA $D812+(8*40) | ||
+ | STA $D813+(8*40) | ||
+ | STA $D812+(9*40) | ||
+ | STA $D813+(9*40) | ||
+ | STA $D812+(10*40) | ||
+ | STA $D813+(10*40) | ||
+ | STA $D812+(11*40) | ||
+ | STA $D813+(11*40) | ||
+ | STA $D812+(12*40) | ||
+ | STA $D813+(12*40) | ||
+ | STA $D812+(13*40) | ||
+ | STA $D813+(13*40) | ||
+ | STA $D812+(14*40) | ||
+ | STA $D813+(14*40) | ||
+ | STA $D812+(15*40) | ||
+ | STA $D813+(15*40) | ||
+ | STA $D812+(16*40) | ||
+ | STA $D813+(16*40) | ||
+ | STA $D812+(17*40) | ||
+ | STA $D813+(17*40) | ||
+ | |||
+ | |||
+ | ;3. PASTE THE STATUS BAR ON TO THE | ||
+ | ;BOTTOM PORTION OF THE SCREEN. | ||
+ | |||
+ | LDX #$00 | ||
+ | COPY1B | ||
+ | STA $06F8,X | ||
+ | LDA #$0F ;GREY SCREEN | ||
+ | STA $DAF8,X | ||
+ | INX | ||
+ | CPX #$F0 | ||
+ | BNE COPY1B | ||
+ | |||
+ | ;4. SETUP THE COLOUR AND SCREEN SETTINGS | ||
+ | |||
+ | LDA #$00 ;GREY | ||
+ | STA $D023 ;SCREEN M.COL 2 | ||
+ | LDA #$09 ; | ||
+ | STA $D022 ;SCREEN M.COL 1 | ||
+ | LDA #$1B | ||
+ | STA $D011 ;TURN SCREEN ON | ||
+ | LDA #$00 | ||
+ | STA $D012 ;INIT RASTERSPLIT | ||
+ | |||
+ | ;5. SETUP ALL THE SPRITES AND POSITIONS | ||
+ | |||
+ | LDA #$A0 | ||
+ | STA $07F8 ;PLAYER SPRITE TYPE | ||
+ | LDA #$A1 | ||
+ | STA $07F9 ;ENEMY SPRITE TYPES | ||
+ | STA $07FA | ||
+ | STA $07FB | ||
+ | STA $07FC | ||
+ | STA $07FD | ||
+ | STA $07FE | ||
+ | STA $07FF | ||
+ | |||
+ | ;THIS IS THE LOOP FOR SETTING UP A | ||
+ | ;SPRITE POSITION, ACCORDINGLY TO THE | ||
+ | ;VALUES OF THE DATA TABLES. | ||
+ | |||
+ | LDX #$00 | ||
+ | SETPOS | ||
+ | STA $D002,X | ||
+ | INX | ||
+ | CPX #$0E | ||
+ | BNE SETPOS | ||
+ | |||
+ | ;DEFAULT THE PLAYER' | ||
+ | |||
+ | LDA #$68 | ||
+ | STA $D000 | ||
+ | LDA #$50 | ||
+ | STA $D001 | ||
+ | |||
+ | ;SPRITE MULTICOLOURS | ||
+ | |||
+ | LDA #$0B | ||
+ | STA $D025 | ||
+ | LDA #$0C | ||
+ | STA $D026 | ||
+ | LDA #$0A | ||
+ | STA $D027 | ||
+ | |||
+ | ;6. INITIALISE THE IRQ INTERRUPT PLAYER | ||
+ | |||
+ | LDA #<INT | ||
+ | STA $0314 | ||
+ | LDA #>INT | ||
+ | STA $0315 | ||
+ | LDA #$00 | ||
+ | STA $D012 | ||
+ | LDA #$7F | ||
+ | STA $DC0D | ||
+ | STA $DD0D | ||
+ | LDA #$1B | ||
+ | STA $D011 | ||
+ | |||
+ | LDA #$01 | ||
+ | STA $D019 | ||
+ | STA $D01A | ||
+ | STA RASNUM | ||
+ | |||
+ | CLI | ||
+ | JMP DOSYNC | ||
+ | |||
+ | ;7. OUR MAIN IRQ RASTER INTERRUPT | ||
+ | |||
+ | INT LDA $D019 | ||
+ | AND #$01 | ||
+ | STA $D019 | ||
+ | BNE IRQ1 | ||
+ | JMP $EA81 | ||
+ | |||
+ | ;8. THE BOTTOM RASTER | ||
+ | |||
+ | IRQ1 LDA RASNUM | ||
+ | CMP #$02 | ||
+ | BEQ RASTER2 | ||
+ | LDA #$00 | ||
+ | STA $D012 | ||
+ | LDA #$1B | ||
+ | STA $D011 | ||
+ | LDA #$08 | ||
+ | STA $D016 ;SCREEN MULTICOL OFF | ||
+ | LDA #$FF | ||
+ | STA $D015 ;ALL SPRITES AND MCOL | ||
+ | LDA #$00 | ||
+ | STA $D01C ;OFF | ||
+ | LDA #$FF ;ALL SPRITES BLACK | ||
+ | STA $D01B ;AND BEHIND THE | ||
+ | ; | ||
+ | |||
+ | |||
+ | ;OUR LOOP FOR THE SPRITE COLOURS, ALL | ||
+ | ;PAINTED IN BLACK. | ||
+ | |||
+ | LDX #$00 | ||
+ | COLOOP | ||
+ | STA $D028,X | ||
+ | INX | ||
+ | CPX #$07 | ||
+ | BNE COLOOP | ||
+ | |||
+ | LDA #$12 ;SCORE CHARSET | ||
+ | STA $D018 | ||
+ | LDA #$02 | ||
+ | STA RASNUM | ||
+ | JMP $EA81 | ||
+ | |||
+ | ;9. THE BOTTOM RASTER | ||
+ | |||
+ | RASTER2 | ||
+ | WAIT4 STA $D012 | ||
+ | |||
+ | ;STRAIGHTEN THE BOTTOM RASTER USING | ||
+ | ;GENERAL TIMING | ||
+ | |||
+ | LDX #$0A | ||
+ | TIME1 DEX | ||
+ | BNE TIME1 | ||
+ | |||
+ | ;NOW FOR THE MAIN BITS FOR THE SECOND | ||
+ | ;RASTER | ||
+ | |||
+ | LDA #$1B ;SCREEN ON | ||
+ | STA $D011 | ||
+ | LDA #$18 ;SCREEN MULTICOLOR | ||
+ | STA $D016 ;IS ON | ||
+ | |||
+ | LDX #$00 ;ALL SPRITES ARE | ||
+ | COLSPR | ||
+ | STA $D028,X | ||
+ | INX | ||
+ | CPX #$07 | ||
+ | BNE COLSPR | ||
+ | LDA #$FF ;SPRITE MULTICOL ON | ||
+ | STA $D01C | ||
+ | LDA #$00 ;ALL SPRITES IN FRONT | ||
+ | STA $D01B ;OF THE GRAPHICS | ||
+ | LDA #$18 ;GAME GRAPHICS ON | ||
+ | STA $D018 | ||
+ | LDA #$01 ;SWITCH RASNUM VALUE | ||
+ | STA RASNUM;FOR SPLITS | ||
+ | |||
+ | LDA #$01 ;ADD 1 TO SYNC | ||
+ | |||
+ | STA SYNC | ||
+ | JSR MOVEBAD ;MOVE ENEMIES | ||
+ | JSR MOVEJOY ;JOYSTICK | ||
+ | JSR $1003 ;PLAY MUSIC | ||
+ | JMP $EA31 | ||
+ | |||
+ | |||
+ | ;10. SYNCHRONIZE ROUTINES THEN CALL EM | ||
+ | |||
+ | DOSYNC | ||
+ | STA SYNC | ||
+ | LDA SYNC | ||
+ | RASWAIT | ||
+ | BEQ RASWAIT | ||
+ | |||
+ | JSR SCROLL ;CALL ROUGH MAP | ||
+ | ;SCROLL | ||
+ | |||
+ | JSR COLLISION ;CHECK COLLISION | ||
+ | JSR TIME ;OPERATE TIMER | ||
+ | JSR SCORE ; | ||
+ | JSR ANIMATE | ||
+ | |||
+ | JMP DOSYNC | ||
+ | |||
+ | |||
+ | ;11. OUR ROUTINE FOR THE ROUGH MAP | ||
+ | ;SCROLLER. | ||
+ | |||
+ | SOFT .BYTE $07 | ||
+ | SCRREP0 | ||
+ | COUNT .BYTE $01 | ||
+ | |||
+ | |||
+ | SCRSPEED = 1 ;MIN. = 0, MAX. = 8. | ||
+ | |||
+ | DELAY = 1 | ||
+ | |||
+ | |||
+ | SCROLL | ||
+ | DEC COUNT | ||
+ | BNE SCRREP0 | ||
+ | LDA #DELAY | ||
+ | STA COUNT | ||
+ | |||
+ | LDA $03 ;SCROLL SPEED | ||
+ | SEC | ||
+ | SPEED SBC #$05 | ||
+ | AND #$07 | ||
+ | STA $03 | ||
+ | BCS SCRREP0 | ||
+ | |||
+ | |||
+ | ;THE MAIN MAP UP THE SCREEN | ||
+ | |||
+ | ;THIS IS THE AREA WHERE THE SCREEN | ||
+ | ;CHARS IS PULLED FROM ONE AREA TO | ||
+ | ;ANOTHER ON THE GAME SCREEN. | ||
+ | |||
+ | |||
+ | SCRREP1 | ||
+ | SCRREP2 | ||
+ | |||
+ | LDA $0400+(1*40), | ||
+ | STA $0400+(0*40), | ||
+ | LDA $0400+(2*40), | ||
+ | STA $0400+(1*40), | ||
+ | LDA $0400+(3*40), | ||
+ | STA $0400+(2*40), | ||
+ | LDA $0400+(4*40), | ||
+ | STA $0400+(3*40), | ||
+ | LDA $0400+(5*40), | ||
+ | STA $0400+(4*40), | ||
+ | LDA $0400+(6*40), | ||
+ | STA $0400+(5*40), | ||
+ | LDA $0400+(7*40), | ||
+ | STA $0400+(6*40), | ||
+ | LDA $0400+(8*40), | ||
+ | STA $0400+(7*40), | ||
+ | LDA $0400+(9*40), | ||
+ | STA $0400+(8*40), | ||
+ | LDA $0400+(10*40), | ||
+ | STA $0400+(9*40), | ||
+ | LDA $0400+(11*40), | ||
+ | STA $0400+(10*40), | ||
+ | LDA $0400+(12*40), | ||
+ | STA $0400+(11*40), | ||
+ | LDA $0400+(13*40), | ||
+ | STA $0400+(12*40), | ||
+ | LDA $0400+(13*40), | ||
+ | STA $0400+(12*40), | ||
+ | LDA $0400+(14*40), | ||
+ | STA $0400+(13*40), | ||
+ | LDA $0400+(15*40), | ||
+ | STA $0400+(14*40), | ||
+ | LDA $0400+(16*40), | ||
+ | STA $0400+(15*40), | ||
+ | LDA $0400+(17*40), | ||
+ | STA $0400+(16*40), | ||
+ | LDA #$20 | ||
+ | STA $06D0,X | ||
+ | SCRREP3 | ||
+ | CMP #$00 ;USES ' | ||
+ | BEQ SCRREP4 | ||
+ | ; | ||
+ | ; | ||
+ | |||
+ | STA $0400+(17*40), | ||
+ | |||
+ | DEX | ||
+ | BPL SCRREP2 | ||
+ | |||
+ | LDA SCRREP3+1 | ||
+ | CLC | ||
+ | ADC #40 | ||
+ | STA SCRREP3+1 | ||
+ | LDA SCRREP3+2 | ||
+ | ADC #0 | ||
+ | STA SCRREP3+2 | ||
+ | RTS | ||
+ | |||
+ | SCRREP4 | ||
+ | STA SCRREP3+1 | ||
+ | LDA #$40 | ||
+ | STA SCRREP3+2 | ||
+ | JMP SCRREP2 | ||
+ | |||
+ | ;12. THE JOYSTICK BEING READ IN PORT 2 | ||
+ | ; | ||
+ | ;YOU SHOULD ALREADY KNOW WHAT HAPPENS | ||
+ | ;HERE, IT WAS EXPLAINED IN THE 2 PLAYER | ||
+ | ;BLASTER GAME. | ||
+ | |||
+ | MOVEJOY | ||
+ | LSR A | ||
+ | DOWN LSR A | ||
+ | BCS LEFT | ||
+ | LEFT LSR A | ||
+ | BCS RIGHT | ||
+ | LDX $D000 | ||
+ | DEX | ||
+ | DEX | ||
+ | DEX | ||
+ | DEX | ||
+ | CPX #$68 | ||
+ | BCS SETLEFT | ||
+ | LDX #$68 | ||
+ | SETLEFT | ||
+ | RIGHT LSR A | ||
+ | BCS FIRE | ||
+ | LDX $D000 | ||
+ | INX | ||
+ | INX | ||
+ | INX | ||
+ | INX | ||
+ | CPX #$E8 | ||
+ | BCC SETRIGHT | ||
+ | LDX #$E8 | ||
+ | SETRIGHT STX $D000 | ||
+ | FIRE RTS | ||
+ | |||
+ | ;13. ENEMY MOVEMENTS | ||
+ | |||
+ | ;YOU SHOULD ALSO BE FAMILIAR WITH THIS | ||
+ | ;ALSO, AS IT WAS KIND OF INTRODUCED IN | ||
+ | ;THE MISSILE BLASTA SOURCE. | ||
+ | |||
+ | MOVEBAD | ||
+ | BADLOOP | ||
+ | SEC | ||
+ | SBC LEVEL | ||
+ | STA $D003,X | ||
+ | LDA $D003,X | ||
+ | CMP #$0C | ||
+ | BCS RANDPLC | ||
+ | LDA RANDPOS+$00 | ||
+ | STA $D002,X | ||
+ | LDA #$FC | ||
+ | RANDPLC | ||
+ | NORAND | ||
+ | INX | ||
+ | CPX #$0E | ||
+ | BNE BADLOOP | ||
+ | LDA RANDPOS+$00 | ||
+ | STA RANDPOS+$09 | ||
+ | LDX #$00 | ||
+ | RANDOM | ||
+ | STA RANDPOS+$00, | ||
+ | INX | ||
+ | CPX #$09 | ||
+ | BNE RANDOM | ||
+ | RTS | ||
+ | |||
+ | ;14. | ||
+ | ;A SIMPLE COLLISION USING $D01E (MOST | ||
+ | ;GAMES DON'T USE THIS AS $D01E IS VERY | ||
+ | ; | ||
+ | |||
+ | COLLISION LDA $D01E | ||
+ | LSR A | ||
+ | BCC ALIVE | ||
+ | DEC SHIELD | ||
+ | LDA SHIELD ;IF SHIELD IS ZEROED | ||
+ | CMP #$00 ;GAME IS OVER. | ||
+ | BEQ DEAD | ||
+ | ALIVE RTS | ||
+ | |||
+ | ;15. PLAYER IS DEAD, SO DO GAME OVER | ||
+ | |||
+ | DEAD LDX #$00 | ||
+ | DEADLOOP LDA $6100,X | ||
+ | STA $07C0,X | ||
+ | INX | ||
+ | CPX #$28 | ||
+ | BNE DEADLOOP | ||
+ | JMP GAMEOVER | ||
+ | |||
+ | ;16. SCORE ROUTINE (YOU SHOULD BE | ||
+ | ;FAMILIAR WITH THIS RIGHT NOW) | ||
+ | |||
+ | |||
+ | SCORE INC $077C | ||
+ | LDX #$05 | ||
+ | SC LDA $0777,X | ||
+ | CMP #$3A | ||
+ | BNE SC2 | ||
+ | LDA #$30 | ||
+ | STA $0777,X | ||
+ | INC $0776,X | ||
+ | SC2 DEX | ||
+ | BNE SC | ||
+ | RTS | ||
+ | |||
+ | ;17. CLOCK ROUTINE (YOU SHOULD ALSO BE | ||
+ | ;FAMILIAR TO HOW TO MAKE A CHARACTER ON | ||
+ | ;SCREEN COUNT DOWN). | ||
+ | |||
+ | TIME INC CLOCKDELAY | ||
+ | LDA CLOCKDELAY | ||
+ | CMP #$30 | ||
+ | BNE NOTIME | ||
+ | LDA #$00 | ||
+ | STA CLOCKDELAY | ||
+ | DEC $0796 | ||
+ | LDA $0796 | ||
+ | CMP #$2F | ||
+ | BNE NOTIME | ||
+ | LDA #$39 | ||
+ | STA $0796 | ||
+ | DEC $0795 | ||
+ | LDA $0795 | ||
+ | CMP #$2F | ||
+ | BNE NOTIME | ||
+ | LDA #$30 | ||
+ | STA $0796 | ||
+ | LDA #$36 | ||
+ | STA $0795 | ||
+ | |||
+ | ;18. TIME IS UP SO GO ON TO THE NEXT | ||
+ | ;LEVEL. | ||
+ | |||
+ | INC LEVEL | ||
+ | INC $078A | ||
+ | LDA LEVEL | ||
+ | CMP #$09 | ||
+ | BNE NOTIME | ||
+ | |||
+ | ;19. ALL LEVELS ARE COMPLETE, SO NOW | ||
+ | ;THE PLAYER HAS WON THE GAME | ||
+ | |||
+ | LDA #$38 | ||
+ | STA $078A | ||
+ | LDX #$00 | ||
+ | WINTEXT | ||
+ | STA $07C0,X | ||
+ | INX | ||
+ | CPX #$28 | ||
+ | BNE WINTEXT | ||
+ | LDA #$02 | ||
+ | TAX | ||
+ | TAY | ||
+ | JSR $1000 | ||
+ | JMP GAMEOVER | ||
+ | NOTIME | ||
+ | |||
+ | |||
+ | ;20. OUR SIMPLE PRESS FIRE TO PLAY AGAIN | ||
+ | ;ROUTINE AND LOOP. | ||
+ | |||
+ | GAMEOVER SEI | ||
+ | LDA #$00 | ||
+ | STA $D015 | ||
+ | LDA #$12 | ||
+ | STA $D018 | ||
+ | LDX #$00 | ||
+ | CLEAR2 | ||
+ | STA $0400+(0*40), | ||
+ | STA $0400+(1*40), | ||
+ | STA $0400+(2*40), | ||
+ | STA $0400+(3*40), | ||
+ | STA $0400+(4*40), | ||
+ | STA $0400+(5*40), | ||
+ | STA $0400+(6*40), | ||
+ | STA $0400+(7*40), | ||
+ | STA $0400+(8*40), | ||
+ | STA $0400+(9*40), | ||
+ | STA $0400+(10*40), | ||
+ | STA $0400+(11*40), | ||
+ | STA $0400+(12*40), | ||
+ | STA $0400+(13*40), | ||
+ | STA $0400+(14*40), | ||
+ | STA $0400+(15*40), | ||
+ | STA $0400+(16*40), | ||
+ | STA $0400+(17*40), | ||
+ | STA $0400+(18*40), | ||
+ | INX | ||
+ | CPX #$28 | ||
+ | BNE CLEAR2 | ||
+ | LDA #$03 | ||
+ | TAX | ||
+ | TAY | ||
+ | JSR $1000 | ||
+ | HITFIRE | ||
+ | RAS CMP $D012 | ||
+ | BNE RAS | ||
+ | LDA #$08 | ||
+ | STA $D016 | ||
+ | |||
+ | JSR $1003 ;MUSIC STILL PLAY | ||
+ | LDA $DC00 | ||
+ | LSR A | ||
+ | LSR A | ||
+ | LSR A | ||
+ | LSR A | ||
+ | LSR A | ||
+ | BCS HITFIRE | ||
+ | JMP GAME | ||
+ | |||
+ | ;21. OUR ANIMATION PROCESS | ||
+ | |||
+ | ANIMATE | ||
+ | LDA FRAME1+$00, | ||
+ | STA $07F8 | ||
+ | LDY FRAME2+$00, | ||
+ | STY $07F9 | ||
+ | STY $07FA | ||
+ | STY $07FB | ||
+ | STY $07FC | ||
+ | STY $07FD | ||
+ | STY $07FE | ||
+ | STY $07FF | ||
+ | INX | ||
+ | CPX #$0B | ||
+ | BEQ RESETPT | ||
+ | INC POINTER | ||
+ | RTS | ||
+ | RESETPT | ||
+ | STX POINTER | ||
+ | RTS | ||
+ | |||
+ | ;22. THE DATA TABLES FOR THE F.S.W.N | ||
+ | ;GAME. | ||
+ | |||
+ | ; POSITIONS FOR THE PLAYER | ||
+ | |||
+ | POSITION .BYTE $90, | ||
+ | .BYTE $B0, | ||
+ | .BYTE $C0,$D8 | ||
+ | |||
+ | ;RANDOM POSITIONS FOR ENEMIES | ||
+ | |||
+ | RANDPOS | ||
+ | .BYTE $98,$B8,$A8 | ||
+ | |||
+ | ;COLOURS FOR ALL SPRITES | ||
+ | |||
+ | COLOURS | ||
+ | .BYTE $0E,$0D | ||
+ | |||
+ | ;PLAYER ANIMATION TABLE | ||
+ | |||
+ | FRAME1 | ||
+ | .BYTE $A1, | ||
+ | .BYTE $A1, | ||
+ | |||
+ | ;ENEMY ANIM TABLE | ||
+ | |||
+ | FRAME2 | ||
+ | .BYTE $A3, | ||
+ | .BYTE $A3 | ||
+ | </ |
base/for_speed_we_need.txt · Last modified: 2015-04-17 04:31 by 127.0.0.1