Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;====================;
- ;Goal Roulette
- ;=====================;
- ; Extra bit: YES. If set, the secret exit is activated.
- !YellowCoin = 5 ; How many coins the Yellow coin gives.
- !BlueCoin = 10 ; How many coins the Blue coin gives.
- !RedCoin = 20 ; How many coins the Red coin gives.
- !OneUp = 1 ; How many extra lives you get when you hit the 1-up.
- !AnimationRate = 3 ; Animation speed. 1 is very fast, 5 is very slow.
- Img:
- db $E8 ; PAGE 1 - 5 COIN PALETTE A
- db $24 ; PAGE 1 - MUSHROOM PALETTE C
- db $E8 ; PAGE 1 - 10 COIN PALETTE B
- db $26 ; PAGE 1 - FLOWER PALETTE D
- db $2E ; PAGE 1 - NOTHING PALETTE 9
- db $E8 ; PAGE 1 - 20 COIN PALETTE C
- db $24 ; PAGE 1 - 1-UP PALETTE D
- db $2E ; PAGE 1 - NOTHING PALETTE 9
- Palette:
- db $04,$08,$06,$0A
- db $02,$08,$0A,$02
- print "INIT ", pc
- LDA $7FAB10,x
- AND #$04
- STA $1504,x
- RTL
- print "MAIN ", pc
- PHB
- PHK
- PLB
- JSR Run
- PLB
- RTL
- Return:
- RTS
- Run:
- JSR Graphics
- JSR SUB_OFF_SCREEN_X0
- LDA $14C8,x
- CMP #$08
- BNE Return
- LDA $9D
- BNE Return
- LDA $C2,x
- BEQ NoTouch
- LDA $D8,x
- CMP #$E0
- BNE .Rise
- LDA #$04
- STA $14C8,x
- JSR DrawSmoke
- STZ $AA,x
- LDA #$10
- STA $1DF9
- BRA +
- .Rise
- LDA #$EE
- STA $AA,x
- +
- JSL $01802A
- End:
- RTS
- NoTouch:
- JSL $01A7DC
- BCC End
- LDA #$01
- STA $C2,x
- LDA $14
- LSR #2
- AND #$07
- STA $1510,x
- PHX
- ASL A
- TAX
- JSR (Ptr,x)
- PLX
- STZ $13F3
- STZ $1891
- STZ $18C0
- STZ $18B9
- STZ $18DD
- JSL $00FA80
- LDA #$FF
- STA $1493
- STA $0DDA
- LDA #$0C
- STA $1DFB
- LDA $1504,x
- BEQ +
- LDA #$01
- STA $141C
- RTS
- DEC $13C6
- LDA #$FF
- STA $1493
- LDA #$0B
- STA $1DFB
- RTS
- Ptr:
- dw FIVE_COIN
- dw MUSHROOM
- dw TEN_COIN
- dw FLOWER
- dw NOTHING
- dw TWENTY_COIN
- dw ONE_UP
- dw NOTHING
- FIVE_COIN:
- LDA #$01
- STA $1DFC
- LDA #!YellowCoin
- STA $13CC
- RTS
- MUSHROOM:
- LDA #$01
- STA $19
- LDA #$2F
- STA $1496
- LDA #$0A
- STA $1DF9
- RTS
- TEN_COIN:
- LDA #$01
- STA $1DFC
- LDA #!BlueCoin
- STA $13CC
- RTS
- FLOWER:
- LDA #$03
- STA $19
- RTS
- NOTHING:
- LDA #$2A
- STA $1DFC
- RTS
- TWENTY_COIN:
- LDA #$01
- STA $1DFC
- LDA #!RedCoin
- STA $13CC
- RTS
- ONE_UP:
- LDA #!OneUp
- STA $18E4
- NO_TOUCH:
- RTS
- DrawSmoke: LDY #$03 ; \ find a free slot to display effect
- FINDFREE: LDA $17C0,y ; |
- BEQ FOUNDONE ; |
- DEY ; |
- BPL FINDFREE ; |
- RTS ; / return if no slots open
- FOUNDONE: LDA #$01 ; \ set effect graphic to smoke graphic
- STA $17C0,y ; /
- LDA #$1B ; \ set time to show smoke
- STA $17CC,y ; /
- LDA $D8,x ; \ smoke y position = generator y position
- STA $17C4,y ; /
- LDA $E4,x ; \ load generator x position and store it for later
- STA $17C8,y ; /
- RTS
- Graphics:
- JSR GET_DRAW_INFO
- LDA $00
- STA $0300,y
- LDA $01
- STA $0301,y
- LDA $C2,x
- BNE CUSTOM
- LDA $14
- LSR #!AnimationRate
- AND #$07
- PHX
- TAX
- LDA Img,x ; Pick a random image.
- STA $0302,y
- LDA Palette,x ; Palette is also.. random based.
- ORA $64
- STA $0303,y
- PLX
- BRA SHARE
- CUSTOM:
- PHY
- LDY $1510,x
- LDA Img,y
- PLY
- STA $0302,y
- PHY
- LDY $1510,x
- LDA Palette,y
- PLY
- STA $0303,y
- SHARE:
- INY
- INY
- INY
- INY
- LDY #$02
- LDA #$00
- JSL $01B7B3
- RTS
- SUB_HORZ_POS:
- LDY #$00
- LDA $D1
- SEC
- SBC $E4,x
- STA $0F
- LDA $D2
- SBC $14E0,x
- BPL SPR_L16
- INY
- SPR_L16:
- RTS
- SUB_VERT_POS:
- LDY #$00
- LDA $D3
- SEC
- SBC $D8,x
- STA $0F
- LDA $D4
- SBC $14D4,x
- BPL SPR_L11
- INY
- SPR_L11:
- RTS
- SPR_T12:
- db $40,$B0
- SPR_T13:
- db $01,$FF
- SPR_T14:
- db $30,$C0,$A0,$C0,$A0,$F0,$60,$90
- db $30,$C0,$A0,$80,$A0,$40,$60,$B0
- SPR_T15:
- db $01,$FF,$01,$FF,$01,$FF,$01,$FF
- db $01,$FF,$01,$FF,$01,$00,$01,$FF
- SUB_OFF_SCREEN_X1:
- LDA #$02
- BRA STORE_03
- SUB_OFF_SCREEN_X2:
- LDA #$04
- BRA STORE_03
- SUB_OFF_SCREEN_X3:
- LDA #$06
- BRA STORE_03
- SUB_OFF_SCREEN_X4:
- LDA #$08
- BRA STORE_03
- SUB_OFF_SCREEN_X5:
- LDA #$0A
- BRA STORE_03
- SUB_OFF_SCREEN_X6:
- LDA #$0C
- BRA STORE_03
- SUB_OFF_SCREEN_X7:
- LDA #$0E
- STORE_03:
- STA $03
- BRA START_SUB
- SUB_OFF_SCREEN_X0:
- STZ $03
- START_SUB:
- JSR SUB_IS_OFF_SCREEN
- BEQ RETURN_35
- LDA $5B
- AND #$01
- BNE VERTICAL_LEVEL
- LDA $D8,x
- CLC
- ADC #$50
- LDA $14D4,x
- ADC #$00
- CMP #$02
- BPL ERASE_SPRITE
- LDA $167A,x
- AND #$04
- BNE RETURN_35
- LDA $13
- AND #$01
- ORA $03
- STA $01
- TAY
- LDA $1A
- CLC
- ADC SPR_T14,y
- ROL $00
- CMP $E4,x
- PHP
- LDA $1B
- LSR $00
- ADC SPR_T15,y
- PLP
- SBC $14E0,x
- STA $00
- LSR $01
- BCC SPR_L31
- EOR #$80
- STA $00
- SPR_L31:
- LDA $00
- BPL RETURN_35
- ERASE_SPRITE:
- LDA $14C8,x
- CMP #$08
- BCC KILL_SPRITE
- LDY $161A,x
- CPY #$FF
- BEQ KILL_SPRITE
- LDA #$00
- STA $1938,y
- KILL_SPRITE:
- STZ $14C8,x
- RETURN_35:
- RTS
- VERTICAL_LEVEL:
- LDA $167A,x
- AND #$04
- BNE RETURN_35
- LDA $13
- LSR A
- BCS RETURN_35
- LDA $E4,x
- CMP #$00
- LDA $14E0,x
- SBC #$00
- CMP #$02
- BCS ERASE_SPRITE
- LDA $13
- LSR A
- AND #$01
- STA $01
- TAY
- LDA $1C
- CLC
- ADC SPR_T12,y
- ROL $00
- CMP $D8,x
- PHP
- LDA $001D
- LSR $00
- ADC SPR_T13,y
- PLP
- SBC $14D4,x
- STA $00
- LDY $01
- BEQ SPR_L38
- EOR #$80
- STA $00
- SPR_L38:
- LDA $00
- BPL RETURN_35
- BMI ERASE_SPRITE
- SUB_IS_OFF_SCREEN:
- LDA $15A0,x
- ORA $186C,x
- RTS
- SPR_T1:
- db $0C,$1C
- SPR_T2:
- db $01,$02
- GET_DRAW_INFO:
- STZ $186C,x
- STZ $15A0,x
- LDA $E4,x
- CMP $1A
- LDA $14E0,x
- SBC $1B
- BEQ ON_SCREEN_X
- INC $15A0,x
- ON_SCREEN_X:
- LDA $14E0,x
- XBA
- LDA $E4,x
- REP #$20
- SEC
- SBC $1A
- CLC
- ADC.w #$0040
- CMP.w #$0180
- SEP #$20
- ROL A
- AND #$01
- STA $15C4,x
- BNE INVALID
- LDY #$00
- LDA $1662,x
- AND #$20
- BEQ ON_SCREEN_LOOP
- INY
- ON_SCREEN_LOOP:
- LDA $D8,x
- CLC
- ADC SPR_T1,y
- PHP
- CMP $1C
- ROL $00
- PLP
- LDA $14D4,x
- ADC #$00
- LSR $00
- SBC $1D
- BEQ ON_SCREEN_Y
- LDA $186C,x
- ORA SPR_T2,y
- STA $186C,x
- ON_SCREEN_Y:
- DEY
- BPL ON_SCREEN_LOOP
- LDY $15EA,x
- LDA $E4,x
- SEC
- SBC $1A
- STA $00
- LDA $D8,x
- SEC
- SBC $1C
- STA $01
- RTS
- INVALID:
- PLA
- PLA
- RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement