Name: Adrian McMenamin
Member since: 2001-12-14 18:21:59
Last Login: 2007-09-04 12:14:39



Still plugging away at the Dreamcast.


Recent blog entries by zx80user

Whoo hoo, booted up to journeyer level. Feel like a proper kernel hacker now :)

Actually, been struggling a little with the mixer code on the driver, but worked out what was wrong (the documentation referred to the api in the alsa-driver tree which is somewhat ahead of the code in the kernel).

21 Mar 2006 (updated 21 Mar 2006 at 14:30 UTC) »

Although I claimed to have a working driver ten days ago in fact all it did was play 8 bit mono. Now I have one that will play 16 bit stereo too.

Try as I might I just could not get the stereo to work - firstly because I assumed that, as I had done with the OSS driver, I'd have to write the stereo separation code myself (in fact the ALSA middle layer does all that) and then because of what appeared to be repeated buffer over-runs.

I had built an OSS only version of mpg123 to test this and try as I might I just got clicks and gaps as the middle layer responded to the over runs by restarting the DMA transfer.

Eventually I realised that ALSA was assuming that my buffer stayed a constant size (in fact it doubles in size for stereo). Once I cut the hardware buffers in half and fixed up the period sizes to something close to optimum it all worked.

I can now also see how to add additional channels - not too difficult really. But I am not sure I can see a reason.

Working on the mixer code now.

12 Mar 2006 (updated 12 Mar 2006 at 01:16 UTC) »

Well, after a mere three years I have a working ALSA driver for the Dreamcast. Had to get a lot of help from the ALSA developers to do it - so special thanks to James Courier-Dutton and Lee Revell - but it's a good feeling.

The code is now at

Key events today were fianlly burning a new boot cdrom so I didn't have to struggle with the five year old one that would only boot when cold (I assume that was the reason) and realising that timer polling was the way to go - the ARM7->SH4 interrupt clearly wasn't fully reversed as it just didn't worked as described.

Well, the driver now plays something a bit more sophisticated than crackles - it even sounds slightly like my daughter telling me I've got an email when I use my test sound.

But I still have lots of problems. it only plays on the left hand side for instance (a consequence of me not working out how to handle stereo in this model) and it get stuck in an endless loop. Previously - in the white noise era - it didn't, so it's been two steps forward and one step back in that regard.

The main breakthrough today has been on the ARM7 side - I dug up some arm7-elf generating tools (couldn't be bothered to build them all myself so got RPMs and installed them on a Fedora box I have here - my main dev box is Ubuntu these days). Wrote some new code to raise an interrupt - needed, I think, for the driver's overall health - and not only did this code work (the SH4 portion treats it as firmware), it played better sound - I think the only firmware may have been broken or corrupted over time.

The driver now plays screeches and crackles - so it is giving me sound output. Lying in bed last night I realised there were several more simple changes to make to get me closer, but at heart I fear the DMA mechanism I have chosen is wrong and might need to be looked at again.

13 older entries...


zx80user certified others as follows:

  • zx80user certified lethal as Master
  • zx80user certified riscgrl as Journeyer
  • zx80user certified dwmw2 as Master
  • zx80user certified gobry as Apprentice
  • zx80user certified blm as Apprentice
  • zx80user certified grey as Apprentice
  • zx80user certified zotz as Apprentice
  • zx80user certified pabs3 as Apprentice
  • zx80user certified zanee as Apprentice
  • zx80user certified zx64 as Journeyer
  • zx80user certified mw as Apprentice
  • zx80user certified wspace as Apprentice
  • zx80user certified kwa as Apprentice
  • zx80user certified vpiff as Apprentice
  • zx80user certified NikDoof as Apprentice
  • zx80user certified bi as Journeyer
  • zx80user certified abryant as Apprentice

Others have certified zx80user as follows:

  • lethal certified zx80user as Apprentice
  • mrbrown certified zx80user as Apprentice
  • lerdsuwa certified zx80user as Apprentice
  • ncm certified zx80user as Apprentice
  • andersee certified zx80user as Apprentice
  • mdupont certified zx80user as Apprentice
  • watete certified zx80user as Journeyer
  • yuedongd certified zx80user as Journeyer
  • mw certified zx80user as Apprentice
  • fzort certified zx80user as Journeyer
  • Stevey certified zx80user as Journeyer
  • dlc certified zx80user as Journeyer
  • zanee certified zx80user as Journeyer
  • ataridatacenter certified zx80user as Journeyer
  • nkeynes certified zx80user as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page