From d65a4ca3073955d5d9bb1b746af494734634b6df Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Thu, 24 Dec 2020 00:02:41 -0500 Subject: [PATCH] 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. --- BUGS.md | 2 +- BuGS/gameSound.s | 85 ++++++++++++++++++++++------------------ BuGS/make/launchEmulator | 2 +- 3 files changed, 48 insertions(+), 41 deletions(-) diff --git a/BUGS.md b/BUGS.md index 376b968..ec6da7e 100644 --- a/BUGS.md +++ b/BUGS.md @@ -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. diff --git a/BuGS/gameSound.s b/BuGS/gameSound.s index 501fe71..b9e67ef 100644 --- a/BuGS/gameSound.s +++ b/BuGS/gameSound.s @@ -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 diff --git a/BuGS/make/launchEmulator b/BuGS/make/launchEmulator index ba082a8..2f4a9be 100755 --- a/BuGS/make/launchEmulator +++ b/BuGS/make/launchEmulator @@ -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=$!