Compare commits
	
		
			2 Commits
		
	
	
		
			714f27c28b
			...
			5b19ba1db0
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								 | 
						5b19ba1db0 | |
| 
							
							
								 | 
						09f7f07827 | 
							
								
								
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/DMGTRIS.GBC
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -1238,12 +1238,8 @@ FieldProcess::
 | 
			
		|||
    ldh [hCurrentPieceY], a
 | 
			
		||||
    xor a, a
 | 
			
		||||
    ldh [hCurrentLockDelayRemaining], a
 | 
			
		||||
    ldh a, [hCurrentIntegerGravity]
 | 
			
		||||
    cp a, 1
 | 
			
		||||
    jp nz, .draw
 | 
			
		||||
    call SFXKill
 | 
			
		||||
    ld a, SFX_LOCK
 | 
			
		||||
    call SFXEnqueue
 | 
			
		||||
    call SFXTriggerNoise
 | 
			
		||||
    jp .draw
 | 
			
		||||
 | 
			
		||||
    ; If we press down, we want to do a soft drop.
 | 
			
		||||
| 
						 | 
				
			
			@ -1342,12 +1338,8 @@ FieldProcess::
 | 
			
		|||
 | 
			
		||||
    ; Play the firm drop sound, and also reset the lock delay since the piece stepped down.
 | 
			
		||||
.playfirmdropsound
 | 
			
		||||
    ldh a, [hCurrentIntegerGravity]
 | 
			
		||||
    cp a, 1
 | 
			
		||||
    jr nz, .postcheckforfirmdropsound
 | 
			
		||||
    call SFXKill
 | 
			
		||||
    ld a, SFX_LAND
 | 
			
		||||
    call SFXEnqueue
 | 
			
		||||
    call SFXTriggerNoise
 | 
			
		||||
 | 
			
		||||
    ; If the down button is held, lock.
 | 
			
		||||
.postcheckforfirmdropsound
 | 
			
		||||
| 
						 | 
				
			
			@ -1428,12 +1420,8 @@ FieldProcess::
 | 
			
		|||
 | 
			
		||||
    ; Play the locking sound and draw the piece.
 | 
			
		||||
.dolock
 | 
			
		||||
    ldh a, [hCurrentIntegerGravity]
 | 
			
		||||
    cp a, 1
 | 
			
		||||
    jr nz, .draw
 | 
			
		||||
    call SFXKill
 | 
			
		||||
    ld a, SFX_LOCK
 | 
			
		||||
    call SFXEnqueue
 | 
			
		||||
    call SFXTriggerNoise
 | 
			
		||||
    jr .draw
 | 
			
		||||
 | 
			
		||||
    ; If we weren't grounded, reset the lock force.
 | 
			
		||||
| 
						 | 
				
			
			@ -1825,12 +1813,8 @@ FieldDelay::
 | 
			
		|||
    ret nz
 | 
			
		||||
 | 
			
		||||
    call ClearLines
 | 
			
		||||
    ldh a, [hCurrentIntegerGravity]
 | 
			
		||||
    cp a, 1
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    call SFXKill
 | 
			
		||||
    ld a, SFX_LINE_CLEAR
 | 
			
		||||
    call SFXEnqueue
 | 
			
		||||
    call SFXTriggerNoise
 | 
			
		||||
 | 
			
		||||
:   ldh a, [hCurrentLineARE]
 | 
			
		||||
    ldh [hRemainingDelay], a
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -131,6 +131,7 @@ Main::
 | 
			
		|||
EventLoop::
 | 
			
		||||
    ; Play the sound effect, if any.
 | 
			
		||||
    call SFXPlay
 | 
			
		||||
    call SFXPlayNoise
 | 
			
		||||
 | 
			
		||||
    ; Wrangle inputs and timers at the start of every frame.
 | 
			
		||||
    call GetInput
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,10 +2,8 @@ IF !DEF(SFX_DATA_INC)
 | 
			
		|||
DEF SFX_DATA_INC EQU 1
 | 
			
		||||
 | 
			
		||||
SECTION "SFX Data", ROMX, BANK[2]
 | 
			
		||||
; These sound effects can contain any channel.
 | 
			
		||||
sSFXPieceI::
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $00, REG_NR14_CH1_FRQHI, $80, REG_NR22_CH2_VOLEV, $00, REG_NR24_CH2_FRQHI, $80
 | 
			
		||||
    db REG_NR32_CH3_VOLUM, $00, REG_NR34_CH3_FRQHI, $80, REG_NR42_CH4_VOLEV, $00, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db REG_NR10_CH1_SWEEP, $00, REG_NR52_MASTERCTL, $8F, REG_NR51_MASTERPAN, $FF, REG_NR50_MVOLVINPN, $77
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $F0, REG_NR22_CH2_VOLEV, $F0, REG_NR11_CH1_LENDT, $BF, REG_NR11_CH1_LENDT, $BF
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $AC, REG_NR14_CH1_FRQHI, $85, REG_NR21_CH2_LENDT, $7F
 | 
			
		||||
    db REG_NR21_CH2_LENDT, $7F, REG_NR22_CH2_VOLEV, $80, REG_NR23_CH2_FRQLO, $14, REG_NR24_CH2_FRQHI, $87
 | 
			
		||||
