with sound fx

This commit is contained in:
Antoine Vignau 2024-02-27 21:08:52 +01:00
parent 76f1d015fc
commit 9428af0950
44 changed files with 41000 additions and 13620 deletions

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,7 +5,7 @@
* *
*----------------------------------- *-----------------------------------
* * KEEP IT AT $64K
*----------------------------------- *-----------------------------------
ds 8192 ; $0000 ds 8192 ; $0000

View File

@ -0,0 +1,29 @@
*
* Lode Runner
* (c) 1983, Broderbund Software
* (s) 2014, Brutal Deluxe Software
*
*-----------------------------------
* SOUND BANK 1
*-----------------------------------
sndBARRE ent
putbin snd/barre.snd
sndCREUSE ent
putbin snd/creuse.snd
sndESCALIER ent
putbin snd/escalier.snd
sndMARCHE ent
putbin snd/marche.snd
sndNOMORECHEST ent
putbin snd/nomorechest.snd
sndTOMBE ent
putbin snd/tombe.snd
sndTRESOR ent
putbin snd/tresor.snd
sndTROU ent
putbin snd/trou.snd
sndYOUWIN ent
putbin snd/youwin.snd

View File

@ -0,0 +1,12 @@
*
* Lode Runner
* (c) 1983, Broderbund Software
* (s) 2014, Brutal Deluxe Software
*
*-----------------------------------
* SOUND BANK 2
*-----------------------------------
sndINTRO ent
putbin snd/intro.snd

View File

