Previous Thread
Next Thread
Print Thread
Page 35 of 55 1 2 33 34 35 36 37 54 55
Joined: Nov 2003
Posts: 459
K
Senior Member
Offline
Senior Member
K
Joined: Nov 2003
Posts: 459
Three new DSF rips today:

Guilty Gear X (2000)(Arc System Works, Sammy)
Sega GT (2000)(Tose, Sega)
Takoron (Naomi)(2007)(Compile Heart)

GGX and Sega GT are mostly streamed (Sega GT still has roughly 20 minutes of Sega Arcade Music (TM) though, so enjoy).

Both Guilty Gear X and Takoron use the AM2 driver, and both don't really work in either in_aosdk (bad tempo) and current AOSDK compile (Takoron needs AEG code tinkered with, GGX crashes the driver few seconds in each song).

http://dsf.hcs64.com/

Joined: Sep 2007
Posts: 56
K
Member
Offline
Member
K
Joined: Sep 2007
Posts: 56
To be more precise, GGX isn't actually crashing the driver but instead is keying on looped samples with LSA > LEA and this is being mishandled.

Code
StartSlot[0E]:   SSCTL 0 SA 04EFEA LSA FFEC LEA 0008 PCMS 2 LPCTL 1
                 AR 1F D1R 00 D2R 00 RR 1F DL 00 KRS 0 LPSLNK 0
                 TL 0C OCT 0 FNS 000
                 LFORE 0 LFOF 00 ALFOWS 0 ALFOS 0 PLFOWS 0 PLFOS 0
                 IMXL 0 ISEL 0 DISDL C DIPAN 17

I'm not exactly what the hardware does in this case, but it would make the most sense if LEA is only processed after LSA is reached, and for this to work, the sample counter needs to rollover upon reaching 0x10000.

AOSDK isn't applying this rollover, and in this particular case, havoc ensues with the steps_to_go part of the ADPCM decoder as this value gets very large and contiunes to increase, unbounded. The result of this is the sound processing spends most of it's time chasing this everly increasing steps_to_go value and is unable to update the sound buffer at the required 44.1 kHz. And so, the end user then hears something along the likes of a broken record.

Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
OP Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
That makes sense. I'll take a look.

Joined: Nov 2003
Posts: 459
K
Senior Member
Offline
Senior Member
K
Joined: Nov 2003
Posts: 459
New DSF rips for today:

Quiz Keitai Q-Mode (Naomi)(2002)(Amedio, Taito)
Slashout (Naomi)(2000)(Sega)
Spikers Battle (Naomi)(2001)(Sega)
Sports Jam (Naomi)(2001)(Sega)
Street Fighter Zero 3 Upper (Naomi)(2001)(Capcom)
Super Major League (Naomi)(2001)(Sega)
Super Shanghai 2005 (Naomi)(2005)(Star Fish)
Virtua Athlete 2000 (2000)(Sega)
Virtua Golf (Naomi)(2001)(Sega)

Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
...no. LSA > LEA = all hell breaks loose.
Well, it's maybe not that bad but it's pretty much undefined behaviour.

I think it's a bug. Could be ARM core (sigh) or a broken driver.
1) I see that happening on my code as well (still works though)
2) Even if a channel is started like this, it will be stopped moments later (as in less than a second, much less)
3) Quite frankly loop like this makes no sense smile

On hardware this setting is simply invalid. This is what happens on simple 400Hz test tone (44100 samples, 16-bit sine wave):
1) The loop goes fine once
2) There is a brief period of silence (1/4 a second give or take)
3) Squeaking starts :P

Hard to say why 3) sounds like it does, but since my program zeroes all AICA memory it could be the sine wave itself but played at much higher speed, along with the empty part of memory up to 0xffff (realative to SA). This is as good guess as any smile
Anyway, once in this mode CA reports pretty much random values. Maybe because of how fast it goes. This is consistent with the fact that "loop jump" flag gets set shortly after it's read (and thus reset). But it does reset so the loop still works.

Note: CA does not fall within the 0xFFEC -> 0x(1)0008 range, it spans entire 0xffff range. My code will keep the loop going but will limit the range and will not change speed. I say it's invalid setting so I'm not keen on trying very hard to match hardware here...

EDIT: One more thing. GGX tune plays fine (?) both in my player and as AICA RAM dump on DC. This is most likely due to channels with invalid valued being promptly turned off, so not much sound is produced anyway. Or maybe a real ARM is not doing that to AICA. Anyway, it works.

Last edited by Deunan Knute; 11/02/08 09:38 PM.
Joined: Nov 2003
Posts: 459
K
Senior Member
Offline
Senior Member
K
Joined: Nov 2003
Posts: 459
If you're hearing nice, instrumental rock, then GGX plays fine.

Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
OP Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
Thanks for testing on hardware, DK. That's useful to know. I can try with a different ARM core and see if weird LSA/LEA values are also written.

Update: MAME's ARM core writes identical wacky LSA/LEA values. I changed my AICA so that on keyon if LSA > LEA it sets LEA to 0xffff and that seems to work for the Guilty Gear X tracks even if it's not what actually happens smile

Update 2: I hacked up the AEG monitor as Deunan recommended (scaling the result to 0-959) and both Takoron and the VF3 test rip seem to play properly now.

Last edited by R. Belmont; 11/02/08 10:34 PM.
Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
OP Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
AOSDK 1.4.5 is posted. This fixes Guilty Gear X, Takaron, and probably other things.

Joined: Mar 2001
Posts: 17,215
Likes: 234
R
Very Senior Member
OP Offline
Very Senior Member
R
Joined: Mar 2001
Posts: 17,215
Likes: 234
Incidentally, Slashout_019_50.dsf and several of Knurek's other most recent rips are keying on voices with very low SA (0x001a6c, for instance) and thus "playing" the ARM7 code and data (which unsurprisingly sounds like gibberish). I'm guessing ripping the AM2 driver isn't quite perfected yet? smile

Joined: Feb 2008
Posts: 107
D
Senior Member
Offline
Senior Member
D
Joined: Feb 2008
Posts: 107
Just FYI some Dreamcast games make use of AEG monitoring (and in strange places too), that hack might not work for them. But there's only a handful of those.

Slashout_019_50.dsf works for me. Not a single SA below 0x2000 (and I don't hear any strange noises either). Maybe it's another case of Dreamcast 2MB mask/limit being applied somewhere?

Page 35 of 55 1 2 33 34 35 36 37 54 55

Moderated by  R. Belmont, Richard Bannister 

Link Copied to Clipboard
Who's Online Now
2 members (Kale, 1 invisible), 233 guests, and 1 robot.
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,923
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