Previous Thread
Next Thread
Print Thread
Page 27 of 55 1 2 25 26 27 28 29 54 55
Joined: Jan 2006
Posts: 3,691
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,691
Originally Posted by Deunan Knute
Um... silly question: Why can't I edit/update my previous post now?

because you can do that only for around 6 hours. after that the post becomes definitive and you have to reply to yourself smile

p.s. thanks for the work on makaron smile

Joined: Mar 2001
Posts: 17,217
Likes: 234
R
Very Senior Member
OP Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 17,217
Likes: 234
Yeah. Of course, mods can change your posts to say "what what in the butt" at any time.

Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
I'm having some trouble getting DSP input levels right. Problem is the sample values in MIXS are well in range but DSP ends up heavily clipping the output anyway...
Seems like AO has this too, try listening to soa-367-04-00 with DSP output only and you should hear it hiss and die within seconds.

kingshriek, as I understand AO uses parts of MANATEE to play DSFs? Would it be possible to create some sort of patcher that would go over dumped RAM image and hack ARM program to mask DISDL writes to zero?
I'd like to test that soa-367-04-00 (and few other tunes as well) on Dreamcast, but with DSP output only. This way I could confirm if it's supposed to be that way or is it our DSP bug.

Joined: Mar 2001
Posts: 17,217
Likes: 234
R
Very Senior Member
OP Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 17,217
Likes: 234
Might work to have the SH4 just constantly read all the slots' DISDL registers and zap them.

Joined: Sep 2007
Posts: 56
K
Member
Offline
Member
K
Joined: Sep 2007
Posts: 56
Originally Posted by Deunan Knute
Say, you wouldn't happen to know why is INPUTS being overwritten when IRA == IWA on IWT? Does it mean MEMS write happens first? Could be, but there's nothing on it in AICA docs (or Neill's). Something found in Saturn specs?

I'm not sure what is the correct way to handle this nor am I aware of any documentation that addresses this issue. I did look through a quick sampling of various ssfs and didn't see any meaningful DSP instructions where IWT==IRA.

Originally Posted by Deunan Knute
kingshriek, as I understand AO uses parts of MANATEE to play DSFs? Would it be possible to create some sort of patcher that would go over dumped RAM image and hack ARM program to mask DISDL writes to zero?

Try replacing the following two consecutive instructions:

Code
- E1811400 ORR	r1, r1, r0, LSL #8
- E5881024 STR	r1, [r8, #36]
  
+ E3A01000 MOV	r1, #0
+ E5881024 STR	r1, [r8, #36]

Instruction locations will vary based on the version of manatee.drv used but I would expect them to occur consecutively in most versions.

Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
Hacking RAM image works as intended - and that is the only good news I bring. Dreamcast DSP output is stable, so it must be a bug.

This is what I get - upper track is Dreamcast DSP, lower is my player. I've ommitted AO because it's pretty much the same (there's slight variance on the time line but that's my code still lagging a tiny bit).

http://pics.livejournal.com/dknute/pic/000ba6dw

EDIT: And one more, perhaps important thing. This wave comes mostly from ADPCP type 2 looped sample. If the decoder adds an offset and the output shifts too much away from zero it could be the source of the problem. I'll need to test it some more though. Do note that the very beginnig of the sample seems to be OK, and the moment it goes wrong (dives down) is, if I'm not mistaken, loop jump.

Last edited by Deunan Knute; 03/16/08 11:05 AM.
Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
Yet one more update. Seems like soa-367-04-00 program never sets NEGB to 1. If you do that (like, change "if (NEGB)" to "if (!NEGB)" the echo is gone but the output comes out clean. That gave me an idea, try this:

Code
		v=(((INT64) X*(INT64) Y)>>12);
+		v = (v * 1000) >> 10;
		ACC=(int) v+B;

Much better I'd say. Good for a quick patch but I still need to find the source.

Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
I'm giving up for the moment. I was never that good with signal processing anyway smile Some loose thoughts:
- as I understand it the accumulator multiplication is X (24b sample value) times Y (.12b signed fixed point)
- for the SOA tune it helps to scale Y down a bit (taken from COEF table)
- that still doesn't help all that much, and some other files still play wrong (like first Sakura Wars 4 one)
- if you scale down MIXS input, the sound will still be clipped and hiss, but won't die completly (wave looking wrong though, so it's not really about input level)

I've tried several modifications, like saturating v, v+B (note, those never get out of 26 bit range anyway). It doesn't seem to be memory read/write problem either - tested on separate table to store full ints rather then packed ones.

That particular SOA program is rather simple, all it does is take MIXS, read some memory, write some, use COEF only, writes output. No fancy addressing or latching registers. It does use MEMS and TEMP though. If you zero whole TEMP range on DSP step entry it behaves a bit like if you lowered MIXS level - sounds better but wave still going up and down and has clipped areas.
Based on this I'd say it's either ACC that is computed wrong or TEMP addressing is incorrect. I've tried many things on both, no results (like getting TEMP address just a bit wrong and you loose one or both sound channels). Perhaps there is a way to control MDEC_CT value?

I'll test few more silly ideas of mine but I don't expect any positive changes. If anyone wants to give it a try, be my guest. At this point I'm not touching DSP anymore unless something comes to me...

Joined: Mar 2001
Posts: 17,217
Likes: 234
R
Very Senior Member
OP Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 17,217
Likes: 234
A bit of the funny: since we locked in the basically perfect SCSP in MAME and AO, Yabause and SSF have both had releases where the primary feature was debugging the SCSP. I'm making no accusations and the code's free and open to look at anyway, but it does make me laugh.

Last edited by R. Belmont; 04/01/08 02:28 AM.
Joined: Mar 2001
Posts: 17,217
Likes: 234
R
Very Senior Member
OP Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 17,217
Likes: 234
There's some complaints about the crash cymbal in Shining the Holy Ark (the SSF rip). In sha-03.minissf it looks like this:

StartSlot: SA 557f6 PCM8B 0 LPCTL 1 ALFOS 0 STWINH 0 TL 35 EFSDL 0
AR 1f D1R 0 D2R b RR 14 DL 0 KRS 0 EGHOLD 0 LPSLNK 0

I agree it sounds unnatural, but not enough that I wouldn't say it's potentially just poorly made. kingshriek, any ideas? If I understand the envelope correctly (and I'm not saying I do) it seems like correct behavior (it keys on full strength and stays there on a very short loop until it's explicitly keyed off).

Page 27 of 55 1 2 25 26 27 28 29 54 55

Moderated by  R. Belmont, Richard Bannister 

Link Copied to Clipboard
Who's Online Now
4 members (Golden Child, R. Belmont, MrBogi, 1 invisible), 338 guests, and 6 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,320
Posts121,944
Members5,074
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Forum hosted by www.retrogamesformac.com