Fix the high pitched sound at the end of the flea sound. It was an off by one leading to an extra frequency being played.

This commit is contained in:
Jeremy Rand 2020-12-24 00:02:41 -05:00
parent 9f74cb46b2
commit d65a4ca307
3 changed files with 48 additions and 41 deletions

View File

@ -11,7 +11,6 @@ This is a list of the software bugs (as opposed to the bugs in the game that you
* In order to get the wrong value in Y, I noticed that the segmentSpriteOffset was overwritten with the pattern 70 02 70 02, etc.
* Something is trashing memory.
* A spider moving left to right went off screen and left garbage on the RHS as it exited. I have only seen this once. I think it coincided with the player dying.
* Sometimes at the end of the flea sound, there is a short high pitched tone.
@ -19,6 +18,7 @@ This is a list of the software bugs (as opposed to the bugs in the game that you
FIXED
=======
* Sometimes at the end of the flea sound, there is a short high pitched tone.
* Sometimes when the player dies, the "you can shoot" indicator is left behind as garbage on-screen.
* Sometimes when you die, a spider may enter and the spider sound will start playing. Because audio is stopped by player death and it has already happened, the spider sound ends up going on even though the spider is not moving.
* Sometimes the spider doesn't seem to freeze when the player dies. This may be related to the sound problem also. If the per-frame spider update code isn't handling player death correctly, that could explain both.

View File

@ -26,6 +26,9 @@ SOUND_REG_SIZE equ $00c0
SOUND_HALTED equ 1
SOUND_STARTED equ 0
SOUND_SWAP_MODE equ 6
SOUND_ONE_SHOT_MODE equ 2
; According to all of the documentation I can find, $00 should be the right speaker and
; $10 should be the left. But based on GSPlus and mame, I see the opposite. Still need
; to check on my HW. But in the end, it could be that some HW demultiplexed them backwards
@ -38,7 +41,7 @@ SPIDER_SOUND_ADDR equ $0000
SPIDER_OSC_NUM equ 16
SPIDER_FREQ_HIGH equ 0
SPIDER_FREQ_LOW equ 214
SPIDER_CONTROL equ 6
SPIDER_CONTROL equ SOUND_SWAP_MODE
SPIDER_SIZE equ $36
; OSC 10 & 11 for L/R channels
@ -46,7 +49,7 @@ DEATH_SOUND_ADDR equ $4000
DEATH_OSC_NUM equ 10
DEATH_FREQ_HIGH equ 0
DEATH_FREQ_LOW equ 214
DEATH_CONTROL equ 2
DEATH_CONTROL equ SOUND_ONE_SHOT_MODE
DEATH_SIZE equ $2d
; OSC 12 - 15 for L/R channels in swap mode
@ -55,7 +58,7 @@ SEGMENTS_OSC_NUM equ 12
SEGMENTS_FREQ_HIGH equ 0
SEGMENTS_FREQ_LOW equ 214
SEGMENTS_VOLUME equ 128
SEGMENTS_CONTROL equ 6
SEGMENTS_CONTROL equ SOUND_SWAP_MODE
SEGMENTS_SIZE equ $24
; OSC 20 & 21 for L/R channels
@ -64,7 +67,7 @@ EXTRA_LIFE_OSC_NUM equ 20
EXTRA_LIFE_FREQ_HIGH equ 0
EXTRA_LIFE_FREQ_LOW equ 107
EXTRA_LIFE_VOLUME equ 128
EXTRA_LIFE_CONTROL equ 2
EXTRA_LIFE_CONTROL equ SOUND_ONE_SHOT_MODE
EXTRA_LIFE_SIZE equ $36
; OSC 0 - 5 to have 3x L/R channels
@ -72,7 +75,7 @@ BONUS_SOUND_ADDR equ $b000
BONUS_OSC_NUM equ 0
BONUS_FREQ_HIGH equ 0
BONUS_FREQ_LOW equ 214
BONUS_CONTROL equ 2
BONUS_CONTROL equ SOUND_ONE_SHOT_MODE
BONUS_SIZE equ $24
; OSC 8 & 9 for L/R channels
@ -80,7 +83,7 @@ KILL_SOUND_ADDR equ $c000
KILL_OSC_NUM equ 8
KILL_FREQ_HIGH equ 0
KILL_FREQ_LOW equ 214
KILL_CONTROL equ 2
KILL_CONTROL equ SOUND_ONE_SHOT_MODE
KILL_SIZE equ $24
; OSC 6 & 7 for L/R channels
@ -88,13 +91,13 @@ FIRE_SOUND_ADDR equ $d000
FIRE_OSC_NUM equ 6
FIRE_FREQ_HIGH equ 0
FIRE_FREQ_LOW equ 214
FIRE_CONTROL equ 2
FIRE_CONTROL equ SOUND_ONE_SHOT_MODE
FIRE_SIZE equ $1b
; OSC 22 - 25 for L/R channels in swap mode
FLEA_SOUND_ADDR equ $3a00
FLEA_OSC_NUM equ 22
FLEA_CONTROL equ 6
FLEA_CONTROL equ SOUND_SWAP_MODE
FLEA_SIZE equ $00
; OSC 26 - 30 for L/R channels in swap mode
@ -102,7 +105,7 @@ SCORPION_SOUND_ADDR equ $e000
SCORPION_OSC_NUM equ 26
SCORPION_FREQ_HIGH equ 0
SCORPION_FREQ_LOW equ 214
SCORPION_CONTROL equ 6
SCORPION_CONTROL equ SOUND_SWAP_MODE
SCORPION_SIZE equ $2d
@ -151,10 +154,10 @@ soundInit entry
lda #SOUND_REG_CONTROL+SPIDER_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -254,10 +257,10 @@ soundInit entry
lda #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -488,10 +491,10 @@ soundInit entry
lda #SOUND_REG_CONTROL+FLEA_OSC_NUM
sta >SOUND_ADDR_LOW
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -540,10 +543,10 @@ soundInit entry
lda #SOUND_REG_CONTROL+SCORPION_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -559,12 +562,12 @@ updateSounds entry
updateSounds_changeFreq anop
ldy fleaSoundFreqOffset
iny
iny
cpy #NUM_FLEA_FREQS*2
blt updateSounds_notDone
jmp stopFleaSound
updateSounds_notDone anop
iny
iny
sty fleaSoundFreqOffset
short m
@ -783,11 +786,12 @@ startSegmentSound entry
sta >SOUND_ADDR_LOW
lda #SEGMENTS_CONTROL+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM+2
sta >SOUND_ADDR_LOW
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SEGMENTS_CONTROL+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
long m
rtl
@ -802,10 +806,10 @@ stopSegmentSound entry
lda #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SEGMENTS_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -835,11 +839,12 @@ startSpiderSound entry
sta >SOUND_ADDR_LOW
lda #SPIDER_CONTROL+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SOUND_REG_CONTROL+SPIDER_OSC_NUM+2
sta >SOUND_ADDR_LOW
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SPIDER_CONTROL+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
long m
rtl
@ -873,10 +878,10 @@ stopSpiderSound entry
lda #SOUND_REG_CONTROL+SPIDER_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SPIDER_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -906,11 +911,12 @@ startScorpionSound entry
sta >SOUND_ADDR_LOW
lda #SCORPION_CONTROL+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SOUND_REG_CONTROL+SCORPION_OSC_NUM+2
sta >SOUND_ADDR_LOW
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SCORPION_CONTROL+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
long m
rtl
@ -943,10 +949,10 @@ stopScorpionSound entry
lda #SOUND_REG_CONTROL+SCORPION_OSC_NUM
sta >SOUND_ADDR_LOW
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #SCORPION_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m
@ -998,11 +1004,12 @@ startFleaSound_doIt anop
sta >SOUND_ADDR_LOW
lda #FLEA_CONTROL+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #SOUND_REG_CONTROL+FLEA_OSC_NUM+2
sta >SOUND_ADDR_LOW
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
lda #FLEA_CONTROL+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
long m
rtl
@ -1016,10 +1023,10 @@ stopFleaSound entry
lda #SOUND_REG_CONTROL+FLEA_OSC_NUM
sta >SOUND_ADDR_LOW
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_RIGHT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_RIGHT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
lda #FLEA_CONTROL+SOUND_HALTED+SOUND_LEFT_SPEAKER
lda #SOUND_ONE_SHOT_MODE+SOUND_HALTED+SOUND_LEFT_SPEAKER
sta >SOUND_DATA_REG
sta >SOUND_DATA_REG
long m

View File

@ -27,7 +27,7 @@ sed -i "" "s:^s7d1 *=.*$:s7d1 = $DISKIMAGE:" config.txt
# This magic ensure that clicking stop in Xcode results in the emulator terminating.
if false
if true
then
$EMULATORPATH -fullscreen -mem 1572864 &
PID=$!