I just recently installed 2 patches in my hack and have noticed 1up Mushrooms don't add a 1up to the life counter anymore. But you can still get 1ups from 100 coins or 5 dragon coins (as seen
here).
The 2 patches I used were "Give coin instead of points" patch by KevinM & "Spinning Coin on Fireball Kill" by RussianMan. Both were patch in an effort entirely replace score with coins, and both work well outside of this 1up issue. to Below are the respective codes.
"Give coin instead of points"
Codeif read1($00FFD5) == $23 ; check if the rom is sa-1
sa1rom
!addr = $6000
!D8 = $3216
!E4 = $322C
!14D4 = $3258
!14E0 = $326E
else
lorom
!addr = $0000
!D8 = $D8
!E4 = $E4
!14D4 = $14D4
!14E0 = $14E0
endif
org $02ACE6
autoclean JSL GiveCoin
PLX
RTL
freedata
GiveCoin:
INC $13CC|!addr ; Give 1 coin
LDA $0DC0|!addr ;\ Update the green star block counter
BEQ + ;|
DEC $0DC0|!addr ;/
+ LDA !14E0,x ;\ If the sprite is offscreen, don't spawn the spinning coin
XBA ;|
LDA !E4,x ;|
REP #$20 ;|
SEC ;|
SBC $1A ;|
CLC ;|
ADC #$0010 ;|
CMP #$0120 ;|
SEP #$20 ;|
BCS .Return ;/
; LDA #$01 ;\ Play coin sfx
; STA $1DFC|!addr ;/
PHY ; Save Y for later
LDY #$03 ;\ Find free spinning coin slot (and overrite if necessary)
- LDA $17D0|!addr,y ;|
BEQ + ;|
DEY ;|
BPL - ;|
INY ;/
+ LDA #$01 ;\ Set slot as taken
STA $17D0|!addr,y ;/
LDA !E4,x ;\ Position of coin = position of sprite
STA $17E0|!addr,y ;|
LDA !14E0,x ;|
STA $17EC|!addr,y ;|
LDA !D8,x ;|
STA $17D4|!addr,y ;|
LDA !14D4,x ;|
STA $17E8|!addr,y ;/
LDA #$00 ;\ Set spawned from layer 1
STA $17E4|!addr,y ;/
LDA #$D0 ;\ Y speed
STA $17D8|!addr,y ;/
PLY ; Restore Y
.Return
RTL ; Return
"Spinning Coin on Fireball Kill"
Code!bank = $800000
!addr = $0000
!D8 = $D8
!E4 = $E4
!14D4 = $14D4
!14E0 = $14E0
!14C8 = $14C8
if read1($00FFD5) == $23
sa1rom
!bank = $000000
!addr = $6000
!D8 = $3216
!E4 = $322C
!14D4 = $3258
!14E0 = $326E
!14C8 = $3242
endif
org $02A124
autoclean JML TurnIntoSpinningCoin
freecode
TurnIntoSpinningCoin:
LDA #$03 ;restore sound effect
STA $1DF9|!addr ;
STZ !14C8,x ;the sprite is dead, really dead
SpawnSpinningCoin:
LDY #$03 ;all spinning coin sprite slots
.Loop
LDA $17D0|!addr,y ;
BEQ .Spawn ;
DEY ;
BPL .Loop ;
DEC $1865|!addr ;if no slot is free, replace one of them
BPL .UseDisAddr ;
LDA #$03 ;
STA $1865|!addr ;
.UseDisAddr
LDY $1865|!addr ;
.Spawn
LDA #$01 ;
STA $17D0|!addr,y ;
DEC ;process on layer 1
STA $17E4|!addr,y ;
JSL $05B34A|!bank ;add a single coin
LDA !D8,x ;set position, Y
STA $17D4|!addr,y ;
LDA !14D4,x ;high byte
STA $17E8|!addr,y ;
LDA !E4,x ;set position, X
STA $17E0|!addr,y ;
LDA !14E0,x ;high byte
STA $17EC|!addr,y ;
LDA #$D0 ;coin timer
STA $17D8|!addr,y ;
JML $02A143|!bank ;next slot and stuff
Any ideas on what the problem may be?