summaryrefslogtreecommitdiffstats
path: root/Graphic_Equalizer/src/smartmedia.hcc
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2004-11-24 15:33:33 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2004-11-24 15:33:33 (GMT)
commit9b16cb4ce4975745794c94b5d7e8ec975e515aca (patch)
tree36e31e3bf09e6e51a6f327038fe35c721e65a663 /Graphic_Equalizer/src/smartmedia.hcc
parent114ee1f28719ecfa894c87dcfb530efa395b2621 (diff)
downloadTASS-9b16cb4ce4975745794c94b5d7e8ec975e515aca.zip
TASS-9b16cb4ce4975745794c94b5d7e8ec975e515aca.tar.gz
TASS-9b16cb4ce4975745794c94b5d7e8ec975e515aca.tar.bz2
smart media init function is now macro proc.
we now load all data in 4 stages into RAM. we hardcore init various arrays for skindata.
Diffstat (limited to 'Graphic_Equalizer/src/smartmedia.hcc')
-rw-r--r--Graphic_Equalizer/src/smartmedia.hcc93
1 files changed, 72 insertions, 21 deletions
diff --git a/Graphic_Equalizer/src/smartmedia.hcc b/Graphic_Equalizer/src/smartmedia.hcc
index 5e7e250..9cbc986 100644
--- a/Graphic_Equalizer/src/smartmedia.hcc
+++ b/Graphic_Equalizer/src/smartmedia.hcc
@@ -29,7 +29,8 @@
#include "debug.hch"
#endif
-
+#include "eventhandler_shared.hch"
+#include "display.hch" /* FIXME: temporary include, needs to be moved to 'init' */
/*! \fn void smartmedia_init(void);
* \brief We here initialize the Smart Media card and verify wether the
@@ -40,16 +41,17 @@
* \return We return 0 on success, 1 on error.
* \retval unsigned 1
*/
-unsigned 1 smartmedia_init(void) {
- unsigned 1 retval;
-
+macro proc smartmedia_init(result) {
/*
* Firstly we enable both the CPLD and the SmartMedia.
*/
RC200CPLDEnable();
- RC200SmartMediaInit(&retval);
+ RC200SmartMediaInit(&result);
- return retval;
+ if (result) {
+ RC200SmartMediaReset(&result);
+ RC200SmartMediaInit(&result);
+ }
} /* --- smartmedia_init() --- */
@@ -62,7 +64,7 @@ unsigned 1 smartmedia_init(void) {
* \return void
* \retval void
*/
-macro proc smartmedia_loaddata(RAM_BANK0) {
+macro proc smartmedia_loaddata(skindata, RAM_BANK0) {
/*
* Setup RAM Handle, and determin maximum Data and Address widths
*/
@@ -73,6 +75,7 @@ macro proc smartmedia_loaddata(RAM_BANK0) {
unsigned 27 smartmedia_address, smartmedia_address_mask;
unsigned AW address;
unsigned 8 mask, r, g, b;
+ unsigned 3 stage;
unsigned 1 result;
#if HAVE_DEBUG
@@ -88,18 +91,28 @@ macro proc smartmedia_loaddata(RAM_BANK0) {
*/
smartmedia_address = SMARTMEDIA_ADDRESS_SKIN_START;
smartmedia_address_mask = SMARTMEDIA_ADDRESS_SKINMASK_START;
+ stage = STAGE_LOAD_SKIN;
/*
* We start with the address of the skin, and do the loop until we have
* done the end of the help.
*/
- for (address = ADDRESS_SKIN_START; address != (ADDRESS_SKIN_END +1); address++) {
+ for (address = ADDRESS_SKIN_START; address != (ADDRESS_PRESET_RESET_END +1); address++) {
/*
* Once we are done with the loading of our skin, we need to
* change the smartmedia start addresses.
*/
- if (address == ADDRESS_SKIN_END) {
+ if (ADDRESS_HELP_START == address) {
smartmedia_address = SMARTMEDIA_ADDRESS_HELP_START;
smartmedia_address_mask = SMARTMEDIA_ADDRESS_HELPMASK_START;
+ stage = STAGE_LOAD_HELP;
+ }
+ if (ADDRESS_GRAPHMASK_START == address) {
+ smartmedia_address_mask = SMARTMEDIA_ADDRESS_GRAPHMASK_START;
+ stage = STAGE_LOAD_GRAPH;
+ }
+ if (ADDRESS_PRESET_DEMO_START == address) {
+ smartmedia_address_mask = SMARTMEDIA_ADDRESS_PRESET_DEMO_START;
+ stage = STAGE_LOAD_PRESET;
}
/*
@@ -126,21 +139,37 @@ macro proc smartmedia_loaddata(RAM_BANK0) {
* VERY slow and must be changed.
*/
#if !USE_MASK_ONLY
- RC200SmartMediaSetAddress(READ, smartmedia_address);
- RC200SmartMediaRead(&r, TRUE);
- RC200SmartMediaOperationEnd(&result);
- RC200SmartMediaSetAddress(READ, (smartmedia_address +1));
- RC200SmartMediaRead(&g, TRUE);
- RC200SmartMediaOperationEnd(&result);
- RC200SmartMediaSetAddress(READ, (smartmedia_address +2));
- RC200SmartMediaRead(&b, TRUE);
- RC200SmartMediaOperationEnd(&result);
+ if ((STAGE_LOAD_SKIN == stage) || (STAGE_LOAD_HELP == stage)) {
+ RC200SmartMediaSetAddress(READ, smartmedia_address);
+ RC200SmartMediaRead(&r, TRUE);
+ RC200SmartMediaOperationEnd(&result);
+ RC200SmartMediaSetAddress(READ, (smartmedia_address +1));
+ RC200SmartMediaRead(&g, TRUE);
+ RC200SmartMediaOperationEnd(&result);
+ RC200SmartMediaSetAddress(READ, (smartmedia_address +2));
+ RC200SmartMediaRead(&b, TRUE);
+ RC200SmartMediaOperationEnd(&result);
+ }
#endif
RC200SmartMediaSetAddress(READ, smartmedia_address_mask);
RC200SmartMediaRead(&mask, TRUE);
RC200SmartMediaOperationEnd(&result);
- data = 0 @ mask @ r @ g @ b;
+ switch (stage) {
+ case STAGE_LOAD_SKIN:
+ data = 0 @ mask @ r @ g @ b;
+ break;
+ case STAGE_LOAD_HELP:
+ data = 0 @ mask @ r @ g @ b;
+ break;
+ case STAGE_LOAD_GRAPH:
+ data = (unsigned DW)(0 @ mask) << 24;
+ break;
+ case STAGE_LOAD_PRESET:
+ data = 0 @ mask;
+ break;
+ }
+
#else
data = 0x0000ff00;
#endif
@@ -153,10 +182,10 @@ macro proc smartmedia_loaddata(RAM_BANK0) {
/*
* Print some nice stats about data loading.
*/
- if (!address[11:0]) {
+ if (!(address <- 11)) {
print_cr();
print_hex_value(0 @ (address \\ 12));
- print_string(" / 00000096 | data: ");
+ print_string(" / 000000AF | data: ");
print_hex_value(data <- 32);
}
#endif
@@ -167,4 +196,26 @@ macro proc smartmedia_loaddata(RAM_BANK0) {
smartmedia_address += 3;
smartmedia_address_mask++;
}
+
+ /*
+ * This block needs to probably move up into the fore loop where we
+ * calculate these settings later.
+ */
+ skindata.area_spectrum_top = 200;
+ skindata.area_spectrum_bottom = 335;
+ skindata.area_spectrum_left = 77;
+ skindata.area_spectrum_right = 575;
+ skindata.area_waveform_top = 46;
+ skindata.area_waveform_bottom = 118;
+ skindata.area_waveform_left = 76;
+ skindata.area_waveform_right = 413;
+ skindata.area_volume_top = 112;
+ skindata.area_volume_bottom = 66;
+ skindata.area_volume_left = 439;
+ skindata.area_volume_right = 455;
+ skindata.color_area_volume = PIXEL_VOLUME;
+ skindata.color_area_waveform = PIXEL_WAVEFORM;
+// skindata.color_area_spectrum_top = PIXEL_SPECTRUM;
+// skindata.color_area_spectrum_bottom = PIXEL_SPECTRUM;
+ skindata.color_equalizer = PIXEL_EQUALIZER;
} /* --- smartmedia_loaddata() --- */