@ -7,6 +7,15 @@
mx %11 mx %11
lst off lst off
*-----------------------------------
* MACRO
*-----------------------------------
@playsound mac
lda #]1
jsr playSOUND
eom
*----------------------------------- *-----------------------------------
* ENTRY POINT * ENTRY POINT
*----------------------------------- *-----------------------------------
@ -22,6 +31,8 @@ theGAME JSR checkJOYSTICK
showTITLEPAGE showTITLEPAGE
JSR clearHGR1 ; display the compressed title page JSR clearHGR1 ; display the compressed title page
@playsound #isndINTRO
LDA #<logo-1 LDA #<logo-1
STA L6030+1 STA L6030+1
LDA #>logo-1 LDA #>logo-1
@ -143,6 +154,9 @@ L60E4 JSR handleHERO
JSR playMELODY JSR playMELODY
LDA nbCHEST ; remaining chests? LDA nbCHEST ; remaining chests?
BNE L60F5 ; yes BNE L60F5 ; yes
@playsound #isndNOMORECHEST
JSR showINVISIBLELADDERS JSR showINVISIBLELADDERS
L60F5 LDA boardY ; are we on top row L60F5 LDA boardY ; are we on top row
@ -164,11 +178,14 @@ L6107 JSR checkHOLE ; are there holes active?
BEQ L613F ; yes... BEQ L613F ; yes...
BNE L60E4 ; no, loop BNE L60E4 ; no, loop
L611A INC theLEVEL ; next level, no chests left L611A @playsound #isndYOUWIN
INC theLEVEL ; next level, no chests left
INC intLEVEL INC intLEVEL
INC theMEN ; man++ INC theMEN ; man++
BNE L6124 BNE L6124
DEC theMEN ; man-- DEC theMEN ; man--
L6124 LDX #$0F L6124 LDX #$0F
STX temp1 STX temp1
L6128 LDY #$01 ; ajoute 15 x 100 points L6128 LDY #$01 ; ajoute 15 x 100 points
@ -679,7 +696,7 @@ L642A CMP #sprHERO ; if the hero
LDX #$02 LDX #$02
STX heroSTEPX ; x-step movement STX heroSTEPX ; x-step movement
STX heroSTEPY ; y-step movement STX heroSTEPY ; y-step movement
LDX #$08 LDX #$08 ; run right
STX heroINDEX ; index in sprite table STX heroINDEX ; index in sprite table
LDA #sprEMPTY ; blank in background LDA #sprEMPTY ; blank in background
STA (ptrBBACK),Y STA (ptrBBACK),Y
@ -770,11 +787,11 @@ L64AF DEC theX
handleHERO LDA #$01 handleHERO LDA #$01
STA fgCHEST STA fgCHEST
LDA fgHOLE LDA fgHOLE ; creuse-t-il un trou ?
BEQ L64CD BEQ L64CD ; non
BPL L64CA BPL L64CA
JMP L67E7 JMP L67E7 ; ˆ gauche
L64CA JMP L68AD L64CA JMP L68AD ; ˆ droite
L64CD LDY boardY L64CD LDY boardY
* LDA tblBOARDALLL,Y * LDA tblBOARDALLL,Y
@ -824,6 +841,9 @@ L6525 LDA #$00 ; hero fell in a hole, tell the program
STA fgHEROFELL ; to change speed STA fgHEROFELL ; to change speed
JSR calcSPRITEXY JSR calcSPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
* @playsound #isndTOMBE
LDA #$07 ; index in sprite table: fall in a left hole LDA #$07 ; index in sprite table: fall in a left hole
LDX fgLEFTRIGHT LDX fgLEFTRIGHT
BMI L6537 BMI L6537
@ -869,7 +889,7 @@ L6584 LDA fgHEROFELL
BNE L658F BNE L658F
LDA #$64 LDA #$64
LDX #$08 LDX #$08
JSR playSOUND JSR playNOTE
L658F LDA #$20 L658F LDA #$20
STA fgSPEED STA fgSPEED
STA fgHEROFELL STA fgHEROFELL
@ -1223,14 +1243,16 @@ L67E7 LDY boardY ; are we on last line?
JSR heroNEXTSTEPX JSR heroNEXTSTEPX
JSR heroNEXTSTEPY JSR heroNEXTSTEPY
LDY idxDIG LDY idxDIG
LDA digNOTE,Y bne nosnddig1
@playsound #isndCREUSE
nosnddig1 LDA digNOTE,Y
LDX digDURATION,Y LDX digDURATION,Y
JSR getNOTE JSR getNOTE
LDX idxDIG LDX idxDIG
LDA #$00 LDA #$00 ; run left
CPX #$06 CPX #$06
BCS L682B BCS L682B
LDA #$06 LDA #$06 ; dig left
L682B STA heroINDEX L682B STA heroINDEX
JSR checkCOLLISION JSR checkCOLLISION
LDX idxDIG LDX idxDIG
@ -1305,6 +1327,7 @@ checkDIGRIGHT
STA theKEY2 STA theKEY2
LDA #$0C LDA #$0C
STA idxDIG STA idxDIG
L68AD LDY boardY ; are we on last line? L68AD LDY boardY ; are we on last line?
CPY #lvlHEIGHT-1 CPY #lvlHEIGHT-1
BCS L689E BCS L689E
@ -1329,14 +1352,17 @@ L68AD LDY boardY ; are we on last line?
JSR heroNEXTSTEPX JSR heroNEXTSTEPX
JSR heroNEXTSTEPY JSR heroNEXTSTEPY
LDY idxDIG LDY idxDIG
LDA seqDIGSTONE,Y ; dig stone cpy #$0C
bne nosnddig2
@playsound #isndCREUSE
nosnddig2 LDA seqDIGSTONE,Y ; dig stone
LDX digNOTE2,Y LDX digNOTE2,Y
JSR getNOTE JSR getNOTE
LDX idxDIG LDX idxDIG
LDA #$08 LDA #$08 ; run right
CPX #$12 CPX #$12
BCS L68F3 BCS L68F3
LDA #$0E LDA #$0E ; dig right
L68F3 STA heroINDEX L68F3 STA heroINDEX
JSR checkCOLLISION JSR checkCOLLISION
LDX idxDIG LDX idxDIG
@ -1403,6 +1429,26 @@ L6962 LDX boardX ; we're digging
* Enchanement des sprites * Enchanement des sprites
sndLODERUNNER
db 5 ; 0 5
db 0 ; 1
db 0 ; 2
db 5 ; 3 2
db 0 ; 4
db 0 ; 5
db 3 ; 6 3
db 0 ; 7 7
db 5 ; 8 5
db 0 ; 9
db 0 ; A
db 5 ; B 2
db 0 ; C
db 0 ; D
db 3 ; E 3
db 0 ; F 7
db 5 ; 10 4
db 0 ; 11
seqLODERUNNER seqLODERUNNER
DB $0B ; 0 court ˆ gauche DB $0B ; 0 court ˆ gauche
DB $0C ; 1 DB $0C ; 1
@ -1863,7 +1909,14 @@ calcSPRITEXY
JSR calcHGRY ; we keep it in Y JSR calcHGRY ; we keep it in Y
LDX heroINDEX ; get sprite index LDX heroINDEX ; get sprite index
LDA seqLODERUNNER,X
* cpx #$12 ; joue un son dans quelques cas
* bcs calcSPRITE1
* lda sndLODERUNNER,x
* beq calcSPRITE1
* jsr playSOUND
calcSPRITE1 LDA seqLODERUNNER,X
LDX theA LDX theA
RTS RTS
@ -1895,6 +1948,8 @@ checkCHEST LDA heroSTEPX ; is sprite still in X
LSR fgCHEST ; collision avec un coffre LSR fgCHEST ; collision avec un coffre
DEC nbCHEST ; chest-- DEC nbCHEST ; chest--
@playsound #isndTRESOR
LDY boardY ; remove it from background LDY boardY ; remove it from background
STY theY STY theY
LDY boardX LDY boardX
@ -2143,6 +2198,9 @@ L6D61 JMP L6E85
L6D64 JSR calcFOESPRITEXY L6D64 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
JSR foeNEXTSTEPX JSR foeNEXTSTEPX
* @playsound #isndTOMBE
LDA #$06 ; foe falls left LDA #$06 ; foe falls left
LDY foeLEFTRIGHT LDY foeLEFTRIGHT
BMI L6D75 BMI L6D75
@ -2310,13 +2368,13 @@ L6EAC LDY foeSTEPY
STA ptrBOARD+1 STA ptrBOARD+1
LDY foeX LDY foeX
LDA (ptrBOARD),Y LDA (ptrBOARD),Y
CMP #$01 CMP #sprWALL
BEQ L6EA1 BEQ L6EA1
CMP #$02 CMP #sprWALLI
BEQ L6EA1 BEQ L6EA1
CMP #$05 CMP #sprTRAP
BEQ L6EA1 BEQ L6EA1
CMP #$08 CMP #sprFOE
BEQ L6EA1 BEQ L6EA1
L6ED5 JSR calcFOESPRITEXY L6ED5 JSR calcFOESPRITEXY
JSR drawSPRITEXY JSR drawSPRITEXY
@ -2335,9 +2393,9 @@ L6ED5 JSR calcFOESPRITEXY
JSR checkDROPCHEST JSR checkDROPCHEST
LDY foeX LDY foeX
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$01 CMP #sprWALL
BNE L6F02 BNE L6F02
LDA #$00 LDA #sprEMPTY
L6F02 STA (ptrBOARD),Y L6F02 STA (ptrBOARD),Y
DEC foeY DEC foeY
LDY foeY LDY foeY
@ -2350,7 +2408,7 @@ L6F02 STA (ptrBOARD),Y
CMP #sprHERO CMP #sprHERO
BNE L6F1C BNE L6F1C
LSR fgPLAY LSR fgPLAY
L6F1C LDA #$08 L6F1C LDA #sprFOE
STA (ptrBOARD),Y STA (ptrBOARD),Y
LDA #$04 LDA #$04
STA foeSTEPY STA foeSTEPY
@ -2509,14 +2567,14 @@ L7047 LDY foeY
BEQ L707B BEQ L707B
INY INY
LDA (ptrBOARD),Y LDA (ptrBOARD),Y
CMP #$08 CMP #sprFOE
BEQ L707B BEQ L707B
CMP #$02 CMP #sprWALLI
BEQ L707B BEQ L707B
CMP #$01 CMP #sprWALL
BEQ L707B BEQ L707B
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$05 CMP #sprTRAP
BNE L707E BNE L707E
L707B JMP saveFOEDATA L707B JMP saveFOEDATA
@ -3056,11 +3114,11 @@ L7444 LDA tempX3
LDY tempX3 LDY tempX3
DEY DEY
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$01 CMP #sprWALL
BEQ L748A BEQ L748A
CMP #$02 CMP #sprWALLI
BEQ L748A BEQ L748A
CMP #$03 CMP #sprLADDER
BNE L748E BNE L748E
L748A DEC tempX3 L748A DEC tempX3
BPL L7444 BPL L7444
@ -3095,11 +3153,11 @@ L7490 LDA tempX2
LDY tempX2 LDY tempX2
INY INY
LDA (ptrBBACK),Y LDA (ptrBBACK),Y
CMP #$01 CMP #sprWALL
BEQ L74D8 BEQ L74D8
CMP #$02 CMP #sprWALLI
BEQ L74D8 BEQ L74D8
CMP #$03 CMP #sprLADDER
BNE L74DC BNE L74DC
L74D8 INC tempX2 L74D8 INC tempX2
BPL L7490 BPL L7490
@ -5550,14 +5608,14 @@ L87B9 RTS
* PLAY A SOUND * PLAY A SOUND
*----------------------------------- *-----------------------------------
playSOUND STA ptrDATA playNOTE STA ptrDATA
STX $0B STX ptrDATA+1
L87BE LDA fgSOUND L87BE LDA fgSOUND
BEQ L87C5 BEQ L87C5
LDAL SPKR LDAL SPKR
L87C5 DEY L87C5 DEY
BNE L87CC BNE L87CC
DEC $0B DEC ptrDATA+1
BEQ L87D4 BEQ L87D4
L87CC DEX L87CC DEX
BNE L87C5 BNE L87C5
@ -5616,7 +5674,7 @@ playMELODY LDY idxNOTE
BEQ L8832 BEQ L8832
LDA sndNOTE,Y LDA sndNOTE,Y
LDX sndDURATION,Y LDX sndDURATION,Y
JSR playSOUND ; play note JSR playNOTE ; play note
LDY idxNOTE LDY idxNOTE
DEC idxNOTE DEC idxNOTE
LDA theSPEED LDA theSPEED
@ -5637,7 +5695,7 @@ L8832 LDA fgHEROFELL ; is the hero in a hole?
LDX theSPEED LDX theSPEED
INX INX
INX INX
JSR playSOUND JSR playNOTE
CLC CLC
RTS RTS

