Sparse Invaders Source - Invaders Player.txt
From Retrosoftware
(Difference between revisions)
Neilb (Talk | contribs)
(New page: == Sparse Invaders Source - Invader_Player.txt == ;------------------------------------------------------------------------------- ; Invader_Player ; Written by Neil Beresf...)
Next diff →
Current revision
Sparse Invaders Source - Invader_Player.txt
;------------------------------------------------------------------------------- ; Invader_Player ; Written by Neil Beresford. ; ; Copyright 2008,2009 Neil Beresford ; ; This file is part of Sparse Invaders. ; Sparse Invaders is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; ; Sparse Invaders is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with Sparse Invaders. If not, see <http://www.gnu.org/licenses/>. ; ; ; Notes: ; ;------------------------------------------------------------------------------- .require "Constands" .require "Macros" ;------------------------------------------------------------------------------- .alias EXPLOSION_TIME 20 ; explosion time for invader and mother etc .alias PLAYER_BULLET_SPRITE 6 ; sprtie for the player's bullet ;------------------------------------------------------------------------------- ; PlayerInit: ; initializes the player at the start of the level and game... ;------------------------------------------------------------------------------- PlayerInit: ; initialize the player and bullet LDA #PLAYER_STARTX STA PLAYER_X LDA #PLAYER_STARTY STA PLAYER_Y LDA #0 STA PLAYER_FRAME LDA #$ff STA PLAYER_BULLET_X STA PLAYER_BULLET_Y STA PLAYER_BULLET_F ;kick off the player... LDA #0 STA SPRITE STA CALLPARAM1 STA CALLPARAM2 LDA #PLAYER_SPRITE_SLOT LDX PLAYER_X LDY PLAYER_Y JSR SpriteController.SpriteStart LDA #1 STA GAME_LEVEL LDA #3 STA PLAYER_LIFES LDA #ONE_HALF_SEC_DELAY STA DELAY_COUNT LDA #0 STA INPUTCHECK STA SCORE_LO STA SCORE_HI LDA #<500 STA BONUSSCORE_LO LDA #>500 STA BONUSSCORE_HI RTS ;------------------------------------------------------------------------------- ; ; Bullet functionality... ; ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; Player_BulletStart: ; initializes the player bullet... ;------------------------------------------------------------------------------- Player_BulletStart: LDA #0 ;fire bullet JSR Sound._MAKE_SOUND LDA PLAYER_X CLC ADC #1 STA PLAYER_BULLET_X LDA PLAYER_Y SEC SBC #5 STA PLAYER_BULLET_Y LDA #PLAYER_BULLET_SPRITE STA SPRITE LDA #0 STA CALLPARAM1 STA CALLPARAM2 LDA #BULLET_SPRITE_SLOT LDX PLAYER_BULLET_X LDY PLAYER_BULLET_Y JSR SpriteController.SpriteStart RTS ;------------------------------------------------------------------------------- ; Player_BulletStart: ; initializes the player bullet... ;------------------------------------------------------------------------------- Player_BulletMove: LDA PLAYER_BULLET_Y CMP #$ff BEQ PBM_End LDA PLAYER_BULLET_Y SEC SBC #4 CMP #8 BCS PBM_checkInvaders PBM_killBullet: LDA #BULLET_SPRITE_SLOT*16 LDX #SPRFLAG_KILL + SPRFLAG_REDRAW JSR SpriteController.Sprite_SetFlag LDA #$ff STA PLAYER_BULLET_X STA PLAYER_BULLET_Y STA PLAYER_BULLET_F RTS PBM_checkInvaders: STA PLAYER_BULLET_Y ; but ... first check the bases ... ;-) LDX PLAYER_BULLET_X LDY PLAYER_BULLET_Y JSR Invader_Bases.CheckCollison BCS PBM_KillBullet LDX PLAYER_BULLET_X LDY PLAYER_BULLET_Y JSR Invader_Baddies.Baddie_CheckKill CMP #$ff BNE PBM_KillBullet PBM_moveSprite: LDA #BULLET_SPRITE_SLOT LDX PLAYER_BULLET_X LDY PLAYER_BULLET_Y JMP SpriteController.SpriteMoveSprite PBM_End: RTS ;------------------------------------------------------------------------------- ; Explosion ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; Player_ExplosionStart: ; initializes the player or invader explosion... ; x - XPOS ; y - YPOS ;------------------------------------------------------------------------------- Player_ExplosionStart: LDA EXPLOSION_COUNT BNE PES_end LDA #EXPLOSION_TIME STA EXPLOSION_COUNT LDA #0 STA CALLPARAM1 STA CALLPARAM2 LDA #5 STA SPRITE LDA #EXPLOSION_SPRITE_SLOT JMP SpriteController.SpriteStart PES_end: RTS ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; Player_MotherExplosionStart: ; initializes the other explosion... ; x - XPOS ; y - YPOS ;------------------------------------------------------------------------------- Player_MotherExplosionStart: LDA EXPLOSION2_COUNT BNE PES_end INX INX LDA #EXPLOSION_TIME STA EXPLOSION2_COUNT LDA #0 STA CALLPARAM1 STA CALLPARAM2 LDA #5 STA SPRITE LDA #EXPLOSION2_SPRITE_SLOT JMP SpriteController.SpriteStart ;------------------------------------------------------------------------------- ; Game Messages ... ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; Player_GameMessage: ; displays the start game message ;------------------------------------------------------------------------------- Player_GameMessage: LDA #GAME_STATE_INTRO ; GAME state STA GAME_STATE LDA #ONE_HALF_SEC_DELAY STA DELAY_COUNT LDA #0 STA INPUTCHECK LDA #<GM_1 STA USERPTR LDA #>GM_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_11 STA USERPTR LDA #>GM_11 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_2 STA USERPTR LDA #>GM_2 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_3 STA USERPTR LDA #>GM_3 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_31 STA USERPTR LDA #>GM_31 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_32 STA USERPTR LDA #>GM_32 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_4 STA USERPTR LDA #>GM_4 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage PGM_waitFire: LDA #0 STA INPUTCHECK PGM_CheckKeys: LDA DELAY_COUNT BNE PGM_CK LDA #<IN_1 STA USERPTR LDA #>IN_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage PGM_CK: JSR Keyboard.Keyboard_checkkeys LDA INPUTCHECK AND #INPUTFLAG_FIRE BEQ PGM_CheckKeys RTS ;------------------------------------------------------------------------------- ; Player_StartLevel: ; displays the game message, passing in the message number ;------------------------------------------------------------------------------- Player_StartLevel: LDA #GAME_STATE_STARTLEVEL ; GAME state STA GAME_STATE ; convert the number ... LDX #11 LDA GAME_LEVEL CMP #10 BCC PSL_dounits PSL_dotens: SEC SBC #10 PHA LDA SL_1,X CLC ADC #1 STA SL_1,X PLA CMP #10 BCS PSL_dotens INX PSL_dounits: CLC ADC #48 STA SL_1,X INX LDA #0 STA SL_1,X JSR ScreenFunctionality.Screen_Clear ; Display main message... LDA #<GM_1 STA USERPTR LDA #>GM_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GM_11 STA USERPTR LDA #>GM_11 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<SL_1 STA USERPTR LDA #>SL_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #GAME_STATE_PLAYING ; GAMe state STA GAME_STATE LDA #ONE_HALF_SEC_DELAY STA DELAY_COUNT JMP PGM_waitFire ;------------------------------------------------------------------------------- ; Player_GameOver: ; displays the game over message ;------------------------------------------------------------------------------- Player_GameOver: LDA #8 ;;//stop loop JSR Sound._MAKE_SOUND LDA #GAME_STATE_INVADED ; GAME state STA GAME_STATE PG_AdjustScore: LDA SCORE_ADDITION BEQ PG_Cont JSR ScreenFunctionality.AdjustScore JMP PG_AdjustScore PG_Cont: LDX SCORE_LO LDY SCORE_HI JSR Invader_Hiscore.Invader_CheckScore LDA #<GO_2 CLC ADC #10 STA USERPTR LDA #>GO_2 ADC #0 STA USERPTR+1 JSR ScreenFunctionality.Screen_CopyScoreToString JSR ScreenFunctionality.Screen_Clear ; Display main message... LDA #<GM_1 STA USERPTR LDA #>GM_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GO_1 STA USERPTR LDA #>GO_1 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #<GO_2 STA USERPTR LDA #>GO_2 STA USERPTR+1 JSR ScreenFunctionality.Screen_PositionedMessage LDA #ONE_HALF_SEC_DELAY STA DELAY_COUNT LDA #0 STA INPUTCHECK JSR PGM_waitFire JMP Invader_Hiscore.Invader_Hiscore_Display ;------------------------------------------------------------------------------- ; strings used for game ;------------------------------------------------------------------------------- GM_1: .byte 2,3,"sparse invaders",0 GM_11: .byte 1,5,"a small production",0 GM_2: .byte 4,9,"written by",0 GM_3: .byte 3,11,"neil beresford",0 GM_31: .byte 4,18,"sound by pj",0 GM_32: .byte 3,20,"misc by steve o ",0 GM_4: .byte 2,24,"date 3 nov 2009",0 SL_1: .byte 5,10,"level ",0 GO_1: .byte 5,11,"game over",0 GO_2: .byte 4,17,"score xxxx",0 IN_1: .byte 3,26,"fire to start",0 ;------------------------------------------------------------------------------- ; End of Invader_Player ;-------------------------------------------------------------------------------