| 
						 | 
				
			
			@ -1352,101 +1350,6 @@ sSFXIHSIRS::
 | 
			
		|||
    db REG_NR12_CH1_VOLEV, $08, REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $09, REG_NR12_CH1_VOLEV, $11, REG_NR12_CH1_VOLEV, $08, $FE
 | 
			
		||||
sSFXIHSIRSEnd::
 | 
			
		||||
sSFXLineClear::
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $F0, REG_NR32_CH3_VOLUM, $20, REG_NR42_CH4_VOLEV, $F1, REG_NR11_CH1_LENDT, $7F
 | 
			
		||||
    db REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F0, REG_NR13_CH1_FRQLO, $9D, REG_NR14_CH1_FRQHI, $84
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $57, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $12, REG_NR14_CH1_FRQHI, $03, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $D2, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $80, REG_NR13_CH1_FRQLO, $39
 | 
			
		||||
    db REG_NR14_CH1_FRQHI, $81, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $47
 | 
			
		||||
    db REG_NR44_CH4_CNTRL, $80, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $08, REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $80, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $01, REG_NR14_CH1_FRQHI, $00, $FE
 | 
			
		||||
sSFXLineClearEnd::
 | 
			
		||||
sSFXLand::
 | 
			
		||||
    db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $C1, REG_NR43_CH4_FQRND, $00
 | 
			
		||||
    db REG_NR44_CH4_CNTRL, $80, $FE
 | 
			
		||||
sSFXLandEnd::
 | 
			
		||||
sSFXLock::
 | 
			
		||||
    db REG_NR42_CH4_VOLEV, $F2, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $14
 | 
			
		||||
    db REG_NR44_CH4_CNTRL, $80, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F2, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $22, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FE
 | 
			
		||||
sSFXLockEnd::
 | 
			
		||||
sSFXLevelLock::
 | 
			
		||||
    db REG_NR12_CH1_VOLEV, $F1, REG_NR11_CH1_LENDT, $7F, REG_NR11_CH1_LENDT, $7F, REG_NR12_CH1_VOLEV, $F1
 | 
			
		||||
    db REG_NR13_CH1_FRQLO, $A7, REG_NR14_CH1_FRQHI, $87, $FF, $FF, $FF, $FF
 | 
			
		||||
| 
						 | 
				
			
			@ -2016,4 +1919,62 @@ sSFXReadyGo::
 | 
			
		|||
    db REG_NR22_CH2_VOLEV, $11, REG_NR22_CH2_VOLEV, $08, $FE
 | 
			
		||||
sSFXReadyGoEnd::
 | 
			
		||||
 | 
			
		||||
; These sound effects contain only noise.
 | 
			
		||||
sSFXLineClear::
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $57, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF, $FF, $FF, $FF, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F1, REG_NR43_CH4_FQRND, $47, REG_NR44_CH4_CNTRL, $80,
 | 
			
		||||
    db $FE
 | 
			
		||||
sSFXLineClearEnd::
 | 
			
		||||
sSFXLand::
 | 
			
		||||
    db REG_NR42_CH4_VOLEV, $21, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $C1, REG_NR43_CH4_FQRND, $00
 | 
			
		||||
    db REG_NR44_CH4_CNTRL, $80, $FE
 | 
			
		||||
sSFXLandEnd::
 | 
			
		||||
sSFXLock::
 | 
			
		||||
    db REG_NR42_CH4_VOLEV, $F2, REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $14
 | 
			
		||||
    db REG_NR44_CH4_CNTRL, $80, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $F2, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $22, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR41_CH4_LENGT, $3F, REG_NR42_CH4_VOLEV, $12, REG_NR43_CH4_FQRND, $A4, REG_NR44_CH4_CNTRL, $80
 | 
			
		||||
    db $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $75, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $55, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $35, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $14, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FF
 | 
			
		||||
 | 
			
		||||
    db REG_NR43_CH4_FQRND, $00, REG_NR44_CH4_CNTRL, $00, $FE
 | 
			
		||||
sSFXLockEnd::
 | 
			
		||||
 | 
			
		||||
ENDC
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										111
									
								
								src/sfx.asm
								
								
								
								
							
							
						
						
									
										111
									
								
								src/sfx.asm
								
								
								
								
							| 
						 | 
				
			
			@ -66,6 +66,7 @@ INCLUDE "res/music_data.inc"
 | 
			
		|||