View File

@ -252,6 +252,21 @@ fpDFTVALUE = $20 ; dft value for
slot4PLAY = $f0 ; 0 if none, slot otherwise slot4PLAY = $f0 ; 0 if none, slot otherwise
the4PLAY = slot4PLAY+2 ; value read from the 4play the4PLAY = slot4PLAY+2 ; value read from the 4play
*-----------------------------------
* IIGS SOUND FX
*-----------------------------------
isndINTRO = 1 ; ok
isndBARRE = 2 ; ok
isndCREUSE = 3 ; ok
isndESCALIER = 4 ; ok
isndMARCHE = 5 ; ok
isndNOMORECHEST = 6 ; ok
isndTOMBE = 7 ; ok - <20> refaire
isndTRESOR = 8 ; ok
isndTROU = 9 ; ok
isndYOUWIN = 10 ; ok
*----------------------------------- *-----------------------------------
* SOFTSWITCHES * SOFTSWITCHES
*----------------------------------- *-----------------------------------

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@
5 | 1 LR.BANK4.S 5 | Comment | 11 | | 0 | 00/0000 | * 5 | 1 LR.BANK4.S 5 | Comment | 11 | | 0 | 00/0000 | *
6 | 1 LR.BANK4.S 6 | Empty | 11 | | 0 | 00/0000 | 6 | 1 LR.BANK4.S 6 | Empty | 11 | | 0 | 00/0000 |
7 | 1 LR.BANK4.S 7 | Comment | 11 | | 0 | 00/0000 | *----------------------------------- 7 | 1 LR.BANK4.S 7 | Comment | 11 | | 0 | 00/0000 | *-----------------------------------
8 | 1 LR.BANK4.S 8 | Comment | 11 | | 0 | 00/0000 | * 8 | 1 LR.BANK4.S 8 | Comment | 11 | | 0 | 00/0000 | * KEEP IT AT $64K
9 | 1 LR.BANK4.S 9 | Comment | 11 | | 0 | 00/0000 | *----------------------------------- 9 | 1 LR.BANK4.S 9 | Comment | 11 | | 0 | 00/0000 | *-----------------------------------
10 | 1 LR.BANK4.S 10 | Empty | 11 | | 0 | 00/0000 | 10 | 1 LR.BANK4.S 10 | Empty | 11 | | 0 | 00/0000 |
11 | 1 LR.BANK4.S 11 | Data | 11 | | 8192 | 00/0000 : 00 00 00 00 | ds 8192 ; $0000 11 | 1 LR.BANK4.S 11 | Data | 11 | | 8192 | 00/0000 : 00 00 00 00 | ds 8192 ; $0000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -41,6 +41,17 @@
ext ptrLEVELS ext ptrLEVELS
ext ptrSCORES ext ptrSCORES
ext HGR2 ext HGR2
ext sndINTRO
ext sndBARRE
ext sndCREUSE
ext sndESCALIER
ext sndMARCHE
ext sndNOMORECHEST
ext sndTOMBE
ext sndTRESOR
ext sndTROU
ext sndYOUWIN
*-------------- Softswitches *-------------- Softswitches
@ -155,7 +166,7 @@ okTOOL PushWord #0
okSHADOW pha okSHADOW pha
_SoundToolStatus _SoundToolStatus
pla pla
bne noSOUND beq noSOUND
lda #1 lda #1
sta fgSND sta fgSND
@ -187,7 +198,9 @@ noSOUND _HideMenuBar
bpl ]lp bpl ]lp
jsr find4PLAY ; do we have a 4play? jsr find4PLAY ; do we have a 4play?
jsr initSOUND
*---
lda #0 lda #0
beq noPATCH beq noPATCH
jsr setLRPALETTE ; set the LR palette jsr setLRPALETTE ; set the LR palette
@ -196,6 +209,9 @@ noSOUND _HideMenuBar
sta patchSPR2+1 sta patchSPR2+1
sta patchSPR3+1 sta patchSPR3+1
noPATCH noPATCH
*---
jsr loadLEVELS ; exit 8-bit jsr loadLEVELS ; exit 8-bit
mx %11 mx %11
@ -390,6 +406,8 @@ copyPATH sep #$20
meQUIT rep #$30 meQUIT rep #$30
jsr stopSOUND
PushWord #refIsHandle PushWord #refIsHandle
PushLong SStopREC PushLong SStopREC
_ShutDownTools _ShutDownTools
@ -678,17 +696,138 @@ read4PLAY ldal $e0C080 ; direct "fast" read
* SOUND EFFECTS * SOUND EFFECTS
*---------------------------------------- *----------------------------------------
barre 047d *---------- Load & Start the Sound Tool Set
creuse 119B
escalier 02B7
intro D833
marche 06A3
nomorechest 274B
tombe 2513
tresor 0FD3
trou 08CF
youwin 4303
initSOUND lda fgSND
beq initSOUND1
rts
initSOUND1 PushWord #8 ; Sound Tool Set
PushWord #0
_LoadOneTool
bcs initSOUND9
lda myDP
clc
adc #256
pha
_SoundStartUp
bcs initSOUND9
rts
initSOUND9 inc fgSND
rts
*---------- Stop the Sound Tool Set
stopSOUND lda fgSND
beq stopSOUND1
rts
stopSOUND1 PushWord #%1111_1111_1111_1111 ; on arrête tous les sons
_FFStopSound
_SoundShutDown
PushWord #8
_UnloadOneTool
stz fgSND
rts
*----------
mx %11
playSOUND sta saveA
stx saveX
sty saveY
rep #$30
lda fgSND
bne playSOUND9
lda saveA ; reprend l'instrument
asl
tay ; *2 Y
asl
tax ; *5 X
lda tblSOUND,x
sta pBlockPtr
lda tblSOUND+2,x
sta pBlockPtr+2
lda tblFREQ,y
sta pBlockPtr+4
lda tblGENNUM,y
pha
PushWord #%01111111_11111111
_FFStopSound
PushLong #pBlockPtr ; play the sound & exit
_FFStartSound
playSOUND9 sep #$30
ldy saveY
ldx saveX
lda saveA
rts
mx %00
*--- Sound data
pBlockPtr ds 4 ; 0 - waveStart
dw $0000 ; 4 - waveSize in pages
dw 214 ; 6 - freqOffset
dw $0000 ; 8 - docBuffer
dw $0001 ; 10 - bufferSize
ds 4 ; 12 - SoundPBPtr
dw $ff ; 16 - volSetting
tblSOUND ds 4
adrl sndINTRO
adrl sndBARRE
adrl sndCREUSE
adrl sndESCALIER
adrl sndMARCHE
adrl sndNOMORECHEST
adrl sndTOMBE
adrl sndTRESOR
adrl sndTROU
adrl sndYOUWIN
tblFREQ ds 2
dw $00D9
dw $0005
dw $0012
dw $0003
dw $0007
dw $0028
dw $0025
dw $0010
dw $0009
dw $0043
tblGENNUM ds 2
dw $0101
dw $0201
dw $0301
dw $0401
dw $0501
dw $0601
dw $0701
dw $0801
dw $0901
dw $0A01
*---
saveA ds 2
saveX ds 2
saveY ds 2
*---------------------------------------- *----------------------------------------
* DATA * DATA
*---------------------------------------- *----------------------------------------
@ -800,10 +939,10 @@ replyPTR ds 2 ; 0 good
ds 2 ; 2 fileType ds 2 ; 2 fileType
ds 2 ; 4 auxFileType ds 2 ; 4 auxFileType
namePATH namePATH
hex 06 ; 6 fileName hex 07 ; 6 fileName
namePATH1 namePATH1
asc 'Levels' ; 7 fileName (16 normally) asc 'Niveaux' ; 7 fileName (16 normally)
ds 9 ds 8
loadPATH loadPATH
ds 1 ; 22 fullPathname (string length) ds 1 ; 22 fullPathname (string length)
loadPATH1 loadPATH1

View File

@ -27,4 +27,12 @@
KND $0000 KND $0000
SNA Software SNA Software
ASM LR.BKSND1.S
KND $0000
SNA Antoine
ASM LR.BKSND2.S
KND $0000
SNA Olivier
* END * END

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long