mirror of
https://github.com/jeremysrand/BuGS.git
synced 2025-01-20 06:29:47 +00:00
Add the segment, spider and extra life sounds. Add some more information about the mysterious crash.
This commit is contained in:
parent
ec1eb7cc0e
commit
32aee75462
3
BUGS.md
3
BUGS.md
@ -7,6 +7,9 @@ This is a list of the software bugs (as opposed to the bugs in the game that you
|
||||
* I am thinking this is the same crash as the one which follows. I tried to reproduce this on real HW again with that debug in place but could not.
|
||||
* I reproduced a crash on GSPlus after dying and starting a new game. From the stack, it was clear it was trying to draw a body segment but the jump instruction was set to garbage. I am hoping this is the same crash as the one saw on real HW.
|
||||
* I have added some debug code to detect this. I am validating that the offset into the draw table for head and body segments is "sane" and if not brk.
|
||||
* I reproduced it and ended up at brk $4 with y set to $2270 which is much larger than the max of 156. Also odd is that X is 1 but I think it needs to be an even number.
|
||||
* 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 when the player dies, the "you can shoot" indicator is left behind as garbage on-screen.
|
||||
|
||||
|
@ -46,6 +46,7 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
9D0DC8EF258C715E00DE9E87 /* extralife.raw */ = {isa = PBXFileReference; lastKnownFileType = text; path = extralife.raw; sourceTree = "<group>"; };
|
||||
9D1553DE257ACA1800657188 /* ACKNOWLEDGEMENTS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ACKNOWLEDGEMENTS.md; sourceTree = "<group>"; };
|
||||
9D1553E9257F3E5200657188 /* fire.raw */ = {isa = PBXFileReference; lastKnownFileType = file; path = fire.raw; sourceTree = "<group>"; };
|
||||
9D1553EA257F3E5200657188 /* bonus.raw */ = {isa = PBXFileReference; lastKnownFileType = file; path = bonus.raw; sourceTree = "<group>"; };
|
||||
@ -123,6 +124,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9D1553EA257F3E5200657188 /* bonus.raw */,
|
||||
9D0DC8EF258C715E00DE9E87 /* extralife.raw */,
|
||||
9D1553EB257F3E5200657188 /* death.raw */,
|
||||
9D1553E9257F3E5200657188 /* fire.raw */,
|
||||
9D1553EC257F3E5200657188 /* kill.raw */,
|
||||
|
@ -71,7 +71,7 @@ playerAddLife entry
|
||||
lda #TILE_PLAYER
|
||||
sta tileType,x
|
||||
_dirtyNonGameTile
|
||||
rtl
|
||||
jmp playExtraLifeSound
|
||||
|
||||
|
||||
updatePlayer entry
|
||||
|
212
BuGS/gameSound.s
212
BuGS/gameSound.s
@ -27,7 +27,12 @@ SOUND_HALTED equ 1
|
||||
SOUND_STARTED equ 0
|
||||
|
||||
SPIDER_SOUND_ADDR equ $0000
|
||||
SPIDER_SOUND_SIZE equ 6
|
||||
SPIDER_OSC_NUM equ 8
|
||||
SPIDER_FREQ_HIGH equ 0
|
||||
SPIDER_FREQ_LOW equ 214
|
||||
SPIDER_VOLUME equ 255
|
||||
SPIDER_CONTROL equ 6
|
||||
SPIDER_SIZE equ $36
|
||||
|
||||
DEATH_SOUND_ADDR equ $4000
|
||||
DEATH_OSC_NUM equ 5
|
||||
@ -38,9 +43,22 @@ DEATH_CONTROL equ 2
|
||||
DEATH_SIZE equ $36
|
||||
|
||||
SEGMENTS_SOUND_ADDR equ $7000
|
||||
SEGMENTS_SOUND_SIZE equ 4
|
||||
SEGMENTS_OSC_NUM equ 6
|
||||
SEGMENTS_FREQ_HIGH equ 0
|
||||
SEGMENTS_FREQ_LOW equ 214
|
||||
SEGMENTS_VOLUME equ 255
|
||||
SEGMENTS_CONTROL equ 6
|
||||
SEGMENTS_SIZE equ $24
|
||||
|
||||
BONUS_SOUND_ADDR equ $8000
|
||||
EXTRA_LIFE_SOUND_ADDR equ $8000
|
||||
EXTRA_LIFE_OSC_NUM equ 10
|
||||
EXTRA_LIFE_FREQ_HIGH equ 0
|
||||
EXTRA_LIFE_FREQ_LOW equ 107
|
||||
EXTRA_LIFE_VOLUME equ 255
|
||||
EXTRA_LIFE_CONTROL equ 2
|
||||
EXTRA_LIFE_SIZE equ $36
|
||||
|
||||
BONUS_SOUND_ADDR equ $b000
|
||||
BONUS_OSC_NUM equ 0
|
||||
BONUS_FREQ_HIGH equ 0
|
||||
BONUS_FREQ_LOW equ 214
|
||||
@ -48,7 +66,7 @@ BONUS_VOLUME equ 255
|
||||
BONUS_CONTROL equ 2
|
||||
BONUS_SIZE equ $24
|
||||
|
||||
KILL_SOUND_ADDR equ $9000
|
||||
KILL_SOUND_ADDR equ $c000
|
||||
KILL_OSC_NUM equ 4
|
||||
KILL_FREQ_HIGH equ 0
|
||||
KILL_FREQ_LOW equ 214
|
||||
@ -56,7 +74,7 @@ KILL_VOLUME equ 255
|
||||
KILL_CONTROL equ 2
|
||||
KILL_SIZE equ $24
|
||||
|
||||
FIRE_SOUND_ADDR equ $a000
|
||||
FIRE_SOUND_ADDR equ $d000
|
||||
FIRE_OSC_NUM equ 3
|
||||
FIRE_FREQ_HIGH equ 0
|
||||
FIRE_FREQ_LOW equ 214
|
||||
@ -135,6 +153,54 @@ soundInit_writeRegLow anop
|
||||
; Spider sound
|
||||
pea SPIDER_SOUND_ADDR
|
||||
jsl loadSpiderSound
|
||||
|
||||
lda #SPIDER_FREQ_LOW
|
||||
ldx #SOUND_REG_FREQ_LOW+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_FREQ_HIGH
|
||||
ldx #SOUND_REG_FREQ_HIGH+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_VOLUME
|
||||
ldx #SOUND_REG_VOLUME+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_SIZE
|
||||
ldx #SOUND_REG_SIZE+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_SOUND_ADDR/256
|
||||
ldx #SOUND_REG_POINTER+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_FREQ_LOW
|
||||
ldx #SOUND_REG_FREQ_LOW+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_FREQ_HIGH
|
||||
ldx #SOUND_REG_FREQ_HIGH+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_VOLUME
|
||||
ldx #SOUND_REG_VOLUME+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_SIZE
|
||||
ldx #SOUND_REG_SIZE+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_SOUND_ADDR/256
|
||||
ldx #SOUND_REG_POINTER+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
|
||||
; Death sound
|
||||
@ -169,6 +235,54 @@ soundInit_writeRegLow anop
|
||||
; Segments sound
|
||||
pea SEGMENTS_SOUND_ADDR
|
||||
jsl loadSegmentsSound
|
||||
|
||||
lda #SEGMENTS_FREQ_LOW
|
||||
ldx #SOUND_REG_FREQ_LOW+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_FREQ_HIGH
|
||||
ldx #SOUND_REG_FREQ_HIGH+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_VOLUME
|
||||
ldx #SOUND_REG_VOLUME+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_SIZE
|
||||
ldx #SOUND_REG_SIZE+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_SOUND_ADDR/256
|
||||
ldx #SOUND_REG_POINTER+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_FREQ_LOW
|
||||
ldx #SOUND_REG_FREQ_LOW+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_FREQ_HIGH
|
||||
ldx #SOUND_REG_FREQ_HIGH+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_VOLUME
|
||||
ldx #SOUND_REG_VOLUME+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_SIZE
|
||||
ldx #SOUND_REG_SIZE+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_SOUND_ADDR/256
|
||||
ldx #SOUND_REG_POINTER+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
|
||||
; Bonus sound
|
||||
@ -303,7 +417,35 @@ soundInit_writeRegLow anop
|
||||
lda #FIRE_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+FIRE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
|
||||
; Extra life sound
|
||||
pea EXTRA_LIFE_SOUND_ADDR
|
||||
jsl loadExtraLifeSound
|
||||
|
||||
lda #EXTRA_LIFE_FREQ_LOW
|
||||
ldx #SOUND_REG_FREQ_LOW+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_FREQ_HIGH
|
||||
ldx #SOUND_REG_FREQ_HIGH+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_VOLUME
|
||||
ldx #SOUND_REG_VOLUME+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_SIZE
|
||||
ldx #SOUND_REG_SIZE+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_SOUND_ADDR/256
|
||||
ldx #SOUND_REG_POINTER+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
rtl
|
||||
|
||||
|
||||
@ -332,6 +474,11 @@ playBonusSound_noWrap anop
|
||||
|
||||
|
||||
playDeathSound entry
|
||||
jsl stopSpiderSound
|
||||
jsl stopFleaSound
|
||||
jsl stopScorpionSound
|
||||
jsl stopSegmentSound
|
||||
|
||||
lda #DEATH_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+DEATH_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
@ -353,11 +500,6 @@ playKillSound entry
|
||||
rtl
|
||||
|
||||
|
||||
playExtraLifeSound entry
|
||||
; Write this code...
|
||||
rtl
|
||||
|
||||
|
||||
playFireSound entry
|
||||
lda #FIRE_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+FIRE_OSC_NUM
|
||||
@ -367,15 +509,59 @@ playFireSound entry
|
||||
ldx #SOUND_REG_CONTROL+FIRE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
rtl
|
||||
|
||||
|
||||
playExtraLifeSound entry
|
||||
lda #EXTRA_LIFE_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #EXTRA_LIFE_CONTROL
|
||||
ldx #SOUND_REG_CONTROL+EXTRA_LIFE_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
rtl
|
||||
|
||||
|
||||
|
||||
startSegmentSound entry
|
||||
jsl stopSegmentSound
|
||||
|
||||
lda #SEGMENTS_CONTROL
|
||||
ldx #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
rtl
|
||||
|
||||
|
||||
stopSegmentSound entry
|
||||
lda #SEGMENTS_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SEGMENTS_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SEGMENTS_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
rtl
|
||||
|
||||
|
||||
startSpiderSound entry
|
||||
; Write this code...
|
||||
jsl stopSpiderSound
|
||||
|
||||
lda #SPIDER_CONTROL
|
||||
ldx #SOUND_REG_CONTROL+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
rtl
|
||||
|
||||
|
||||
stopSpiderSound entry
|
||||
; Write this code...
|
||||
lda #SPIDER_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SPIDER_OSC_NUM
|
||||
jsl writeSoundReg
|
||||
|
||||
lda #SPIDER_CONTROL+SOUND_HALTED
|
||||
ldx #SOUND_REG_CONTROL+SPIDER_OSC_NUM+1
|
||||
jsl writeSoundReg
|
||||
|
||||
rtl
|
||||
|
||||
|
||||
|
@ -559,6 +559,7 @@ updateSpider_downChangeDirDiagRight anop
|
||||
rtl
|
||||
|
||||
updateSpider_offScreen anop
|
||||
jsl stopSpiderSound
|
||||
stz spiderState
|
||||
rtl
|
||||
|
||||
@ -569,6 +570,7 @@ addSpider entry
|
||||
rtl
|
||||
|
||||
addSpider_checkSpeed anop
|
||||
jsl startSpiderSound
|
||||
lda gameScore+2
|
||||
bne addSpider_fast
|
||||
lda gameScore
|
||||
@ -862,6 +864,7 @@ explodeSpider entry
|
||||
lda spiderScreenOffset
|
||||
inc a
|
||||
sta spiderScreenOffset
|
||||
jsl stopSpiderSound
|
||||
explodeSpider_done anop
|
||||
rtl
|
||||
|
||||
|
@ -29,6 +29,7 @@ levelInit entry
|
||||
levelStart entry
|
||||
lda colourLevelNum
|
||||
jsl setColour
|
||||
jsl startSegmentSound
|
||||
|
||||
ldx centipedeLevelNum
|
||||
lda levelTable,x
|
||||
@ -89,6 +90,7 @@ updateLevel_checkSegments anop
|
||||
bne updateLevel_done
|
||||
lda #NEXT_LEVEL_FRAME_COUNT
|
||||
sta nextLevelFrameCount
|
||||
jsl stopSegmentSound
|
||||
updateLevel_done anop
|
||||
rtl
|
||||
|
||||
|
@ -100,6 +100,15 @@ void loadFireSound(word addr)
|
||||
}
|
||||
|
||||
|
||||
void loadExtraLifeSound(word addr)
|
||||
{
|
||||
Handle handle = LoadResource(rRawSound, EXTRA_LIFE_SOUND);
|
||||
HLock(handle);
|
||||
WriteRamBlock(*handle, addr, GetHandleSize(handle));
|
||||
HUnlock(handle);
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int event;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#define KILL_SOUND 6
|
||||
#define SEGMENTS_SOUND 7
|
||||
#define SPIDER_SOUND 8
|
||||
#define EXTRA_LIFE_SOUND 9
|
||||
|
||||
|
||||
#endif /* defined(_GUARD_PROJECTBuGS_FILEmain_) */
|
||||
|
@ -54,3 +54,4 @@ read rRawSound (FIRE_SOUND) "sound/fire.raw";
|
||||
read rRawSound (KILL_SOUND) "sound/kill.raw";
|
||||
read rRawSound (SEGMENTS_SOUND) "sound/segments.raw";
|
||||
read rRawSound (SPIDER_SOUND) "sound/spider.raw";
|
||||
read rRawSound (EXTRA_LIFE_SOUND) "sound/extralife.raw";
|
||||
|
6
BuGS/sound/extralife.raw
Normal file
6
BuGS/sound/extralife.raw
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user