diff --git a/apps/SOURCES b/apps/SOURCES
index 9467914..ccc481b 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -94,10 +94,10 @@
 enc_config.c
 #endif
 eq.c	 	
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)	 	
+#if defined(CPU_COLDFIRE)
 dsp_cf.S
 eq_cf.S	 	
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
 dsp_arm.S
 eq_arm.S
 #endif
diff --git a/apps/codecs/Tremor/asm_mcf5249.h b/apps/codecs/Tremor/asm_mcf5249.h
index 4d7f92c..7d366fa 100644
--- a/apps/codecs/Tremor/asm_mcf5249.h
+++ b/apps/codecs/Tremor/asm_mcf5249.h
@@ -19,7 +19,7 @@
 
 #include "os_types.h"
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 
 /* attribute for 16-byte alignment */
 #define LINE_ATTR   __attribute__ ((aligned (16)))
diff --git a/apps/codecs/Tremor/floor1.c b/apps/codecs/Tremor/floor1.c
index a66e737..5f43d56 100644
--- a/apps/codecs/Tremor/floor1.c
+++ b/apps/codecs/Tremor/floor1.c
@@ -197,7 +197,7 @@
 static int render_point(int x0,int x1,int y0,int y1,int x){
   y0&=0x7fff; /* mask off flag */
   y1&=0x7fff;
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
   asm volatile ("sub.l %[x0],%[x];"
                 "sub.l %[y0],%[y1];"
                 "sub.l %[x0],%[x1];"
diff --git a/apps/codecs/Tremor/vorbisfile.c b/apps/codecs/Tremor/vorbisfile.c
index 0f39826..a32d9f2 100644
--- a/apps/codecs/Tremor/vorbisfile.c
+++ b/apps/codecs/Tremor/vorbisfile.c
@@ -763,7 +763,7 @@
 
 int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
     ov_callbacks callbacks){
-  #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+  #if defined(CPU_COLDFIRE)
   /* this seems to be the closest we get to an init function, let's init emac
      here. rounding is disabled because of MULT31_SHIFT15, which will be
      inaccurate with rounding in its current incarnation */
diff --git a/apps/codecs/liba52/a52_internal.h b/apps/codecs/liba52/a52_internal.h
index 14e5795..cd3286b 100644
--- a/apps/codecs/liba52/a52_internal.h
+++ b/apps/codecs/liba52/a52_internal.h
@@ -141,7 +141,7 @@
 #if 0
 #define MUL(a,b) ((int)(((int64_t)(a) * (b) + (1 << 29)) >> 30))
 #define MUL_L(a,b) ((int)(((int64_t)(a) * (b) + (1 << 25)) >> 26))
-#elif defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#elif defined(CPU_COLDFIRE)
 /* loses 1 bit of accuracy */
 #define MUL(a, b) \
 ({ \
diff --git a/apps/codecs/liba52/parse.c b/apps/codecs/liba52/parse.c
index 18fb901..2a065b4 100644
--- a/apps/codecs/liba52/parse.c
+++ b/apps/codecs/liba52/parse.c
@@ -58,7 +58,7 @@
     a52_state_t * state;
     int i;
 
-    #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+    #if defined(CPU_COLDFIRE)
     coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_ROUND | EMAC_SATURATE);
     #endif
     /* 
diff --git a/apps/codecs/libfaad/decoder.c b/apps/codecs/libfaad/decoder.c
index 1452477..2285168 100644
--- a/apps/codecs/libfaad/decoder.c
+++ b/apps/codecs/libfaad/decoder.c
@@ -95,7 +95,7 @@
     uint8_t i;
     NeAACDecHandle hDecoder = NULL;
 
-    #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+    #if defined(CPU_COLDFIRE)
     coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE);
     #endif
 
diff --git a/apps/codecs/libfaad/fixed.h b/apps/codecs/libfaad/fixed.h
index 7478d2e..da895e8 100644
--- a/apps/codecs/libfaad/fixed.h
+++ b/apps/codecs/libfaad/fixed.h
@@ -59,7 +59,7 @@
 #define Q2_PRECISION (1 << Q2_BITS)
 #define Q2_CONST(A) (((A) >= 0) ? ((real_t)((A)*(Q2_PRECISION)+0.5)) : ((real_t)((A)*(Q2_PRECISION)-0.5)))
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 
 static INLINE real_t MUL_F(real_t A, real_t B)
 {
diff --git a/apps/codecs/libffmpegFLAC/decoder.c b/apps/codecs/libffmpegFLAC/decoder.c
index 8a1f84c..88fcbfd 100644
--- a/apps/codecs/libffmpegFLAC/decoder.c
+++ b/apps/codecs/libffmpegFLAC/decoder.c
@@ -42,9 +42,9 @@
 
 #include "decoder.h"
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 #include "coldfire.h"
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
 #include "arm.h"
 #endif
 
@@ -260,11 +260,11 @@
         return -8;
 
     if ((s->bps + coeff_prec + av_log2(pred_order)) <= 32) {
-        #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+        #if defined(CPU_COLDFIRE)
         (void)sum;
         lpc_decode_emac(s->blocksize - pred_order, qlevel, pred_order,
                         decoded + pred_order, coeffs);
-        #elif defined(CPU_ARM) && !defined(SIMULATOR)
+        #elif defined(CPU_ARM)
         (void)sum;
         lpc_decode_arm(s->blocksize - pred_order, qlevel, pred_order,
                        decoded + pred_order, coeffs);
@@ -278,7 +278,7 @@
         }
         #endif
     } else {
-        #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+        #if defined(CPU_COLDFIRE)
         (void)wsum;
         (void)j;
         lpc_decode_emac_wide(s->blocksize - pred_order, qlevel, pred_order,
diff --git a/apps/codecs/libffmpegFLAC/shndec.c b/apps/codecs/libffmpegFLAC/shndec.c
index 61b3703..1afcff6 100644
--- a/apps/codecs/libffmpegFLAC/shndec.c
+++ b/apps/codecs/libffmpegFLAC/shndec.c
@@ -82,7 +82,7 @@
     return get_ur_golomb_shorten(&s->gb, k);
 }
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 static void coldfire_lshift_samples(int n, int shift, int32_t *samples) ICODE_ATTR_FLAC;
 static void coldfire_lshift_samples(int n, int shift, int32_t *samples)
 {
@@ -132,7 +132,7 @@
     /* Wrapped samples don't get bitshifted, so we'll do them during
        the next iteration. */
     if (s->bitshift != 0) {
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
         coldfire_lshift_samples(s->blocksize, s->bitshift, samples - s->nwrap);
 #else
         for (i = -s->nwrap; i < (s->blocksize - s->nwrap); i++)
@@ -349,7 +349,7 @@
 
         /* Scale the samples for the pcmbuf */
         int scale = SHN_OUTPUT_DEPTH - s->bits_per_sample;
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
         coldfire_lshift_samples(*nsamples, scale, decoded0 + s->nwrap);
         coldfire_lshift_samples(*nsamples, scale, decoded1 + s->nwrap);
 #else
diff --git a/apps/codecs/libmad/global.h b/apps/codecs/libmad/global.h
index 1ecfea1..38e4aad 100644
--- a/apps/codecs/libmad/global.h
+++ b/apps/codecs/libmad/global.h
@@ -24,9 +24,9 @@
 # ifndef LIBMAD_GLOBAL_H
 # define LIBMAD_GLOBAL_H
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 #define FPM_COLDFIRE_EMAC
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
 #define FPM_ARM
 #define ASO_IMDCT
 #else
diff --git a/apps/codecs/libmad/layer3.c b/apps/codecs/libmad/layer3.c
index 64169a7..38e488d 100644
--- a/apps/codecs/libmad/layer3.c
+++ b/apps/codecs/libmad/layer3.c
@@ -46,7 +46,7 @@
 # include "layer3.h"
 
 /* depending on the cpu "leftshift32" may be supported or not */
-# if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+# if defined(CPU_COLDFIRE)
 #define MAXLSHIFT 32
 #else
 #define MAXLSHIFT 31
@@ -1569,7 +1569,7 @@
 # if defined(ASO_ZEROCHECK)
       if (a | b) {
 # endif
-# if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+# if defined(CPU_COLDFIRE)
       (void)hi, (void)lo;
       asm volatile ("mac.l %[a], %[csi], %%acc0\n\t"
                     "msac.l %[b], %[cai], %%acc0\n\t"
@@ -1796,7 +1796,7 @@
  * DESCRIPTION:	perform X[18]->x[36] IMDCT
  */
 
-# if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+# if defined(CPU_COLDFIRE)
 /* emac optimized imdct36, it is very ugly and i hope to replace it soon.
  * for now it is actually somewhat faster than the stock implementation. 
  */
@@ -2813,7 +2813,7 @@
  * DESCRIPTION:	perform IMDCT and windowing for short blocks
  */
 
-# if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+# if defined(CPU_COLDFIRE)
 void III_imdct_s(mad_fixed_t const X[18], mad_fixed_t z[36]);
 #else
 
diff --git a/apps/codecs/libmad/synth.c b/apps/codecs/libmad/synth.c
index 2da8f64..8613f77 100644
--- a/apps/codecs/libmad/synth.c
+++ b/apps/codecs/libmad/synth.c
@@ -42,7 +42,7 @@
   synth->pcm.samplerate = 0;
   synth->pcm.channels   = 0;
   synth->pcm.length     = 0;
-  #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+  #if defined(CPU_COLDFIRE)
   /* init the emac unit here, since this function should always be called
      before using libmad */
   coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE | EMAC_ROUND);
diff --git a/apps/codecs/libmusepack/math.h b/apps/codecs/libmusepack/math.h
index eb9b0e9..f9e9d08 100644
--- a/apps/codecs/libmusepack/math.h
+++ b/apps/codecs/libmusepack/math.h
@@ -68,7 +68,7 @@
 #define MAKE_MPC_SAMPLE(X) (MPC_SAMPLE_FORMAT)((double)(X) * (double)(((mpc_int64_t)1)<<MPC_FIXED_POINT_FRACTPART))
 #define MAKE_MPC_SAMPLE_EX(X,Y) (MPC_SAMPLE_FORMAT)((double)(X) * (double)(((mpc_int64_t)1)<<(Y)))
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 
 #define MPC_MULTIPLY(X,Y) mpc_multiply((X), (Y))
 #define MPC_MULTIPLY_EX(X,Y,Z) mpc_multiply_ex((X), (Y), (Z))
@@ -158,7 +158,7 @@
 #ifdef MPC_HAVE_MULHIGH
 #define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y)
 #else
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 /* loses one bit of accuracy.
    the rest of the macros won't be as easy as this... */
 #define MPC_MULTIPLY_FRACT(X,Y) \
diff --git a/apps/codecs/libmusepack/mpc_decoder.c b/apps/codecs/libmusepack/mpc_decoder.c
index 89d7254..a5a24d6 100644
--- a/apps/codecs/libmusepack/mpc_decoder.c
+++ b/apps/codecs/libmusepack/mpc_decoder.c
@@ -1492,7 +1492,7 @@
   d->Y_L = Y_L;
   d->Y_R = Y_R;
 
-  #if defined(CPU_COLDFIRE)&& !defined(SIMULATOR)
+  #if defined(CPU_COLDFIRE)
   coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE);
   #endif
 }
diff --git a/apps/codecs/libmusepack/synth_filter.c b/apps/codecs/libmusepack/synth_filter.c
index 2b14c26..0dabe59 100644
--- a/apps/codecs/libmusepack/synth_filter.c
+++ b/apps/codecs/libmusepack/synth_filter.c
@@ -343,7 +343,7 @@
 
             
             
-            #if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+            #if defined(CPU_COLDFIRE)
             for ( k = 0; k < 32; k++, D += 16, V++ ) {
                 asm volatile (
                     "movem.l (%[D]), %%d0-%%d3                    \n\t"
@@ -372,7 +372,7 @@
                     : [Data] "+a" (Data)
                     : [V] "a" (V), [D] "a" (D)
                     : "d0", "d1", "d2", "d3", "a5");
-            #elif defined(CPU_ARM) && !defined(SIMULATOR)
+            #elif defined(CPU_ARM)
             for ( k = 0; k < 32; k++, V++ ) {
                 asm volatile (
                     "ldmia %[D]!, { r0-r3 } \n\t"
diff --git a/apps/codecs/libspeex/config-speex.h b/apps/codecs/libspeex/config-speex.h
index 10555c7..efdb7db 100644
--- a/apps/codecs/libspeex/config-speex.h
+++ b/apps/codecs/libspeex/config-speex.h
@@ -7,7 +7,7 @@
 /* #undef ARM4_ASM */
 
 /* Make use of ARM5E assembly optimizations */
-#if defined(CPU_ARM) && !defined(SIMULATOR)
+#if defined(CPU_ARM)
 #define ARM4_ASM
 #endif
 
diff --git a/apps/codecs/libwavpack/unpack.c b/apps/codecs/libwavpack/unpack.c
index daf8871..f2eca76 100644
--- a/apps/codecs/libwavpack/unpack.c
+++ b/apps/codecs/libwavpack/unpack.c
@@ -286,9 +286,9 @@
 // samples unpacked, which can be less than the number requested if an error
 // occurs or the end of the block is reached.
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 extern void decorr_stereo_pass_cont_mcf5249 (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
 extern void decorr_stereo_pass_cont_arm (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
 extern void decorr_stereo_pass_cont_arml (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count);
 #else
@@ -351,9 +351,9 @@
         else
             for (tcount = wps->num_terms, dpp = wps->decorr_passes; tcount--; dpp++) {
                 decorr_stereo_pass (dpp, buffer, 8);
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
                 decorr_stereo_pass_cont_mcf5249 (dpp, buffer + 16, sample_count - 8);
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
                 if (((flags & MAG_MASK) >> MAG_LSB) > 15)
                     decorr_stereo_pass_cont_arml (dpp, buffer + 16, sample_count - 8);
                 else
@@ -525,7 +525,7 @@
     dpp->weight_B = weight_B;
 }
 
-#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(SIMULATOR)
+#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM))
 
 static void decorr_stereo_pass_cont (struct decorr_pass *dpp, int32_t *buffer, int32_t sample_count)
 {
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 9e654b1..9b3e6e9 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -342,7 +342,7 @@
 #endif /* HAVE_LCD_BITMAP */
 
 
-#if (CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE)) && !defined(SIMULATOR)
+#if (CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE))
 /* Tool function to read the flash manufacturer and type, if available.
    Only chips which could be reprogrammed in system will return values.
    (The mode switch addresses vary between flash manufacturers, hence addr1/2) */
@@ -396,7 +396,7 @@
     }
     return false; /* fail */
 }
-#endif /* (CONFIG_CPU == SH7034 || CPU_COLDFIRE) && !SIMULATOR */
+#endif /* (CONFIG_CPU == SH7034 || CPU_COLDFIRE) */
 
 #ifndef SIMULATOR
 #ifdef HAVE_LCD_BITMAP
diff --git a/apps/dsp.c b/apps/dsp.c
index 609b2d6..f05c6f1 100644
--- a/apps/dsp.c
+++ b/apps/dsp.c
@@ -1124,7 +1124,7 @@
     int written = 0;
     int samples;
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
     /* set emac unit for dsp processing, and save old macsr, we're running in
        codec thread context at this point, so can't clobber it */
     unsigned long old_macsr = coldfire_get_macsr();
@@ -1177,7 +1177,7 @@
         yield();
     }
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
     /* set old macsr again */
     coldfire_set_macsr(old_macsr);
 #endif
diff --git a/apps/dsp.h b/apps/dsp.h
index 5d6e964..4e57adf 100644
--- a/apps/dsp.h
+++ b/apps/dsp.h
@@ -60,7 +60,7 @@
 };
 
 /* A bunch of fixed point assembler helper macros */
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
 /* These macros use the Coldfire EMAC extension and need the MACSR flags set
  * to fractional mode with no rounding.
  */
@@ -133,7 +133,7 @@
 
 #define ACC_INIT(acc, x, y) ACC(acc, x, y)
 
-#elif defined(CPU_ARM) && !defined(SIMULATOR)
+#elif defined(CPU_ARM)
 
 /* Multiply two S.31 fractional integers and return the sign bit and the
  * 31 most significant bits of the result.
diff --git a/apps/dsp_asm.h b/apps/dsp_asm.h
index 14875d2..02307db 100644
--- a/apps/dsp_asm.h
+++ b/apps/dsp_asm.h
@@ -23,8 +23,6 @@
 #define _DSP_ASM_H
 
 /* Set the appropriate #defines based on CPU or whatever matters */
-#ifndef SIMULATOR
-
 #if defined(CPU_ARM)
 #define DSP_HAVE_ASM_RESAMPLING
 #define DSP_HAVE_ASM_CROSSFEED
@@ -39,8 +37,6 @@
 #define DSP_HAVE_ASM_SAMPLE_OUTPUT_STEREO
 #endif /* CPU_COLDFIRE */
 
-#endif /* SIMULATOR */
-
 /* Declare prototypes based upon what's #defined above */
 #ifdef DSP_HAVE_ASM_CROSSFEED
 void apply_crossfeed(int count, int32_t *buf[]);
diff --git a/apps/eq.c b/apps/eq.c
index b03a651..e71af7c 100644
--- a/apps/eq.c
+++ b/apps/eq.c
@@ -322,7 +322,7 @@
  * implementations.
  */
 
-#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM)) || defined(SIMULATOR)
+#if (!defined(CPU_COLDFIRE) && !defined(CPU_ARM))
 void eq_filter(int32_t **x, struct eqfilter *f, unsigned num,
                unsigned channels, unsigned shift)
 {
diff --git a/apps/pcmbuf.h b/apps/pcmbuf.h
index bddc7bb..bb7da52 100644
--- a/apps/pcmbuf.h
+++ b/apps/pcmbuf.h
@@ -52,7 +52,7 @@
 bool pcmbuf_is_crossfade_active(void);
 
 /* These functions are for playing chained buffers of PCM data */
-#if defined(HAVE_ADJUSTABLE_CPU_FREQ) && !defined(SIMULATOR)
+#if defined(HAVE_ADJUSTABLE_CPU_FREQ)
 void pcmbuf_boost(bool state);
 void pcmbuf_set_boost_mode(bool state);
 #else
diff --git a/apps/plugins/alpine_cdc.c b/apps/plugins/alpine_cdc.c
index 8b285d4..f0f2939 100644
--- a/apps/plugins/alpine_cdc.c
+++ b/apps/plugins/alpine_cdc.c
@@ -32,7 +32,7 @@
 #include "plugin.h"
 
 /* Only build for (correct) target */
-#if !defined(SIMULATOR) && CONFIG_CPU==SH7034 && !defined(HAVE_MMC)
+#if CONFIG_CPU==SH7034 && !defined(HAVE_MMC)
 
 PLUGIN_HEADER
 
@@ -1201,4 +1201,4 @@
     return (main(parameter)==0) ? PLUGIN_OK : PLUGIN_ERROR;
 }
 
-#endif /* #ifndef SIMULATOR, etc. */
+#endif /* CONFIG_CPU==SH7034 && !defined(HAVE_MMC) */
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 2274854..c3ac30f 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -583,7 +583,7 @@
    gray_show(true);
 #endif
 
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#ifdef CPU_COLDFIRE
    coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE);
    d_screens[0] = fastscreen;
 #else
diff --git a/apps/plugins/doom/m_fixed.h b/apps/plugins/doom/m_fixed.h
index e29933b..15fd986 100644
--- a/apps/plugins/doom/m_fixed.h
+++ b/apps/plugins/doom/m_fixed.h
@@ -44,7 +44,7 @@
 
 inline static int FixedMul( int a, int b )
 {
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
    // Code contributed by Thom Johansen
    register int result;
    asm (
diff --git a/apps/plugins/doom/r_draw.c b/apps/plugins/doom/r_draw.c
index 5f45323..ee107f9 100644
--- a/apps/plugins/doom/r_draw.c
+++ b/apps/plugins/doom/r_draw.c
@@ -526,7 +526,7 @@
 
 void R_DrawSpan (void)
 {
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#ifdef CPU_COLDFIRE
    // only slightly faster
    asm volatile (
       "tst %[count]                             \n"
diff --git a/apps/plugins/rockbox_flash.c b/apps/plugins/rockbox_flash.c
index 575fb89..7ea149d 100644
--- a/apps/plugins/rockbox_flash.c
+++ b/apps/plugins/rockbox_flash.c
@@ -21,7 +21,7 @@
 ****************************************************************************/
 #include "plugin.h"
 
-#if !defined(SIMULATOR) && (CONFIG_CPU == SH7034) /* Only for SH targets */
+#if (CONFIG_CPU == SH7034) /* Only for SH targets */
 
 PLUGIN_HEADER
 
@@ -1038,4 +1038,4 @@
 }
 
 
-#endif /* !SIMULATOR or a SH-target */
+#endif /* SH-target */
diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c
index a34db2f..7fe5310 100644
--- a/apps/plugins/rockboy/lcd.c
+++ b/apps/plugins/rockboy/lcd.c
@@ -43,7 +43,7 @@
 #define WV (scan.wv)
 
 byte patpix[4096][8][8]
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
      __attribute__ ((aligned(16))) /* to profit from burst mode */
 #endif
      ;
@@ -62,7 +62,7 @@
 void updatepatpix(void)
 {
     int i, j;
-#if ((CONFIG_CPU != SH7034) && !defined(CPU_COLDFIRE)) || defined(SIMULATOR)
+#if ((CONFIG_CPU != SH7034) && !defined(CPU_COLDFIRE))
     int k, a, c;
 #endif
     byte *vram = lcd.vbank[0];
@@ -76,7 +76,7 @@
         patdirty[i] = 0;
         for (j = 0; j < 8; j++)
         {
-#if CONFIG_CPU == SH7034 && !defined(SIMULATOR)
+#if CONFIG_CPU == SH7034
             asm volatile (
                 "mov.w   @%2,r1         \n"
                 "swap.b  r1,r2          \n"
@@ -145,7 +145,7 @@
                 : /* clobbers */
                 "r0", "r1", "r2"
             );
-#elif defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#elif defined(CPU_COLDFIRE)
             asm volatile (
                 "move.b  (%2),%%d2      \n"
                 "move.b  (1,%2),%%d1    \n"
@@ -222,7 +222,7 @@
                     patpix[i+1024][j][7-k];
 #endif
         }
-#if CONFIG_CPU == SH7034 && !defined(SIMULATOR)
+#if CONFIG_CPU == SH7034
         asm volatile (
             "mov.l   @%0,r0         \n"
             "mov.l   @(4,%0),r1     \n"
@@ -300,7 +300,7 @@
             : /* clobbers */
             "r0", "r1"
         );
-#elif defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#elif defined(CPU_COLDFIRE)
         asm volatile (
             "movem.l (%0),%%d0-%%d3     \n"
             "move.l  %%d0,%%d4          \n"
@@ -486,7 +486,7 @@
     if (cnt <= 0) return;
     while (cnt >= 8)
     {
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
       asm volatile (
          "move.l (%1)+,(%0)+ \n"
          "move.l (%1)+,(%0)+ \n"
@@ -521,7 +521,7 @@
 
     while (cnt >= 8)
     {
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
       asm volatile (
          "move.l (%1)+,(%0)+ \n"
          "move.l (%1)+,(%0)+ \n"
@@ -629,7 +629,7 @@
     while (cnt >= 8)
     {
         src = patpix[*(tile++)][V];
-#if defined(CPU_COLDFIRE) && !defined(SIMULATOR)
+#if defined(CPU_COLDFIRE)
       asm volatile (
          "move.l (%2)+,%%d1 \n"
 
