;SETTING UP THE COLOURS FOR THE
PLAYER SPRITE MULTICOLOURS .SetUpLevel1 lda #$0f sta DefaultColourSet1+1 lda #$0b sta DefaultColourSet2+1 ;SETTING UP THE ENEMY COLOUR TABLE ldx #<.Level1EnemyColourTable ldy #>.Level1EnemyColourTable jsr .BuildColourTable ;SETTING UP THE ENEMY OBJECT TYPE ldx #<.EnemyBird1 ldy #>.EnemyBird1 stx .EnemyType1+1 sty .EnemyType1+2 stx .EnemyType2+1 sty .EnemyType2+2 stx .EnemyType3+1 sty .EnemyType3+2 stx .EnemyType4+1 sty .EnemyType4+2 stx .EnemyType5+1 sty .EnemyType5+2 ;DEFAULT LEVEL SPRITE OUTLINE COLOURS lda #$0f sta LevelSprCol+1 ;Enemy Speed Tables ldx #<.Level1XSpeedTable ldy #>.Level1XSpeedTable stx LevelSpeedStore+1 sty LevelSpeedStore+2 ;SPRITE = BULLET? #$00 = NO, #$01 = YES lda #$00 sta .Sprite5IsBullet ;Setting the limit for enemy lives lda #$01 sta .DefaultEnemy1Life sta .DefaultEnemy2Life sta .DefaultEnemy3Life sta .DefaultEnemy4Life sta .DefaultEnemy5Life sta .Enemy1Life sta .Enemy2Life sta .Enemy3Life sta .Enemy4Life sta .Enemy5Life ;Setting up and decrunching the screen data via Exomizer decrunch ;source. ldx #<ScreenL1 ldy #>ScreenL1 stx StoreHi sty StoreLo jsr Decrunch ;Enemy control tables ldx #<.Level1UControlTable1 ldy #>.Level1UContralTable1 stx StoreControlUp1+1 sty StoreControlUp1+2 ldx #<.Level1DControlTable1 ldy #>.Level1DControlTable1 stx StoreControlDown1+1 sty StoreControlDown1+2 ldx #<.Level1UControlTable2 ldy #>.Level1UContralTable2 stx StoreControlUp2+1 sty StoreControlUp2+2 ldx #<.Level1DControlTable2 ldy #>.Level1DControlTable2 stx StoreControlDown2+1 sty StoreControlDown2+2 ldx #<.Level1UControlTable3 ldy #>.Level1UContralTable3 stx StoreControlUp3+1 sty StoreControlUp3+2 ldx #<.Level1DControlTable3 ldy #>.Level1DControlTable3 stx StoreControlDown3+1 sty StoreControlDown3+2 ldx #<.Level1UControlTable4 ldy #>.Level1UContralTable4 stx StoreControlUp4+1 sty StoreControlUp4+2 ldx #<.Level1DControlTable4 ldy #>.Level1DControlTable4 stx StoreControlDown4+1 sty StoreControlDown4+2 ldx #<.Level1UControlTable5 ldy #>.Level1UContralTable5 stx StoreControlUp5+1 sty StoreControlUp5+2 ldx #<.Level1DControlTable5 ldy #>.Level1DControlTable5 stx StoreControlDown5+1 sty StoreControlDown5+2 jsr .RemoveLine ;Remove unwanted charline jsr .SetUpEnemyYControl ;Setup the enemy control rts (Whole routine repeated each time for each level). |
SetupLevelData ldx LevelCounter ;Read the default colour setting table lda DefaultColourSetTable1,x sta DefaultColourSet1+1 lda DefaultColourSetTable2,x sta DefaultColourSet2+1 ;Read the enemy colour setting table lda LevelEnemyColourTableLow,x sta ResetColours+1 lda LevelEnemyColourTableHi,x sta ResetColours+2 ;Setting up the enemy object type lda EnemyObjectTableLow1,x sta EnemyType1+1 lda EnemyObjectTableLow2,x sta EnemyType2+1 lda EnemyObjectTableLow3,x sta EnemyType3+1 lda EnemyObjectTableLow4,x sta EnemyType4+1 lda EnemyObjectTableLow5,x sta EnemyType5+1 lda EnemyObjectTableHi1,x sta EnemyType1+2 lda EnemyObjectTableHi2,x sta EnemyType2+2 lda EnemyObjectTableHi3,x sta EnemyType3+2 lda EnemyObjectTableHi4,x sta EnemyType4+2 lda EnemyObjectTableHi5,x sta EnemyType5+2 ;Default sprite outline colours lda OutLineColourTable,x sta LevelSprCol+1 ;Enemy Speed setup lda LevelSpeedTableLow,x sta LevelSpeedStore+1 lda LevelSpeedTableHi,x sta LevelSpeedStore+2 ;Sprite bullet? #$00 = NO, #$01 = YES lda Sprite5IsBulletTable,x sta Sprite5IsBullet ;Setting up the number of lives an enemy can have before ;it gets killed lda Enemy1LivesTable,x sta DefaultEnemy1Life sta Enemy1Life lda Enemy2LivesTable,x sta DefaultEnemy2Life sta Enemy2Life lda Enemy3LivesTable,x sta DefaultEnemy3Life sta Enemy3Life lda Enemy4LivesTable,x sta DefaultEnemy4Life sta Enemy4Life lda Enemy5LivesTable,x sta DefaultEnemy5Life sta Enemy5Life ;Level screen decrunching phase lda ScreenDecrunchLow,x sta StoreLo lda ScreenDecrunchHi,x sta StoreHi ;Enemy control tables lda Enemy1UpControlLow,x sta StoreControlUp1+1 lda Enemy1UpControlHi,x sta StoreControlUp1+2 lda Enemy1DownControlLow,x sta StoreControlDown1+1 lda Enemy1DownControlHi,x sta StoreControlDown1+2 lda Enemy2UpControlLow,x sta StoreControlUp2+1 lda Enemy2UpControlHi,x sta StoreControlUp2+2 lda Enemy2DownControlLow,x sta StoreControlDown2+1 lda Enemy2DownControlHi,x sta StoreControlDown2+2 lda Enemy3UpControlLow,x sta StoreControlUp3+1 lda Enemy3UpControlHi,x sta StoreControlUp3+2 lda Enemy3DownControlLow,x sta StoreControlDown3+1 lda Enemy3DownControlHi,x sta StoreControlDown3+2 lda Enemy4UpControlLow,x sta StoreControlUp4+1 lda Enemy4UpControlHi,x sta StoreControlUp4+2 lda Enemy4DownControlLow,x sta StoreControlDown4+1 lda Enemy4DownControlHi,x sta StoreControlDown4+2 lda Enemy5UpControlLow,x sta StoreControlUp5+1 lda Enemy5UpControlHi,x sta StoreControlUp5+2 lda Enemy5DownControlLow,x sta StoreControlDown5+1 lda Enemy5DownControlHi,x sta StoreControlDown5+2 ;Let the level value add one (increment it) inx ; cpx #21 ;Level 20 exceeded, jump to end beq .EndSequence rts .EndSequence inc $d020 jmp *-3 ;Silly flashy border thingy ;A subroutine for incrementing the level then jumping back ;to the main game. .LevelComplete inc .LevelCounter jsr .RemoveLine jsr .SetUpEnemyYControl jsr .Decruncher jmp .GameRefresh .GameRefresh (Main loop) jsr SetupLevelData ... Rest of program ... |