summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2004-12-16 16:19:43 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2004-12-16 16:19:43 (GMT)
commitef6837ec5349337144d750ce40d18b207be0ee09 (patch)
tree932ee67996d296b42d4daa91af1954005fac388a /Graphic_Equalizer/src
parent210410c66ec30814c9e1ce0601cf7e5516b3ddfb (diff)
downloadTASS-ef6837ec5349337144d750ce40d18b207be0ee09.zip
TASS-ef6837ec5349337144d750ce40d18b207be0ee09.tar.gz
TASS-ef6837ec5349337144d750ce40d18b207be0ee09.tar.bz2
About screens added.
Diffstat (limited to 'Graphic_Equalizer/src')
-rw-r--r--Graphic_Equalizer/src/display.hcc163
1 files changed, 139 insertions, 24 deletions
diff --git a/Graphic_Equalizer/src/display.hcc b/Graphic_Equalizer/src/display.hcc
index 1207db8..94e8657 100644
--- a/Graphic_Equalizer/src/display.hcc
+++ b/Graphic_Equalizer/src/display.hcc
@@ -49,6 +49,22 @@ chan unsigned 1 maskupdate_notification;
+/*
+ */
+static rom unsigned 20 address_offsets[32] = {
+ ADDRESS_SKIN_START,
+ ADDRESS_HELP_START,
+ ADDRESS_GRAPHMASK_START,
+ ADDRESS_ABOUT_TOP_FONTYS_START,
+ ADDRESS_ABOUT_TOP_TASS_START,
+ ADDRESS_ABOUT_TOP_TRANSFER_START,
+ ADDRESS_ABOUT_TOP_CELOXICA_START,
+ ADDRESS_ABOUT_TOP_DETAILS_START,
+ ADDRESS_ABOUT_BOTTOM_START
+};
+
+
+
/*! \fn void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events, mousedata_t *mousedata)
*
* \brief This routine handles all drawing of pixels. It never returns!
@@ -72,25 +88,27 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
macro expr DW = PalPL2RAMGetMaxDataWidthCT();
macro expr AW = PalPL2RAMGetMaxAddressWidthCT();
macro expr VISIBLEX = PalVideoOutGetVisibleX(VIDEOOUT, CLOCKRATE);
+ macro expr VISIBLEY = PalVideoOutGetVisibleY(VIDEOOUT);
macro expr TOTALX = PalVideoOutGetTotalX(VIDEOOUT, CLOCKRATE);
macro expr TOTALY = PalVideoOutGetTotalY(VIDEOOUT);
macro expr SCANX = PalVideoOutGetX(VIDEOOUT);
macro expr SCANY = PalVideoOutGetY(VIDEOOUT);
- unsigned 10 image_counter[24];
+ unsigned AW addresses[32];
unsigned DW pixeldata;
unsigned 24 visual_graph_color;
- unsigned AW address, address_offset;
+ unsigned AW address_offset;
+ unsigned 5 address_index;
/*
- * If the passed button_state tells us the button is active, then we
+ * The passed button_state tells us if the button is active, then we
* the button is 'on' and we draw it inverted. Otherwise we draw the
* area of the button normally.
*/
macro proc draw_button(button_state) {
- if (button_state == pixeldata[31:24]) {
+ if (button_state) {
PalVideoOutWrite(VIDEOOUT, ~PIXEL);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
@@ -114,25 +132,49 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* for the next cycle.
*/
PalPL2RAMRead(RAM_BANK0, &pixeldata);
- PalPL2RAMSetReadAddress(RAM_BANK0, address_offset +address);
+ PalPL2RAMSetReadAddress(RAM_BANK0, (MODE_GRAPH == events->mode) ? (address_offset +(0 @ (addresses[address_index] \\ 2))) : (address_offset +addresses[address_index]));
/*
*/
switch (events->mode) {
- case MODE_HELP:
- address_offset = ADDRESS_HELP_START;
+ case MODE_SKIN:
+ address_offset = address_offsets[OFFSET_ADDRESS_SKIN];
break;
case MODE_GRAPH:
- address_offset = ADDRESS_GRAPHMASK_START;
+ address_offset = address_offsets[OFFSET_ADDRESS_GRAPHMASK];
+ break;
+ case MODE_ABOUT:
+ address_offset = address_offsets[OFFSET_ADDRESS_HELP];
break;
+ case MODE_HELP:
+ address_offset = address_offsets[OFFSET_ADDRESS_HELP];
+ break;
+ case MODE_ABOUT_BUSY:
default:
- address_offset = ADDRESS_SKIN_START;
+ delay;
break;
}
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);
+ /* switch (addresses[MASK_AREA_BACKGROUND] <- 2) {
+ case 0:
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[MASK]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[MASK]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[MASK]) << 0);
+ break;
+ case 1:
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[23:16]]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[23:16]]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[23:16]]) << 0);
+ break;
+ case 2:
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[15:8]]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[15:8]]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[15:8]]) << 0);
+ break;
+ case 3:
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << 0);
+ break;
+ default:
+ delay;
+ break;
+ }*/
+ visual_graph_color = ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << 1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << -1) @ ((unsigned 8)(0 @ audiodata->fft_info.read[pixeldata[7:0]]) << 0);
PalVideoOutWrite(VIDEOOUT, 0 @ visual_graph_color);
}
} else {
@@ -142,7 +184,7 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* special or the background. Every specific drawing
* obviously only happens in the masked area.
*/
- switch (pixeldata[31:24]) {
+ switch (MASK) {
/*
*/
case AREA_WAVEFORM:
@@ -201,7 +243,7 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* 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)== MASK);
break;
case BUTTON_PRECISE: /* fall through */
@@ -214,14 +256,72 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* safley check wether it matches our
* mask.
*/
- draw_button((0 @ events->equalizer_mode) +BUTTON_PRECISE);
+ draw_button(((0 @ events->equalizer_mode) +BUTTON_PRECISE) == MASK);
break;
case BUTTON_LOG:
/*
*
*/
- draw_button((0 @ audiodata->display_log) +BUTTON_LOG);
+ draw_button(audiodata->display_log);
+ break;
+
+ case BUTTON_DEMO:
+ draw_button(events->button_demo_state);
+ break;
+ case BUTTON_RESET:
+ draw_button(events->button_reset_state);
+ break;
+
+ case BUTTON_HELP:
+ draw_button(events->mode == MODE_HELP);
+ break;
+ case BUTTON_ABOUT:
+ draw_button(events->mode == MODE_ABOUT);
+ break;
+
+ case AREA_ABOUT_TOP:
+ if (MODE_ABOUT == events->mode) {
+ par {
+ events->mode = MODE_ABOUT_BUSY;
+ address_index = MASK_AREA_ABOUT_TOP;
+ address_offset = address_offsets[OFFSET_ADDRESS_ABOUT_TOP_TRANSFER /*events->address_offset_index*/];
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
+
+ } else {
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
+ break;
+
+ case AREA_URL_FONTYS: /* fall through */
+ case AREA_URL_TASS: /* fall through */
+ case AREA_URL_TRANSFER: /* fall through */
+ case AREA_URL_CELOXICA: /* fall through */
+ case AREA_ABOUT_BOTTOM:
+ if (MODE_ABOUT == events->mode) {
+ par {
+ events->mode = MODE_ABOUT_BUSY;
+ address_index = MASK_AREA_ABOUT_BOTTOM;
+ address_offset = ADDRESS_ABOUT_TOP_CELOXICA_START;//address_offsets[OFFSET_ADDRESS_ABOUT_BOTTOM/* events->address_offset_index */];
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
+ } else {
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
+ break;
+
+ case AREA_MASK_END:
+ if (MODE_ABOUT_BUSY == events->mode) {
+ par {
+ events->mode = MODE_ABOUT;
+ address_index = MASK_AREA_BACKGROUND;
+ address_offset = address_offsets[OFFSET_ADDRESS_HELP];
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
+ } else {
+ PalVideoOutWrite(VIDEOOUT, PIXEL);
+ }
break;
/*
@@ -235,9 +335,9 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* background.
*/
default:
- /* (pixeldata[31:24] <= AREA_EQUALIZER_MAX) && */
- if ((AREA_EQUALIZER_MIN <= pixeldata[31:24]) && (!events->locked_display)) {
- if ((SCANY == 0 @ events->equalizer_display[(pixeldata[31:24] -AREA_EQUALIZER_MIN) <- 7]) || ((SCANY +1) == 0 @ events->equalizer_display[(pixeldata[31:24] -AREA_EQUALIZER_MIN) <- 7])) {
+ /* (MASK <= AREA_EQUALIZER_MAX) && */
+ if ((AREA_EQUALIZER_MIN <= MASK) && (!events->locked_display)) {
+ if ((SCANY == 0 @ events->equalizer_display[(MASK -AREA_EQUALIZER_MIN) <- 7]) || ((SCANY +1) == 0 @ events->equalizer_display[(MASK -AREA_EQUALIZER_MIN) <- 7])) {
PalVideoOutWrite(VIDEOOUT, skindata->equalizer.color_primary);
} else {
PalVideoOutWrite(VIDEOOUT, PIXEL);
@@ -248,6 +348,7 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
break;
}
}
+
/*
* We compare our current X and Y scan positions of the
@@ -259,7 +360,7 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
if (MOUSE_UPDATED == mousedata->status) {
if ((SCANX == 0 @ mousedata->x) && (SCANY == 0 @ mousedata->y)) {
par {
- events->mask = pixeldata[31:24];
+ events->mask = MASK;
mousedata->status = MOUSE_NOT_UPDATED;
maskupdate_notification ! MOUSE_UPDATED;
}
@@ -271,10 +372,6 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
}
/*
- */
- image_counter[(pixeldata[31:24] \\ 1) <- 5]++;
-
- /*
* The current position of the screen can lay in an
* area called the blanking area. We don't have data
* for this area as it is not drawn. We therefor have
@@ -284,6 +381,14 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* Therefor we have to substract 5 pixels.
*/
if ((SCANX > (VISIBLEX - 5)) && (SCANX <= (TOTALX - 5))) {
+ if (SCANY == (VISIBLEY +1)) {
+ par {
+ address_index++;
+ addresses[address_index] = 0;
+ }
+ } else {
+ delay;
+ }
/*
* We are in the blanking area of the screen.
* If we are on the last line, and thus last
@@ -293,7 +398,10 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
/*
* Reset our draw address counter to 0.
*/
- address = 0;
+ par {
+ address_index = 0;
+ addresses[MASK_AREA_BACKGROUND] = 0;
+ }
} else {
/*
* We have reached the end of the
@@ -308,7 +416,14 @@ void display_main(skindata_t *skindata, audiodata_t *audiodata, events_t *events
* drawn thus keeping the memory location in
* sync with the current pixel position.
*/
- address++;
+ par {
+ if (address_index != MASK_AREA_BACKGROUND) {
+ addresses[address_index]++;
+ } else {
+ delay;
+ }
+ addresses[MASK_AREA_BACKGROUND]++;
+ }
}
}
}