SECTION "High SFX Variables", HRAM
 | 
			
		||||
hPlayhead:: ds 2
 | 
			
		||||
hPlayQueue:: ds 4
 | 
			
		||||
hNoisePlayhead:: ds 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SECTION "SFX Functions", ROM0
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +87,8 @@ SFXInit::
 | 
			
		|||
    xor a, a
 | 
			
		||||
    ldh [hPlayhead], a
 | 
			
		||||
    ldh [hPlayhead+1], a
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -151,6 +154,32 @@ SFXProcessQueue:
 | 
			
		|||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SFXTriggerNoise::
 | 
			
		||||
    cp a, SFX_LINE_CLEAR
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    ld a, LOW(sSFXLineClear)
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLineClear)
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
:   cp a, SFX_LAND
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    ld a, LOW(sSFXLand)
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLand)
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
:   cp a, SFX_LOCK
 | 
			
		||||
    ret nz
 | 
			
		||||
    ld a, LOW(sSFXLock)
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLock)
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ; Attempt to play the sound effect in A. Will enqueue the sound effect if the play routine is currently busy.
 | 
			
		||||
SFXEnqueue::
 | 
			
		||||
    ; If the playhead isn't null, then we're already playing something.
 | 
			
		||||
| 
						 | 
				
			
			@ -340,35 +369,6 @@ SFXEnqueue::
 | 
			
		|||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ; Pieces dropping
 | 
			
		||||
:   cp a, SFX_LINE_CLEAR
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    ld a, LOW(sSFXLineClear)
 | 
			
		||||
    ldh [hPlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLineClear)
 | 
			
		||||
    ldh [hPlayhead+1], a
 | 
			
		||||
    call SFXPlay
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
:   cp a, SFX_LAND
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    ld a, LOW(sSFXLand)
 | 
			
		||||
    ldh [hPlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLand)
 | 
			
		||||
    ldh [hPlayhead+1], a
 | 
			
		||||
    call SFXPlay
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
:   cp a, SFX_LOCK
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    ld a, LOW(sSFXLock)
 | 
			
		||||
    ldh [hPlayhead], a
 | 
			
		||||
    ld a, HIGH(sSFXLock)
 | 
			
		||||
    ldh [hPlayhead+1], a
 | 
			
		||||
    call SFXPlay
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ; Leveling
 | 
			
		||||
:   cp a, SFX_LEVELLOCK
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
| 
						 | 
				
			
			@ -435,6 +435,59 @@ SFXKill::
 | 
			
		|||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SFXPlayNoise::
 | 
			
		||||
    ; Get the noise playhead.
 | 
			
		||||
    ldh a, [hNoisePlayhead]
 | 
			
		||||
    ld l, a
 | 
			
		||||
    ldh a, [hNoisePlayhead+1]
 | 
			
		||||
    ld h, a
 | 
			
		||||
    or a, l
 | 
			
		||||
 | 
			
		||||
    ; Bail if it's null
 | 
			
		||||
    ret z
 | 
			
		||||
 | 
			
		||||
    ld b, BANK("SFX Data")
 | 
			
		||||
    rst RSTSwitchBank
 | 
			
		||||
 | 
			
		||||
    ; Get the register to write to
 | 
			
		||||
.noisereg
 | 
			
		||||
    ld a, [hl]
 | 
			
		||||
    inc hl
 | 
			
		||||
 | 
			
		||||
    ; If it's $FE, then we're done.
 | 
			
		||||
    cp a, $FE
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    rst RSTRestoreBank
 | 
			
		||||
    xor a, a
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
    ; If it's $FF, then we're done for this frame.
 | 
			
		||||
:   cp a, $FF
 | 
			
		||||
    jr z, .savenoiseplayhead
 | 
			
		||||
 | 
			
		||||
    ; Otherwise, put the register in C.
 | 
			
		||||
    ld c, a
 | 
			
		||||
 | 
			
		||||
    ; Get the value to write.
 | 
			
		||||
    ld a, [hl]
 | 
			
		||||
    inc hl
 | 
			
		||||
 | 
			
		||||
    ; Write it and loop.
 | 
			
		||||
    ldh [$ff00+c], a
 | 
			
		||||
    jr .noisereg
 | 
			
		||||
 | 
			
		||||
    ; Save the playhead position.
 | 
			
		||||
.savenoiseplayhead
 | 
			
		||||
    ld a, l
 | 
			
		||||
    ldh [hNoisePlayhead], a
 | 
			
		||||
    ld a, h
 | 
			
		||||
    ldh [hNoisePlayhead+1], a
 | 
			
		||||
    rst RSTRestoreBank
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ; This play routine must be called every frame.
 | 
			
		||||
SFXPlay::
 | 
			
		||||
    ; Bank to correct bank.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue