From 707ee613b30147b45c66d32a417d4f0d6ab7eece Mon Sep 17 00:00:00 2001 From: dwsJason Date: Sat, 24 Nov 2018 21:58:52 -0500 Subject: [PATCH] sfx audio bank: fixes to get the sfx audio bank to link / decompress, even though it's more thank 32k bytes --- asm/mraudio.s | 130 +++++++++++++++++++++++++++----------------------- data.bat | 8 +++- src/syssnd.c | 15 ++++++ 3 files changed, 91 insertions(+), 62 deletions(-) diff --git a/asm/mraudio.s b/asm/mraudio.s index 72b9353..6932391 100644 --- a/asm/mraudio.s +++ b/asm/mraudio.s @@ -15,6 +15,15 @@ mraDummy start ASM_CODE * void mraLoadBank(char* pAudioBank); * mraLoadBank start ASM_CODE + +pAudioBank equ 4 + lda 2,s + sta pAudioBank+2,s + lda 1,s + sta pAudioBank+1,s + + pla + pla rtl *------------------------------------------------------------------------------- end @@ -37,7 +46,6 @@ mraPlay start ASM_CODE * AudioTable start ASM_CODE - dc a'SND_BOMBSHHT' dc a'SND_BONUS' dc a'SND_BOX' @@ -60,85 +68,85 @@ AudioTable start ASM_CODE dc a'SND_WALK' SND_BOMBSHHT anop - dc i,'$013B' ; Frequency - dc b,'$2B' ; Address - dc b,'$00' ; Size + dc i'$013B' ; Frequency + dc h'2B' ; Address + dc h'00' ; Size SND_BONUS anop - dc i,'$003D' ; Frequency - dc b,'$A0' ; Address - dc b,'$24' ; Size + dc i'$003D' ; Frequency + dc h'A0' ; Address + dc h'24' ; Size SND_BOX anop - dc i,'$0039' ; Frequency - dc b,'$D0' ; Address - dc b,'$1B' ; Size + dc i'$0039' ; Frequency + dc h'D0' ; Address + dc h'1B' ; Size SND_BULLET anop - dc i,'$0033' ; Frequency - dc b,'$70' ; Address - dc b,'$24' ; Size + dc i'$0033' ; Frequency + dc h'70' ; Address + dc h'24' ; Size SND_CRAWL anop - dc i,'$005D' ; Frequency - dc b,'$9E' ; Address - dc b,'$09' ; Size + dc i'$005D' ; Frequency + dc h'9E' ; Address + dc h'09' ; Size SND_DIE anop - dc i,'$0042' ; Frequency - dc b,'$90' ; Address - dc b,'$24' ; Size + dc i'$0042' ; Frequency + dc h'90' ; Address + dc h'24' ; Size SND_ENT0 anop - dc i,'$0065' ; Frequency - dc b,'$D8' ; Address - dc b,'$1B' ; Size + dc i'$0065' ; Frequency + dc h'D8' ; Address + dc h'1B' ; Size SND_ENT1 anop - dc i,'$0030' ; Frequency - dc b,'$30' ; Address - dc b,'$24' ; Size + dc i'$0030' ; Frequency + dc h'30' ; Address + dc h'24' ; Size SND_ENT2 anop - dc i,'$0032' ; Frequency - dc b,'$40' ; Address - dc b,'$24' ; Size + dc i'$0032' ; Frequency + dc h'40' ; Address + dc h'24' ; Size SND_ENT3 anop - dc i,'$0033' ; Frequency - dc b,'$80' ; Address - dc b,'$24' ; Size + dc i'$0033' ; Frequency + dc h'80' ; Address + dc h'24' ; Size SND_ENT4 anop - dc i,'$0036' ; Frequency - dc b,'$50' ; Address - dc b,'$24' ; Size + dc i'$0036' ; Frequency + dc h'50' ; Address + dc h'24' ; Size SND_ENT6 anop - dc i,'$006D' ; Frequency - dc b,'$E8' ; Address - dc b,'$1B' ; Size + dc i'$006D' ; Frequency + dc h'E8' ; Address + dc h'1B' ; Size SND_ENT8 anop - dc i,'$005D' ; Frequency - dc b,'$AC' ; Address - dc b,'$12' ; Size + dc i'$005D' ; Frequency + dc h'AC' ; Address + dc h'12' ; Size SND_EXPLODE anop - dc i,'$0036' ; Frequency - dc b,'$B0' ; Address - dc b,'$24' ; Size + dc i'$0036' ; Frequency + dc h'B0' ; Address + dc h'24' ; Size SND_JUMP anop - dc i,'$0072' ; Frequency - dc b,'$F0' ; Address - dc b,'$1B' ; Size + dc i'$0072' ; Frequency + dc h'F0' ; Address + dc h'1B' ; Size SND_PAD anop - dc i,'$003A' ; Frequency - dc b,'$E0' ; Address - dc b,'$1B' ; Size + dc i'$003A' ; Frequency + dc h'E0' ; Address + dc h'1B' ; Size SND_SBONUS1 anop - dc i,'$003D' ; Frequency - dc b,'$C0' ; Address - dc b,'$24' ; Size + dc i'$003D' ; Frequency + dc h'C0' ; Address + dc h'24' ; Size SND_SBONUS2 anop - dc i,'$0041' ; Frequency - dc b,'$60' ; Address - dc b,'$24' ; Size + dc i'$0041' ; Frequency + dc h'60' ; Address + dc h'24' ; Size SND_STICK anop - dc i,'$0067' ; Frequency - dc b,'$2C' ; Address - dc b,'$12' ; Size + dc i'$0067' ; Frequency + dc h'2C' ; Address + dc h'12' ; Size SND_WALK anop - dc i,'$007B' ; Frequency - dc b,'$AB' ; Address - dc b,'$00' ; Size + dc i'$007B' ; Frequency + dc h'AB' ; Address + dc h'00' ; Size *------------------------------------------------------------------------------- end diff --git a/data.bat b/data.bat index 52f6b6f..9b8ab92 100644 --- a/data.bat +++ b/data.bat @@ -41,7 +41,12 @@ iix mkobj rick1_lz4 data:rick1.lz4 data:rick1.a ntpdata iix mkobj rick1victory_lz4 data:rick1victory.lz4 data:rick1victory.a ntpdata iix mkobj samerica_lz4 data:samerica.lz4 data:samerica.a ntpdata iix mkobj schwarz_lz4 data:schwarz.lz4 data:schwarz.a ntpdata -iix mkobj sfx_lz4 data:sfx.lz4 data:lz4.a sfxdata +rem iix mkobj sfx_lz4 data:sfx.lz4 data:sfx.a sfxdata +del data\sfx.part.bat +gfsplit data\sfx.lz4 data\sfx.part 32 +iix mkobj sfx_lz4 data:sfx.part1 data:sfx.a sfxdata +iix mkobj sfx_lz5 data:sfx.part2 data:sfx2.a sfxdata + rem rem Packed Mr.Sprites into object files rem @@ -67,6 +72,7 @@ iix makelib -P data.lib +data:rick1victory.a iix makelib -P data.lib +data:samerica.a iix makelib -P data.lib +data:schwarz.a iix makelib -P data.lib +data:sfx.a +iix makelib -P data.lib +data:sfx2.a rem rem NinjaTrackerPlus Library rem diff --git a/src/syssnd.c b/src/syssnd.c index 1420dff..1fb1d60 100644 --- a/src/syssnd.c +++ b/src/syssnd.c @@ -41,6 +41,8 @@ char* pNtpSong = NULL; extern char ntpplayer_lz4; extern char samerica_lz4; +extern char sfx_lz4; +extern char sfx_lz5; void SetAudioBank(char bankNo); void NTPstop(void); @@ -70,6 +72,17 @@ syssnd_init(void) //printf("%p\n", pNtpDriver ); //printf("%p\n", pNtpSong ); + + //--- Take Advantage of the 64k bank we just + // Allocated, as a temp buffer to get our + // SFX loaded into the DOC + + printf("Decompress SFX %p\n", &sfx_lz4); // Force this to be linked in + printf("Decompress SFX %p\n", &sfx_lz5); // Force this to be linked in + LZ4_Unpack(pNtpDriver, &sfx_lz4); + + printf("Load SFX into the DOC\n"); + mraLoadBank(pNtpDriver); printf("Decompress NTP Driver\n"); LZ4_Unpack(pNtpDriver, &ntpplayer_lz4); @@ -79,6 +92,7 @@ syssnd_init(void) printf("SetAudioBank\n"); SetAudioBank( (*handle)>>16 ); + #if 0 printf("NTPprepare\n"); if (NTPprepare(pNtpSong)) @@ -90,6 +104,7 @@ syssnd_init(void) printf("NTPplay\n"); NTPplay(0); } + #endif }