aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/ppu.c29
-rw-r--r--source/sa1.c6
-rw-r--r--source/sdd1.c6
-rw-r--r--source/seta010.c8
-rw-r--r--source/soundux.c62
-rw-r--r--source/spc700.c9
-rw-r--r--source/spc7110.c19
-rw-r--r--source/spc7110dec.c42
-rw-r--r--source/srtc.c4
-rw-r--r--source/tile.c32
-rw-r--r--source/tile.h4
11 files changed, 138 insertions, 83 deletions
diff --git a/source/ppu.c b/source/ppu.c
index 07d32f4..1f5df0b 100644
--- a/source/ppu.c
+++ b/source/ppu.c
@@ -87,8 +87,9 @@ void S9xUpdateHTimer()
void S9xFixColourBrightness()
{
- IPPU.XB = mul_brightness [PPU.Brightness];
int32_t i;
+
+ IPPU.XB = mul_brightness [PPU.Brightness];
for (i = 0; i < 256; i++)
{
IPPU.Red [i] = IPPU.XB [PPU.CGDATA [i] & 0x1f];
@@ -1648,6 +1649,10 @@ uint8_t S9xGetCPU(uint16_t Address)
static void CommonPPUReset()
{
+ uint8_t B;
+ int32_t c;
+ int32_t Sprite;
+
PPU.BGMode = 0;
PPU.BG3Priority = 0;
PPU.Brightness = 0;
@@ -1657,7 +1662,6 @@ static void CommonPPUReset()
PPU.VMA.FullGraphicCount = 0;
PPU.VMA.Shift = 0;
- uint8_t B;
for (B = 0; B < 4; B++)
{
PPU.BG[B].SCBase = 0;
@@ -1681,7 +1685,6 @@ static void CommonPPUReset()
PPU.ClipWindow2Inside[4] = PPU.ClipWindow2Inside[5] = true;
PPU.CGFLIP = false;
- int32_t c;
for (c = 0; c < 256; c++)
{
IPPU.Red [c] = (c & 7) << 2;
@@ -1691,7 +1694,6 @@ static void CommonPPUReset()
}
PPU.FirstSprite = 0;
- int32_t Sprite;
for (Sprite = 0; Sprite < 128; Sprite++)
{
PPU.OBJ[Sprite].HPos = 0;
@@ -1790,6 +1792,8 @@ static void CommonPPUReset()
void S9xResetPPU()
{
+ int32_t c;
+
CommonPPUReset();
PPU.Joypad1ButtonReadPos = 0;
PPU.Joypad2ButtonReadPos = 0;
@@ -1802,7 +1806,6 @@ void S9xResetPPU()
IPPU.PrevMouseX[0] = IPPU.PrevMouseX[1] = 256 / 2;
IPPU.PrevMouseY[0] = IPPU.PrevMouseY[1] = 224 / 2;
- int32_t c;
for (c = 0; c < 0x8000; c += 0x100)
{
if (!Settings.SuperFX)
@@ -1822,9 +1825,10 @@ void S9xResetPPU()
void S9xSoftResetPPU()
{
+ int32_t c;
+
CommonPPUReset();
- int32_t c;
for (c = 0; c < 0x8000; c += 0x100)
memset(&Memory.FillRAM [c], c >> 8, 0x100);
@@ -1972,10 +1976,14 @@ void S9xNextController()
void S9xUpdateJustifiers()
{
static bool last_p1;
+ bool offscreen;
+ int32_t x, y;
+ uint32_t buttons;
+
in_bit = 0;
justifiers = 0xFFFF00AA;
- bool offscreen = JustifierOffscreen();
+ offscreen = JustifierOffscreen();
JustifierButtons(&justifiers);
last_p1 = !last_p1;
@@ -1983,9 +1991,6 @@ void S9xUpdateJustifiers()
if (!last_p1)
justifiers |= 0x1000;
- int32_t x, y;
- uint32_t buttons;
-
if (Memory.FillRAM[0x4201] & 0x80)
{
@@ -2122,11 +2127,13 @@ void S9xSuperFXExec()
{
if ((Memory.FillRAM [0x3000 + GSU_SFR] & FLG_G) && (Memory.FillRAM [0x3000 + GSU_SCMR] & 0x18) == 0x18)
{
+ int32_t GSUStatus;
+
if (!Settings.WinterGold || Settings.StarfoxHack)
FxEmulate(~0);
else
FxEmulate((Memory.FillRAM [0x3000 + GSU_CLSR] & 1) ? 700 : 350);
- int32_t GSUStatus = Memory.FillRAM [0x3000 + GSU_SFR] | (Memory.FillRAM [0x3000 + GSU_SFR + 1] << 8);
+ GSUStatus = Memory.FillRAM [0x3000 + GSU_SFR] | (Memory.FillRAM [0x3000 + GSU_SFR + 1] << 8);
if ((GSUStatus & (FLG_G | FLG_IRQ)) == FLG_IRQ)
S9xSetIRQ(GSU_IRQ_SOURCE); /* Trigger a GSU IRQ. */
}
diff --git a/source/sa1.c b/source/sa1.c
index 1666e17..e190b5c 100644
--- a/source/sa1.c
+++ b/source/sa1.c
@@ -618,6 +618,8 @@ static void S9xSA1DMA()
void S9xSA1ReadVariableLengthData(bool inc, bool no_shift)
{
+ uint8_t s;
+ uint32_t data;
uint32_t addr = Memory.FillRAM[0x2259] | (Memory.FillRAM[0x225a] << 8) | (Memory.FillRAM[0x225b] << 16);
uint8_t shift = Memory.FillRAM [0x2258] & 15;
@@ -626,14 +628,14 @@ void S9xSA1ReadVariableLengthData(bool inc, bool no_shift)
else if (shift == 0)
shift = 16;
- uint8_t s = shift + SA1.variable_bit_pos;
+ s = shift + SA1.variable_bit_pos;
if (s >= 16)
{
addr += (s >> 4) << 1;
s &= 15;
}
- uint32_t data = S9xSA1GetWord(addr) | (S9xSA1GetWord(addr + 2) << 16);
+ data = S9xSA1GetWord(addr) | (S9xSA1GetWord(addr + 2) << 16);
data >>= s;
Memory.FillRAM [0x230c] = (uint8_t) data;
diff --git a/source/sdd1.c b/source/sdd1.c
index 3a46ec9..3847b13 100644
--- a/source/sdd1.c
+++ b/source/sdd1.c
@@ -7,9 +7,10 @@
void S9xSetSDD1MemoryMap(uint32_t bank, uint32_t value)
{
+ int32_t c;
+
bank = 0xc00 + bank * 0x100;
value = value * 1024 * 1024;
- int32_t c;
for (c = 0; c < 0x100; c += 16)
{
uint8_t* block = &Memory.ROM [value + (c << 12)];
@@ -22,8 +23,9 @@ void S9xSetSDD1MemoryMap(uint32_t bank, uint32_t value)
void S9xResetSDD1()
{
- memset(&Memory.FillRAM [0x4800], 0, 4);
int32_t i;
+
+ memset(&Memory.FillRAM [0x4800], 0, 4);
for (i = 0; i < 4; i++)
{
Memory.FillRAM [0x4804 + i] = i;
diff --git a/source/seta010.c b/source/seta010.c
index d452cd9..dd2156c 100644
--- a/source/seta010.c
+++ b/source/seta010.c
@@ -288,8 +288,9 @@ void ST010_SortDrivers(uint16_t Positions, uint16_t Places[32], uint16_t Drivers
{
do
{
- Sorted = true;
int32_t i;
+
+ Sorted = true;
for(i = 0; i < Positions - 1; i++)
{
if(Places[i] < Places[i + 1])
@@ -517,6 +518,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
(int16_t*) &Memory.SRAM[0x0000], (int16_t*) &Memory.SRAM[0x0002],
(int16_t*) &Memory.SRAM[0x0004], (int16_t*) &Memory.SRAM[0x0010]);
#else
+ {
int16_t x1, y1, Quadrant, Theta;
ST010_OP01(ST010_WORD(0x0000), ST010_WORD(0x0002), &x1, &y1, &Quadrant, &Theta);
@@ -529,6 +531,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
Memory.SRAM[0x0005] = (uint8_t)(Quadrant >> 8);
Memory.SRAM[0x0010] = (uint8_t)(Theta);
Memory.SRAM[0x0011] = (uint8_t)(Theta >> 8);
+ }
#endif
break;
}
@@ -563,6 +566,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
int32_t dx, dy;
int16_t a1, b1, c1;
uint16_t o1;
+ uint16_t old_speed;
bool wrap = false;
@@ -612,7 +616,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
wrap = true;
}
- uint16_t old_speed = speed;
+ old_speed = speed;
if (ABS(o1 - rot) == 0x8000) /* special case */
speed = 0x100;
diff --git a/source/soundux.c b/source/soundux.c
index 967ac10..0de7f4b 100644
--- a/source/soundux.c
+++ b/source/soundux.c
@@ -7,6 +7,8 @@
#include <string.h>
#include <errno.h>
+#include <retro_inline.h>
+
#define CLIP16(v) \
if ((v) < -32768) \
(v) = -32768; \
@@ -88,7 +90,7 @@ uint32_t KeyOffERate [10];
#define LAST_SAMPLE 0xffffff
#define JUST_PLAYED_LAST_SAMPLE(c) ((c)->sample_pointer >= LAST_SAMPLE)
-static inline uint8_t* S9xGetSampleAddress(int32_t sample_number)
+static INLINE uint8_t* S9xGetSampleAddress(int32_t sample_number)
{
uint32_t addr = (((APU.DSP[APU_DIR] << 8) + (sample_number << 2)) & 0xffff);
return (IAPU.RAM + addr);
@@ -182,6 +184,8 @@ void S9xSetEchoVolume(int16_t volume_left, int16_t volume_right)
void S9xSetEchoEnable(uint8_t byte)
{
+ int32_t i;
+
if (!SoundData.echo_write_enabled || Settings.DisableSoundEcho)
byte = 0;
if (byte && !SoundData.echo_enable)
@@ -191,7 +195,6 @@ void S9xSetEchoEnable(uint8_t byte)
}
SoundData.echo_enable = byte;
- int32_t i;
for (i = 0; i < NUM_CHANNELS; i++)
{
if (byte & (1 << i))
@@ -243,6 +246,8 @@ void S9xSetSoundKeyOff(int32_t channel)
void S9xFixSoundAfterSnapshotLoad()
{
+ int32_t i;
+
SoundData.echo_write_enabled = !(APU.DSP [APU_FLG] & 0x20);
S9xSetEchoDelay(APU.DSP [APU_EDL] & 0xf);
S9xSetEchoFeedback((int8_t) APU.DSP [APU_EFB]);
@@ -255,7 +260,6 @@ void S9xFixSoundAfterSnapshotLoad()
S9xSetFilterCoefficient(5, (int8_t) APU.DSP [APU_C5]);
S9xSetFilterCoefficient(6, (int8_t) APU.DSP [APU_C6]);
S9xSetFilterCoefficient(7, (int8_t) APU.DSP [APU_C7]);
- int32_t i;
for (i = 0; i < 8; i++)
{
SoundData.channels[i].needs_decode = true;
@@ -275,6 +279,7 @@ void S9xSetFilterCoefficient(int32_t tap, int32_t value)
void S9xSetSoundADSR(int32_t channel, int32_t attack_ind, int32_t decay_ind, int32_t sustain_ind, int32_t sustain_level, int32_t release_rate)
{
+ Channel *ch;
int32_t attack_rate = AttackRate [attack_ind];
int32_t decay_rate = DecayRate [decay_ind];
int32_t sustain_rate = SustainRate [sustain_ind];
@@ -284,7 +289,8 @@ void S9xSetSoundADSR(int32_t channel, int32_t attack_ind, int32_t decay_ind, int
if(attack_rate == 1)
attack_rate = 0;
- Channel* ch = &SoundData.channels[channel];
+
+ ch = &SoundData.channels[channel];
ch->env_ind_attack = attack_ind;
ch->env_ind_decay = decay_ind;
ch->env_ind_sustain = sustain_ind;
@@ -346,6 +352,10 @@ void DecodeBlock(Channel* ch)
uint8_t filter;
uint8_t shift;
int8_t sample1, sample2;
+ int8_t *compressed;
+ int16_t *raw;
+ uint32_t i;
+ int32_t prev0, prev1;
if (ch->block_pointer > 0x10000 - 9)
{
@@ -355,19 +365,18 @@ void DecodeBlock(Channel* ch)
return;
}
- int8_t* compressed = (int8_t*) &IAPU.RAM [ch->block_pointer];
+ compressed = (int8_t*) &IAPU.RAM [ch->block_pointer];
filter = *compressed;
if ((ch->last_block = (bool) (filter & 1)))
ch->loop = (bool) (filter & 2);
- int16_t* raw = ch->block = ch->decoded;
- uint32_t i;
+ raw = ch->block = ch->decoded;
compressed++;
- int32_t prev0 = ch->previous [0];
- int32_t prev1 = ch->previous [1];
+ prev0 = ch->previous [0];
+ prev1 = ch->previous [1];
shift = filter >> 4;
switch ((filter >> 2) & 3)
@@ -440,7 +449,7 @@ void DecodeBlock(Channel* ch)
ch->block_pointer += 9;
}
-static inline void MixStereo(int32_t sample_count)
+static INLINE void MixStereo(int32_t sample_count)
{
static int32_t wave[SOUND_BUFFER_SIZE];
@@ -449,15 +458,17 @@ static inline void MixStereo(int32_t sample_count)
uint32_t J;
for (J = 0; J < NUM_CHANNELS; J++)
{
+ uint32_t I;
+ int32_t VL, VR;
+ uint32_t freq0;
+ uint8_t mod;
Channel* ch = &SoundData.channels[J];
if (ch->state == SOUND_SILENT)
continue;
- int32_t VL, VR;
- uint32_t freq0 = ch->frequency;
-
- uint8_t mod = pitch_mod & (1 << J);
+ freq0 = ch->frequency;
+ mod = pitch_mod & (1 << J);
if (ch->needs_decode)
{
@@ -479,7 +490,6 @@ static inline void MixStereo(int32_t sample_count)
VL = (ch->sample * ch-> left_vol_level) / 128;
VR = (ch->sample * ch->right_vol_level) / 128;
- uint32_t I;
for (I = 0; I < (uint32_t) sample_count; I += 2)
{
uint32_t freq = freq0;
@@ -659,9 +669,11 @@ static inline void MixStereo(int32_t sample_count)
}
else
{
+ uint8_t *dir;
+
S9xAPUSetEndX(J);
ch->last_block = false;
- uint8_t* dir = S9xGetSampleAddress(ch->sample_number);
+ dir = S9xGetSampleAddress(ch->sample_number);
ch->block_pointer = READ_WORD(dir + 2);
}
}
@@ -760,8 +772,9 @@ void S9xMixSamples(int16_t* buffer, int32_t sample_count)
/* ... with filter defined. */
for (J = 0; J < sample_count; J++)
{
+ int32_t E;
Loop [(Z - 0) & 15] = Echo [SoundData.echo_ptr];
- int32_t E = Loop [(Z - 0) & 15] * FilterTaps [0];
+ E = Loop [(Z - 0) & 15] * FilterTaps [0];
if (FilterTapDefinitionBitfield & 0x02) E += Loop [(Z - 2) & 15] * FilterTaps [1];
if (FilterTapDefinitionBitfield & 0x04) E += Loop [(Z - 4) & 15] * FilterTaps [2];
if (FilterTapDefinitionBitfield & 0x08) E += Loop [(Z - 6) & 15] * FilterTaps [3];
@@ -858,20 +871,22 @@ void S9xResetSound(bool full)
void S9xSetPlaybackRate(uint32_t playback_rate)
{
+ int32_t i;
+
so.playback_rate = playback_rate;
if (playback_rate)
{
- /* notaz: calculate a value (let's call it freqbase) to simplify channel freq calculations later. */
- so.freqbase = (FIXED_POINT << 11) / (playback_rate * 33 / 32);
- /* now precalculate env rates for S9xSetEnvRate */
static int32_t steps [] =
{
0, 64, 619, 619, 128, 1, 64, 55, 64, 619
};
-
int32_t i, u;
+ /* notaz: calculate a value (let's call it freqbase) to simplify channel freq calculations later. */
+ so.freqbase = (FIXED_POINT << 11) / (playback_rate * 33 / 32);
+ /* now precalculate env rates for S9xSetEnvRate */
+
for (u = 0 ; u < 10 ; u++)
{
int64_t fp1000su = ((int64_t) FIXED_POINT * 1000 * steps[u]);
@@ -894,7 +909,6 @@ void S9xSetPlaybackRate(uint32_t playback_rate)
}
S9xSetEchoDelay(APU.DSP [APU_EDL] & 0xf);
- int32_t i;
for (i = 0; i < 8; i++)
S9xSetSoundFrequency(i, SoundData.channels [i].hertz);
}
@@ -945,6 +959,7 @@ bool S9xSetSoundMode(int32_t channel, int32_t mode)
void S9xPlaySample(int32_t channel)
{
+ uint8_t *dir;
Channel* ch = &SoundData.channels[channel];
ch->state = SOUND_SILENT;
@@ -963,12 +978,13 @@ void S9xPlaySample(int32_t channel)
else
ch->type = SOUND_SAMPLE;
+
S9xSetSoundFrequency(channel, ch->hertz);
ch->loop = false;
ch->needs_decode = true;
ch->last_block = false;
ch->previous [0] = ch->previous[1] = 0;
- uint8_t* dir = S9xGetSampleAddress(ch->sample_number);
+ dir = S9xGetSampleAddress(ch->sample_number);
ch->block_pointer = READ_WORD(dir);
ch->sample_pointer = 0;
ch->env_error = 0;
diff --git a/source/spc700.c b/source/spc700.c
index eaf5467..c5ea4ef 100644
--- a/source/spc700.c
+++ b/source/spc700.c
@@ -1918,15 +1918,18 @@ void Apu8F(void)
void Apu9E(void)
{
+ uint32_t i;
+ uint32_t yva;
+ uint32_t x;
+
/* DIV YA,X */
if ((IAPU.Registers.X & 0x0f) <= (IAPU.Registers.YA.B.Y & 0x0f))
APUSetHalfCarry();
else
APUClearHalfCarry();
- uint32_t yva = IAPU.Registers.YA.W;
- uint32_t x = IAPU.Registers.X << 9;
- uint32_t i;
+ yva = IAPU.Registers.YA.W;
+ x = IAPU.Registers.X << 9;
for (i = 0 ; i < 9 ; ++i)
{
diff --git a/source/spc7110.c b/source/spc7110.c
index ac8e0a8..249bbc9 100644
--- a/source/spc7110.c
+++ b/source/spc7110.c
@@ -134,6 +134,7 @@ uint8_t S9xGetSPC7110(uint16_t Address)
return 0;
if ((s7r.written & 0x07) == 0x07)
{
+ uint8_t tmp;
uint32_t i = (s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811;
i %= s7r.DataRomSize;
if (s7r.reg4818 & 0x02)
@@ -162,8 +163,8 @@ uint8_t S9xGetSPC7110(uint16_t Address)
}
}
i += s7r.DataRomOffset;
- uint8_t tmp = Memory.ROM[i];
- i = (s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811;
+ tmp = Memory.ROM[i];
+ i = (s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811;
if (s7r.reg4818 & 0x02)
{
@@ -283,6 +284,7 @@ uint8_t S9xGetSPC7110(uint16_t Address)
case 0x481A:
if (s7r.written == 0x1F)
{
+ uint8_t tmp;
uint32_t i = ((s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811);
if (s7r.reg4818 & 0x08)
i += ((int16_t)(s7r.reg4815 << 8)) | s7r.reg4814;
@@ -291,7 +293,7 @@ uint8_t S9xGetSPC7110(uint16_t Address)
i %= s7r.DataRomSize;
i += s7r.DataRomOffset;
- uint8_t tmp = Memory.ROM[i];
+ tmp = Memory.ROM[i];
if ((s7r.reg4818 & 0x60) == 0x60)
{
i = ((s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811);
@@ -393,8 +395,10 @@ uint8_t S9xGetSPC7110(uint16_t Address)
return Address >> 8;
if (rtc_f9.init)
{
+ uint8_t tmp;
+
S9xUpdateRTC();
- uint8_t tmp = rtc_f9.reg[rtc_f9.index];
+ tmp = rtc_f9.reg[rtc_f9.index];
rtc_f9.index++;
rtc_f9.index %= 0x10;
return tmp;
@@ -469,9 +473,12 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
break;
case 0x480B: /* Offset enable */
{
+ int32_t table;
+ int32_t j;
+
s7r.reg480B = data;
- int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
- int32_t j = 4 * s7r.reg4804 + s7r.DataRomOffset + table;
+ table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
+ j = 4 * s7r.reg4804 + s7r.DataRomOffset + table;
if (s7r.reg480B == 0)
s7r.AlignBy = 0;
diff --git a/source/spc7110dec.c b/source/spc7110dec.c
index 9adb4d6..7bea0af 100644
--- a/source/spc7110dec.c
+++ b/source/spc7110dec.c
@@ -66,6 +66,8 @@ SPC7110Decomp decomp;
uint8_t spc7110dec_read(void)
{
+ uint8_t data;
+
decomp.read_counter++;
if(decomp.buffer_length == 0)
@@ -86,7 +88,7 @@ uint8_t spc7110dec_read(void)
}
}
- uint8_t data = decomp.buffer[decomp.buffer_rdoffset++];
+ data = decomp.buffer[decomp.buffer_rdoffset++];
decomp.buffer_rdoffset &= SPC7110_DECOMP_BUFFER_SIZE - 1;
decomp.buffer_length--;
return data;
@@ -109,6 +111,8 @@ uint8_t spc7110dec_dataread(void)
void spc7110dec_clear(uint32_t mode, uint32_t offset, uint32_t index)
{
+ uint32_t i;
+
decomp.original_mode = mode;
decomp.original_offset = offset;
decomp.original_index = index;
@@ -117,7 +121,6 @@ void spc7110dec_clear(uint32_t mode, uint32_t offset, uint32_t index)
decomp.buffer_rdoffset = 0;
decomp.buffer_wroffset = 0;
decomp.buffer_length = 0;
- uint32_t i;
for(i = 0; i < 32; i++) /* reset decomp.context states */
{
@@ -164,6 +167,9 @@ void spc7110dec_mode0(bool init)
uint32_t bit;
for(bit = 0; bit < 8; bit++)
{
+ uint32_t shift = 0;
+ uint32_t flag_lps;
+ uint32_t prob, mps;
/* Get decomp.context */
uint8_t mask = (1 << (bit & 3)) - 1;
uint8_t con = mask + ((inverts & mask) ^ (lps & mask));
@@ -172,11 +178,10 @@ void spc7110dec_mode0(bool init)
con += 15;
/* Get prob and mps */
- uint32_t prob = spc7110dec_probability(con);
- uint32_t mps = (((out >> 15) & 1) ^ decomp.context[con].invert);
+ prob = spc7110dec_probability(con);
+ mps = (((out >> 15) & 1) ^ decomp.context[con].invert);
/* Get bit */
- uint32_t flag_lps;
if(val <= span - prob) /* mps */
{
@@ -193,7 +198,6 @@ void spc7110dec_mode0(bool init)
}
/* Renormalize */
- uint32_t shift = 0;
while(span < 0x7f)
{
@@ -249,10 +253,12 @@ void spc7110dec_mode1(bool init)
while(decomp.buffer_length < (SPC7110_DECOMP_BUFFER_SIZE >> 1))
{
+ uint32_t data;
uint32_t pixel;
for(pixel = 0; pixel < 8; pixel++)
{
+ uint32_t bit;
/* Get first symbol decomp.context */
uint32_t a = ((out >> (1 * 2)) & 3);
uint32_t b = ((out >> (7 * 2)) & 3);
@@ -306,10 +312,10 @@ void spc7110dec_mode1(bool init)
realorder[0] = a;
/* Get 2 symbols */
- uint32_t bit;
for(bit = 0; bit < 2; bit++)
{
+ uint32_t shift = 0;
/* Get prob */
uint32_t prob = spc7110dec_probability(con);
@@ -329,7 +335,6 @@ void spc7110dec_mode1(bool init)
}
/* Renormalize */
- uint32_t shift = 0;
while(span < 0x7f)
{
@@ -367,7 +372,7 @@ void spc7110dec_mode1(bool init)
}
/* Turn pixel data into bitplanes */
- uint32_t data = spc7110dec_morton_2x8(out);
+ data = spc7110dec_morton_2x8(out);
spc7110dec_write(data >> 8);
spc7110dec_write(data >> 0);
@@ -398,10 +403,11 @@ void spc7110dec_mode2(bool init)
while(decomp.buffer_length < (SPC7110_DECOMP_BUFFER_SIZE >> 1))
{
- uint32_t pixel;
+ uint32_t pixel, data;
for(pixel = 0; pixel < 8; pixel++)
{
+ uint32_t bit;
/* Get first symbol context */
uint32_t a = ((out0 >> (0 * 4)) & 15);
uint32_t b = ((out0 >> (7 * 4)) & 15);
@@ -456,10 +462,11 @@ void spc7110dec_mode2(bool init)
realorder[0] = a;
/* Get 4 symbols */
- uint32_t bit;
for(bit = 0; bit < 4; bit++)
{
+ uint32_t invertbit;
+ uint32_t shift = 0;
/* Get prob */
uint32_t prob = spc7110dec_probability(con);
@@ -479,7 +486,6 @@ void spc7110dec_mode2(bool init)
}
/* Renormalize */
- uint32_t shift = 0;
while(span < 0x7f)
{
@@ -494,10 +500,11 @@ void spc7110dec_mode2(bool init)
}
}
+
/* Update processing info */
- lps = (lps << 1) + flag_lps;
- uint32_t invertbit = decomp.context[con].invert;
- inverts = (inverts << 1) + invertbit;
+ lps = (lps << 1) + flag_lps;
+ invertbit = decomp.context[con].invert;
+ inverts = (inverts << 1) + invertbit;
/* Update decomp.context state */
if(flag_lps & spc7110dec_toggle_invert(con))
@@ -519,7 +526,7 @@ void spc7110dec_mode2(bool init)
}
/* Convert pixel data into bitplanes */
- uint32_t data = spc7110dec_morton_4x8(out0);
+ data = spc7110dec_morton_4x8(out0);
spc7110dec_write(data >> 24);
spc7110dec_write(data >> 16);
bitplanebuffer[buffer_index++] = data >> 8;
@@ -585,11 +592,12 @@ void spc7110dec_reset(void)
void spc7110dec_init(void)
{
+ uint32_t i;
+
decomp.buffer = malloc(SPC7110_DECOMP_BUFFER_SIZE);
spc7110dec_reset();
/* Initialize reverse morton lookup tables */
- uint32_t i;
for(i = 0; i < 256; i++)
{
#define map(x, y) (((i >> x) & 1) << y)
diff --git a/source/srtc.c b/source/srtc.c
index bdb2970..e86b6b2 100644
--- a/source/srtc.c
+++ b/source/srtc.c
@@ -343,8 +343,10 @@ void S9xSRTCPreSaveState()
{
if (Settings.SRTC)
{
+ int32_t s;
+
S9xUpdateSrtcTime();
- int32_t s = Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0;
+ s = Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0;
if (s > 0x20000)
s = 0x20000;
diff --git a/source/tile.c b/source/tile.c
index e203ee1..3c6b43f 100644
--- a/source/tile.c
+++ b/source/tile.c
@@ -256,79 +256,83 @@ static void WRITE_4PIXELS16_FLIPPEDx2x2(int32_t Offset, uint8_t* Pixels, uint16_
void DrawTile16(uint32_t Tile, int32_t Offset, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
RENDER_TILE(WRITE_4PIXELS16, WRITE_4PIXELS16_FLIPPED, 4);
}
void DrawClippedTile16(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Width, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
TILE_CLIP_PREAMBLE();
RENDER_CLIPPED_TILE(WRITE_4PIXELS16, WRITE_4PIXELS16_FLIPPED, 4);
}
void DrawTile16HalfWidth(uint32_t Tile, int32_t Offset, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
RENDER_TILE(WRITE_4PIXELS16_HALFWIDTH, WRITE_4PIXELS16_FLIPPED_HALFWIDTH, 2);
}
void DrawClippedTile16HalfWidth(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Width, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
TILE_CLIP_PREAMBLE();
RENDER_CLIPPED_TILE(WRITE_4PIXELS16_HALFWIDTH, WRITE_4PIXELS16_FLIPPED_HALFWIDTH, 2);
}
void DrawTile16x2(uint32_t Tile, int32_t Offset, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
RENDER_TILE(WRITE_4PIXELS16x2, WRITE_4PIXELS16_FLIPPEDx2, 8);
}
void DrawClippedTile16x2(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Width, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
TILE_CLIP_PREAMBLE();
RENDER_CLIPPED_TILE(WRITE_4PIXELS16x2, WRITE_4PIXELS16_FLIPPEDx2, 8);
}
void DrawTile16x2x2(uint32_t Tile, int32_t Offset, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
RENDER_TILE(WRITE_4PIXELS16x2x2, WRITE_4PIXELS16_FLIPPEDx2x2, 8);
}
void DrawClippedTile16x2x2(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Width, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
uint8_t* bp;
+ TILE_PREAMBLE();
TILE_CLIP_PREAMBLE();
RENDER_CLIPPED_TILE(WRITE_4PIXELS16x2x2, WRITE_4PIXELS16_FLIPPEDx2x2, 8);
}
void DrawLargePixel16(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Pixels, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
- uint16_t* sp = (uint16_t*) GFX.S + Offset;
- uint8_t* Depth = GFX.DB + Offset;
uint16_t pixel;
+ uint16_t *sp;
+ uint8_t *Depth;
+ TILE_PREAMBLE();
+ sp = (uint16_t*) GFX.S + Offset;
+ Depth = GFX.DB + Offset;
RENDER_TILE_LARGE(ScreenColors [pixel], PLOT_PIXEL);
}
void DrawLargePixel16HalfWidth(uint32_t Tile, int32_t Offset, uint32_t StartPixel, uint32_t Pixels, uint32_t StartLine, uint32_t LineCount)
{
- TILE_PREAMBLE();
- uint16_t* sp = (uint16_t*) GFX.S + Offset;
- uint8_t* Depth = GFX.DB + Offset;
uint16_t pixel;
+ uint16_t *sp;
+ uint8_t *Depth;
+ TILE_PREAMBLE();
+ sp = (uint16_t*) GFX.S + Offset;
+ Depth = GFX.DB + Offset;
RENDER_TILE_LARGE_HALFWIDTH(ScreenColors [pixel], PLOT_PIXEL);
}
diff --git a/source/tile.h b/source/tile.h
index 12b294d..ca9f854 100644
--- a/source/tile.h
+++ b/source/tile.h
@@ -4,6 +4,8 @@
#define _TILE_H_
#define TILE_PREAMBLE() \
+ uint32_t l; \
+ uint16_t *ScreenColors; \
uint8_t *pCache; \
uint32_t TileAddr = BG.TileAddress + ((Tile & 0x3ff) << BG.TileShift); \
if ((Tile & 0x1ff) >= 256) \
@@ -15,8 +17,6 @@
BG.Buffered[TileNumber] = ConvertTile (pCache, TileAddr); \
if (BG.Buffered [TileNumber] == BLANK_TILE) \
return; \
- uint32_t l; \
- uint16_t *ScreenColors; \
if (BG.DirectColourMode) \
{ \
if (IPPU.DirectColourMapsNeedRebuild) \