summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src/display.hcc
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2004-11-26 15:50:54 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2004-11-26 15:50:54 (GMT)
commit17c80fcc4ba5dc684e2c72867681467c163ea727 (patch)
treeb989a152dc964722728862e8f244df6c5030a9d4 /Graphic_Equalizer/src/display.hcc
parent171c432587f844eb007f9afb9beab81d7252cf93 (diff)
downloadTASS-17c80fcc4ba5dc684e2c72867681467c163ea727.zip
TASS-17c80fcc4ba5dc684e2c72867681467c163ea727.tar.gz
TASS-17c80fcc4ba5dc684e2c72867681467c163ea727.tar.bz2
changed macro's to functions.
rewrote reload_equalizer to only lock the array, then update it and unlock.
Diffstat (limited to 'Graphic_Equalizer/src/display.hcc')
-rw-r--r--Graphic_Equalizer/src/display.hcc66
1 files changed, 36 insertions, 30 deletions
diff --git a/Graphic_Equalizer/src/display.hcc b/Graphic_Equalizer/src/display.hcc
index 5d1d830..2389a52 100644
--- a/Graphic_Equalizer/src/display.hcc
+++ b/Graphic_Equalizer/src/display.hcc
@@ -16,6 +16,11 @@
*
********************************************************************/
+/*
+ * Set the Clock rate for this domain. 25.175 Mhz is required for the Video output.
+ */
+#define PAL_TARGET_CLOCK_RATE 25175000
+
/******** System Includes *************/
#include <stdlib.hch>
@@ -23,6 +28,7 @@
/******** Application Includes ********/
#include "configuration.hch"
+#include "audio.hch"
#include "eventhandler_shared.hch"
#include "mouse_shared.hch"
#include "display_shared.hch"
@@ -43,8 +49,7 @@ chan unsigned 1 maskupdate_notification;
/*! \fn void display_main(skindata_t *skindata, audiodata_t *audiodata,
- * equalizer_levels_t *equalizer_levels, events_t *events,
- * mousedata_t *mousedata, ClockRate, RAM_BANK0)
+ * events_t *events, mousedata_t *mousedata)
*
* \brief This routine handles all drawing of pixels. It never returns!
*
@@ -55,10 +60,13 @@ chan unsigned 1 maskupdate_notification;
* \return Never Returns.
* \retval void
*/
-macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEOOUT, RAM_BANK0) {
+void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events, mousedata_t *mousedata) {
/*
* Setup macro's RAM/Video handles and to coordinate pixel writing.
*/
+ macro expr CLOCKRATE = PAL_ACTUAL_CLOCK_RATE;
+ macro expr VIDEOOUT = PalVideoOutOptimalCT(CLOCKRATE);
+ macro expr RAM_BANK0 = PalPL2RAMCT(0);
macro expr DW = PalPL2RAMGetMaxDataWidthCT();
macro expr AW = PalPL2RAMGetMaxAddressWidthCT();
macro expr VISIBLEX = PalVideoOutGetVisibleX(VIDEOOUT, CLOCKRATE);
@@ -104,7 +112,7 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
/*
* Run the following tasks indefinatly and in parallel
*/
- for (;;) {
+ while (TRUE) {
par {
/*
* Before starting this loop we allready set the the
@@ -117,7 +125,7 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
/*
*/
- switch (events.mode) {
+ switch (events->mode) {
case MODE_HELP:
address_offset = ADDRESS_HELP_START;
break;
@@ -129,9 +137,9 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
break;
}
- if (MODE_GRAPH == events.mode) {
+ if (MODE_GRAPH == events->mode) {
par {
- visual_graph_color = ((unsigned 8)(0 @ audiodata.fft_info.read[pixeldata[31:24]]) << 1) @ ((unsigned 8)(0 @ audiodata.fft_info.read[pixeldata[31:24]]) << -1) @ ((unsigned 8)(0 @ audiodata.fft_info.read[pixeldata[31:24]]) << 0);
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[31:24]]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[31:24]]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[31:24]]) << 0);
PalVideoOutWrite(VIDEOOUT, 0 @ visual_graph_color);
}
} else {
@@ -145,8 +153,8 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
/*
*/
case AREA_WAVEFORM:
- if (SCANY == 0 @ skindata.area_waveform_bottom -(0 @ (audiodata.ifft_info.read[((SCANX -(0 @ skindata.area_waveform_left)) <-8)]))) {
- PalVideoOutWrite(VIDEOOUT, skindata.color_area_waveform);
+ if (SCANY == 0 @ skindata->area_waveform_bottom -(0 @ (audiodata->ifft_info.read[((SCANX -(0 @ skindata->area_waveform_left)) <-8)]))) {
+ PalVideoOutWrite(VIDEOOUT, skindata->color_area_waveform);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
}
@@ -161,8 +169,8 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
* highest point of our bar. Every
* pixel after this point is drawn.
*/
- if (SCANY >= 0 @ events.volume_position) {
- PalVideoOutWrite(VIDEOOUT, skindata.color_area_volume);
+ if (SCANY >= 0 @ events->volume_position) {
+ PalVideoOutWrite(VIDEOOUT, skindata->color_area_volume);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
}
@@ -175,7 +183,7 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
/*
* We draw every pixel that is smaller TODO
*/
- if ((SCANY >= (0 @ skindata.area_spectrum_bottom) -(0 @ audiodata.fft_info.read[(SCANX -(0 @ skindata.area_spectrum_left))[9:2]])) && ((SCANX -(0 @ skindata.area_spectrum_left)) <- 2)) {
+ if ((SCANY >= (0 @ skindata->area_spectrum_bottom) -(0 @ audiodata->fft_info.read[(SCANX -(0 @ skindata->area_spectrum_left))[9:2]])) && ((SCANX -(0 @ skindata->area_spectrum_left)) <- 2)) {
PalVideoOutWrite(VIDEOOUT, PIXEL_SPECTRUM);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
@@ -200,7 +208,7 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
* button offset to possibly match it
* with the current mask.
*/
- draw_button((events.active_preset +BUTTON_PRESET_1) <- 8);
+ draw_button((events->active_preset +BUTTON_PRESET_1) <- 8);
break;
case BUTTON_CONVEX_FULL: /* fall through */
@@ -215,14 +223,14 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
* safley check wether it matches our
* mask.
*/
- draw_button((0 @ events.equalizer_mode) +BUTTON_CONVEX_FULL);
+ draw_button((0 @ events->equalizer_mode) +BUTTON_CONVEX_FULL);
break;
case BUTTON_LOG:
/*
*
*/
- draw_button((0 @ audiodata.display_log) +BUTTON_LOG);
+ draw_button((0 @ audiodata->display_log) +BUTTON_LOG);
break;
/*
@@ -237,9 +245,9 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
*/
default:
/* (pixeldata[31:24] <= AREA_EQUALIZER_MAX) && */
- if (!events.locked_equalizer) {
- if ((AREA_EQUALIZER_MIN <= pixeldata[31:24]) && ((SCANY -(0 @ SCANY <- 1)) == 0 @ events.equalizer_displayptr_get[(pixeldata[31:24] -AREA_EQUALIZER_MIN) <- 7])) {
- PalVideoOutWrite(VIDEOOUT, skindata.color_equalizer);
+ if (!events->locked_equalizer) {
+ if ((AREA_EQUALIZER_MIN <= pixeldata[31:24]) && ((SCANY -(0 @ SCANY <- 1)) == 0 @ events->equalizer_display[(pixeldata[31:24] -AREA_EQUALIZER_MIN) <- 7])) {
+ PalVideoOutWrite(VIDEOOUT, skindata->color_equalizer);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
}
@@ -257,11 +265,11 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
* in memory at that location. We then know what mask
* is to be used for events.
*/
- if (MOUSE_UPDATED == mousedata.status) {
- if ((SCANX == 0 @ mousedata.x) && (SCANY == 0 @ mousedata.y)) {
+ if (MOUSE_UPDATED == mousedata->status) {
+ if ((SCANX == 0 @ mousedata->x) && (SCANY == 0 @ mousedata->y)) {
par {
- events.mask = pixeldata[31:24];
- mousedata.status = MOUSE_NOT_UPDATED;
+ events->mask = pixeldata[31:24];
+ mousedata->status = MOUSE_NOT_UPDATED;
maskupdate_notification ! MOUSE_UPDATED;
}
} else {
@@ -314,7 +322,7 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
/*! \fn void reload_equalizer(events_t *events,
- * unsigned 4 *equalizer_levels, unsigned 7 preset_offset)
+ * unsigned 4 *equalizer_levels, unsigned 10 preset_offset)
* \brief This function copies the supplied equalizer values to the array
* used for displaying equalizer data.
*
@@ -325,16 +333,14 @@ macro proc display_main(skindata, audiodata, events, mousedata, CLOCKRATE, VIDEO
* \return void
* \retval void
*/
-macro proc reload_equalizer(events, equalizer_levels, preset_offset) {
+void reload_equalizer(events_t *events, unsigned 4 *equalizer_levels, unsigned 10 preset_offset) {
unsigned 7 equalizer_band;
+ events->locked_equalizer = TRUE;
+ delay;
do {
- events.equalizer_displayptr_set[(preset_offset +(0 @ equalizer_band))<-7] = equalizer_table_inv[equalizer_levels[preset_offset +(0 @ equalizer_band)]];
- par {
- events.equalizer_displayptr_set = events.equalizer_displayptr_get;
- events.equalizer_displayptr_get = events.equalizer_displayptr_set;
- }
- events.equalizer_displayptr_set[(preset_offset +(0 @ equalizer_band))<-7] = equalizer_table_inv[equalizer_levels[preset_offset +(0 @ equalizer_band)]];
+ events->equalizer_display[(preset_offset +(0 @ equalizer_band))<-7] = equalizer_table_inv[equalizer_levels[preset_offset +(0 @ equalizer_band)]];
equalizer_band++;
} while (equalizer_band);
+ events->locked_equalizer = FALSE;
} /* --- reload_equalizer() --- */