Initial public release
This commit is contained in:
commit
d26bf6ae93
|
@ -0,0 +1,5 @@
|
||||||
|
# Castle Wolfenstein Sound Board
|
||||||
|
|
||||||
|
Player and Data ripped from the game.
|
||||||
|
Front-end to select which voice to play.
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,193 @@
|
||||||
|
; Castle Wolfenstein Sound Board
|
||||||
|
; https://github.com/Michaelangel007/apple2_castle_wolfenstein_sound_board
|
||||||
|
; Assembler: Merlin32
|
||||||
|
;
|
||||||
|
; To rip code + data
|
||||||
|
; bsave "cw.play.1950",1950:1980
|
||||||
|
; bsave "cw.sfx.5e36",5e36:8b9d
|
||||||
|
|
||||||
|
temp = $FB
|
||||||
|
dst = $FC
|
||||||
|
src = $FE
|
||||||
|
|
||||||
|
PRODOS = $BF00
|
||||||
|
|
||||||
|
KEY = $C000
|
||||||
|
KEYSTROBE = $C010
|
||||||
|
|
||||||
|
SQUEEKER = $C030
|
||||||
|
|
||||||
|
TEXT = $FB39 ; SETTXT
|
||||||
|
HOME = $FC58
|
||||||
|
COUT = $FDED
|
||||||
|
BELL = $FBDD
|
||||||
|
|
||||||
|
ORG $2000
|
||||||
|
|
||||||
|
LENGTH = __END - __START + __MAIN - Main
|
||||||
|
|
||||||
|
; Move from $2000 .. $5D00
|
||||||
|
Main BIT __MAIN + $3D00
|
||||||
|
LDA #$4C ; "JMP" $abs
|
||||||
|
STA $2000
|
||||||
|
Move LDY #0
|
||||||
|
Src LDA $2000,Y ; The two regions don't overlap
|
||||||
|
Dst STA $5D00,Y ; $2000 + $2E9E = $4E9E < $5D00
|
||||||
|
INY
|
||||||
|
BNE Src
|
||||||
|
INC Src+2
|
||||||
|
INC Dst+2
|
||||||
|
LDA Src+2
|
||||||
|
CMP #>LENGTH + Main
|
||||||
|
BNE Move
|
||||||
|
BEQ Main
|
||||||
|
|
||||||
|
__MAIN
|
||||||
|
ORG * + $3D00 ; $5D00
|
||||||
|
__START
|
||||||
|
JSR TEXT
|
||||||
|
JSR HOME
|
||||||
|
|
||||||
|
LDA #'A'+$80
|
||||||
|
STA temp
|
||||||
|
|
||||||
|
LDX #$5E ; hi
|
||||||
|
LDY #$36 ; lo
|
||||||
|
STX src+1
|
||||||
|
STY src+0
|
||||||
|
|
||||||
|
STX Pointers+1
|
||||||
|
STY Pointers+0
|
||||||
|
|
||||||
|
LDX #>Pointers
|
||||||
|
LDY #<Pointers+2
|
||||||
|
STX dst+1
|
||||||
|
STY dst+0
|
||||||
|
|
||||||
|
; Walk Linked-List
|
||||||
|
PrintNames
|
||||||
|
LDY #1
|
||||||
|
LDA (src),Y ;16-bit pointer to next SFX
|
||||||
|
BEQ DoneNames
|
||||||
|
STA (dst),Y
|
||||||
|
|
||||||
|
DEY
|
||||||
|
LDA (src),Y
|
||||||
|
STA (dst),Y
|
||||||
|
|
||||||
|
INY
|
||||||
|
INY
|
||||||
|
LDX #$18
|
||||||
|
|
||||||
|
LDA temp
|
||||||
|
JSR COUT
|
||||||
|
INC temp
|
||||||
|
|
||||||
|
LDA #')'+$80
|
||||||
|
JSR COUT
|
||||||
|
LDA #' '+$80
|
||||||
|
JSR COUT
|
||||||
|
|
||||||
|
LoopName
|
||||||
|
LDA (src),Y
|
||||||
|
JSR COUT
|
||||||
|
INY
|
||||||
|
DEX
|
||||||
|
BNE LoopName
|
||||||
|
|
||||||
|
LDA #$8D
|
||||||
|
JSR COUT
|
||||||
|
|
||||||
|
LDY #0
|
||||||
|
LDA (dst),Y
|
||||||
|
STA src+0
|
||||||
|
INY
|
||||||
|
LDA (dst),Y
|
||||||
|
STA src+1
|
||||||
|
|
||||||
|
INC dst ; too lazy to do page cross check
|
||||||
|
INC dst
|
||||||
|
BNE PrintNames
|
||||||
|
|
||||||
|
DoneNames
|
||||||
|
JSR BELL
|
||||||
|
|
||||||
|
GetInput
|
||||||
|
LDA KEY
|
||||||
|
BPl GetInput
|
||||||
|
STA KEYSTROBE
|
||||||
|
|
||||||
|
AND #$7F
|
||||||
|
CMP #$1B
|
||||||
|
BEQ Exit
|
||||||
|
|
||||||
|
SEC
|
||||||
|
SBC #'A'
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
LDA Pointers,X
|
||||||
|
CLC
|
||||||
|
ADC #36 ; + 36?
|
||||||
|
STA src+0
|
||||||
|
INX
|
||||||
|
LDA Pointers,X
|
||||||
|
BEQ DoneNames
|
||||||
|
ADC #0
|
||||||
|
STA src+1
|
||||||
|
JSR Play
|
||||||
|
JMP GetInput
|
||||||
|
Exit JSR PRODOS ;Call the MLI ($BF00)
|
||||||
|
|
||||||
|
DFB $65 ;CALL TYPE = QUIT
|
||||||
|
DW PARMTABLE ;Pointer to parameter table
|
||||||
|
PARMTABLE
|
||||||
|
DFB 4 ;Number of parameters is 4
|
||||||
|
DFB 0 ;0 is the only quit type
|
||||||
|
DW 0000 ;Pointer reserved for future use
|
||||||
|
DFB 0 ;Byte reserved for future use
|
||||||
|
DW 0000 ;Pointer reserved for future use
|
||||||
|
|
||||||
|
|
||||||
|
Play
|
||||||
|
LDY #$00
|
||||||
|
NextNote
|
||||||
|
LDA (src),Y
|
||||||
|
PHA
|
||||||
|
STA temp
|
||||||
|
DelayNote
|
||||||
|
LDY #$04
|
||||||
|
BEQ DoneDelay
|
||||||
|
Delay
|
||||||
|
DEY
|
||||||
|
BNE Delay
|
||||||
|
DoneDelay
|
||||||
|
DEC temp
|
||||||
|
BNE DelayNote
|
||||||
|
PLA
|
||||||
|
CMP #$FE
|
||||||
|
BEQ SkipDelay
|
||||||
|
DAC
|
||||||
|
LDA #$FF
|
||||||
|
NOP
|
||||||
|
EOR #$FF
|
||||||
|
STA DAC+1
|
||||||
|
LDA SQUEEKER
|
||||||
|
SkipDelay
|
||||||
|
INC src+0
|
||||||
|
BNE SamePage
|
||||||
|
INC src+1
|
||||||
|
SamePage
|
||||||
|
LDA (src),Y
|
||||||
|
CMP #$FF
|
||||||
|
BNE NextNote
|
||||||
|
RTS
|
||||||
|
|
||||||
|
; Array of 16-bit pointers
|
||||||
|
DS \,$00
|
||||||
|
Pointers ; This can't go on the previous page since it spills over due to lazy code above
|
||||||
|
DS $36,$00
|
||||||
|
SFX PUTBIN sfx_5e36
|
||||||
|
|
||||||
|
DS \,$FF ; Pad with End-of-Song
|
||||||
|
__END
|
||||||
|
|
Loading…
Reference in New Issue