From 9ca8fe7cbb6c4d4f4a2aa3f66cc0f0b0dcc07e09 Mon Sep 17 00:00:00 2001 From: theoddone33 <> Date: Wed, 25 Apr 2001 19:12:26 +0000 Subject: [PATCH] Merged some Vibra16 code from Peter_S. Implemented Opcodes 0bh, 1bh, and 2bh for the DSP1 --- zsnes/src/chips/dsp1emu.c | 33 +++++++++++++++++++++++++-------- zsnes/src/cpu/dspproc.asm | 16 ++++++++++++++++ zsnes/src/ui.asm | 5 ++--- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/zsnes/src/chips/dsp1emu.c b/zsnes/src/chips/dsp1emu.c index b93a2fb0..807142b2 100644 --- a/zsnes/src/chips/dsp1emu.c +++ b/zsnes/src/chips/dsp1emu.c @@ -958,31 +958,48 @@ short Op0BX; short Op0BY; short Op0BZ; short Op0BS; + +void DSPOp0B() +{ + Op0BS=(short)Op0BX*matrixA[0][0]+Op0BY*matrixA[0][1]+Op0BZ*matrixA[0][2]; + #ifdef DebugDSP1 + Log_Message("OP0B X: %d Y: %d Z: %d S: %d", Op0BX,Op0BY,Op0BZ,Op0BS); + #endif +} + short Op1BX; short Op1BY; short Op1BZ; short Op1BS; + +void DSPOp1B() +{ + Op1BS=(short)Op1BX*matrixA2[0][0]+Op1BY*matrixA2[0][1]+Op1BZ*matrixA2[0][2]; + #ifdef DebugDSP1 + Log_Message("OP1B X: %d Y: %d Z: %d S: %d", Op1BX,Op1BY,Op1BZ,Op1BS); + #endif +} + short Op2BX; short Op2BY; short Op2BZ; short Op2BS; -void DSPOp0B() -{ -} - -void DSPOp1B() -{ -} - void DSPOp2B() { + Op2BS=(short)Op2BX*matrixA3[0][0]+Op2BY*matrixA3[0][1]+Op2BZ*matrixA3[0][2]; + #ifdef DebugDSP1 + Log_Message("OP2B X: %d Y: %d Z: %d S: %d", Op2BX,Op2BY,Op2BZ,Op2BS); + #endif } short Op08X,Op08Y,Op08Z,Op08Ll,Op08Lh; void DSPOp08() { + #ifdef DebugDSP1 + Log_Message("OP08"); + #endif } short Op18X,Op18Y,Op18Z,Op18R,Op18D; diff --git a/zsnes/src/cpu/dspproc.asm b/zsnes/src/cpu/dspproc.asm index fc8980e3..410d37a7 100644 --- a/zsnes/src/cpu/dspproc.asm +++ b/zsnes/src/cpu/dspproc.asm @@ -1599,6 +1599,12 @@ NEWSYM SBHDMA, db 0 NEWSYM SBHDMAPage, db 0 NEWSYM vibracard, db 0 +; ViBRA16X fixes! +EXTSYM MsgCount ; points to counter +EXTSYM MessageOn ; points to "message" delay counter +EXTSYM Msgptr ; points to the message to be displayed +NEWSYM vibmsg, db 'VIBRA16X MODE ENABLED', 0 + NEWSYM ResetSBDSP mov dx,[SBPort] add dl,06h @@ -5063,7 +5069,10 @@ NEWSYM SBHandler16 push es inc dword[sbhandexec] + cmp byte [vibracard], 1 + je .donotcallcmdapos call GetCDMAPos +.donotcallcmdapos cmp byte[csounddisable],1 je near stopsbsound16 @@ -5583,6 +5592,13 @@ NEWSYM initSB ; and modified it. .vibrafix2 + ; notify user that we're in ViBRA16x mode.. + push eax + mov dword [Msgptr], vibmsg + mov eax, [MsgCount] + mov [MessageOn], eax + pop eax + ; Set Time-Constant Data ( = 256 - (1000000/sampling rate) ) ; 8000=131, 22050=210, 44100=233, 11025=165 diff --git a/zsnes/src/ui.asm b/zsnes/src/ui.asm index 6774930a..373ad8ac 100644 --- a/zsnes/src/ui.asm +++ b/zsnes/src/ui.asm @@ -133,8 +133,7 @@ NEWSYM outofmem, db 'You don',39,'t have enough memory to run this program!',13, NEWSYM vibradetect db 'Creative ViBRA16X PnP card detected (support coded by Peter Santing)', 13, 10 db 'High-DMA is below dma #4', 13, 10 - db 13,10, 'you have now full 16-bit stereo sound with the surround option!', 13, 10 - db 13,10, 'Press any key to continue', 13, 10,0 + db 13,10, 'you have now full 16-bit stereo sound with the surround option!', 13, 10, 0 NEWSYM welcome @@ -676,7 +675,7 @@ NEWSYM getblaster push edx mov edx, vibradetect call PrintStr - call WaitForKey + ;call WaitForKey pop edx ; ********** END OF ViBRA16X implementation code **********