Reading CDDA sound levels

From NeoGeo Development Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Registers REG_CDDALEFTL and REG_CDDARIGHTL hold the values of the currently streamed CD audio data, in a reversed 16bit 2's complement format suited for the LC78815 DAC. They were only used to display the vu-meters in the CD player interface.

The CD system ROM uses the following code to reverse the bits:

;D1:Input, D0:Output
reverse16bits:
    moveq	#16-1,d7
	moveq	#0,d0
rev:
	lsr	    #1,d1
	bcc	zerobit
	bset	d7,d0
zerobit:
	dbf	    d7,rev

It reads both registers multiple times during each frame (every 16 raster lines, by using the raster interrupt) to get an average value.

Demo

File:Screencap cddaviz.png

This does NOT work on current emulators.

Uses:

Source for AS and iso image: File:Vumeter1.zip

[Youtube video]