aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJoão Silva2017-01-29 04:55:23 +0000
committerJoão Silva2017-01-29 04:55:23 +0000
commit0e59b999fa976de2d00490f552a1ff0a27d40f63 (patch)
treeadce7b06d1acc25f52c6e10616451bba02f9f7a5 /source
parent813fc89d37d1d8c8d2fa090a28f74aa0fdcea5df (diff)
downloadsnesemu-0e59b999fa976de2d00490f552a1ff0a27d40f63.tar.gz
snesemu-0e59b999fa976de2d00490f552a1ff0a27d40f63.tar.bz2
snesemu-0e59b999fa976de2d00490f552a1ff0a27d40f63.zip
Converted most types to stdint-style (fixing a few in the process).
Diffstat (limited to 'source')
-rw-r--r--source/apu.c16
-rw-r--r--source/apu.h2
-rw-r--r--source/apu_blargg.c322
-rw-r--r--source/apu_blargg.h142
-rw-r--r--source/blargg_endian.h36
-rw-r--r--source/c4emu.c30
-rw-r--r--source/cheats.c28
-rw-r--r--source/cheats2.c4
-rw-r--r--source/clip.c818
-rw-r--r--source/cpuaddr.h56
-rw-r--r--source/cpuexec.h10
-rw-r--r--source/cpumacro.h118
-rw-r--r--source/cpuops.c41
-rw-r--r--source/display.h8
-rw-r--r--source/dma.c32
-rw-r--r--source/dsp1.c6
-rw-r--r--source/dsp1emu.c20
-rw-r--r--source/dsp2emu.c46
-rw-r--r--source/dsp4.h4
-rw-r--r--source/dsp4emu.c10
-rw-r--r--source/font.h4
-rw-r--r--source/fxemu.c20
-rw-r--r--source/fxemu.h8
-rw-r--r--source/fxinst.c2
-rw-r--r--source/fxinst.h2
-rw-r--r--source/getset.h197
-rw-r--r--source/gfx.c248
-rw-r--r--source/gfx.h17
-rw-r--r--source/globals.c6
-rw-r--r--source/memmap.c604
-rw-r--r--source/obc1.c9
-rw-r--r--source/pixform.h28
-rw-r--r--source/ppu.c38
-rw-r--r--source/ppu.h32
-rw-r--r--source/sa1.c28
-rw-r--r--source/sa1.h18
-rw-r--r--source/sa1cpu.c2
-rw-r--r--source/sar.h8
-rw-r--r--source/sdd1.c8
-rw-r--r--source/sdd1emu.c18
-rw-r--r--source/sdd1emu.h2
-rw-r--r--source/seta010.c20
-rw-r--r--source/seta011.c4
-rw-r--r--source/seta018.c2
-rw-r--r--source/snes9x.h48
-rw-r--r--source/soundux.c104
-rw-r--r--source/soundux.h72
-rw-r--r--source/spc700.c4
-rw-r--r--source/spc7110.c116
-rw-r--r--source/spc7110.h116
-rw-r--r--source/srtc.c51
-rw-r--r--source/tile.h8
52 files changed, 1651 insertions, 1942 deletions
diff --git a/source/apu.c b/source/apu.c
index 1ac4c06..a28469d 100644
--- a/source/apu.c
+++ b/source/apu.c
@@ -27,7 +27,7 @@ void S9xDeinitAPU()
{
if (IAPU.RAM)
{
- free((char*) IAPU.RAM);
+ free(IAPU.RAM);
IAPU.RAM = NULL;
}
}
@@ -36,7 +36,7 @@ uint8_t APUROM [64];
void S9xResetAPU()
{
- int i, j;
+ int32_t i, j;
Settings.APUEnabled = true;
@@ -104,7 +104,7 @@ void S9xSetAPUDSP(uint8_t byte)
uint8_t reg = IAPU.RAM [0xf2];
static uint8_t KeyOn;
static uint8_t KeyOnPrev;
- int i;
+ int32_t i;
switch (reg)
{
@@ -133,11 +133,11 @@ void S9xSetAPUDSP(uint8_t byte)
case APU_NON:
if (byte != APU.DSP [APU_NON])
{
- int c;
+ int32_t c;
uint8_t mask = 1;
for (c = 0; c < 8; c++, mask <<= 1)
{
- int type;
+ int32_t type;
if (byte & mask)
type = SOUND_NOISE;
@@ -169,7 +169,7 @@ void S9xSetAPUDSP(uint8_t byte)
break;
case APU_KOFF:
{
- int c;
+ int32_t c;
uint8_t mask = 1;
for (c = 0; c < 8; c++, mask <<= 1)
{
@@ -199,7 +199,7 @@ void S9xSetAPUDSP(uint8_t byte)
case APU_KON:
if (byte)
{
- int c;
+ int32_t c;
uint8_t mask = 1;
for (c = 0; c < 8; c++, mask <<= 1)
{
@@ -327,7 +327,7 @@ void S9xSetAPUDSP(uint8_t byte)
APU.DSP [reg] = byte;
}
-void S9xFixEnvelope(int channel, uint8_t gain, uint8_t adsr1, uint8_t adsr2)
+void S9xFixEnvelope(int32_t channel, uint8_t gain, uint8_t adsr1, uint8_t adsr2)
{
if (adsr1 & 0x80) // ADSR mode
{
diff --git a/source/apu.h b/source/apu.h
index 6b40363..bafeac9 100644
--- a/source/apu.h
+++ b/source/apu.h
@@ -65,8 +65,6 @@ void S9xResetAPU(void);
bool S9xInitAPU();
void S9xDeinitAPU();
void S9xDecacheSamples();
-int S9xTraceAPU();
-int S9xAPUOPrint(char* buffer, uint16_t Address);
void S9xSetAPUControl(uint8_t byte);
void S9xSetAPUDSP(uint8_t byte);
uint8_t S9xGetAPUDSP();
diff --git a/source/apu_blargg.c b/source/apu_blargg.c
index b6188bc..bbe02c9 100644
--- a/source/apu_blargg.c
+++ b/source/apu_blargg.c
@@ -40,10 +40,6 @@ details. You should have received a copy of the GNU Lesser General Public
License along with this module; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
-#if INT_MAX < 0x7FFFFFFF
- #error "Requires that int type have at least 32 bits"
-#endif
-
/* if ( io < -32768 ) io = -32768; */
/* if ( io > 32767 ) io = 32767; */
#define CLAMP16( io )\
@@ -114,9 +110,9 @@ static int16_t gauss [512] =
/* Gaussian interpolation */
-static INLINE int dsp_interpolate( dsp_voice_t *v )
+static INLINE int32_t dsp_interpolate( dsp_voice_t *v )
{
- int offset, out, *in;
+ int32_t offset, out, *in;
int16_t *fwd, *rev;
/* Make pointers into gaussian based on fractional position between samples */
@@ -141,7 +137,7 @@ static INLINE int dsp_interpolate( dsp_voice_t *v )
/* 30720 = 2048 * 5 * 3 */
#define SIMPLE_COUNTER_RANGE 30720
-static unsigned const counter_rates [32] =
+static uint32_t const counter_rates [32] =
{
SIMPLE_COUNTER_RANGE + 1, /* never fires */
2048, 1536,
@@ -158,7 +154,7 @@ static unsigned const counter_rates [32] =
1
};
-static unsigned const counter_offsets [32] =
+static uint32_t const counter_offsets [32] =
{
1, 0, 1040,
536, 0, 1040,
@@ -178,13 +174,13 @@ static unsigned const counter_offsets [32] =
if ( --dsp_m.counter < 0 ) \
dsp_m.counter = SIMPLE_COUNTER_RANGE - 1;
-#define READ_COUNTER(rate) (((unsigned) dsp_m.counter + counter_offsets [rate]) % counter_rates [rate])
+#define READ_COUNTER(rate) (((uint32_t) dsp_m.counter + counter_offsets [rate]) % counter_rates [rate])
/* Envelope */
static INLINE void dsp_run_envelope( dsp_voice_t* const v )
{
- int env, rate, env_data;
+ int32_t env, rate, env_data;
env = v->env;
env_data = v->regs[V_ADSR1];
@@ -207,7 +203,7 @@ static INLINE void dsp_run_envelope( dsp_voice_t* const v )
}
else /* GAIN */
{
- int mode;
+ int32_t mode;
env_data = v->regs[V_GAIN];
mode = env_data >> 5;
if ( mode < 4 ) /* direct */
@@ -230,7 +226,7 @@ static INLINE void dsp_run_envelope( dsp_voice_t* const v )
else /* 6,7: linear increase */
{
env += 0x20;
- if ( mode > 6 && (unsigned) v->hidden_env >= 0x600 )
+ if ( mode > 6 && (uint32_t) v->hidden_env >= 0x600 )
env += 0x8 - 0x20; /* 7: two-slope linear increase */
}
}
@@ -243,7 +239,7 @@ static INLINE void dsp_run_envelope( dsp_voice_t* const v )
v->hidden_env = env;
/* unsigned cast because linear decrease going negative also triggers this */
- if ( (unsigned) env > 0x7FF )
+ if ( (uint32_t) env > 0x7FF )
{
env = (env < 0 ? 0 : 0x7FF);
if ( v->env_mode == ENV_ATTACK )
@@ -258,7 +254,7 @@ static INLINE void dsp_run_envelope( dsp_voice_t* const v )
static INLINE void dsp_decode_brr( dsp_voice_t* v )
{
- int nybbles, *pos, *end, header;
+ int32_t nybbles, *pos, *end, header;
/* Arrange the four input nybbles in 0xABCD order for easy decoding */
nybbles = dsp_m.t_brr_byte * 0x100 + dsp_m.ram [(v->brr_addr + v->brr_offset + 1) & 0xFFFF];
@@ -274,7 +270,7 @@ static INLINE void dsp_decode_brr( dsp_voice_t* v )
/* Decode four samples */
for ( end = pos + 4; pos < end; pos++, nybbles <<= 4 )
{
- int filter, p1, p2, s, shift;
+ int32_t filter, p1, p2, s, shift;
/* Extract nybble and sign-extend */
s = (int16_t) nybbles >> 12;
@@ -344,7 +340,7 @@ static INLINE void dsp_misc_30 (void)
/* Noise */
if ( !READ_COUNTER( dsp_m.regs[R_FLG] & 0x1F ) )
{
- int feedback = (dsp_m.noise << 13) ^ (dsp_m.noise << 14);
+ int32_t feedback = (dsp_m.noise << 13) ^ (dsp_m.noise << 14);
dsp_m.noise = (feedback & 0x4000) ^ (dsp_m.noise >> 1);
}
}
@@ -386,7 +382,7 @@ static INLINE void dsp_voice_V3b( dsp_voice_t* const v )
static void dsp_voice_V3c( dsp_voice_t* const v )
{
- int output;
+ int32_t output;
/* Pitch modulation using previous voice's output */
if ( dsp_m.t_pmon & v->vbit )
@@ -450,7 +446,7 @@ static void dsp_voice_V3c( dsp_voice_t* const v )
/* Run envelope for next sample */
if ( !v->kon_delay )
{
- int env = v->env;
+ int32_t env = v->env;
if ( v->env_mode == ENV_RELEASE ) /* 60% */
{
if ( (env -= 0x8) < 0 )
@@ -464,9 +460,9 @@ static void dsp_voice_V3c( dsp_voice_t* const v )
}
}
-static INLINE void dsp_voice_output( dsp_voice_t const* v, int ch )
+static INLINE void dsp_voice_output( dsp_voice_t const* v, int32_t ch )
{
- int amp;
+ int32_t amp;
/* Apply left/right volume */
amp = (dsp_m.t_output * (int8_t) VREG(v->regs,VOLL + ch)) >> 7;
@@ -517,7 +513,7 @@ static INLINE void dsp_voice_V4( dsp_voice_t* const v )
static INLINE void dsp_voice_V5( dsp_voice_t* const v )
{
- int endx_buf;
+ int32_t endx_buf;
/* Output right */
dsp_voice_output( v, 1 );
@@ -601,7 +597,7 @@ static void dsp_voice_V9_V6_V3( dsp_voice_t* const v )
#define ECHO_READ(ch) \
{ \
- int s; \
+ int32_t s; \
if ( dsp_m.t_echo_ptr >= 0xffc0 && dsp_m.rom_enabled ) \
s = GET_LE16SA( &dsp_m.hi_ram [dsp_m.t_echo_ptr + ch * 2 - 0xffc0] ); \
else \
@@ -612,7 +608,7 @@ static void dsp_voice_V9_V6_V3( dsp_voice_t* const v )
static INLINE void dsp_echo_22 (void)
{
- int l, r;
+ int32_t l, r;
if ( ++dsp_m.echo_hist_pos >= &dsp_m.echo_hist [ECHO_HIST_SIZE] )
dsp_m.echo_hist_pos = dsp_m.echo_hist;
@@ -630,7 +626,7 @@ static INLINE void dsp_echo_22 (void)
static INLINE void dsp_echo_23 (void)
{
- int l, r;
+ int32_t l, r;
l = (((dsp_m.echo_hist_pos [1 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 1 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [2 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 2 * 0x10]) >> 6);
r = (((dsp_m.echo_hist_pos [1 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 1 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [2 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 2 * 0x10]) >> 6);
@@ -643,7 +639,7 @@ static INLINE void dsp_echo_23 (void)
static INLINE void dsp_echo_24 (void)
{
- int l, r;
+ int32_t l, r;
l = (((dsp_m.echo_hist_pos [3 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 3 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [4 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 4 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [5 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 5 * 0x10]) >> 6);
r = (((dsp_m.echo_hist_pos [3 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 3 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [4 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 4 * 0x10]) >> 6) + (((dsp_m.echo_hist_pos [5 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 5 * 0x10]) >> 6);
@@ -654,8 +650,8 @@ static INLINE void dsp_echo_24 (void)
static INLINE void dsp_echo_25 (void)
{
- int l = dsp_m.t_echo_in [0] + (((dsp_m.echo_hist_pos [6 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 6 * 0x10]) >> 6);
- int r = dsp_m.t_echo_in [1] + (((dsp_m.echo_hist_pos [6 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 6 * 0x10]) >> 6);
+ int32_t l = dsp_m.t_echo_in [0] + (((dsp_m.echo_hist_pos [6 + 1]) [0] * (int8_t) dsp_m.regs [R_FIR + 6 * 0x10]) >> 6);
+ int32_t r = dsp_m.t_echo_in [1] + (((dsp_m.echo_hist_pos [6 + 1]) [1] * (int8_t) dsp_m.regs [R_FIR + 6 * 0x10]) >> 6);
l = (int16_t) l;
r = (int16_t) r;
@@ -680,7 +676,7 @@ static INLINE void dsp_echo_25 (void)
static INLINE void dsp_echo_26 (void)
{
- int l, r;
+ int32_t l, r;
ECHO_OUTPUT(dsp_m.t_main_out[0], 0 );
@@ -696,7 +692,7 @@ static INLINE void dsp_echo_26 (void)
static INLINE void dsp_echo_27 (void)
{
- int l, r;
+ int32_t l, r;
int16_t *out;
l = dsp_m.t_main_out [0];
@@ -771,9 +767,9 @@ V(V9_V6_V3,2) -> V(V9,2) V(V6,3) V(V3,4) */
/* Runs DSP for specified number of clocks (~1024000 per second). Every 32 clocks
a pair of samples is be generated. */
-static void dsp_run( int clocks_remain )
+static void dsp_run( int32_t clocks_remain )
{
- int phase;
+ int32_t phase;
phase = dsp_m.phase;
dsp_m.phase = (phase + clocks_remain) & 31;
@@ -939,7 +935,7 @@ loop:
/* Sets destination for output samples. If out is NULL or out_size is 0,
doesn't generate any. */
-static void dsp_set_output( int16_t * out, int size )
+static void dsp_set_output( int16_t * out, int32_t size )
{
if ( !out )
{
@@ -968,7 +964,7 @@ static void dsp_soft_reset_common (void)
static void dsp_reset (void)
{
- int i;
+ int32_t i;
uint8_t const initial_regs [REGISTER_COUNT] =
{
@@ -1029,7 +1025,7 @@ static void spc_copier_copy(spc_state_copy_t * copier, void* state, size_t size
copier->func(copier->buf, state, size );
}
-static int spc_copier_copy_int(spc_state_copy_t * copier, int state, int size )
+static int32_t spc_copier_copy_int(spc_state_copy_t * copier, int32_t state, int32_t size )
{
uint8_t s [2];
SET_LE16( s, state );
@@ -1039,16 +1035,16 @@ static int spc_copier_copy_int(spc_state_copy_t * copier, int state, int size )
static void spc_copier_extra(spc_state_copy_t * copier)
{
- int n = 0;
+ int32_t n = 0;
n = (uint8_t) spc_copier_copy_int(copier, n, sizeof (uint8_t) );
if ( n > 0 )
{
- char temp [64];
+ int8_t temp [64];
memset( temp, 0, sizeof(temp));
do
{
- int size_n = sizeof(temp);
+ int32_t size_n = sizeof(temp);
if ( size_n > n )
size_n = n;
n -= size_n;
@@ -1060,9 +1056,9 @@ static void spc_copier_extra(spc_state_copy_t * copier)
/* Saves/loads exact emulator state */
-static void dsp_copy_state( unsigned char** io, dsp_copy_func_t copy )
+static void dsp_copy_state( uint8_t ** io, dsp_copy_func_t copy )
{
- int i, j;
+ int32_t i, j;
spc_state_copy_t copier;
copier.func = copy;
@@ -1083,7 +1079,7 @@ static void dsp_copy_state( unsigned char** io, dsp_copy_func_t copy )
/* BRR buffer */
for ( j = 0; j < BRR_BUF_SIZE; j++ )
{
- int s;
+ int32_t s;
s = v->buf [j];
SPC_COPY( int16_t, s );
@@ -1098,7 +1094,7 @@ static void dsp_copy_state( unsigned char** io, dsp_copy_func_t copy )
SPC_COPY( uint8_t, v->brr_offset );
SPC_COPY( uint8_t, v->kon_delay );
{
- int m;
+ int32_t m;
m = v->env_mode;
SPC_COPY( uint8_t, m );
@@ -1112,7 +1108,7 @@ static void dsp_copy_state( unsigned char** io, dsp_copy_func_t copy )
/* Echo history */
for ( i = 0; i < ECHO_HIST_SIZE; i++ )
{
- int s, s2;
+ int32_t s, s2;
s = dsp_m.echo_hist_pos [i] [0];
s2 = dsp_m.echo_hist_pos [i] [1];
@@ -1181,7 +1177,7 @@ static void dsp_copy_state( unsigned char** io, dsp_copy_func_t copy )
***********************************************************************************/
static spc_state_t m;
-static signed char reg_times [256];
+static int8_t reg_times [256];
static bool allow_time_overflow;
/* Copyright (C) 2004-2007 Shay Green. This module is free software; you
@@ -1203,16 +1199,16 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
#define TIMER_DIV( t, n ) ((n) >> t->prescaler)
#define TIMER_MUL( t, n ) ((n) << t->prescaler)
-static Timer* spc_run_timer_( Timer* t, int time )
+static Timer* spc_run_timer_( Timer* t, int32_t time )
{
- int elapsed;
+ int32_t elapsed;
elapsed = TIMER_DIV( t, time - t->next_time ) + 1;
t->next_time += TIMER_MUL( t, elapsed );
if ( t->enabled )
{
- int remain, divider, over, n;
+ int32_t remain, divider, over, n;
remain = IF_0_THEN_256( t->period - t->divider );
divider = t->divider + elapsed;
@@ -1230,7 +1226,7 @@ static Timer* spc_run_timer_( Timer* t, int time )
/* ROM */
-void spc_enable_rom( int enable )
+void spc_enable_rom( int32_t enable )
{
if ( m.rom_enabled != enable )
{
@@ -1248,18 +1244,18 @@ void spc_enable_rom( int enable )
#define MAX_REG_TIME 29
#define RUN_DSP( time, offset ) \
- int count = (time) - (offset) - m.dsp_time; \
+ int32_t count = (time) - (offset) - m.dsp_time; \
if ( count >= 0 ) \
{ \
- int clock_count; \
+ int32_t clock_count; \
clock_count = (count & ~(CLOCKS_PER_SAMPLE - 1)) + CLOCKS_PER_SAMPLE; \
m.dsp_time += clock_count; \
dsp_run( clock_count ); \
}
-static INLINE void spc_dsp_write( int data, int time )
+static INLINE void spc_dsp_write( int32_t data, int32_t time )
{
- int addr;
+ int32_t addr;
/* Writes DSP registers. */
addr = m.smp_regs[0][R_DSPADDR];
@@ -1295,12 +1291,12 @@ static INLINE void spc_dsp_write( int data, int time )
so often-used functionality can be optimized better by compiler */
/* If write isn't preceded by read, data has this added to it
- int const no_read_before_write = 0x2000; */
+ int32_t const no_read_before_write = 0x2000; */
#define NO_READ_BEFORE_WRITE 8192
#define NO_READ_BEFORE_WRITE_DIVIDED_BY_TWO 4096
-static void spc_cpu_write_smp_reg_( int data, int time, int addr )
+static void spc_cpu_write_smp_reg_( int32_t data, int32_t time, int32_t addr )
{
switch ( addr )
{
@@ -1308,7 +1304,7 @@ static void spc_cpu_write_smp_reg_( int data, int time, int addr )
case R_T1TARGET:
case R_T2TARGET:
{
- int period;
+ int32_t period;
Timer *t;
t = &m.timers [addr - R_T0TARGET];
@@ -1345,7 +1341,7 @@ static void spc_cpu_write_smp_reg_( int data, int time, int addr )
case R_CONTROL:
{
- int i;
+ int32_t i;
/* port clears */
if ( data & 0x10 )
{
@@ -1363,7 +1359,7 @@ static void spc_cpu_write_smp_reg_( int data, int time, int addr )
for ( i = 0; i < TIMER_COUNT; i++ )
{
Timer* t = &m.timers [i];
- int enabled = data >> i & 1;
+ int32_t enabled = data >> i & 1;
if ( t->enabled != enabled )
{
if ( time >= t->next_time )
@@ -1383,11 +1379,9 @@ static void spc_cpu_write_smp_reg_( int data, int time, int addr )
}
}
-static int const bits_in_int = CHAR_BIT * sizeof (int);
-
-static void spc_cpu_write( int data, uint16_t addr, int time )
+static void spc_cpu_write( int32_t data, uint16_t addr, int32_t time )
{
- int reg;
+ int32_t reg;
/* RAM */
m.ram.ram[addr] = (uint8_t) data;
reg = addr - 0xF0;
@@ -1402,7 +1396,7 @@ static void spc_cpu_write( int data, uint16_t addr, int time )
if ( reg != 2 && reg != 4 && reg != 5 && reg != 6 && reg != 7 )
TODO: this is a bit on the fragile side */
- if ( ((~0x2F00 << (bits_in_int - 16)) << reg) < 0 ) /* 36% */
+ if ( ((~0x2F00 << 16) << reg) < 0 ) /* 36% */
{
if ( reg == R_DSPDATA ) /* 99% */
{
@@ -1430,9 +1424,9 @@ static void spc_cpu_write( int data, uint16_t addr, int time )
/* CPU read */
-static int spc_cpu_read( uint16_t addr, int time )
+static int32_t spc_cpu_read( uint16_t addr, int32_t time )
{
- int result, reg;
+ int32_t result, reg;
/* RAM */
result = m.ram.ram[addr];
@@ -1441,12 +1435,12 @@ static int spc_cpu_read( uint16_t addr, int time )
if ( reg >= 0 ) /* 40% */
{
reg -= 0x10;
- if ( (unsigned) reg >= 0xFF00 ) /* 21% */
+ if ( (uint32_t) reg >= 0xFF00 ) /* 21% */
{
reg += 0x10 - R_T0OUT;
/* Timers */
- if ( (unsigned) reg < TIMER_COUNT ) /* 90% */
+ if ( (uint32_t) reg < TIMER_COUNT ) /* 90% */
{
Timer* t = &m.timers [reg];
if ( time >= t->next_time )
@@ -1457,16 +1451,16 @@ static int spc_cpu_read( uint16_t addr, int time )
/* Other registers */
else /* 10% */
{
- int reg_tmp;
+ int32_t reg_tmp;
reg_tmp = reg + R_T0OUT;
result = m.smp_regs[1][reg_tmp];
reg_tmp -= R_DSPADDR;
/* DSP addr and data */
- if ( (unsigned) reg_tmp <= 1 ) /* 4% 0xF2 and 0xF3 */
+ if ( (uint32_t) reg_tmp <= 1 ) /* 4% 0xF2 and 0xF3 */
{
result = m.smp_regs[0][R_DSPADDR];
- if ( (unsigned) reg_tmp == 1 )
+ if ( (uint32_t) reg_tmp == 1 )
{
RUN_DSP( time, reg_times [m.smp_regs[0][R_DSPADDR] & 0x7F] );
@@ -1490,11 +1484,11 @@ static int spc_cpu_read( uint16_t addr, int time )
#define CPU_READ_TIMER( time, offset, addr_, out )\
{\
- int adj_time, dp_addr, ti; \
+ int32_t adj_time, dp_addr, ti; \
adj_time = time + offset;\
dp_addr = addr_;\
ti = dp_addr - (R_T0OUT + 0xF0);\
- if ( (unsigned) ti < TIMER_COUNT )\
+ if ( (uint32_t) ti < TIMER_COUNT )\
{\
Timer* t = &m.timers [ti];\
if ( adj_time >= t->next_time )\
@@ -1504,19 +1498,19 @@ static int spc_cpu_read( uint16_t addr, int time )
}\
else\
{\
- int i, reg; \
+ int32_t i, reg; \
out = ram [dp_addr];\
i = dp_addr - 0xF0;\
- if ( (unsigned) i < 0x10 )\
+ if ( (uint32_t) i < 0x10 )\
{ \
reg = i; \
out = m.smp_regs[1][reg]; \
reg -= R_DSPADDR; \
/* DSP addr and data */ \
- if ( (unsigned) reg <= 1 ) /* 4% 0xF2 and 0xF3 */ \
+ if ( (uint32_t) reg <= 1 ) /* 4% 0xF2 and 0xF3 */ \
{ \
out = m.smp_regs[0][R_DSPADDR]; \
- if ( (unsigned) reg == 1 ) \
+ if ( (uint32_t) reg == 1 ) \
{ \
RUN_DSP( adj_time, reg_times [m.smp_regs[0][R_DSPADDR] & 0x7F] ); \
out = dsp_m.regs[m.smp_regs[0][R_DSPADDR] & 0x7F ]; /* 0xF3 */ \
@@ -1530,9 +1524,9 @@ static int spc_cpu_read( uint16_t addr, int time )
#define SPC_CPU_READ( time, addr ) spc_cpu_read((addr), rel_time + time )
#define SPC_CPU_WRITE( time, addr, data ) spc_cpu_write((data), (addr), rel_time + time )
-static unsigned spc_CPU_mem_bit( uint8_t const* pc, int rel_time )
+static uint32_t spc_CPU_mem_bit( uint8_t const* pc, int32_t rel_time )
{
- unsigned addr, t;
+ uint32_t addr, t;
addr = GET_LE16( pc );
t = SPC_CPU_READ( 0, addr & 0x1FFF ) >> (addr >> 13);
@@ -1577,11 +1571,11 @@ static unsigned spc_CPU_mem_bit( uint8_t const* pc, int rel_time )
nz = (in << 4 & 0x800) | (~in & Z02);\
}
-static uint8_t* spc_run_until_( int end_time )
+static uint8_t* spc_run_until_( int32_t end_time )
{
- int dp, nz, c, psw, a, x, y;
+ int32_t dp, nz, c, psw, a, x, y;
uint8_t *ram, *pc, *sp;
- int rel_time = m.spc_time - end_time;
+ int32_t rel_time = m.spc_time - end_time;
m.spc_time = end_time;
m.dsp_time += rel_time;
m.timers [0].next_time += rel_time;
@@ -1607,7 +1601,7 @@ inc_pc_loop:
pc++;
loop:
{
- unsigned opcode, data;
+ uint32_t opcode, data;
opcode = *pc;
@@ -1642,7 +1636,7 @@ loop:
case 0x3F:
{ /* CALL */
- int old_addr;
+ int32_t old_addr;
old_addr = GET_PC() + 2;
SET_PC( GET_LE16( pc ) );
PUSH16( old_addr );
@@ -1660,26 +1654,26 @@ loop:
goto loop;
case 0xFA:{ /* MOV dp,dp */
- int temp;
+ int32_t temp;
READ_DP_TIMER( -2, data, temp );
data = temp + NO_READ_BEFORE_WRITE ;
}
/* fall through */
case 0x8F:
{ /* MOV dp,#imm */
- int i, temp;
+ int32_t i, temp;
temp = READ_PC( pc + 1 );
pc += 2;
i = dp + temp;
ram [i] = (uint8_t) data;
i -= 0xF0;
- if ( (unsigned) i < 0x10 ) /* 76% */
+ if ( (uint32_t) i < 0x10 ) /* 76% */
{
m.smp_regs[0][i] = (uint8_t) data;
/* Registers other than $F2 and $F4-$F7 */
- if ( ((~0x2F00 << (bits_in_int - 16)) << i) < 0 ) /* 12% */
+ if ( ((~0x2F00 << 16) << i) < 0 ) /* 12% */
{
if ( i == R_DSPDATA ) /* 99% */
{
@@ -1697,13 +1691,13 @@ loop:
case 0xC4: /* MOV dp,a */
++pc;
{
- int i;
+ int32_t i;
i = dp + data;
ram [i] = (uint8_t) a;
i -= 0xF0;
- if ( (unsigned) i < 0x10 ) /* 39% */
+ if ( (uint32_t) i < 0x10 ) /* 39% */
{
- unsigned sel;
+ uint32_t sel;
sel = i - 2;
m.smp_regs[0][i] = (uint8_t) a;
@@ -1766,7 +1760,7 @@ loop:
case 0xBF:
{
/* MOV A,(X)+ */
- int temp;
+ int32_t temp;
temp = x + dp;
x = (uint8_t) (x + 1);
a = nz = SPC_CPU_READ( -1, temp );
@@ -1803,7 +1797,7 @@ loop:
case 0xEC:
{ /* MOV Y,abs */
- int temp;
+ int32_t temp;
temp = GET_LE16( pc );
pc += 2;
READ_TIMER( 0, temp, y = nz );
@@ -1822,7 +1816,7 @@ loop:
goto inc_pc_loop;
{
- int temp;
+ int32_t temp;
case 0xCC: /* MOV abs,Y */
temp = y;
goto mov_abs_temp;
@@ -1891,7 +1885,7 @@ mov_abs_temp:
case op: /* imm */\
nz = a func##= data;\
goto inc_pc_loop;\
- { unsigned addr;\
+ { uint32_t addr;\
case op + 0x11: /* X,Y */\
data = READ_DP( -2, y );\
addr = x + dp;\
@@ -1969,7 +1963,7 @@ cmp_y_addr:
goto inc_pc_loop;
{
- int addr;
+ int32_t addr;
case 0xB9: /* SBC (x),(y) */
case 0x99: /* ADC (x),(y) */
pc--; /* compensate for inc later */
@@ -1996,7 +1990,7 @@ adc_addr:
addr = -1; /* A */
nz = a;
adc_data: {
- int flags;
+ int32_t flags;
if ( opcode >= 0xA0 ) /* SBC */
data ^= 0xFF;
@@ -2066,7 +2060,7 @@ inc_abs:
c = 0;
case 0x3C:
{/* ROL A */
- int temp;
+ int32_t temp;
temp = c >> 8 & 1;
c = a << 1;
nz = c | temp;
@@ -2113,7 +2107,7 @@ rol_mem:
data = GET_LE16( pc );
pc++;
ror_mem: {
- int temp = SPC_CPU_READ( -1, data );
+ int32_t temp = SPC_CPU_READ( -1, data );
nz = (c >> 1 & 0x80) | (temp >> 1);
c = temp << 8;
SPC_CPU_WRITE( 0, data, nz );
@@ -2142,7 +2136,7 @@ ror_mem: {
case 0x3A: /* INCW dp */
case 0x1A:{/* DECW dp */
- int temp;
+ int32_t temp;
/* low byte */
data += dp;
temp = SPC_CPU_READ( -3, data );
@@ -2162,7 +2156,7 @@ ror_mem: {
case 0x7A: /* ADDW YA,dp */
case 0x9A:
{/* SUBW YA,dp */
- int lo, hi, result, flags;
+ int32_t lo, hi, result, flags;
lo = READ_DP( -2, data );
hi = READ_DP( 0, (uint8_t) (data + 1) );
@@ -2190,7 +2184,7 @@ ror_mem: {
case 0x5A:
{ /* CMPW YA,dp */
- int temp;
+ int32_t temp;
temp = a - READ_DP( -1, data );
nz = ((temp >> 1) | temp) & 0x7F;
temp = y + (temp >> 8);
@@ -2204,7 +2198,7 @@ ror_mem: {
/* 10. MULTIPLICATION & DIVISON COMMANDS */
case 0xCF: { /* MUL YA */
- unsigned temp = y * a;
+ uint32_t temp = y * a;
a = (uint8_t) temp;
nz = ((temp >> 1) | temp) & 0x7F;
y = temp >> 8;
@@ -2214,7 +2208,7 @@ ror_mem: {
case 0x9E: /* DIV YA,X */
{
- unsigned ya = y * 0x100 + a;
+ uint32_t ya = y * 0x100 + a;
psw &= ~(H08 | V40);
@@ -2328,14 +2322,14 @@ ror_mem: {
data = (uint8_t) (data + x);
/* fall through */
case 0x2E:{ /* CBNE dp,rel */
- int temp;
+ int32_t temp;
/* 61% from timer */
READ_DP_TIMER( -4, data, temp );
CBRANCH( temp != a )
}
case 0x6E: { /* DBNZ dp,rel */
- unsigned temp = READ_DP( -4, data ) - 1;
+ uint32_t temp = READ_DP( -4, data ) - 1;
WRITE_DP( -3, (uint8_t) data, /*(uint8_t)*/ temp + NO_READ_BEFORE_WRITE );
CBRANCH( temp )
}
@@ -2354,8 +2348,8 @@ ror_mem: {
/* 13. SUB-ROUTINE CALL RETURN COMMANDS */
case 0x0F:{/* BRK */
- int temp;
- int ret_addr = GET_PC();
+ int32_t temp;
+ int32_t ret_addr = GET_PC();
SET_PC( READ_PROG16( 0xFFDE ) ); /* vector address verified */
PUSH16( ret_addr );
GET_PSW( temp );
@@ -2365,7 +2359,7 @@ ror_mem: {
}
case 0x4F:{/* PCALL offset */
- int ret_addr = GET_PC() + 1;
+ int32_t ret_addr = GET_PC() + 1;
SET_PC( 0xFF00 | data );
PUSH16( ret_addr );
goto loop;
@@ -2387,7 +2381,7 @@ ror_mem: {
case 0xD1:
case 0xE1:
case 0xF1: {
- int ret_addr = GET_PC();
+ int32_t ret_addr = GET_PC();
SET_PC( READ_PROG16( 0xFFDE - (opcode >> 3) ) );
PUSH16( ret_addr );
goto loop;
@@ -2396,7 +2390,7 @@ ror_mem: {
/* 14. STACK OPERATION COMMANDS */
{
- int temp;
+ int32_t temp;
case 0x7F: /* RET1 */
temp = *sp;
SET_PC( GET_LE16( sp + 1 ) );
@@ -2410,7 +2404,7 @@ set_psw:
}
case 0x0D: { /* PUSH PSW */
- int temp;
+ int32_t temp;
GET_PSW( temp );
PUSH( temp );
goto loop;
@@ -2459,7 +2453,7 @@ set_psw:
case 0xD2:
case 0xF2:
{
- int bit, mask;
+ int32_t bit, mask;
bit = 1 << (opcode >> 5);
mask = ~bit;
if ( opcode & 0x10 )
@@ -2474,7 +2468,7 @@ set_psw:
data = GET_LE16( pc );
pc += 2;
{
- unsigned temp = SPC_CPU_READ( -2, data );
+ uint32_t temp = SPC_CPU_READ( -2, data );
nz = (uint8_t) (a - temp);
temp &= ~a;
if ( opcode == 0x0E )
@@ -2512,7 +2506,7 @@ set_psw:
data = GET_LE16( pc );
pc += 2;
{
- unsigned temp = SPC_CPU_READ( -1, data & 0x1FFF );
+ uint32_t temp = SPC_CPU_READ( -1, data & 0x1FFF );
temp ^= 1 << (data >> 13);
SPC_CPU_WRITE( 0, data & 0x1FFF, temp );
}
@@ -2522,7 +2516,7 @@ set_psw:
data = GET_LE16( pc );
pc += 2;
{
- unsigned temp, bit;
+ uint32_t temp, bit;
temp = SPC_CPU_READ( -2, data & 0x1FFF );
bit = data >> 13;
temp = (temp & ~(1 << bit)) | ((c >> 8 & 1) << bit);
@@ -2577,7 +2571,7 @@ set_psw:
case 0xFF:
{ /* STOP */
/* handle PC wrap-around */
- unsigned addr = GET_PC() - 1;
+ uint32_t addr = GET_PC() - 1;
if ( addr >= 0x10000 )
{
addr &= 0xFFFF;
@@ -2604,7 +2598,7 @@ stop:
m.cpu_regs.x = ( uint8_t) x;
m.cpu_regs.y = ( uint8_t) y;
{
- int temp;
+ int32_t temp;
GET_PSW( temp );
m.cpu_regs.psw = (uint8_t) temp;
}
@@ -2618,9 +2612,9 @@ stop:
/* Runs SPC to end_time and starts a new time frame at 0 */
-static void spc_end_frame( int end_time )
+static void spc_end_frame( int32_t end_time )
{
- int i;
+ int32_t i;
/* Catch CPU up to as close to end as possible. If final instruction
would exceed end, does NOT execute it and leaves m.spc_time < end. */
@@ -2690,9 +2684,9 @@ static void spc_reset_buffer(void)
/* Sets tempo, where tempo_unit = normal, tempo_unit / 2 = half speed, etc. */
-static void spc_set_tempo( int t )
+static void spc_set_tempo( int32_t t )
{
- int timer2_shift, other_shift;
+ int32_t timer2_shift, other_shift;
m.tempo = t;
timer2_shift = 4; /* 64 kHz */
other_shift = 3; /* 8 kHz */
@@ -2702,9 +2696,9 @@ static void spc_set_tempo( int t )
m.timers [0].prescaler = timer2_shift + other_shift;
}
-static void spc_reset_common( int timer_counter_init )
+static void spc_reset_common( int32_t timer_counter_init )
{
- int i;
+ int32_t i;
for ( i = 0; i < TIMER_COUNT; i++ )
m.smp_regs[1][R_T0OUT + i] = timer_counter_init;
@@ -2795,9 +2789,9 @@ static void spc_soft_reset (void)
}
#if !SPC_NO_COPY_STATE_FUNCS
-void spc_copy_state( unsigned char** io, dsp_copy_func_t copy )
+void spc_copy_state( uint8_t ** io, dsp_copy_func_t copy )
{
- int i;
+ int32_t i;
spc_state_copy_t copier;
copier.func = copy;
copier.buf = io;
@@ -2875,20 +2869,20 @@ void spc_copy_state( unsigned char** io, dsp_copy_func_t copy )
static apu_callback sa_callback = NULL;
-static bool sound_in_sync = true;
+static bool sound_in_sync = true;
-static int buffer_size;
-static int lag_master = 0;
-static int lag = 0;
+static int32_t buffer_size;
+static int32_t lag_master = 0;
+static int32_t lag = 0;
-static int16_t *landing_buffer = NULL;
+static int16_t* landing_buffer = NULL;
-static bool resampler = false;
+static bool resampler = false;
static int32_t reference_time;
static uint32_t spc_remainder;
-static int timing_hack_denominator = TEMPO_UNIT;
+static int32_t timing_hack_denominator = TEMPO_UNIT;
/* Set these to NTSC for now. Will change to PAL in S9xAPUTimingSetSpeedup
if necessary on game load. */
static uint32_t ratio_numerator = APU_NUMERATOR_NTSC;
@@ -2897,13 +2891,13 @@ static uint32_t ratio_denominator = APU_DENOMINATOR_NTSC;
/***********************************************************************************
RESAMPLER
************************************************************************************/
-static int rb_size;
-static int rb_buffer_size;
-static int rb_start;
-static unsigned char *rb_buffer;
+static int32_t rb_size;
+static int32_t rb_buffer_size;
+static int32_t rb_start;
+static uint8_t* rb_buffer;
static uint32_t r_step;
static uint32_t r_frac;
-static int r_left[4], r_right[4];
+static int32_t r_left[4], r_right[4];
#define SPACE_EMPTY() (rb_buffer_size - rb_size)
#define SPACE_FILLED() (rb_size)
@@ -2949,9 +2943,9 @@ static void resampler_time_ratio(double ratio)
resampler_clear();
}
-static void resampler_read(int16_t *data, int num_samples)
+static void resampler_read(int16_t *data, int32_t num_samples)
{
- int i_position, o_position, consumed;
+ int32_t i_position, o_position, consumed;
int16_t *internal_buffer;
i_position = rb_start >> 1;
@@ -2961,8 +2955,8 @@ static void resampler_read(int16_t *data, int num_samples)
while (o_position < num_samples && consumed < rb_buffer_size)
{
- int s_left, s_right, max_samples;
- int hermite_val;
+ int32_t s_left, s_right, max_samples;
+ int32_t hermite_val;
s_left = internal_buffer[i_position];
s_right = internal_buffer[i_position + 1];
@@ -3007,12 +3001,12 @@ static void resampler_read(int16_t *data, int num_samples)
rb_start -= rb_buffer_size;
}
-static void resampler_new(int num_samples)
+static void resampler_new(int32_t num_samples)
{
- int new_size = num_samples << 1;
+ int32_t new_size = num_samples << 1;
rb_buffer_size = new_size;
- rb_buffer = (unsigned char*)malloc(rb_buffer_size);
+ rb_buffer = (uint8_t *)malloc(rb_buffer_size);
memset (rb_buffer, 0, rb_buffer_size);
rb_size = 0;
@@ -3020,17 +3014,17 @@ static void resampler_new(int num_samples)
resampler_clear();
}
-static INLINE bool resampler_push(int16_t *src, int num_samples)
+static INLINE bool resampler_push(int16_t *src, int32_t num_samples)
{
- int bytes, end, first_write_size;
- unsigned char *src_ring;
+ int32_t bytes, end, first_write_size;
+ uint8_t *src_ring;
bytes = num_samples << 1;
if (MAX_WRITE() < num_samples || SPACE_EMPTY() < bytes)
return false;
/* Ring buffer push */
- src_ring = (unsigned char*)src;
+ src_ring = (uint8_t *)src;
end = (rb_start + rb_size) % rb_buffer_size;
first_write_size = RESAMPLER_MIN(bytes, rb_buffer_size - end);
@@ -3044,11 +3038,11 @@ static INLINE bool resampler_push(int16_t *src, int num_samples)
return true;
}
-static INLINE void resampler_resize (int num_samples)
+static INLINE void resampler_resize (int32_t num_samples)
{
free(rb_buffer);
rb_buffer_size = rb_size;
- rb_buffer = (unsigned char*)malloc(rb_buffer_size);
+ rb_buffer = (uint8_t *)malloc(rb_buffer_size);
memset (rb_buffer, 0, rb_buffer_size);
rb_size = 0;
@@ -3059,7 +3053,7 @@ static INLINE void resampler_resize (int num_samples)
APU
***********************************************************************************/
-bool S9xMixSamples (int16_t *buffer, unsigned sample_count)
+bool S9xMixSamples (int16_t *buffer, uint32_t sample_count)
{
if (AVAIL() >= (sample_count + lag))
{
@@ -3079,14 +3073,14 @@ bool S9xMixSamples (int16_t *buffer, unsigned sample_count)
return (true);
}
-int S9xGetSampleCount (void)
+int32_t S9xGetSampleCount (void)
{
return AVAIL();
}
/* Sets destination for output samples */
-static void spc_set_output( int16_t* out, int size )
+static void spc_set_output( int16_t* out, int32_t size )
{
int16_t *out_end, *in;
@@ -3163,11 +3157,11 @@ static void UpdatePlaybackRate (void)
resampler_time_ratio(time_ratio);
}
-bool S9xInitSound (int buffer_ms, int lag_ms)
+bool S9xInitSound (int32_t buffer_ms, int32_t lag_ms)
{
/* buffer_ms : buffer size given in millisecond
lag_ms : allowable time-lag given in millisecond */
- int sample_count, lag_sample_count;
+ int32_t sample_count, lag_sample_count;
sample_count = buffer_ms * 32000 / 1000;
lag_sample_count = lag_ms * 32000 / 1000;
@@ -3213,7 +3207,7 @@ bool S9xInitSound (int buffer_ms, int lag_ms)
}
/* Must be called once before using */
-static unsigned char cycle_table [128] =
+static uint8_t cycle_table [128] =
{/* 01 23 45 67 89 AB CD EF */
0x28,0x47,0x34,0x36,0x26,0x54,0x54,0x68, /* 0 */
0x48,0x47,0x45,0x56,0x55,0x65,0x22,0x46, /* 1 */
@@ -3233,7 +3227,7 @@ static unsigned char cycle_table [128] =
0x48,0x47,0x45,0x56,0x34,0x54,0x22,0x60, /* F */
};
-static signed char const reg_times_ [256] =
+static int8_t const reg_times_ [256] =
{
-1, 0,-11,-10,-15,-11, -2, -2, 4, 3, 14, 14, 26, 26, 14, 22,
2, 3, 0, 1,-12, 0, 1, 1, 7, 6, 14, 14, 27, 14, 14, 23,
@@ -3256,7 +3250,7 @@ static signed char const reg_times_ [256] =
bool S9xInitAPU (void)
{
- int i;
+ int32_t i;
uint8_t APUROM[64] =
{
@@ -3285,7 +3279,7 @@ bool S9xInitAPU (void)
/* unpack cycle table */
for ( i = 0; i < 128; i++ )
{
- int n;
+ int32_t n;
n = cycle_table [i];
m.cycle_table [i * 2 + 0] = n >> 4;
m.cycle_table [i * 2 + 1] = n & 0x0F;
@@ -3329,11 +3323,11 @@ void S9xDeinitAPU (void)
/* Emulated port read at specified time */
-uint8_t S9xAPUReadPort (int port) { return ((uint8_t) spc_run_until_(S9X_APU_GET_CLOCK(CPU.Cycles))[port]); }
+uint8_t S9xAPUReadPort (int32_t port) { return ((uint8_t) spc_run_until_(S9X_APU_GET_CLOCK(CPU.Cycles))[port]); }
/* Emulated port write at specified time */
-void S9xAPUWritePort (int port, uint8_t byte)
+void S9xAPUWritePort (int32_t port, uint8_t byte)
{
spc_run_until_( S9X_APU_GET_CLOCK(CPU.Cycles) ) [0x10 + port] = byte;
m.ram.ram [0xF4 + port] = byte;
@@ -3356,7 +3350,7 @@ void S9xAPUExecute (void)
sa_callback();
}
-void S9xAPUTimingSetSpeedup (int ticks)
+void S9xAPUTimingSetSpeedup (int32_t ticks)
{
if (ticks != 0)
printf("APU speedup hack: %d\n", ticks);
@@ -3434,14 +3428,12 @@ void S9xAPUSaveState (uint8_t *block)
}
#if defined(ANDROID) || defined(__QNX__)
-void __attribute__((optimize(0))) S9xAPULoadState (uint8_t *block)
+void __attribute__((optimize(0))) S9xAPULoadState (const uint8_t *block)
#else
-void S9xAPULoadState (uint8_t *block)
+void S9xAPULoadState (const uint8_t *block)
#endif
{
- uint8_t *ptr;
-
- ptr = block;
+ uint8_t *ptr = (uint8_t*) block;
S9xResetAPU();
diff --git a/source/apu_blargg.h b/source/apu_blargg.h
index f2a89ec..66c375f 100644
--- a/source/apu_blargg.h
+++ b/source/apu_blargg.h
@@ -7,7 +7,7 @@
#include "snes9x.h"
-typedef void (*dsp_copy_func_t)( unsigned char** io, void* state, size_t );
+typedef void (*dsp_copy_func_t)( uint8_t ** io, void* state, size_t );
#define ECHO_HIST_SIZE 8
#define ECHO_HIST_SIZE_X2 16
@@ -82,17 +82,17 @@ typedef void (*dsp_copy_func_t)( unsigned char** io, void* state, size_t );
typedef struct
{
- int buf [BRR_BUF_SIZE_X2]; // decoded samples (twice the size to simplify wrap handling)
- int buf_pos; // place in buffer where next samples will be decoded
- int interp_pos; // relative fractional position in sample (0x1000 = 1.0)
- int brr_addr; // address of current BRR block
- int brr_offset; // current decoding offset in BRR block
+ int32_t buf [BRR_BUF_SIZE_X2]; // decoded samples (twice the size to simplify wrap handling)
+ int32_t buf_pos; // place in buffer where next samples will be decoded
+ int32_t interp_pos; // relative fractional position in sample (0x1000 = 1.0)
+ int32_t brr_addr; // address of current BRR block
+ int32_t brr_offset; // current decoding offset in BRR block
uint8_t* regs; // pointer to voice's DSP registers
- int vbit; // bitmask for voice: 0x01 for voice 0, 0x02 for voice 1, etc.
- int kon_delay; // KON delay/current setup phase
- int env_mode;
- int env; // current envelope level
- int hidden_env; // used by GAIN mode 7, very obscure quirk
+ int32_t vbit; // bitmask for voice: 0x01 for voice 0, 0x02 for voice 1, etc.
+ int32_t kon_delay; // KON delay/current setup phase
+ int32_t env_mode;
+ int32_t env; // current envelope level
+ int32_t hidden_env; // used by GAIN mode 7, very obscure quirk
uint8_t t_envx_out;
} dsp_voice_t;
@@ -102,20 +102,20 @@ typedef struct
/* Echo history keeps most recent 8 samples (twice the size to simplify wrap handling) */
- int echo_hist [ECHO_HIST_SIZE_X2] [2];
+ int32_t echo_hist [ECHO_HIST_SIZE_X2] [2];
- int (*echo_hist_pos) [2]; /* &echo_hist [0 to 7] */
+ int32_t (*echo_hist_pos) [2]; /* &echo_hist [0 to 7] */
- int every_other_sample; /* toggles every sample */
- int kon; /* KON value when last checked */
- int noise;
- int counter;
- int echo_offset; /* offset from ESA in echo buffer */
- int echo_length; /* number of bytes that echo_offset will stop at */
- int phase; /* next clock cycle to run (0-31) */
+ int32_t every_other_sample; /* toggles every sample */
+ int32_t kon; /* KON value when last checked */
+ int32_t noise;
+ int32_t counter;
+ int32_t echo_offset; /* offset from ESA in echo buffer */
+ int32_t echo_length; /* number of bytes that echo_offset will stop at */
+ int32_t phase; /* next clock cycle to run (0-31) */
/* Hidden registers also written to when main register is written to */
- int new_kon;
+ int32_t new_kon;
uint8_t endx_buf;
uint8_t envx_buf;
uint8_t outx_buf;
@@ -123,32 +123,32 @@ typedef struct
/* Temporary state between clocks */
/* read once per sample */
- int t_pmon;
- int t_non;
- int t_eon;
- int t_dir;
- int t_koff;
+ int32_t t_pmon;
+ int32_t t_non;
+ int32_t t_eon;
+ int32_t t_dir;
+ int32_t t_koff;
/* read a few clocks ahead then used */
- int t_brr_next_addr;
- int t_adsr0;
- int t_brr_header;
- int t_brr_byte;
- int t_srcn;
- int t_esa;
- int t_echo_enabled;
+ int32_t t_brr_next_addr;
+ int32_t t_adsr0;
+ int32_t t_brr_header;
+ int32_t t_brr_byte;
+ int32_t t_srcn;
+ int32_t t_esa;
+ int32_t t_echo_enabled;
/* internal state that is recalculated every sample */
- int t_dir_addr;
- int t_pitch;
- int t_output;
- int t_looped;
- int t_echo_ptr;
+ int32_t t_dir_addr;
+ int32_t t_pitch;
+ int32_t t_output;
+ int32_t t_looped;
+ int32_t t_echo_ptr;
/* left/right sums */
- int t_main_out [2];
- int t_echo_out [2];
- int t_echo_in [2];
+ int32_t t_main_out [2];
+ int32_t t_echo_out [2];
+ int32_t t_echo_in [2];
dsp_voice_t voices [VOICE_COUNT];
@@ -159,16 +159,16 @@ typedef struct
int16_t* out_begin;
int16_t extra [EXTRA_SIZE];
- int rom_enabled;
- uint8_t *rom;
- uint8_t *hi_ram;
+ int32_t rom_enabled;
+ uint8_t* rom;
+ uint8_t* hi_ram;
} dsp_state_t;
#if !SPC_NO_COPY_STATE_FUNCS
typedef struct {
dsp_copy_func_t func;
- unsigned char** buf;
+ uint8_t** buf;
} spc_state_copy_t;
#define SPC_COPY( type, state ) state = (type) spc_copier_copy_int(&copier, state, sizeof (type) );
@@ -208,7 +208,7 @@ typedef struct {
#if !SPC_NO_COPY_STATE_FUNCS
/* Saves/loads state */
- void spc_copy_state( unsigned char** io, dsp_copy_func_t );
+ void spc_copy_state( uint8_t ** io, dsp_copy_func_t );
#endif
/* rel_time_t - Time relative to m_spc_time. Speeds up code a bit by eliminating
@@ -217,12 +217,12 @@ typedef struct {
typedef struct
{
- int next_time; /* time of next event */
- int prescaler;
- int period;
- int divider;
- int enabled;
- int counter;
+ int32_t next_time; /* time of next event */
+ int32_t prescaler;
+ int32_t period;
+ int32_t divider;
+ int32_t enabled;
+ int32_t counter;
} Timer;
/* Support SNES_MEMORY_APURAM */
@@ -236,30 +236,30 @@ typedef struct
struct
{
- int pc;
- int a;
- int x;
- int y;
- int psw;
- int sp;
+ int32_t pc;
+ int32_t a;
+ int32_t x;
+ int32_t y;
+ int32_t psw;
+ int32_t sp;
} cpu_regs;
- int dsp_time;
- int spc_time;
+ int32_t dsp_time;
+ int32_t spc_time;
- int tempo;
+ int32_t tempo;
- int extra_clocks;
+ int32_t extra_clocks;
int16_t* buf_begin;
int16_t* buf_end;
int16_t* extra_pos;
int16_t extra_buf [EXTRA_SIZE];
- int rom_enabled;
+ int32_t rom_enabled;
uint8_t rom [ROM_SIZE];
uint8_t hi_ram [ROM_SIZE];
- unsigned char cycle_table [256];
+ uint8_t cycle_table [256];
struct
{
@@ -284,22 +284,22 @@ bool S9xInitAPU (void);
void S9xDeinitAPU (void);
void S9xResetAPU (void);
void S9xSoftResetAPU (void);
-uint8_t S9xAPUReadPort (int port);
-void S9xAPUWritePort (int port, uint8_t byte);
+uint8_t S9xAPUReadPort (int32_t port);
+void S9xAPUWritePort (int32_t port, uint8_t byte);
void S9xAPUExecute (void);
void S9xAPUSetReferenceTime (int32_t cpucycles);
-void S9xAPUTimingSetSpeedup (int ticks);
+void S9xAPUTimingSetSpeedup (int32_t ticks);
void S9xAPUAllowTimeOverflow (bool allow);
-void S9xAPULoadState (uint8_t * block);
+void S9xAPULoadState (const uint8_t * block);
void S9xAPUSaveState (uint8_t * block);
-bool S9xInitSound (int buffer_ms, int lag_ms);
+bool S9xInitSound (int32_t buffer_ms, int32_t lag_ms);
bool S9xSyncSound (void);
-int S9xGetSampleCount (void);
+int32_t S9xGetSampleCount (void);
void S9xFinalizeSamples (void);
void S9xClearSamples (void);
-bool S9xMixSamples (int16_t * buffer, unsigned sample_count);
+bool S9xMixSamples (int16_t * buffer, uint32_t sample_count);
void S9xSetSamplesAvailableCallback (apu_callback);
#endif // APU_BLARGG_H
diff --git a/source/blargg_endian.h b/source/blargg_endian.h
index 80ce61e..3fc7296 100644
--- a/source/blargg_endian.h
+++ b/source/blargg_endian.h
@@ -19,12 +19,6 @@
#include <boolean.h>
-#if UINT_MAX < 0xFFFFFFFF || ULONG_MAX == 0xFFFFFFFF
- typedef unsigned long blargg_ulong;
-#else
- typedef unsigned blargg_ulong;
-#endif
-
#include <stdint.h>
/* BLARGG_CPU_CISC: Defined if CPU has very few general-purpose registers (< 16) */
@@ -75,31 +69,31 @@
#define SET_LE32( addr, data ) (void) (*(uint32_t*) (addr) = (data))
#endif
#else
-static INLINE unsigned get_le16( void const* p )
+static INLINE uint32_t get_le16( void const* p )
{
- return (unsigned) ((unsigned char const*) p) [1] << 8 | (unsigned) ((unsigned char const*) p) [0];
+ return (uint32_t) ((uint8_t const*) p) [1] << 8 | (uint32_t) ((uint8_t const*) p) [0];
}
-static INLINE blargg_ulong get_le32( void const* p )
+static INLINE uint32_t get_le32( void const* p )
{
- return (blargg_ulong) ((unsigned char const*) p) [3] << 24 |
- (blargg_ulong) ((unsigned char const*) p) [2] << 16 |
- (blargg_ulong) ((unsigned char const*) p) [1] << 8 |
- (blargg_ulong) ((unsigned char const*) p) [0];
+ return (uint32_t) ((uint8_t const*) p) [3] << 24 |
+ (uint32_t) ((uint8_t const*) p) [2] << 16 |
+ (uint32_t) ((uint8_t const*) p) [1] << 8 |
+ (uint32_t) ((uint8_t const*) p) [0];
}
-static INLINE void set_le16( void* p, unsigned n )
+static INLINE void set_le16( void* p, uint32_t n )
{
- ((unsigned char*) p) [1] = (unsigned char) (n >> 8);
- ((unsigned char*) p) [0] = (unsigned char) n;
+ ((uint8_t*) p) [1] = (uint8_t) (n >> 8);
+ ((uint8_t*) p) [0] = (uint8_t) n;
}
-static INLINE void set_le32( void* p, blargg_ulong n )
+static INLINE void set_le32( void* p, uint32_t n )
{
- ((unsigned char*) p) [0] = (unsigned char) n;
- ((unsigned char*) p) [1] = (unsigned char) (n >> 8);
- ((unsigned char*) p) [2] = (unsigned char) (n >> 16);
- ((unsigned char*) p) [3] = (unsigned char) (n >> 24);
+ ((uint8_t*) p) [0] = (uint8_t) n;
+ ((uint8_t*) p) [1] = (uint8_t) (n >> 8);
+ ((uint8_t*) p) [2] = (uint8_t) (n >> 16);
+ ((uint8_t*) p) [3] = (uint8_t) (n >> 24);
}
#endif
diff --git a/source/c4emu.c b/source/c4emu.c
index 06cdfe3..a6baecf 100644
--- a/source/c4emu.c
+++ b/source/c4emu.c
@@ -59,7 +59,7 @@ static void C4ConvOAM(void)
if (Memory.C4RAM[0x0620] != 0)
{
- int prio, i;
+ int32_t prio, i;
SprCount = 128 - Memory.C4RAM[0x626];
uint8_t offset = (Memory.C4RAM[0x626] & 3) * 2;
for (prio = 0x30; prio >= 0; prio -= 0x10)
@@ -76,7 +76,7 @@ static void C4ConvOAM(void)
uint8_t* sprptr = S9xGetMemPointer(READ_3WORD(srcptr + 7));
if (*sprptr != 0)
{
- int SprCnt;
+ int32_t SprCnt;
int16_t X, Y;
for (SprCnt = *sprptr++; SprCnt > 0 && SprCount > 0; SprCnt--, sprptr += 4)
{
@@ -127,7 +127,7 @@ static void C4ConvOAM(void)
// XXX: Copy to OAM? I doubt it.
}
-static void C4DoScaleRotate(int row_padding)
+static void C4DoScaleRotate(int32_t row_padding)
{
int16_t A, B, C, D;
@@ -203,8 +203,8 @@ static void C4DoScaleRotate(int row_padding)
// Start loop
uint32_t X, Y;
uint8_t byte;
- int outidx = 0;
- int x, y;
+ int32_t outidx = 0;
+ int32_t x, y;
uint8_t bit = 0x80;
for (y = 0; y < h; y++)
{
@@ -279,7 +279,7 @@ static void C4DrawLine(int32_t X1, int32_t Y1, int16_t Z1,
Y2 = (int16_t)C4WFYVal;
// render line
- int i;
+ int32_t i;
for (i = C4WFDist ? C4WFDist : 1; i > 0; i--)
{
//.loop
@@ -306,7 +306,7 @@ static void C4DrawWireFrame(void)
int16_t X2, Y2, Z2;
uint8_t Color;
- int i;
+ int32_t i;
for (i = Memory.C4RAM[0x0295]; i > 0; i--, line += 5)
{
if (line[0] == 0xff && line[1] == 0xff)
@@ -340,7 +340,7 @@ static void C4TransformLines(void)
C4WFDist = Memory.C4RAM[0x1f89];
C4WFScale = Memory.C4RAM[0x1f8c];
- int i;
+ int32_t i;
// transform vertices
uint8_t* ptr = Memory.C4RAM;
@@ -367,7 +367,7 @@ static void C4TransformLines(void)
ptr = Memory.C4RAM + 0xb02;
uint8_t* ptr2 = Memory.C4RAM;
{
- int i;
+ int32_t i;
for (i = READ_WORD(Memory.C4RAM + 0xb00); i > 0; i--, ptr += 2, ptr2 += 8)
{
C4WFXVal = READ_WORD(Memory.C4RAM + (ptr[0] << 4) + 1);
@@ -397,7 +397,7 @@ static void C4BitPlaneWave()
uint16_t mask1 = 0xc0c0;
uint16_t mask2 = 0x3f3f;
- int i, j;
+ int32_t i, j;
for (j = 0; j < 0x10; j++)
{
do
@@ -425,7 +425,7 @@ static void C4BitPlaneWave()
do
{
- int i;
+ int32_t i;
int16_t height = -((int8_t)Memory.C4RAM[waveptr + 0xb00]) - 16;
for (i = 0; i < 40; i++)
{
@@ -477,7 +477,7 @@ static void C4SprDisintegrate()
if ((x >> 8) < width && (y >> 8) < height && (y >> 8)*width + (x >> 8) < 0x2000)
{
uint8_t pixel = (j & 1) ? (*src >> 4) : *src;
- int idx = (y >> 11) * width * 4 + (x >> 11) * 32 + ((y >> 8) & 7) * 2;
+ int32_t idx = (y >> 11) * width * 4 + (x >> 11) * 32 + ((y >> 8) & 7) * 2;
uint8_t mask = 0x80 >> ((x >> 8) & 7);
if (pixel & 1) Memory.C4RAM[idx] |= mask;
if (pixel & 2) Memory.C4RAM[idx + 1] |= mask;
@@ -528,7 +528,7 @@ static void S9xC4ProcessSprites()
void S9xSetC4(uint8_t byte, uint16_t Address)
{
- int i;
+ int32_t i;
Memory.C4RAM [Address - 0x6000] = byte;
if (Address == 0x7f4f)
{
@@ -613,7 +613,7 @@ void S9xSetC4(uint8_t byte, uint16_t Address)
C4CosTable[angle2]) : 0x80000000;
int16_t y = READ_WORD(Memory.C4RAM + 0x1f83) - READ_WORD(Memory.C4RAM + 0x1f89);
int16_t left, right;
- int j;
+ int32_t j;
for (j = 0; j < 225; j++)
{
if (y >= 0)
@@ -681,7 +681,7 @@ void S9xSetC4(uint8_t byte, uint16_t Address)
case 0x40: // Sum
{
- int i;
+ int32_t i;
uint16_t sum = 0;
for (i = 0; i < 0x800; sum += Memory.C4RAM[i++]);
WRITE_WORD(Memory.C4RAM + 0x1f80, sum);
diff --git a/source/cheats.c b/source/cheats.c
index c308c93..b394032 100644
--- a/source/cheats.c
+++ b/source/cheats.c
@@ -9,9 +9,9 @@
#include "cheats.h"
#include "memmap.h"
-static bool S9xAllHex(const char* code, int len)
+static bool S9xAllHex(const char* code, int32_t len)
{
- int i;
+ int32_t i;
for (i = 0; i < len; i++)
if ((code [i] < '0' || code [i] > '9') &&
(code [i] < 'a' || code [i] > 'f') &&
@@ -46,12 +46,12 @@ const char* S9xGoldFingerToRaw(const char* code, uint32_t* address, bool* sram,
if (sscanf(tmp, "%x", address) != 1)
return ("Invalid Gold Finger code.");
- int i;
+ int32_t i;
for (i = 0; i < 3; i++)
{
strncpy(tmp, code + 5 + i * 2, 2);
tmp [2] = 0;
- int byte;
+ int32_t byte;
if (sscanf(tmp, "%x", &byte) != 1)
break;
bytes [i] = (uint8_t) byte;
@@ -76,12 +76,12 @@ const char* S9xGameGenieToRaw(const char* code, uint32_t* address, uint8_t* byte
static char* real_hex = "0123456789ABCDEF";
static char* genie_hex = "DF4709156BC8A23E";
- int i;
+ int32_t i;
for (i = 2; i < 10; i++)
{
if (islower(new_code [i]))
new_code [i] = toupper(new_code [i]);
- int j;
+ int32_t j;
for (j = 0; j < 16; j++)
{
if (new_code [i] == genie_hex [j])
@@ -115,9 +115,9 @@ void S9xStartCheatSearch(SCheatData* d)
memmove(d->CSRAM, d->SRAM, 0x10000);
// memmove may be required: Source is usually a different malloc, but could be pointed to d->CIRAM [Neb]
memmove(d->CIRAM, &d->FillRAM [0x3000], 0x2000);
- memset((char*) d->WRAM_BITS, 0xff, 0x20000 >> 3);
- memset((char*) d->SRAM_BITS, 0xff, 0x10000 >> 3);
- memset((char*) d->IRAM_BITS, 0xff, 0x2000 >> 3);
+ memset(d->WRAM_BITS, 0xff, 0x20000 >> 3);
+ memset(d->SRAM_BITS, 0xff, 0x10000 >> 3);
+ memset(d->IRAM_BITS, 0xff, 0x2000 >> 3);
}
#define BIT_CLEAR(a,v) \
@@ -152,7 +152,7 @@ void S9xStartCheatSearch(SCheatData* d)
void S9xSearchForChange(SCheatData* d, S9xCheatComparisonType cmp,
S9xCheatDataSize size, bool is_signed, bool update)
{
- int l;
+ int32_t l;
switch (size)
{
@@ -171,7 +171,7 @@ void S9xSearchForChange(SCheatData* d, S9xCheatComparisonType cmp,
break;
}
- int i;
+ int32_t i;
if (is_signed)
{
for (i = 0; i < 0x20000 - l; i++)
@@ -254,7 +254,7 @@ void S9xSearchForValue(SCheatData* d, S9xCheatComparisonType cmp,
S9xCheatDataSize size, uint32_t value,
bool is_signed, bool update)
{
- int l;
+ int32_t l;
switch (size)
{
@@ -273,7 +273,7 @@ void S9xSearchForValue(SCheatData* d, S9xCheatComparisonType cmp,
break;
}
- int i;
+ int32_t i;
if (is_signed)
{
@@ -355,7 +355,7 @@ void S9xSearchForValue(SCheatData* d, S9xCheatComparisonType cmp,
void S9xOutputCheatSearchResults(SCheatData* d)
{
- int i;
+ int32_t i;
for (i = 0; i < 0x20000; i++)
{
if (TEST_BIT(d->WRAM_BITS, i))
diff --git a/source/cheats2.c b/source/cheats2.c
index 4ca6b1d..dd4033f 100644
--- a/source/cheats2.c
+++ b/source/cheats2.c
@@ -81,7 +81,7 @@ void S9xRemoveCheat(uint32_t which1)
{
uint32_t address = Cheat.c [which1].address;
- int block = (address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+ int32_t block = (address >> MEMMAP_SHIFT) & MEMMAP_MASK;
uint8_t* ptr = Memory.Map [block];
if (ptr >= (uint8_t*) MAP_LAST)
@@ -100,7 +100,7 @@ void S9xApplyCheat(uint32_t which1)
if (!Cheat.c [which1].saved)
Cheat.c [which1].saved_byte = S9xGetByte(address);
- int block = (address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+ int32_t block = (address >> MEMMAP_SHIFT) & MEMMAP_MASK;
uint8_t* ptr = Memory.Map [block];
if (ptr >= (uint8_t*) MAP_LAST)
diff --git a/source/clip.c b/source/clip.c
index 7931101..1a52bea 100644
--- a/source/clip.c
+++ b/source/clip.c
@@ -23,7 +23,7 @@ struct Band
R.Left = MAX(A.Left, B.Left); \
R.Right = MIN(A.Right, B.Right);}
-static int IntCompare(const void* d1, const void* d2)
+static int32_t IntCompare(const void* d1, const void* d2)
{
if (*(uint32_t*) d1 > *(uint32_t*) d2)
return (1);
@@ -32,7 +32,7 @@ static int IntCompare(const void* d1, const void* d2)
return (0);
}
-static int BandCompare(const void* d1, const void* d2)
+static int32_t BandCompare(const void* d1, const void* d2)
{
if (((struct Band*) d1)->Left > ((struct Band*) d2)->Left)
return (1);
@@ -44,7 +44,7 @@ static int BandCompare(const void* d1, const void* d2)
void ComputeClipWindows()
{
struct ClipData* pClip = &IPPU.Clip [0];
- int c, w, i;
+ int32_t c, w, i;
// Loop around the main screen then the sub-screen.
for (c = 0; c < 2; c++, pClip++)
@@ -81,7 +81,7 @@ void ComputeClipWindows()
{
// The sub-screen is switched off, completely
// clip everything.
- int i;
+ int32_t i;
for (i = 0; i < 6; i++)
{
IPPU.Clip [1].Count [i] = 1;
@@ -95,578 +95,566 @@ void ComputeClipWindows()
}
}
+ if (w == 5 || pClip->Count [5] ||
+ (Memory.FillRAM [0x212c + c] & Memory.FillRAM [0x212e + c] & (1 << w)))
{
- if (w == 5 || pClip->Count [5] ||
+ struct Band Win1[3];
+ struct Band Win2[3];
+ uint32_t Window1Enabled = 0;
+ uint32_t Window2Enabled = 0;
+ bool invert = (w == 5 &&
+ ((c == 1 && (Memory.FillRAM [0x2130] & 0x30) == 0x10) ||
+ (c == 0 && (Memory.FillRAM [0x2130] & 0xc0) == 0x40)));
+
+ if (w == 5 ||
(Memory.FillRAM [0x212c + c] & Memory.FillRAM [0x212e + c] & (1 << w)))
{
- struct Band Win1[3];
- struct Band Win2[3];
- uint32_t Window1Enabled = 0;
- uint32_t Window2Enabled = 0;
- bool invert = (w == 5 &&
- ((c == 1 && (Memory.FillRAM [0x2130] & 0x30) == 0x10) ||
- (c == 0 && (Memory.FillRAM [0x2130] & 0xc0) == 0x40)));
-
- if (w == 5 ||
- (Memory.FillRAM [0x212c + c] & Memory.FillRAM [0x212e + c] & (1 << w)))
+ if (PPU.ClipWindow1Enable [w])
{
- if (PPU.ClipWindow1Enable [w])
+ if (!PPU.ClipWindow1Inside [w])
{
- if (!PPU.ClipWindow1Inside [w])
- {
- Win1[Window1Enabled].Left = PPU.Window1Left;
- Win1[Window1Enabled++].Right = PPU.Window1Right + 1;
- }
- else
+ Win1[Window1Enabled].Left = PPU.Window1Left;
+ Win1[Window1Enabled++].Right = PPU.Window1Right + 1;
+ }
+ else
+ {
+ if (PPU.Window1Left <= PPU.Window1Right)
{
- if (PPU.Window1Left <= PPU.Window1Right)
+ if (PPU.Window1Left > 0)
{
- if (PPU.Window1Left > 0)
- {
- Win1[Window1Enabled].Left = 0;
- Win1[Window1Enabled++].Right = PPU.Window1Left;
- }
- if (PPU.Window1Right < 255)
- {
- Win1[Window1Enabled].Left = PPU.Window1Right + 1;
- Win1[Window1Enabled++].Right = 256;
- }
- if (Window1Enabled == 0)
- {
- Win1[Window1Enabled].Left = 1;
- Win1[Window1Enabled++].Right = 0;
- }
+ Win1[Window1Enabled].Left = 0;
+ Win1[Window1Enabled++].Right = PPU.Window1Left;
}
- else
+ if (PPU.Window1Right < 255)
{
- // 'outside' a window with no range -
- // appears to be the whole screen.
- Win1[Window1Enabled].Left = 0;
+ Win1[Window1Enabled].Left = PPU.Window1Right + 1;
Win1[Window1Enabled++].Right = 256;
}
+ if (Window1Enabled == 0)
+ {
+ Win1[Window1Enabled].Left = 1;
+ Win1[Window1Enabled++].Right = 0;
+ }
}
- }
- if (PPU.ClipWindow2Enable [w])
- {
- if (!PPU.ClipWindow2Inside [w])
+ else
{
- Win2[Window2Enabled].Left = PPU.Window2Left;
- Win2[Window2Enabled++].Right = PPU.Window2Right + 1;
+ // 'outside' a window with no range -
+ // appears to be the whole screen.
+ Win1[Window1Enabled].Left = 0;
+ Win1[Window1Enabled++].Right = 256;
}
- else
+ }
+ }
+ if (PPU.ClipWindow2Enable [w])
+ {
+ if (!PPU.ClipWindow2Inside [w])
+ {
+ Win2[Window2Enabled].Left = PPU.Window2Left;
+ Win2[Window2Enabled++].Right = PPU.Window2Right + 1;
+ }
+ else
+ {
+ if (PPU.Window2Left <= PPU.Window2Right)
{
- if (PPU.Window2Left <= PPU.Window2Right)
+ if (PPU.Window2Left > 0)
{
- if (PPU.Window2Left > 0)
- {
- Win2[Window2Enabled].Left = 0;
- Win2[Window2Enabled++].Right = PPU.Window2Left;
- }
- if (PPU.Window2Right < 255)
- {
- Win2[Window2Enabled].Left = PPU.Window2Right + 1;
- Win2[Window2Enabled++].Right = 256;
- }
- if (Window2Enabled == 0)
- {
- Win2[Window2Enabled].Left = 1;
- Win2[Window2Enabled++].Right = 0;
- }
+ Win2[Window2Enabled].Left = 0;
+ Win2[Window2Enabled++].Right = PPU.Window2Left;
}
- else
+ if (PPU.Window2Right < 255)
{
- Win2[Window2Enabled].Left = 0;
+ Win2[Window2Enabled].Left = PPU.Window2Right + 1;
Win2[Window2Enabled++].Right = 256;
}
+ if (Window2Enabled == 0)
+ {
+ Win2[Window2Enabled].Left = 1;
+ Win2[Window2Enabled++].Right = 0;
+ }
+ }
+ else
+ {
+ Win2[Window2Enabled].Left = 0;
+ Win2[Window2Enabled++].Right = 256;
}
}
}
- if (Window1Enabled && Window2Enabled)
+ }
+ if (Window1Enabled && Window2Enabled)
+ {
+ // Overlap logic
+ //
+ // Each window will be in one of three states:
+ // 1. <no range> (Left > Right. One band)
+ // 2. | ---------------- | (Left >= 0, Right <= 255, Left <= Right. One band)
+ // 3. |------------ ----------| (Left1 == 0, Right1 < Left2; Left2 > Right1, Right2 == 255. Two bands)
+ struct Band Bands [6];
+ int32_t B = 0;
+ switch (PPU.ClipWindowOverlapLogic [w] ^ 1)
{
- // Overlap logic
- //
- // Each window will be in one of three states:
- // 1. <no range> (Left > Right. One band)
- // 2. | ---------------- | (Left >= 0, Right <= 255, Left <= Right. One band)
- // 3. |------------ ----------| (Left1 == 0, Right1 < Left2; Left2 > Right1, Right2 == 255. Two bands)
-
- struct Band Bands [6];
- int B = 0;
- switch (PPU.ClipWindowOverlapLogic [w] ^ 1)
+ case CLIP_OR:
+ if (Window1Enabled == 1)
{
- case CLIP_OR:
- if (Window1Enabled == 1)
+ if (BAND_EMPTY(Win1[0]))
{
- if (BAND_EMPTY(Win1[0]))
- {
- B = Window2Enabled;
- // memmove converted: Different stack allocations [Neb]
- memcpy(Bands, Win2,
- sizeof(Win2[0]) * Window2Enabled);
- }
- else
+ B = Window2Enabled;
+ // memmove converted: Different stack allocations [Neb]
+ memcpy(Bands, Win2, sizeof(Win2[0]) * Window2Enabled);
+ }
+ else
+ {
+ if (Window2Enabled == 1)
{
- if (Window2Enabled == 1)
- {
- if (BAND_EMPTY(Win2[0]))
- Bands[B++] = Win1[0];
- else
- {
- if (BANDS_INTERSECT(Win1[0], Win2[0]))
- {
- OR_BANDS(Bands[0], Win1[0], Win2[0])
- B = 1;
- }
- else
- {
- Bands[B++] = Win1[0];
- Bands[B++] = Win2[0];
- }
- }
- }
+ if (BAND_EMPTY(Win2[0]))
+ Bands[B++] = Win1[0];
else
{
if (BANDS_INTERSECT(Win1[0], Win2[0]))
{
OR_BANDS(Bands[0], Win1[0], Win2[0])
- if (BANDS_INTERSECT(Win1[0], Win2[1]))
- OR_BANDS(Bands[1], Win1[0], Win2[1])
- else
- Bands[1] = Win2[1];
B = 1;
- if (BANDS_INTERSECT(Bands[0], Bands[1]))
- OR_BANDS(Bands[0], Bands[0], Bands[1])
- else
- B = 2;
- }
- else if (BANDS_INTERSECT(Win1[0], Win2[1]))
- {
- Bands[B++] = Win2[0];
- OR_BANDS(Bands[B], Win1[0], Win2[1]);
- B++;
}
else
{
- Bands[0] = Win2[0];
- Bands[1] = Win1[0];
- Bands[2] = Win2[1];
- B = 3;
+ Bands[B++] = Win1[0];
+ Bands[B++] = Win2[0];
}
}
}
- }
- else if (Window2Enabled == 1)
- {
- if (BAND_EMPTY(Win2[0]))
- {
- // Window 2 defines an empty range - just
- // use window 1 as the clipping (which
- // could also be empty).
- B = Window1Enabled;
- // memmove converted: Different stack allocations [Neb]
- memcpy(Bands, Win1,
- sizeof(Win1[0]) * Window1Enabled);
- }
else
{
- // Window 1 has two bands and Window 2 has one.
- // Neither is an empty region.
- if (BANDS_INTERSECT(Win2[0], Win1[0]))
+ if (BANDS_INTERSECT(Win1[0], Win2[0]))
{
- OR_BANDS(Bands[0], Win2[0], Win1[0])
- if (BANDS_INTERSECT(Win2[0], Win1[1]))
- OR_BANDS(Bands[1], Win2[0], Win1[1])
- else
- Bands[1] = Win1[1];
+ OR_BANDS(Bands[0], Win1[0], Win2[0])
+ if (BANDS_INTERSECT(Win1[0], Win2[1]))
+ OR_BANDS(Bands[1], Win1[0], Win2[1])
+ else
+ Bands[1] = Win2[1];
B = 1;
if (BANDS_INTERSECT(Bands[0], Bands[1]))
OR_BANDS(Bands[0], Bands[0], Bands[1])
- else
- B = 2;
+ else
+ B = 2;
}
- else if (BANDS_INTERSECT(Win2[0], Win1[1]))
+ else if (BANDS_INTERSECT(Win1[0], Win2[1]))
{
- Bands[B++] = Win1[0];
- OR_BANDS(Bands[B], Win2[0], Win1[1]);
+ Bands[B++] = Win2[0];
+ OR_BANDS(Bands[B], Win1[0], Win2[1]);
B++;
}
else
{
- Bands[0] = Win1[0];
- Bands[1] = Win2[0];
- Bands[2] = Win1[1];
+ Bands[0] = Win2[0];
+ Bands[1] = Win1[0];
+ Bands[2] = Win2[1];
B = 3;
}
}
}
- else
+ }
+ else if (Window2Enabled == 1)
+ {
+ if (BAND_EMPTY(Win2[0]))
{
- // Both windows have two bands
- OR_BANDS(Bands[0], Win1[0], Win2[0]);
- OR_BANDS(Bands[1], Win1[1], Win2[1]);
- B = 1;
- if (BANDS_INTERSECT(Bands[0], Bands[1]))
- OR_BANDS(Bands[0], Bands[0], Bands[1])
- else
- B = 2;
+ // Window 2 defines an empty range - just
+ // use window 1 as the clipping (which
+ // could also be empty).
+ B = Window1Enabled;
+ // memmove converted: Different stack allocations [Neb]
+ memcpy(Bands, Win1, sizeof(Win1[0]) * Window1Enabled);
}
- break;
-
- case CLIP_AND:
- if (Window1Enabled == 1)
+ else
{
- // Window 1 has one band
- if (BAND_EMPTY(Win1[0]))
- Bands [B++] = Win1[0];
- else if (Window2Enabled == 1)
+ // Window 1 has two bands and Window 2 has one.
+ // Neither is an empty region.
+ if (BANDS_INTERSECT(Win2[0], Win1[0]))
{
- if (BAND_EMPTY(Win2[0]))
- Bands [B++] = Win2[0];
+ OR_BANDS(Bands[0], Win2[0], Win1[0])
+ if (BANDS_INTERSECT(Win2[0], Win1[1]))
+ OR_BANDS(Bands[1], Win2[0], Win1[1])
else
- {
- AND_BANDS(Bands[0], Win1[0], Win2[0]);
- B = 1;
- }
+ Bands[1] = Win1[1];
+ B = 1;
+ if (BANDS_INTERSECT(Bands[0], Bands[1]))
+ OR_BANDS(Bands[0], Bands[0], Bands[1])
+ else
+ B = 2;
+ }
+ else if (BANDS_INTERSECT(Win2[0], Win1[1]))
+ {
+ Bands[B++] = Win1[0];
+ OR_BANDS(Bands[B], Win2[0], Win1[1]);
+ B++;
}
else
{
- AND_BANDS(Bands[0], Win1[0], Win2[0]);
- AND_BANDS(Bands[1], Win1[0], Win2[1]);
- B = 2;
+ Bands[0] = Win1[0];
+ Bands[1] = Win2[0];
+ Bands[2] = Win1[1];
+ B = 3;
}
}
+ }
+ else
+ {
+ // Both windows have two bands
+ OR_BANDS(Bands[0], Win1[0], Win2[0]);
+ OR_BANDS(Bands[1], Win1[1], Win2[1]);
+ B = 1;
+ if (BANDS_INTERSECT(Bands[0], Bands[1]))
+ OR_BANDS(Bands[0], Bands[0], Bands[1])
+ else
+ B = 2;
+ }
+ break;
+ case CLIP_AND:
+ if (Window1Enabled == 1)
+ {
+ // Window 1 has one band
+ if (BAND_EMPTY(Win1[0]))
+ Bands [B++] = Win1[0];
else if (Window2Enabled == 1)
{
if (BAND_EMPTY(Win2[0]))
- Bands[B++] = Win2[0];
+ Bands [B++] = Win2[0];
else
{
- // Window 1 has two bands.
AND_BANDS(Bands[0], Win1[0], Win2[0]);
- AND_BANDS(Bands[1], Win1[1], Win2[0]);
- B = 2;
+ B = 1;
}
}
else
{
- // Both windows have two bands.
AND_BANDS(Bands[0], Win1[0], Win2[0]);
- AND_BANDS(Bands[1], Win1[1], Win2[1]);
+ AND_BANDS(Bands[1], Win1[0], Win2[1]);
B = 2;
- if (BANDS_INTERSECT(Win1[0], Win2[1]))
- {
- AND_BANDS(Bands[2], Win1[0], Win2[1]);
- B = 3;
- }
- else if (BANDS_INTERSECT(Win1[1], Win2[0]))
- {
- AND_BANDS(Bands[2], Win1[1], Win2[0]);
- B = 3;
- }
}
- break;
- case CLIP_XNOR:
- invert = !invert;
+ }
+ else if (Window2Enabled == 1)
+ {
+ if (BAND_EMPTY(Win2[0]))
+ Bands[B++] = Win2[0];
+ else
+ {
+ // Window 1 has two bands.
+ AND_BANDS(Bands[0], Win1[0], Win2[0]);
+ AND_BANDS(Bands[1], Win1[1], Win2[0]);
+ B = 2;
+ }
+ }
+ else
+ {
+ // Both windows have two bands.
+ AND_BANDS(Bands[0], Win1[0], Win2[0]);
+ AND_BANDS(Bands[1], Win1[1], Win2[1]);
+ B = 2;
+ if (BANDS_INTERSECT(Win1[0], Win2[1]))
+ {
+ AND_BANDS(Bands[2], Win1[0], Win2[1]);
+ B = 3;
+ }
+ else if (BANDS_INTERSECT(Win1[1], Win2[0]))
+ {
+ AND_BANDS(Bands[2], Win1[1], Win2[0]);
+ B = 3;
+ }
+ }
+ break;
+ case CLIP_XNOR:
+ invert = !invert;
// Fall...
+ case CLIP_XOR:
+ if (Window1Enabled == 1 && BAND_EMPTY(Win1[0]))
+ {
+ B = Window2Enabled;
+ // memmove converted: Different stack allocations [Neb]
+ memcpy(Bands, Win2, sizeof(Win2[0]) * Window2Enabled);
+ }
+ else if (Window2Enabled == 1 && BAND_EMPTY(Win2[0]))
+ {
+ B = Window1Enabled;
+ // memmove converted: Different stack allocations [Neb]
+ memcpy(Bands, Win1, sizeof(Win1[0]) * Window1Enabled);
+ }
+ else
+ {
+ uint32_t p = 0;
+ uint32_t points [10];
+ uint32_t i;
- case CLIP_XOR:
- if (Window1Enabled == 1 && BAND_EMPTY(Win1[0]))
+ invert = !invert;
+ // Build an array of points (window edges)
+ points [p++] = 0;
+ for (i = 0; i < Window1Enabled; i++)
{
- B = Window2Enabled;
- // memmove converted: Different stack allocations [Neb]
- memcpy(Bands, Win2,
- sizeof(Win2[0]) * Window2Enabled);
+ points [p++] = Win1[i].Left;
+ points [p++] = Win1[i].Right;
}
- else if (Window2Enabled == 1 && BAND_EMPTY(Win2[0]))
+ for (i = 0; i < Window2Enabled; i++)
{
- B = Window1Enabled;
- // memmove converted: Different stack allocations [Neb]
- memcpy(Bands, Win1,
- sizeof(Win1[0]) * Window1Enabled);
+ points [p++] = Win2[i].Left;
+ points [p++] = Win2[i].Right;
+ }
+ points [p++] = 256;
+ // Sort them
+ qsort((void*) points, p, sizeof(points [0]), IntCompare);
+ for (i = 0; i < p; i += 2)
+ {
+ if (points [i] == points [i + 1])
+ continue;
+ Bands [B].Left = points [i];
+ while (i + 2 < p && points [i + 1] == points [i + 2])
+ i += 2;
+ Bands [B++].Right = points [i + 1];
+ }
+ }
+ break;
+ }
+ if (invert)
+ {
+ int32_t b;
+ int32_t j = 0;
+ int32_t empty_band_count = 0;
+
+ // First remove all empty bands from the list.
+ for (b = 0; b < B; b++)
+ {
+ if (!BAND_EMPTY(Bands[b]))
+ {
+ if (b != j)
+ Bands[j] = Bands[b];
+ j++;
}
else
+ empty_band_count++;
+ }
+
+ if (j > 0)
+ {
+ if (j == 1)
{
- uint32_t p = 0;
- uint32_t points [10];
- uint32_t i;
+ j = 0;
+ // Easy case to deal with, so special case it.
- invert = !invert;
- // Build an array of points (window edges)
- points [p++] = 0;
- for (i = 0; i < Window1Enabled; i++)
+ if (Bands[0].Left > 0)
{
- points [p++] = Win1[i].Left;
- points [p++] = Win1[i].Right;
+ pClip->Left[j][w] = 0;
+ pClip->Right[j++][w] = Bands[0].Left + 1;
}
- for (i = 0; i < Window2Enabled; i++)
+ if (Bands[0].Right < 256)
{
- points [p++] = Win2[i].Left;
- points [p++] = Win2[i].Right;
+ pClip->Left[j][w] = Bands[0].Right;
+ pClip->Right[j++][w] = 256;
}
- points [p++] = 256;
- // Sort them
- qsort((void*) points, p, sizeof(points [0]),
- IntCompare);
- for (i = 0; i < p; i += 2)
+ if (j == 0)
{
- if (points [i] == points [i + 1])
- continue;
- Bands [B].Left = points [i];
- while (i + 2 < p &&
- points [i + 1] == points [i + 2])
- i += 2;
- Bands [B++].Right = points [i + 1];
+ pClip->Left[j][w] = 1;
+ pClip->Right[j++][w] = 0;
}
}
- break;
- }
- if (invert)
- {
- int b;
- int j = 0;
- int empty_band_count = 0;
-
- // First remove all empty bands from the list.
- for (b = 0; b < B; b++)
+ else
{
- if (!BAND_EMPTY(Bands[b]))
- {
- if (b != j)
- Bands[j] = Bands[b];
- j++;
- }
- else
- empty_band_count++;
- }
+ // Now sort the bands into order
+ B = j;
+ qsort((void*) Bands, B, sizeof(Bands [0]), BandCompare);
- if (j > 0)
- {
- if (j == 1)
+ // Now invert the area the bands cover
+ j = 0;
+ for (b = 0; b < B; b++)
{
- j = 0;
- // Easy case to deal with, so special case it.
-
- if (Bands[0].Left > 0)
+ if (b == 0 && Bands[b].Left > 0)
{
pClip->Left[j][w] = 0;
- pClip->Right[j++][w] = Bands[0].Left + 1;
+ pClip->Right[j++][w] = Bands[b].Left + 1;
}
- if (Bands[0].Right < 256)
+ else if (b == B - 1 && Bands[b].Right < 256)
{
- pClip->Left[j][w] = Bands[0].Right;
+ pClip->Left[j][w] = Bands[b].Right;
pClip->Right[j++][w] = 256;
}
- if (j == 0)
- {
- pClip->Left[j][w] = 1;
- pClip->Right[j++][w] = 0;
- }
- }
- else
- {
- // Now sort the bands into order
- B = j;
- qsort((void*) Bands, B,
- sizeof(Bands [0]), BandCompare);
-
- // Now invert the area the bands cover
- j = 0;
- for (b = 0; b < B; b++)
+ if (b < B - 1)
{
- if (b == 0 && Bands[b].Left > 0)
- {
- pClip->Left[j][w] = 0;
- pClip->Right[j++][w] = Bands[b].Left + 1;
- }
- else if (b == B - 1 && Bands[b].Right < 256)
- {
- pClip->Left[j][w] = Bands[b].Right;
- pClip->Right[j++][w] = 256;
- }
- if (b < B - 1)
- {
- pClip->Left[j][w] = Bands[b].Right;
- pClip->Right[j++][w] = Bands[b + 1].Left + 1;
- }
+ pClip->Left[j][w] = Bands[b].Right;
+ pClip->Right[j++][w] = Bands[b + 1].Left + 1;
}
}
}
- else
- {
- // Inverting a window that consisted of only
- // empty bands is the whole width of the screen.
- // Needed for Mario Kart's rear-view mirror display.
- if (empty_band_count)
- {
- pClip->Left[j][w] = 0;
- pClip->Right[j][w] = 256;
- j++;
- }
- }
- pClip->Count[w] = j;
}
else
{
- int j;
- for (j = 0; j < B; j++)
+ // Inverting a window that consisted of only
+ // empty bands is the whole width of the screen.
+ // Needed for Mario Kart's rear-view mirror display.
+ if (empty_band_count)
{
- pClip->Left[j][w] = Bands[j].Left;
- pClip->Right[j][w] = Bands[j].Right;
+ pClip->Left[j][w] = 0;
+ pClip->Right[j][w] = 256;
+ j++;
}
- pClip->Count [w] = B;
}
+ pClip->Count[w] = j;
}
else
{
- // Only one window enabled so no need to perform
- // complex overlap logic...
+ int32_t j;
+ for (j = 0; j < B; j++)
+ {
+ pClip->Left[j][w] = Bands[j].Left;
+ pClip->Right[j][w] = Bands[j].Right;
+ }
+ pClip->Count [w] = B;
+ }
+ }
+ else
+ {
+ // Only one window enabled so no need to perform
+ // complex overlap logic...
- if (Window1Enabled)
+ if (Window1Enabled)
+ {
+ if (invert)
{
- if (invert)
- {
- int j = 0;
+ int32_t j = 0;
- if (Window1Enabled == 1)
+ if (Window1Enabled == 1)
+ {
+ if (Win1[0].Left <= Win1[0].Right)
{
- if (Win1[0].Left <= Win1[0].Right)
+ if (Win1[0].Left > 0)
{
- if (Win1[0].Left > 0)
- {
- pClip->Left[j][w] = 0;
- pClip->Right[j++][w] = Win1[0].Left;
- }
- if (Win1[0].Right < 256)
- {
- pClip->Left[j][w] = Win1[0].Right;
- pClip->Right[j++][w] = 256;
- }
- if (j == 0)
- {
- pClip->Left[j][w] = 1;
- pClip->Right[j++][w] = 0;
- }
+ pClip->Left[j][w] = 0;
+ pClip->Right[j++][w] = Win1[0].Left;
}
- else
+ if (Win1[0].Right < 256)
{
- pClip->Left[j][w] = 0;
+ pClip->Left[j][w] = Win1[0].Right;
pClip->Right[j++][w] = 256;
}
+ if (j == 0)
+ {
+ pClip->Left[j][w] = 1;
+ pClip->Right[j++][w] = 0;
+ }
}
else
{
- pClip->Left [j][w] = Win1[0].Right;
- pClip->Right[j++][w] = Win1[1].Left;
+ pClip->Left[j][w] = 0;
+ pClip->Right[j++][w] = 256;
}
- pClip->Count [w] = j;
}
else
{
- uint32_t j;
- for (j = 0; j < Window1Enabled; j++)
- {
- pClip->Left [j][w] = Win1[j].Left;
- pClip->Right [j][w] = Win1[j].Right;
- }
- pClip->Count [w] = Window1Enabled;
+ pClip->Left [j][w] = Win1[0].Right;
+ pClip->Right[j++][w] = Win1[1].Left;
}
+ pClip->Count [w] = j;
}
- else if (Window2Enabled)
+ else
{
- if (invert)
+ uint32_t j;
+ for (j = 0; j < Window1Enabled; j++)
{
- int j = 0;
- if (Window2Enabled == 1)
+ pClip->Left [j][w] = Win1[j].Left;
+ pClip->Right [j][w] = Win1[j].Right;
+ }
+ pClip->Count [w] = Window1Enabled;
+ }
+ }
+ else if (Window2Enabled)
+ {
+ if (invert)
+ {
+ int32_t j = 0;
+ if (Window2Enabled == 1)
+ {
+ if (Win2[0].Left <= Win2[0].Right)
{
- if (Win2[0].Left <= Win2[0].Right)
+ if (Win2[0].Left > 0)
{
- if (Win2[0].Left > 0)
- {
- pClip->Left[j][w] = 0;
- pClip->Right[j++][w] = Win2[0].Left;
- }
- if (Win2[0].Right < 256)
- {
- pClip->Left[j][w] = Win2[0].Right;
- pClip->Right[j++][w] = 256;
- }
- if (j == 0)
- {
- pClip->Left[j][w] = 1;
- pClip->Right[j++][w] = 0;
- }
+ pClip->Left[j][w] = 0;
+ pClip->Right[j++][w] = Win2[0].Left;
}
- else
+ if (Win2[0].Right < 256)
{
- pClip->Left[j][w] = 0;
+ pClip->Left[j][w] = Win2[0].Right;
pClip->Right[j++][w] = 256;
}
+ if (j == 0)
+ {
+ pClip->Left[j][w] = 1;
+ pClip->Right[j++][w] = 0;
+ }
}
else
{
- pClip->Left [j][w] = Win2[0].Right;
- pClip->Right[j++][w] = Win2[1].Left + 1;
+ pClip->Left[j][w] = 0;
+ pClip->Right[j++][w] = 256;
}
- pClip->Count [w] = j;
}
else
{
- uint32_t j;
- for (j = 0; j < Window2Enabled; j++)
- {
- pClip->Left [j][w] = Win2[j].Left;
- pClip->Right [j][w] = Win2[j].Right;
- }
- pClip->Count [w] = Window2Enabled;
+ pClip->Left [j][w] = Win2[0].Right;
+ pClip->Right[j++][w] = Win2[1].Left + 1;
+ }
+ pClip->Count [w] = j;
+ }
+ else
+ {
+ uint32_t j;
+ for (j = 0; j < Window2Enabled; j++)
+ {
+ pClip->Left [j][w] = Win2[j].Left;
+ pClip->Right [j][w] = Win2[j].Right;
}
+ pClip->Count [w] = Window2Enabled;
}
}
+ }
- if (w != 5 && pClip->Count [5])
+ if (w != 5 && pClip->Count [5])
+ {
+ // Colour window enabled. Set the
+ // clip windows for all remaining backgrounds to be
+ // the same as the colour window.
+ if (pClip->Count [w] == 0)
{
- // Colour window enabled. Set the
- // clip windows for all remaining backgrounds to be
- // the same as the colour window.
- if (pClip->Count [w] == 0)
+ uint32_t i;
+ pClip->Count [w] = pClip->Count [5];
+ for (i = 0; i < pClip->Count [w]; i++)
{
- uint32_t i;
- pClip->Count [w] = pClip->Count [5];
- for (i = 0; i < pClip->Count [w]; i++)
- {
- pClip->Left [i][w] = pClip->Left [i][5];
- pClip->Right [i][w] = pClip->Right [i][5];
- }
+ pClip->Left [i][w] = pClip->Left [i][5];
+ pClip->Right [i][w] = pClip->Right [i][5];
}
- else
+ }
+ else
+ {
+ // Intersect the colour window with the bg's
+ // own clip window.
+ uint32_t i;
+ for (i = 0; i < pClip->Count [w]; i++)
{
- // Intersect the colour window with the bg's
- // own clip window.
- uint32_t i;
- for (i = 0; i < pClip->Count [w]; i++)
+ uint32_t j;
+ for (j = 0; j < pClip->Count [5]; j++)
{
- uint32_t j;
- for (j = 0; j < pClip->Count [5]; j++)
+ if ((pClip->Left[i][w] >= pClip->Left[j][5]
+ && pClip->Left[i][w] < pClip->Right[j][5])
+ || (pClip->Left[j][5] >= pClip->Left[i][w]
+ && pClip->Left[j][5] < pClip->Right[i][w]))
{
- if ((pClip->Left[i][w] >= pClip->Left[j][5]
- && pClip->Left[i][w] < pClip->Right[j][5])
- || (pClip->Left[j][5] >= pClip->Left[i][w]
- && pClip->Left[j][5] < pClip->Right[i][w]))
- {
- // Found an intersection!
- pClip->Left[i][w] = MAX(pClip->Left[i][w], pClip->Left[j][5]);
- pClip->Right[i][w] = MIN(pClip->Right[i][w], pClip->Right[j][5]);
- goto Clip_ok;
- }
+ // Found an intersection!
+ pClip->Left[i][w] = MAX(pClip->Left[i][w], pClip->Left[j][5]);
+ pClip->Right[i][w] = MIN(pClip->Right[i][w], pClip->Right[j][5]);
+ goto Clip_ok;
}
- // no intersection, nullify it
- pClip->Left[i][w] = 1;
- pClip->Right[i][w] = 0;
-Clip_ok:;
}
+ // no intersection, nullify it
+ pClip->Left[i][w] = 1;
+ pClip->Right[i][w] = 0;
+Clip_ok:;
}
}
- } // if (w == 5 | ...
- } // if (!Settings.DisableGraphicWindows)
- } // for (int w...
- } // for (int c...
+ }
+ } // if (w == 5 || pClip->Count [5] ...
+ } // for (w...
+ } // for (c...
}
diff --git a/source/cpuaddr.h b/source/cpuaddr.h
index 6f5e930..3531686 100644
--- a/source/cpuaddr.h
+++ b/source/cpuaddr.h
@@ -13,18 +13,18 @@ typedef enum
} AccessMode;
// The type for a function that can run after the addressing mode is resolved:
-typedef void (*InternalOp)(long);
+typedef void (*InternalOp)(int32_t);
static void Immediate8(AccessMode a, InternalOp op)
{
- long Addr = ICPU.ShiftedPB + CPU.PC - CPU.PCBase;
+ int32_t Addr = ICPU.ShiftedPB + CPU.PC - CPU.PCBase;
CPU.PC++;
(*op)(Addr);
}
static void Immediate16(AccessMode a, InternalOp op)
{
- long Addr = ICPU.ShiftedPB + CPU.PC - CPU.PCBase;
+ int32_t Addr = ICPU.ShiftedPB + CPU.PC - CPU.PCBase;
CPU.PC += 2;
(*op)(Addr);
}
@@ -32,13 +32,13 @@ static void Immediate16(AccessMode a, InternalOp op)
static void Relative(AccessMode a, InternalOp op)
{
int8_t Int8 = *CPU.PC++;
- long Addr = ((intptr_t)(CPU.PC - CPU.PCBase) + Int8) & 0xffff;
+ int32_t Addr = ((int32_t)(CPU.PC - CPU.PCBase) + Int8) & 0xffff;
(*op)(Addr);
}
static void RelativeLong(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = *(uint16_t*) CPU.PC;
#else
@@ -52,7 +52,7 @@ static void RelativeLong(AccessMode a, InternalOp op)
static void AbsoluteIndexedIndirect(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = (ICPU.Registers.X.W + * (uint16_t*) CPU.PC) & 0xffff;
#else
@@ -67,7 +67,7 @@ static void AbsoluteIndexedIndirect(AccessMode a, InternalOp op)
static void AbsoluteIndirectLong(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = *(uint16_t*) CPU.PC;
#else
@@ -85,7 +85,7 @@ static void AbsoluteIndirectLong(AccessMode a, InternalOp op)
static void AbsoluteIndirect(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = *(uint16_t*) CPU.PC;
#else
@@ -102,7 +102,7 @@ static void AbsoluteIndirect(AccessMode a, InternalOp op)
static void Absolute(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = *(uint16_t*) CPU.PC + ICPU.ShiftedDB;
#else
@@ -115,11 +115,11 @@ static void Absolute(AccessMode a, InternalOp op)
static void AbsoluteLong(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = (*(uint32_t*) CPU.PC) & 0xffffff;
#elif defined FAST_ALIGNED_LSB_WORD_ACCESS
- if (((intptr_t) CPU.PC & 1) == 0)
+ if (((int32_t) CPU.PC & 1) == 0)
Addr = (*(uint16_t*) CPU.PC) + (*(CPU.PC + 2) << 16);
else
Addr = *CPU.PC + ((*(uint16_t*)(CPU.PC + 1)) << 8);
@@ -134,14 +134,14 @@ static void AbsoluteLong(AccessMode a, InternalOp op)
static void Direct(AccessMode a, InternalOp op)
{
if (a & READ) OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
(*op)(Addr);
}
static void DirectIndirectIndexed(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
Addr = S9xGetWord(Addr);
if (a & READ) OpenBus = (uint8_t)(Addr >> 8);
@@ -155,7 +155,7 @@ static void DirectIndirectIndexed(AccessMode a, InternalOp op)
static void DirectIndirectIndexedLong(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
if (a & READ)
Addr = S9xGetWord(Addr) + ((OpenBus = S9xGetByte(Addr + 2)) << 16) +
@@ -168,7 +168,7 @@ static void DirectIndirectIndexedLong(AccessMode a, InternalOp op)
static void DirectIndexedIndirect(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.X.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.X.W) & 0xffff;
Addr = S9xGetWord(Addr);
if (a & READ) OpenBus = (uint8_t)(Addr >> 8);
@@ -179,7 +179,7 @@ static void DirectIndexedIndirect(AccessMode a, InternalOp op)
static void DirectIndexedX(AccessMode a, InternalOp op)
{
if (a & READ) OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.X.W);
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.X.W);
Addr &= CheckEmulation() ? 0xff : 0xffff;
(*op)(Addr);
@@ -188,14 +188,14 @@ static void DirectIndexedX(AccessMode a, InternalOp op)
static void DirectIndexedY(AccessMode a, InternalOp op)
{
if (a & READ) OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.Y.W);
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W + ICPU.Registers.Y.W);
Addr &= CheckEmulation() ? 0xff : 0xffff;
(*op)(Addr);
}
static void AbsoluteIndexedX(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = ICPU.ShiftedDB + *(uint16_t*) CPU.PC + ICPU.Registers.X.W;
#else
@@ -211,7 +211,7 @@ static void AbsoluteIndexedX(AccessMode a, InternalOp op)
static void AbsoluteIndexedY(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = ICPU.ShiftedDB + *(uint16_t*) CPU.PC + ICPU.Registers.Y.W;
#else
@@ -227,16 +227,14 @@ static void AbsoluteIndexedY(AccessMode a, InternalOp op)
static void AbsoluteLongIndexedX(AccessMode a, InternalOp op)
{
- long Addr;
+ int32_t Addr;
#ifdef FAST_LSB_WORD_ACCESS
Addr = (*(uint32_t*) CPU.PC + ICPU.Registers.X.W) & 0xffffff;
#elif defined FAST_ALIGNED_LSB_WORD_ACCESS
- if (((intptr_t) CPU.PC & 1) == 0)
- Addr = ((*(uint16_t*) CPU.PC) + (*(CPU.PC + 2) << 16) + ICPU.Registers.X.W) &
- 0xFFFFFF;
+ if (((int32_t) CPU.PC & 1) == 0)
+ Addr = ((*(uint16_t*) CPU.PC) + (*(CPU.PC + 2) << 16) + ICPU.Registers.X.W) & 0xFFFFFF;
else
- Addr = (*CPU.PC + ((*(uint16_t*)(CPU.PC + 1)) << 8) + ICPU.Registers.X.W) &
- 0xFFFFFF;
+ Addr = (*CPU.PC + ((*(uint16_t*)(CPU.PC + 1)) << 8) + ICPU.Registers.X.W) & 0xFFFFFF;
#else
Addr = (*CPU.PC + (*(CPU.PC + 1) << 8) + (*(CPU.PC + 2) << 16) +
ICPU.Registers.X.W) & 0xffffff;
@@ -249,7 +247,7 @@ static void AbsoluteLongIndexedX(AccessMode a, InternalOp op)
static void DirectIndirect(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
Addr = S9xGetWord(Addr);
if (a & READ) OpenBus = (uint8_t)(Addr >> 8);
Addr += ICPU.ShiftedDB;
@@ -259,7 +257,7 @@ static void DirectIndirect(AccessMode a, InternalOp op)
static void DirectIndirectLong(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.D.W) & 0xffff;
if (a & READ)
Addr = S9xGetWord(Addr) + ((OpenBus = S9xGetByte(Addr + 2)) << 16);
else
@@ -270,14 +268,14 @@ static void DirectIndirectLong(AccessMode a, InternalOp op)
static void StackRelative(AccessMode a, InternalOp op)
{
if (a & READ) OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.S.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.S.W) & 0xffff;
(*op)(Addr);
}
static void StackRelativeIndirectIndexed(AccessMode a, InternalOp op)
{
OpenBus = *CPU.PC;
- long Addr = (*CPU.PC++ + ICPU.Registers.S.W) & 0xffff;
+ int32_t Addr = (*CPU.PC++ + ICPU.Registers.S.W) & 0xffff;
Addr = S9xGetWord(Addr);
if (a & READ) OpenBus = (uint8_t)(Addr >> 8);
Addr = (Addr + ICPU.ShiftedDB +
diff --git a/source/cpuexec.h b/source/cpuexec.h
index 5ecce18..c4342be 100644
--- a/source/cpuexec.h
+++ b/source/cpuexec.h
@@ -102,7 +102,7 @@ static inline void S9xFixCycles()
static inline void S9xReschedule()
{
uint8_t which;
- long max;
+ int32_t max;
if (CPU.WhichEvent == HBLANK_START_EVENT ||
CPU.WhichEvent == HTIMER_AFTER_EVENT)
@@ -117,12 +117,12 @@ static inline void S9xReschedule()
}
if (PPU.HTimerEnabled &&
- (long) PPU.HTimerPosition < max &&
- (long) PPU.HTimerPosition > CPU.NextEvent &&
+ (int32_t) PPU.HTimerPosition < max &&
+ (int32_t) PPU.HTimerPosition > CPU.NextEvent &&
(!PPU.VTimerEnabled ||
- (PPU.VTimerEnabled && CPU.V_Counter == PPU.IRQVBeamPos)))
+ (PPU.VTimerEnabled && CPU.V_Counter == PPU.IRQVBeamPos)))
{
- which = (long) PPU.HTimerPosition < Settings.HBlankStart ?
+ which = (int32_t) PPU.HTimerPosition < Settings.HBlankStart ?
HTIMER_BEFORE_EVENT : HTIMER_AFTER_EVENT;
max = PPU.HTimerPosition;
}
diff --git a/source/cpumacro.h b/source/cpumacro.h
index b9195ef..eb76b69 100644
--- a/source/cpumacro.h
+++ b/source/cpumacro.h
@@ -15,7 +15,7 @@ static void SetZN8(uint8_t Work)
ICPU._Negative = Work;
}
-static void ADC8(long Addr)
+static void ADC8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
@@ -68,7 +68,7 @@ static void ADC8(long Addr)
SetZN8(ICPU.Registers.AL);
}
-static void ADC16(long Addr)
+static void ADC16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
@@ -141,13 +141,13 @@ static void ADC16(long Addr)
SetZN16(ICPU.Registers.A.W);
}
-static void AND16(long Addr)
+static void AND16(int32_t Addr)
{
ICPU.Registers.A.W &= S9xGetWord(Addr);
SetZN16(ICPU.Registers.A.W);
}
-static void AND8(long Addr)
+static void AND8(int32_t Addr)
{
ICPU.Registers.AL &= S9xGetByte(Addr);
SetZN8(ICPU.Registers.AL);
@@ -173,7 +173,7 @@ static inline void A_ASL8()
SetZN8(ICPU.Registers.AL);
}
-static void ASL16(long Addr)
+static void ASL16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
ICPU._Carry = (Work16 & 0x8000) != 0;
@@ -183,7 +183,7 @@ static void ASL16(long Addr)
SetZN16(Work16);
}
-static void ASL8(long Addr)
+static void ASL8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
ICPU._Carry = (Work8 & 0x80) != 0;
@@ -192,7 +192,7 @@ static void ASL8(long Addr)
SetZN8(Work8);
}
-static void BIT16(long Addr)
+static void BIT16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
ICPU._Overflow = (Work16 & 0x4000) != 0;
@@ -200,7 +200,7 @@ static void BIT16(long Addr)
ICPU._Zero = (Work16 & ICPU.Registers.A.W) != 0;
}
-static void BIT8(long Addr)
+static void BIT8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
ICPU._Overflow = (Work8 & 0x40) != 0;
@@ -208,31 +208,28 @@ static void BIT8(long Addr)
ICPU._Zero = Work8 & ICPU.Registers.AL;
}
-static void CMP16(long Addr)
+static void CMP16(int32_t Addr)
{
- int32_t Int32 = (long) ICPU.Registers.A.W -
- (long) S9xGetWord(Addr);
+ int32_t Int32 = (int32_t) ICPU.Registers.A.W - (int32_t) S9xGetWord(Addr);
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
}
-static void CMP8(long Addr)
+static void CMP8(int32_t Addr)
{
- int16_t Int16 = (int16_t) ICPU.Registers.AL -
- (int16_t) S9xGetByte(Addr);
+ int16_t Int16 = (int16_t) ICPU.Registers.AL - (int16_t) S9xGetByte(Addr);
ICPU._Carry = Int16 >= 0;
SetZN8((uint8_t) Int16);
}
-static void CMX16(long Addr)
+static void CMX16(int32_t Addr)
{
- int32_t Int32 = (long) ICPU.Registers.X.W -
- (long) S9xGetWord(Addr);
+ int32_t Int32 = (int32_t) ICPU.Registers.X.W - (int32_t) S9xGetWord(Addr);
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
}
-static void CMX8(long Addr)
+static void CMX8(int32_t Addr)
{
int16_t Int16 = (int16_t) ICPU.Registers.XL -
(int16_t) S9xGetByte(Addr);
@@ -240,15 +237,14 @@ static void CMX8(long Addr)
SetZN8((uint8_t) Int16);
}
-static void CMY16(long Addr)
+static void CMY16(int32_t Addr)
{
- int32_t Int32 = (long) ICPU.Registers.Y.W -
- (long) S9xGetWord(Addr);
+ int32_t Int32 = (int32_t) ICPU.Registers.Y.W - (int32_t) S9xGetWord(Addr);
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
}
-static void CMY8(long Addr)
+static void CMY8(int32_t Addr)
{
int16_t Int16 = (int16_t) ICPU.Registers.YL -
(int16_t) S9xGetByte(Addr);
@@ -282,7 +278,7 @@ static inline void A_DEC8()
SetZN8(ICPU.Registers.AL);
}
-static void DEC16(long Addr)
+static void DEC16(int32_t Addr)
{
#ifdef CPU_SHUTDOWN
CPU.WaitAddress = NULL;
@@ -294,7 +290,7 @@ static void DEC16(long Addr)
SetZN16(Work16);
}
-static void DEC8(long Addr)
+static void DEC8(int32_t Addr)
{
#ifdef CPU_SHUTDOWN
CPU.WaitAddress = NULL;
@@ -305,13 +301,13 @@ static void DEC8(long Addr)
SetZN8(Work8);
}
-static void EOR16(long Addr)
+static void EOR16(int32_t Addr)
{
ICPU.Registers.A.W ^= S9xGetWord(Addr);
SetZN16(ICPU.Registers.A.W);
}
-static void EOR8(long Addr)
+static void EOR8(int32_t Addr)
{
ICPU.Registers.AL ^= S9xGetByte(Addr);
SetZN8(ICPU.Registers.AL);
@@ -343,7 +339,7 @@ static inline void A_INC8()
SetZN8(ICPU.Registers.AL);
}
-static void INC16(long Addr)
+static void INC16(int32_t Addr)
{
#ifdef CPU_SHUTDOWN
CPU.WaitAddress = NULL;
@@ -355,7 +351,7 @@ static void INC16(long Addr)
SetZN16(Work16);
}
-static void INC8(long Addr)
+static void INC8(int32_t Addr)
{
#ifdef CPU_SHUTDOWN
CPU.WaitAddress = NULL;
@@ -366,37 +362,37 @@ static void INC8(long Addr)
SetZN8(Work8);
}
-static void LDA16(long Addr)
+static void LDA16(int32_t Addr)
{
ICPU.Registers.A.W = S9xGetWord(Addr);
SetZN16(ICPU.Registers.A.W);
}
-static void LDA8(long Addr)
+static void LDA8(int32_t Addr)
{
ICPU.Registers.AL = S9xGetByte(Addr);
SetZN8(ICPU.Registers.AL);
}
-static void LDX16(long Addr)
+static void LDX16(int32_t Addr)
{
ICPU.Registers.X.W = S9xGetWord(Addr);
SetZN16(ICPU.Registers.X.W);
}
-static void LDX8(long Addr)
+static void LDX8(int32_t Addr)
{
ICPU.Registers.XL = S9xGetByte(Addr);
SetZN8(ICPU.Registers.XL);
}
-static void LDY16(long Addr)
+static void LDY16(int32_t Addr)
{
ICPU.Registers.Y.W = S9xGetWord(Addr);
SetZN16(ICPU.Registers.Y.W);
}
-static void LDY8(long Addr)
+static void LDY8(int32_t Addr)
{
ICPU.Registers.YL = S9xGetByte(Addr);
SetZN8(ICPU.Registers.YL);
@@ -422,7 +418,7 @@ static inline void A_LSR8()
SetZN8(ICPU.Registers.AL);
}
-static void LSR16(long Addr)
+static void LSR16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
ICPU._Carry = Work16 & 1;
@@ -432,7 +428,7 @@ static void LSR16(long Addr)
SetZN16(Work16);
}
-static void LSR8(long Addr)
+static void LSR8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
ICPU._Carry = Work8 & 1;
@@ -441,13 +437,13 @@ static void LSR8(long Addr)
SetZN8(Work8);
}
-static void ORA16(long Addr)
+static void ORA16(int32_t Addr)
{
ICPU.Registers.A.W |= S9xGetWord(Addr);
SetZN16(ICPU.Registers.A.W);
}
-static void ORA8(long Addr)
+static void ORA8(int32_t Addr)
{
ICPU.Registers.AL |= S9xGetByte(Addr);
SetZN8(ICPU.Registers.AL);
@@ -477,7 +473,7 @@ static inline void A_ROL8()
SetZN8((uint8_t) Work16);
}
-static void ROL16(long Addr)
+static void ROL16(int32_t Addr)
{
uint32_t Work32 = S9xGetWord(Addr);
Work32 <<= 1;
@@ -488,7 +484,7 @@ static void ROL16(long Addr)
SetZN16((uint16_t) Work32);
}
-static void ROL8(long Addr)
+static void ROL8(int32_t Addr)
{
uint16_t Work16 = S9xGetByte(Addr);
Work16 <<= 1;
@@ -504,7 +500,7 @@ static inline void A_ROR16()
CPU.Cycles += ONE_CYCLE;
#endif
uint32_t Work32 = ICPU.Registers.A.W;
- Work32 |= (int) CheckCarry() << 16;
+ Work32 |= (int32_t) CheckCarry() << 16;
ICPU._Carry = (uint8_t)(Work32 & 1);
Work32 >>= 1;
ICPU.Registers.A.W = (uint16_t) Work32;
@@ -523,10 +519,10 @@ static inline void A_ROR8()
SetZN8((uint8_t) Work16);
}
-static void ROR16(long Addr)
+static void ROR16(int32_t Addr)
{
uint32_t Work32 = S9xGetWord(Addr);
- Work32 |= (int) CheckCarry() << 16;
+ Work32 |= (int32_t) CheckCarry() << 16;
ICPU._Carry = (uint8_t)(Work32 & 1);
Work32 >>= 1;
S9xSetByte((Work32 >> 8) & 0x00FF, Addr + 1);
@@ -534,17 +530,17 @@ static void ROR16(long Addr)
SetZN16((uint16_t) Work32);
}
-static void ROR8(long Addr)
+static void ROR8(int32_t Addr)
{
uint16_t Work16 = S9xGetByte(Addr);
- Work16 |= (int) CheckCarry() << 8;
+ Work16 |= (int32_t) CheckCarry() << 8;
ICPU._Carry = (uint8_t)(Work16 & 1);
Work16 >>= 1;
S9xSetByte((uint8_t) Work16, Addr);
SetZN8((uint8_t) Work16);
}
-static void SBC16(long Addr)
+static void SBC16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
@@ -597,9 +593,7 @@ static void SBC16(long Addr)
}
else
{
-
- int32_t Int32 = (long) ICPU.Registers.A.W - (long) Work16 +
- (long) CheckCarry() - 1;
+ int32_t Int32 = (int32_t) ICPU.Registers.A.W - (int32_t) Work16 + (int32_t) CheckCarry() - 1;
ICPU._Carry = Int32 >= 0;
@@ -613,7 +607,7 @@ static void SBC16(long Addr)
}
}
-static void SBC8(long Addr)
+static void SBC8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
if (CheckDecimal())
@@ -663,47 +657,47 @@ static void SBC8(long Addr)
}
}
-static void STA16(long Addr)
+static void STA16(int32_t Addr)
{
S9xSetWord(ICPU.Registers.A.W, Addr);
}
-static void STA8(long Addr)
+static void STA8(int32_t Addr)
{
S9xSetByte(ICPU.Registers.AL, Addr);
}
-static void STX16(long Addr)
+static void STX16(int32_t Addr)
{
S9xSetWord(ICPU.Registers.X.W, Addr);
}
-static void STX8(long Addr)
+static void STX8(int32_t Addr)
{
S9xSetByte(ICPU.Registers.XL, Addr);
}
-static void STY16(long Addr)
+static void STY16(int32_t Addr)
{
S9xSetWord(ICPU.Registers.Y.W, Addr);
}
-static void STY8(long Addr)
+static void STY8(int32_t Addr)
{
S9xSetByte(ICPU.Registers.YL, Addr);
}
-static void STZ16(long Addr)
+static void STZ16(int32_t Addr)
{
S9xSetWord(0, Addr);
}
-static void STZ8(long Addr)
+static void STZ8(int32_t Addr)
{
S9xSetByte(0, Addr);
}
-static void TSB16(long Addr)
+static void TSB16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
ICPU._Zero = (Work16 & ICPU.Registers.A.W) != 0;
@@ -712,7 +706,7 @@ static void TSB16(long Addr)
S9xSetByte(Work16 & 0xFF, Addr);
}
-static void TSB8(long Addr)
+static void TSB8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
ICPU._Zero = Work8 & ICPU.Registers.AL;
@@ -720,7 +714,7 @@ static void TSB8(long Addr)
S9xSetByte(Work8, Addr);
}
-static void TRB16(long Addr)
+static void TRB16(int32_t Addr)
{
uint16_t Work16 = S9xGetWord(Addr);
ICPU._Zero = (Work16 & ICPU.Registers.A.W) != 0;
@@ -729,7 +723,7 @@ static void TRB16(long Addr)
S9xSetByte(Work16 & 0xFF, Addr);
}
-static void TRB8(long Addr)
+static void TRB8(int32_t Addr)
{
uint8_t Work8 = S9xGetByte(Addr);
ICPU._Zero = Work8 & ICPU.Registers.AL;
diff --git a/source/cpuops.c b/source/cpuops.c
index 3bf9a36..2325255 100644
--- a/source/cpuops.c
+++ b/source/cpuops.c
@@ -18,10 +18,10 @@
#include "cpumacro.h"
#include "apu.h"
-long OpAddress;
+int32_t OpAddress;
// For use with the opcodes whose functions here examine the OpAddress.
-static void OpAddressPassthrough(long Addr)
+static void OpAddressPassthrough(int32_t Addr)
{
OpAddress = Addr;
}
@@ -678,7 +678,7 @@ static void Op3CM0(void)
/* CMP *************************************************************************************** */
static void OpC9M1(void)
{
- int32_t Int32 = (int) ICPU.Registers.AL - (intptr_t) * CPU.PC++;
+ int32_t Int32 = (int32_t) ICPU.Registers.AL - (int32_t) *CPU.PC++;
ICPU._Carry = Int32 >= 0;
SetZN8((uint8_t) Int32);
#ifndef SA1_OPCODES
@@ -690,10 +690,9 @@ static void OpC9M0(void)
{
int32_t Int32;
#ifdef FAST_LSB_WORD_ACCESS
- Int32 = (long) ICPU.Registers.A.W - (long) * (uint16_t*) CPU.PC;
+ Int32 = (int32_t) ICPU.Registers.A.W - (int32_t) *(uint16_t*)CPU.PC;
#else
- Int32 = (long) ICPU.Registers.A.W -
- (long)(*CPU.PC + (*(CPU.PC + 1) << 8));
+ Int32 = (int32_t) ICPU.Registers.A.W - (int32_t)(*CPU.PC + (*(CPU.PC + 1) << 8));
#endif
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
@@ -932,7 +931,7 @@ static void OpD3M0(void)
/* CMX *************************************************************************************** */
static void OpE0X1(void)
{
- int32_t Int32 = (int) ICPU.Registers.XL - (intptr_t) * CPU.PC++;
+ int32_t Int32 = (int32_t) ICPU.Registers.XL - (int32_t) *CPU.PC++;
ICPU._Carry = Int32 >= 0;
SetZN8((uint8_t) Int32);
#ifndef SA1_OPCODES
@@ -944,10 +943,9 @@ static void OpE0X0(void)
{
int32_t Int32;
#ifdef FAST_LSB_WORD_ACCESS
- Int32 = (long) ICPU.Registers.X.W - (long) * (uint16_t*) CPU.PC;
+ Int32 = (int32_t) ICPU.Registers.X.W - (int32_t) *(uint16_t*)CPU.PC;
#else
- Int32 = (long) ICPU.Registers.X.W -
- (long)(*CPU.PC + (*(CPU.PC + 1) << 8));
+ Int32 = (int32_t) ICPU.Registers.X.W - (int32_t)(*CPU.PC + (*(CPU.PC + 1) << 8));
#endif
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
@@ -994,7 +992,7 @@ static void OpECX0(void)
/* CMY *************************************************************************************** */
static void OpC0X1(void)
{
- int32_t Int32 = (int) ICPU.Registers.YL - (intptr_t) * CPU.PC++;
+ int32_t Int32 = (int32_t) ICPU.Registers.YL - (int32_t) *CPU.PC++;
ICPU._Carry = Int32 >= 0;
SetZN8((uint8_t) Int32);
#ifndef SA1_OPCODES
@@ -1006,10 +1004,9 @@ static void OpC0X0(void)
{
int32_t Int32;
#ifdef FAST_LSB_WORD_ACCESS
- Int32 = (long) ICPU.Registers.Y.W - (long) * (uint16_t*) CPU.PC;
+ Int32 = (int32_t) ICPU.Registers.Y.W - (int32_t) *(uint16_t*)CPU.PC;
#else
- Int32 = (long) ICPU.Registers.Y.W -
- (long)(*CPU.PC + (*(CPU.PC + 1) << 8));
+ Int32 = (int32_t) ICPU.Registers.Y.W - (int32_t)(*CPU.PC + (*(CPU.PC + 1) << 8));
#endif
ICPU._Carry = Int32 >= 0;
SetZN16((uint16_t) Int32);
@@ -3555,7 +3552,7 @@ static void OpF4E1(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeedx2;
#endif
- PushWE((unsigned short)OpAddress);
+ PushWE((uint16_t)OpAddress);
}
static void OpF4(void)
@@ -3564,7 +3561,7 @@ static void OpF4(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeedx2;
#endif
- PushW((unsigned short)OpAddress);
+ PushW((uint16_t)OpAddress);
}
//PEI NL
@@ -3574,7 +3571,7 @@ static void OpD4E1(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeed;
#endif
- PushWE((unsigned short)OpAddress);
+ PushWE((uint16_t)OpAddress);
}
static void OpD4(void)
@@ -3583,7 +3580,7 @@ static void OpD4(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeed;
#endif
- PushW((unsigned short)OpAddress);
+ PushW((uint16_t)OpAddress);
}
//PER NL
@@ -3593,7 +3590,7 @@ static void Op62E1(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeedx2 + ONE_CYCLE;
#endif
- PushWE((unsigned short)OpAddress);
+ PushWE((uint16_t)OpAddress);
}
static void Op62(void)
@@ -3602,7 +3599,7 @@ static void Op62(void)
#ifndef SA1_OPCODES
CPU.Cycles += CPU.MemSpeedx2 + ONE_CYCLE;
#endif
- PushW((unsigned short)OpAddress);
+ PushW((uint16_t)OpAddress);
}
@@ -4747,7 +4744,7 @@ static void OpDB(void)
int8_t BranchOffset = (NextByte & 0x7F) | ((NextByte & 0x40) << 1);
// ^ -64 .. +63, sign extend bit 6 into 7 for unpacking
- long TargetAddress = ((int) (CPU.PC - CPU.PCBase) + BranchOffset) & 0xffff;
+ int32_t TargetAddress = ((int32_t) (CPU.PC - CPU.PCBase) + BranchOffset) & 0xffff;
switch (NextByte & 0x80)
{
@@ -4795,7 +4792,7 @@ static void Op42(void)
ForceShutdown();
int8_t BranchOffset = 0xF0 | (NextByte & 0xF); // always negative
- long TargetAddress = ((int) (CPU.PC - CPU.PCBase) + BranchOffset) & 0xffff;
+ int32_t TargetAddress = ((int32_t) (CPU.PC - CPU.PCBase) + BranchOffset) & 0xffff;
switch (NextByte & 0xF0)
{
diff --git a/source/display.h b/source/display.h
index d43d4ff..cee60bb 100644
--- a/source/display.h
+++ b/source/display.h
@@ -4,13 +4,13 @@
#define _DISPLAY_H_
// Routines the port specific code has to implement
-uint32_t S9xReadJoypad(int port);
-bool S9xReadMousePosition(int which1_0_to_1, int* x, int* y, uint32_t* buttons);
-bool S9xReadSuperScopePosition(int* x, int* y, uint32_t* buttons);
+uint32_t S9xReadJoypad(int32_t port);
+bool S9xReadMousePosition(int32_t which1_0_to_1, int32_t* x, int32_t* y, uint32_t* buttons);
+bool S9xReadSuperScopePosition(int32_t* x, int32_t* y, uint32_t* buttons);
void S9xInitDisplay(void);
void S9xDeinitDisplay();
-void S9xToggleSoundChannel(int channel);
+void S9xToggleSoundChannel(int32_t channel);
void S9xSetInfoString(const char* string);
void S9xNextController();
bool S9xLoadROMImage(const char* string);
diff --git a/source/dma.c b/source/dma.c
index f404d4f..3800c70 100644
--- a/source/dma.c
+++ b/source/dma.c
@@ -23,7 +23,7 @@
static uint8_t sdd1_decode_buffer[0x10000];
#endif
-extern int HDMA_ModeByteCounts [8];
+extern int32_t HDMA_ModeByteCounts [8];
extern uint8_t* HDMAMemPointers [8];
extern uint8_t* HDMABasePointers [8];
@@ -51,13 +51,13 @@ void S9xDoDMA(uint8_t Channel)
SDMA* d = &DMA[Channel];
- int count = d->TransferBytes;
+ int32_t count = d->TransferBytes;
// Prepare for custom chip DMA
if (count == 0)
count = 0x10000;
- int inc = d->AAddressFixed ? 0 : (!d->AAddressDecrement ? 1 : -1);
+ int32_t inc = d->AAddressFixed ? 0 : (!d->AAddressDecrement ? 1 : -1);
if ((d->ABank == 0x7E || d->ABank == 0x7F) && d->BAddress == 0x80)
{
@@ -115,7 +115,7 @@ void S9xDoDMA(uint8_t Channel)
memcpy(&spc7110_dma[j], s7r.bank50, d->TransferBytes - j);
s7_wrap = true;
}
- int icount = s7r.reg4809 | (s7r.reg480A << 8);
+ int32_t icount = s7r.reg4809 | (s7r.reg480A << 8);
icount -= d->TransferBytes;
s7r.reg4809 = 0x00ff & icount;
s7r.reg480A = (0xff00 & icount) >> 8;
@@ -129,13 +129,13 @@ void S9xDoDMA(uint8_t Channel)
{
// Perform packed bitmap to PPU character format conversion on the
// data before transmitting it to V-RAM via-DMA.
- int num_chars = 1 << ((Memory.FillRAM [0x2231] >> 2) & 7);
- int depth = (Memory.FillRAM [0x2231] & 3) == 0 ? 8 :
- (Memory.FillRAM [0x2231] & 3) == 1 ? 4 : 2;
+ int32_t num_chars = 1 << ((Memory.FillRAM [0x2231] >> 2) & 7);
+ int32_t depth = (Memory.FillRAM [0x2231] & 3) == 0 ? 8 :
+ (Memory.FillRAM [0x2231] & 3) == 1 ? 4 : 2;
- int bytes_per_char = 8 * depth;
- int bytes_per_line = depth * num_chars;
- int char_line_bytes = bytes_per_char * num_chars;
+ int32_t bytes_per_char = 8 * depth;
+ int32_t bytes_per_line = depth * num_chars;
+ int32_t char_line_bytes = bytes_per_char * num_chars;
uint32_t addr = (d->AAddress / char_line_bytes) * char_line_bytes;
uint8_t* base = GetBasePointer((d->ABank << 16) + addr) + addr;
uint8_t* buffer = &Memory.ROM [MAX_ROM_SIZE - 0x10000];
@@ -144,7 +144,7 @@ void S9xDoDMA(uint8_t Channel)
uint32_t char_count = inc / bytes_per_char;
in_sa1_dma = true;
- int i;
+ int32_t i;
switch (depth)
{
@@ -157,7 +157,7 @@ void S9xDoDMA(uint8_t Channel)
for (j = 0; j < char_count && p - buffer < count;
j++, line += 2)
{
- int b, l;
+ int32_t b, l;
uint8_t* q = line;
for (l = 0; l < 8; l++, q += bytes_per_line)
{
@@ -188,7 +188,7 @@ void S9xDoDMA(uint8_t Channel)
j++, line += 4)
{
uint8_t* q = line;
- int b, l;
+ int32_t b, l;
for (l = 0; l < 8; l++, q += bytes_per_line)
{
for (b = 0; b < 4; b++)
@@ -219,7 +219,7 @@ void S9xDoDMA(uint8_t Channel)
j++, line += 8)
{
uint8_t* q = line;
- int b, l;
+ int32_t b, l;
for (l = 0; l < 8; l++, q += bytes_per_line)
{
for (b = 0; b < 8; b++)
@@ -672,7 +672,7 @@ uint8_t S9xDoHDMA(uint8_t byte)
{
SDMA* p = &DMA [0];
- int d = 0;
+ int32_t d = 0;
CPU.InDMA = true;
CPU.Cycles += ONE_CYCLE * 3;
@@ -874,7 +874,7 @@ uint8_t S9xDoHDMA(uint8_t byte)
void S9xResetDMA()
{
- int c, d;
+ int32_t c, d;
for (d = 0; d < 8; d++)
{
DMA [d].TransferDirection = false;
diff --git a/source/dsp1.c b/source/dsp1.c
index a5b5e79..42f20c8 100644
--- a/source/dsp1.c
+++ b/source/dsp1.c
@@ -1242,7 +1242,7 @@ void DSP4SetByte(uint8_t byte, uint16_t address)
case 0x0000:
{
int16_t multiplier, multiplicand;
- int product;
+ int32_t product;
multiplier = DSP4_READ_WORD(0);
multiplicand = DSP4_READ_WORD(2);
@@ -1311,7 +1311,7 @@ void DSP4SetByte(uint8_t byte, uint16_t address)
// clear OAM tables
op06_index = 0;
op06_offset = 0;
- int lcv;
+ int32_t lcv;
for (lcv = 0; lcv < 32; lcv++)
op06_OAM[lcv] = 0;
break;
@@ -1329,7 +1329,7 @@ void DSP4SetByte(uint8_t byte, uint16_t address)
case 0x0006:
{
DSP4.out_count = 32;
- int lcv;
+ int32_t lcv;
for (lcv = 0; lcv < 32; lcv++)
DSP4.output[lcv] = op06_OAM[lcv];
}
diff --git a/source/dsp1emu.c b/source/dsp1emu.c
index 3999d5d..a2767b0 100644
--- a/source/dsp1emu.c
+++ b/source/dsp1emu.c
@@ -172,7 +172,7 @@ double Atan(double x)
void InitDSP(void)
{
#ifdef __OPT__
- unsigned int i;
+ uint32_t i;
for (i = 0; i < INCR; i++)
{
CosTable2[i] = (cos((double)(2 * PI * i / INCR)));
@@ -349,8 +349,8 @@ int16_t DSP1_Sin(int16_t Angle)
if (Angle == -32768) return 0;
return -DSP1_Sin(-Angle);
}
- int S = DSP1_SinTable[Angle >> 8] + (DSP1_MulTable[Angle & 0xff] *
- DSP1_SinTable[0x40 + (Angle >> 8)] >> 15);
+ int32_t S = DSP1_SinTable[Angle >> 8] + (DSP1_MulTable[Angle & 0xff] *
+ DSP1_SinTable[0x40 + (Angle >> 8)] >> 15);
if (S > 32767) S = 32767;
return (int16_t) S;
}
@@ -362,8 +362,8 @@ int16_t DSP1_Cos(int16_t Angle)
if (Angle == -32768) return -32768;
Angle = -Angle;
}
- int S = DSP1_SinTable[0x40 + (Angle >> 8)] - (DSP1_MulTable[Angle & 0xff] *
- DSP1_SinTable[Angle >> 8] >> 15);
+ int32_t S = DSP1_SinTable[0x40 + (Angle >> 8)] - (DSP1_MulTable[Angle & 0xff] *
+ DSP1_SinTable[Angle >> 8] >> 15);
if (S < -32768) S = -32767;
return (int16_t) S;
}
@@ -394,7 +394,7 @@ void DSP1_Normalize(int16_t m, int16_t* Coefficient, int16_t* Exponent)
*Exponent -= e;
}
-void DSP1_NormalizeDouble(int Product, int16_t* Coefficient, int16_t* Exponent)
+void DSP1_NormalizeDouble(int32_t Product, int16_t* Coefficient, int16_t* Exponent)
{
int16_t n = Product & 0x7fff;
int16_t m = Product >> 15;
@@ -671,8 +671,8 @@ double ObjPX2;
double ObjPY2;
double ObjPZ2;
double DivideOp06;
-int Temp;
-int tanval2;
+int32_t Temp;
+int32_t tanval2;
#ifdef __OPT06__
void DSPOp06()
@@ -1091,7 +1091,7 @@ int16_t Op08X, Op08Y, Op08Z, Op08Ll, Op08Lh;
void DSPOp08()
{
- int Op08Size = (Op08X * Op08X + Op08Y * Op08Y + Op08Z * Op08Z) << 1;
+ int32_t Op08Size = (Op08X * Op08X + Op08Y * Op08Y + Op08Z * Op08Z) << 1;
Op08Ll = Op08Size & 0xffff;
Op08Lh = (Op08Size >> 16) & 0xffff;
@@ -1121,7 +1121,7 @@ int16_t Op28R;
void DSPOp28()
{
- int Radius = Op28X * Op28X + Op28Y * Op28Y + Op28Z * Op28Z;
+ int32_t Radius = Op28X * Op28X + Op28Y * Op28Y + Op28Z * Op28Z;
if (Radius == 0) Op28R = 0;
else
diff --git a/source/dsp2emu.c b/source/dsp2emu.c
index 1ec79bc..d1b6410 100644
--- a/source/dsp2emu.c
+++ b/source/dsp2emu.c
@@ -3,9 +3,9 @@
uint16_t DSP2Op09Word1 = 0;
uint16_t DSP2Op09Word2 = 0;
bool DSP2Op05HasLen = false;
-int DSP2Op05Len = 0;
+int32_t DSP2Op05Len = 0;
bool DSP2Op06HasLen = false;
-int DSP2Op06Len = 0;
+int32_t DSP2Op06Len = 0;
uint8_t DSP2Op05Transparent = 0;
void DSP2_Op05()
@@ -36,12 +36,12 @@ void DSP2_Op05()
// size = 0. I don't think it's worth implementing this quirk unless it's
// proven necessary.
- int n;
- unsigned char c1;
- unsigned char c2;
- unsigned char* p1 = DSP1.parameters;
- unsigned char* p2 = &DSP1.parameters[DSP2Op05Len];
- unsigned char* p3 = DSP1.output;
+ int32_t n;
+ uint8_t c1;
+ uint8_t c2;
+ uint8_t* p1 = DSP1.parameters;
+ uint8_t* p2 = &DSP1.parameters[DSP2Op05Len];
+ uint8_t* p3 = DSP1.output;
color = DSP2Op05Transparent & 0x0f;
@@ -59,11 +59,11 @@ void DSP2_Op01()
// Op01 size is always 32 bytes input and output.
// The hardware does strange things if you vary the size.
- int j;
- unsigned char c0, c1, c2, c3;
- unsigned char* p1 = DSP1.parameters;
- unsigned char* p2a = DSP1.output;
- unsigned char* p2b = &DSP1.output[16]; // halfway
+ int32_t j;
+ uint8_t c0, c1, c2, c3;
+ uint8_t* p1 = DSP1.parameters;
+ uint8_t* p2a = DSP1.output;
+ uint8_t* p2b = &DSP1.output[16]; // halfway
// Process 8 blocks of 4 bytes each
@@ -120,15 +120,15 @@ void DSP2_Op06()
// size
// bitmap
- int i, j;
+ int32_t i, j;
for (i = 0, j = DSP2Op06Len - 1; i < DSP2Op06Len; i++, j--)
DSP1.output[j] = (DSP1.parameters[i] << 4) | (DSP1.parameters[i] >> 4);
}
bool DSP2Op0DHasLen = false;
-int DSP2Op0DOutLen = 0;
-int DSP2Op0DInLen = 0;
+int32_t DSP2Op0DOutLen = 0;
+int32_t DSP2Op0DInLen = 0;
#ifndef DSP2_BIT_ACCURRATE_CODE
@@ -138,13 +138,13 @@ void DSP2_Op0D()
{
// (Modified) Overload's algorithm - use this unless doing hardware testing
- int i;
+ int32_t i;
for(i = 0 ; i < DSP2Op0DOutLen ; i++)
{
- int j = i << 1;
- int pixel_offset_low = ((j * DSP2Op0DInLen) / DSP2Op0DOutLen) >> 1;
- int pixel_offset_high = (((j + 1) * DSP2Op0DInLen) / DSP2Op0DOutLen) >> 1;
+ int32_t j = i << 1;
+ int32_t pixel_offset_low = ((j * DSP2Op0DInLen) / DSP2Op0DOutLen) >> 1;
+ int32_t pixel_offset_high = (((j + 1) * DSP2Op0DInLen) / DSP2Op0DOutLen) >> 1;
uint8_t pixel_low = DSP1.parameters[pixel_offset_low] >> 4;
uint8_t pixel_high = DSP1.parameters[pixel_offset_high] & 0x0f;
DSP1.output[i] = (pixel_low << 4) | pixel_high;
@@ -170,9 +170,9 @@ void DSP2_Op0D()
// If it does we can adjust the parameters and code to work with it
- uint32_t multiplier; // Any size int >= 32-bits
- uint32_t pixloc; // match size of multiplier
- int i, j;
+ uint32_t multiplier;
+ uint32_t pixloc;
+ int32_t i, j;
uint8_t pixelarray[512];
if (DSP2Op0DInLen <= DSP2Op0DOutLen)
diff --git a/source/dsp4.h b/source/dsp4.h
index 488b5f6..760891c 100644
--- a/source/dsp4.h
+++ b/source/dsp4.h
@@ -4,8 +4,8 @@
#define _DSP4_H_
// debug
-int block; // current block number
-extern int c;
+int32_t block; // current block number
+extern int32_t c;
// op control
int8_t DSP4_Logic; // controls op flow
diff --git a/source/dsp4emu.c b/source/dsp4emu.c
index 4ea8fcb..c2ba8c8 100644
--- a/source/dsp4emu.c
+++ b/source/dsp4emu.c
@@ -16,7 +16,7 @@
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
-int DSP4_Multiply(int16_t Multiplicand, int16_t Multiplier)
+int32_t DSP4_Multiply(int16_t Multiplicand, int16_t Multiplier)
{
return Multiplicand * Multiplier;
}
@@ -515,7 +515,7 @@ DSP4_WAIT(2) resume2:
// first init
if (plane == 0x7fff)
{
- int pos1, pos2;
+ int32_t pos1, pos2;
// initialize projection
path_x[0] = x_left;
@@ -1095,7 +1095,7 @@ DSP4_WAIT(3) resume3:
DSP4_WAIT(4)
// store final values
- int height;
+ int32_t height;
resume4:
height = DSP4_READ_WORD(0);
@@ -1229,7 +1229,7 @@ resume7:
out_index = 6;
// OAM: size,msb data
- DSP4_Op06(sprite_size, (char) sp_msb);
+ DSP4_Op06(sprite_size, (int8_t) sp_msb);
}
// normal data
@@ -1247,7 +1247,7 @@ resume7:
DSP4_WRITE_WORD(out_index + 6, 0);
// OAM: size,msb data
- DSP4_Op06(sprite_size, (char) sp_msb);
+ DSP4_Op06(sprite_size, (int8_t) sp_msb);
}
// no sprite information
diff --git a/source/font.h b/source/font.h
index 8a4908f..01ed497 100644
--- a/source/font.h
+++ b/source/font.h
@@ -58,6 +58,6 @@ static const char* font[] =
" . . . ",
};
-static int font_width = 8;
-static int font_height = 9;
+static int32_t font_width = 8;
+static int32_t font_height = 9;
diff --git a/source/fxemu.c b/source/fxemu.c
index c789e23..5b3aba3 100644
--- a/source/fxemu.c
+++ b/source/fxemu.c
@@ -43,7 +43,7 @@ void fx_updateRamBank(uint8_t Byte)
static void fx_readRegisterSpace()
{
- int i;
+ int32_t i;
uint8_t* p;
static uint32_t avHeight[] = { 128, 160, 192, 256 };
static uint32_t avMult[] = { 16, 32, 32, 64 };
@@ -81,8 +81,8 @@ static void fx_readRegisterSpace()
/* Set screen pointers */
GSU.pvScreenBase = &GSU.pvRam[ USEX8(p[GSU_SCBR]) << 10 ];
- i = (int)(!!(p[GSU_SCMR] & 0x04));
- i |= ((int)(!!(p[GSU_SCMR] & 0x20))) << 1;
+ i = (int32_t)(!!(p[GSU_SCMR] & 0x04));
+ i |= ((int32_t)(!!(p[GSU_SCMR] & 0x20))) << 1;
GSU.vScreenHeight = GSU.vScreenRealHeight = avHeight[i];
GSU.vMode = p[GSU_SCMR] & 0x03;
if (i == 3)
@@ -118,7 +118,7 @@ void fx_computeScreenPointers()
GSU.vPrevScreenHeight != GSU.vScreenHeight ||
GSU.vSCBRDirty)
{
- int i;
+ int32_t i;
GSU.vSCBRDirty = false;
@@ -244,7 +244,7 @@ void fx_computeScreenPointers()
static void fx_writeRegisterSpace()
{
- int i;
+ int32_t i;
uint8_t* p;
p = GSU.pvRegisters;
@@ -277,7 +277,7 @@ static void fx_writeRegisterSpace()
/* Reset the FxChip */
void FxReset(struct FxInit_s* psFxInfo)
{
- int i;
+ int32_t i;
static uint32_t(**appfFunction[])(uint32_t) =
{
&fx_apfFunctionTable[0]
@@ -384,7 +384,7 @@ static bool fx_checkStartAddress()
}
/* Execute until the next stop instruction */
-int FxEmulate(uint32_t nInstructions)
+int32_t FxEmulate(uint32_t nInstructions)
{
uint32_t vCount;
@@ -415,7 +415,7 @@ int FxEmulate(uint32_t nInstructions)
}
/* Step by step execution */
-int FxStepOver(uint32_t nInstructions)
+int32_t FxStepOver(uint32_t nInstructions)
{
uint32_t vCount;
fx_readRegisterSpace();
@@ -442,12 +442,12 @@ int FxStepOver(uint32_t nInstructions)
}
/* Errors */
-int FxGetErrorCode()
+int32_t FxGetErrorCode()
{
return GSU.vErrorCode;
}
-int FxGetIllegalAddress()
+int32_t FxGetIllegalAddress()
{
return GSU.vIllegalAddress;
}
diff --git a/source/fxemu.h b/source/fxemu.h
index 6c717e3..3c0511c 100644
--- a/source/fxemu.h
+++ b/source/fxemu.h
@@ -20,18 +20,18 @@ struct FxInit_s
extern void FxReset(struct FxInit_s* psFxInfo);
/* Execute until the next stop instruction */
-extern int FxEmulate(uint32_t nInstructions);
+extern int32_t FxEmulate(uint32_t nInstructions);
/* Write access to the cache */
extern void FxCacheWriteAccess(uint16_t vAddress);
extern void FxFlushCache(); /* Callled when the G flag in SFR is set to zero */
/* Step by step execution */
-extern int FxStepOver(uint32_t nInstructions);
+extern int32_t FxStepOver(uint32_t nInstructions);
/* Errors */
-extern int FxGetErrorCode();
-extern int FxGetIllegalAddress();
+extern int32_t FxGetErrorCode();
+extern int32_t FxGetIllegalAddress();
/* Access to internal registers */
extern uint32_t FxGetColorRegister();
diff --git a/source/fxinst.c b/source/fxinst.c
index 05ebba2..e78d932 100644
--- a/source/fxinst.c
+++ b/source/fxinst.c
@@ -8,7 +8,7 @@
#include <stdio.h>
extern struct FxRegs_s GSU;
-int gsu_bank [512] = {0};
+int32_t gsu_bank [512] = {0};
/* Set this define if you wish the plot instruction to check for y-pos limits */
/* (I don't think it's nessecary) */
diff --git a/source/fxinst.h b/source/fxinst.h
index f7450a9..a78b6d4 100644
--- a/source/fxinst.h
+++ b/source/fxinst.h
@@ -168,7 +168,7 @@ struct FxRegs_s
uint32_t vPrevMode; /* Previous depth */
uint8_t* pvScreenBase;
uint8_t* apvScreen[32]; /* Pointer to each of the 32 screen colums */
- int x[32];
+ int32_t x[32];
uint32_t vScreenHeight; /* 128, 160, 192 or 256 (could be overriden by cmode) */
uint32_t vScreenRealHeight; /* 128, 160, 192 or 256 */
uint32_t vPrevScreenHeight;
diff --git a/source/getset.h b/source/getset.h
index ebd377a..b0abba5 100644
--- a/source/getset.h
+++ b/source/getset.h
@@ -15,9 +15,8 @@ extern uint8_t OpenBus;
INLINE uint8_t S9xGetByte(uint32_t Address)
{
- int block;
- uint8_t* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) &
- MEMMAP_MASK];
+ int32_t block;
+ uint8_t* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
if (!CPU.InDMA)
CPU.Cycles += Memory.MemorySpeed [block];
@@ -48,49 +47,26 @@ INLINE uint8_t S9xGetByte(uint32_t Address)
//Address&0xFF0000 -bank
//bank>>1 | offset = s-ram address, unbound
//unbound & SRAMMask = Sram offset
- return (*(Memory.SRAM + ((((Address & 0xFF0000) >> 1) |
- (Address & 0x7FFF)) &Memory.SRAMMask)));
-
+ return (*(Memory.SRAM + ((((Address & 0xFF0000) >> 1) | (Address & 0x7FFF)) &Memory.SRAMMask)));
case MAP_RONLY_SRAM:
case MAP_HIROM_SRAM:
- return (*(Memory.SRAM + (((Address & 0x7fff) - 0x6000 +
- ((Address & 0xf0000) >> 3)) & Memory.SRAMMask)));
-
+ return (*(Memory.SRAM + (((Address & 0x7fff) - 0x6000 + ((Address & 0xf0000) >> 3)) & Memory.SRAMMask)));
case MAP_BWRAM:
return (*(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)));
-
case MAP_C4:
return (S9xGetC4(Address & 0xffff));
-
case MAP_SPC7110_ROM:
return S9xGetSPC7110Byte(Address);
-
case MAP_SPC7110_DRAM:
return S9xGetSPC7110(0x4800);
-
case MAP_OBC_RAM:
return GetOBC1(Address & 0xffff);
-
case MAP_SETA_DSP:
return S9xGetSetaDSP(Address);
-
case MAP_SETA_RISC:
return S9xGetST018(Address);
-
-
-
case MAP_DEBUG:
- return OpenBus;
-
-
default:
- case MAP_NONE:
-#ifdef MK_TRACE_BAD_READS
- char address[20];
- sprintf(address, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, address, TEXT("GetByte"), MB_OK);
-#endif
-
return OpenBus;
}
}
@@ -102,7 +78,7 @@ INLINE uint16_t S9xGetWord(uint32_t Address)
OpenBus = S9xGetByte(Address);
return (OpenBus | (S9xGetByte(Address + 1) << 8));
}
- int block;
+ int32_t block;
uint8_t* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) &
MEMMAP_MASK];
@@ -151,7 +127,6 @@ INLINE uint16_t S9xGetWord(uint32_t Address)
&Memory.SRAMMask))) |
((*(Memory.SRAM + (((((Address + 1) & 0xFF0000) >> 1) | ((
Address + 1) & 0x7FFF)) &Memory.SRAMMask))) << 8);
-
case MAP_RONLY_SRAM:
case MAP_HIROM_SRAM:
/* BJ: no FAST_LSB_WORD_ACCESS here, since if Memory.SRAMMask=0x7ff
@@ -162,7 +137,6 @@ INLINE uint16_t S9xGetWord(uint32_t Address)
(*(Memory.SRAM +
((((Address + 1) & 0x7fff) - 0x6000 +
(((Address + 1) & 0xf0000) >> 3)) & Memory.SRAMMask)) << 8));
-
case MAP_BWRAM:
#ifdef FAST_LSB_WORD_ACCESS
return (*(uint16_t*)(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)));
@@ -170,11 +144,9 @@ INLINE uint16_t S9xGetWord(uint32_t Address)
return (*(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)) |
(*(Memory.BWRAM + (((Address + 1) & 0x7fff) - 0x6000)) << 8));
#endif
-
case MAP_C4:
return (S9xGetC4(Address & 0xffff) |
(S9xGetC4((Address + 1) & 0xffff) << 8));
-
case MAP_SPC7110_ROM:
return (S9xGetSPC7110Byte(Address) |
(S9xGetSPC7110Byte(Address + 1)) << 8);
@@ -183,24 +155,11 @@ INLINE uint16_t S9xGetWord(uint32_t Address)
(S9xGetSPC7110(0x4800) << 8));
case MAP_OBC_RAM:
return GetOBC1(Address & 0xFFFF) | (GetOBC1((Address + 1) & 0xFFFF) << 8);
-
case MAP_SETA_DSP:
return S9xGetSetaDSP(Address) | (S9xGetSetaDSP((Address + 1)) << 8);
-
case MAP_SETA_RISC:
return S9xGetST018(Address) | (S9xGetST018((Address + 1)) << 8);
-
- case MAP_DEBUG:
- return (OpenBus | (OpenBus << 8));
-
default:
- case MAP_NONE:
-#ifdef MK_TRACE_BAD_READS
- char address[20];
- sprintf(address, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, address, TEXT("GetWord"), MB_OK);
-#endif
-
return (OpenBus | (OpenBus << 8));
}
}
@@ -210,7 +169,7 @@ INLINE void S9xSetByte(uint8_t Byte, uint32_t Address)
#if defined(CPU_SHUTDOWN)
CPU.WaitAddress = NULL;
#endif
- int block;
+ int32_t block;
uint8_t* SetAddress = Memory.WriteMap [block = ((Address >> MEMMAP_SHIFT) &
MEMMAP_MASK)];
@@ -240,18 +199,15 @@ INLINE void S9xSetByte(uint8_t Byte, uint32_t Address)
case MAP_PPU:
S9xSetPPU(Byte, Address & 0xffff);
return;
-
case MAP_CPU:
S9xSetCPU(Byte, Address & 0xffff);
return;
-
case MAP_DSP:
#ifdef DSP_DUMMY_LOOPS
printf("DSP Byte: %02X to %06X\n", Byte, Address);
#endif
S9xSetDSP(Byte, Address & 0xffff);
return;
-
case MAP_LOROM_SRAM:
if (Memory.SRAMMask)
{
@@ -260,7 +216,6 @@ INLINE void S9xSetByte(uint8_t Byte, uint32_t Address)
CPU.SRAMModified = true;
}
return;
-
case MAP_HIROM_SRAM:
if (Memory.SRAMMask)
{
@@ -269,46 +224,31 @@ INLINE void S9xSetByte(uint8_t Byte, uint32_t Address)
CPU.SRAMModified = true;
}
return;
-
case MAP_BWRAM:
*(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)) = Byte;
CPU.SRAMModified = true;
return;
-
case MAP_DEBUG:
-
case MAP_SA1RAM:
*(Memory.SRAM + (Address & 0xffff)) = Byte;
SA1.Executing = !SA1.Waiting;
break;
-
case MAP_C4:
S9xSetC4(Byte, Address & 0xffff);
return;
-
case MAP_SPC7110_DRAM:
s7r.bank50[(Address & 0xffff)] = (uint8_t) Byte;
break;
-
case MAP_OBC_RAM:
SetOBC1(Byte, Address & 0xFFFF);
return;
-
case MAP_SETA_DSP:
S9xSetSetaDSP(Byte, Address);
return;
-
case MAP_SETA_RISC:
S9xSetST018(Byte, Address);
return;
default:
- case MAP_NONE:
-#ifdef MK_TRACE_BAD_WRITES
- char address[20];
- sprintf(address, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, address, TEXT("SetByte"), MB_OK);
-#endif
-
return;
}
}
@@ -325,7 +265,7 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
#if defined(CPU_SHUTDOWN)
CPU.WaitAddress = NULL;
#endif
- int block;
+ int32_t block;
uint8_t* SetAddress = Memory.WriteMap [block = ((Address >> MEMMAP_SHIFT) &
MEMMAP_MASK)];
@@ -366,12 +306,10 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
S9xSetPPU((uint8_t) Word, Address & 0xffff);
S9xSetPPU(Word >> 8, (Address & 0xffff) + 1);
return;
-
case MAP_CPU:
S9xSetCPU((uint8_t) Word, (Address & 0xffff));
S9xSetCPU(Word >> 8, (Address & 0xffff) + 1);
return;
-
case MAP_DSP:
#ifdef DSP_DUMMY_LOOPS
printf("DSP Word: %04X to %06X\n", Word, Address);
@@ -379,7 +317,6 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
S9xSetDSP((uint8_t) Word, (Address & 0xffff));
S9xSetDSP(Word >> 8, (Address & 0xffff) + 1);
return;
-
case MAP_LOROM_SRAM:
if (Memory.SRAMMask)
{
@@ -393,7 +330,6 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
CPU.SRAMModified = true;
}
return;
-
case MAP_HIROM_SRAM:
if (Memory.SRAMMask)
{
@@ -408,7 +344,6 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
CPU.SRAMModified = true;
}
return;
-
case MAP_BWRAM:
#ifdef FAST_LSB_WORD_ACCESS
*(uint16_t*)(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)) = Word;
@@ -418,9 +353,7 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
#endif
CPU.SRAMModified = true;
return;
-
case MAP_DEBUG:
-
case MAP_SPC7110_DRAM:
s7r.bank50[(Address & 0xffff)] = (uint8_t) Word;
s7r.bank50[((Address + 1) & 0xffff)] = (uint8_t) Word;
@@ -430,35 +363,23 @@ INLINE void S9xSetWord(uint16_t Word, uint32_t Address)
*(Memory.SRAM + ((Address + 1) & 0xffff)) = (uint8_t)(Word >> 8);
SA1.Executing = !SA1.Waiting;
break;
-
case MAP_C4:
S9xSetC4(Word & 0xff, Address & 0xffff);
S9xSetC4((uint8_t)(Word >> 8), (Address + 1) & 0xffff);
return;
-
case MAP_OBC_RAM:
SetOBC1(Word & 0xff, Address & 0xFFFF);
SetOBC1((uint8_t)(Word >> 8), (Address + 1) & 0xffff);
return;
-
case MAP_SETA_DSP:
S9xSetSetaDSP(Word & 0xff, Address);
S9xSetSetaDSP((uint8_t)(Word >> 8), (Address + 1));
return;
-
case MAP_SETA_RISC:
S9xSetST018(Word & 0xff, Address);
S9xSetST018((uint8_t)(Word >> 8), (Address + 1));
return;
-
default:
- case MAP_NONE:
-#ifdef MK_TRACE_BAD_WRITES
- char address[20];
- sprintf(address, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, address, TEXT("SetWord"), MB_OK);
-#endif
-
return;
}
}
@@ -473,9 +394,7 @@ INLINE uint8_t* GetBasePointer(uint32_t Address)
switch ((intptr_t) GetAddress)
{
case MAP_SPC7110_DRAM:
- {
return s7r.bank50;
- }
case MAP_SPC7110_ROM:
return Get7110BasePtr(Address);
case MAP_PPU: //just a guess, but it looks like this should match the CPU as a source.
@@ -495,16 +414,7 @@ INLINE uint8_t* GetBasePointer(uint32_t Address)
return (Memory.C4RAM - 0x6000);
case MAP_SETA_DSP:
return Memory.SRAM;
- case MAP_DEBUG:
-
default:
- case MAP_NONE:
-#if defined(MK_TRACE_BAD_READS) || defined(MK_TRACE_BAD_WRITES)
- char fsd[12];
- sprintf(fsd, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, fsd, TEXT("Rogue DMA"), MB_OK);
-#endif
-
return (0);
}
}
@@ -541,80 +451,53 @@ INLINE uint8_t* S9xGetMemPointer(uint32_t Address)
return GetMemPointerOBC1(Address);
case MAP_SETA_DSP:
return Memory.SRAM + ((Address & 0xffff) & Memory.SRAMMask);
- case MAP_DEBUG:
default:
- case MAP_NONE:
-#if defined(MK_TRACE_BAD_READS) || defined(MK_TRACE_BAD_WRITES)
- char fsd[12];
- sprintf(fsd, TEXT("%06X"), Address);
- MessageBox(GUI.hWnd, fsd, TEXT("Rogue DMA"), MB_OK);
-#endif
-
return (0);
}
}
INLINE void S9xSetPCBase(uint32_t Address)
{
- int block;
- uint8_t* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) &
- MEMMAP_MASK];
-
+ int32_t block;
+ uint8_t* GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
CPU.MemSpeed = Memory.MemorySpeed [block];
CPU.MemSpeedx2 = CPU.MemSpeed << 1;
if (GetAddress >= (uint8_t*) MAP_LAST)
- {
CPU.PCBase = GetAddress;
- CPU.PC = GetAddress + (Address & 0xffff);
- return;
- }
-
- switch ((intptr_t) GetAddress)
+ else
{
- case MAP_PPU:
- CPU.PCBase = Memory.FillRAM;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_CPU:
- CPU.PCBase = Memory.FillRAM;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_DSP:
- CPU.PCBase = Memory.FillRAM - 0x6000;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_SA1RAM:
- case MAP_LOROM_SRAM:
- CPU.PCBase = Memory.SRAM;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_BWRAM:
- CPU.PCBase = Memory.BWRAM - 0x6000;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
- case MAP_HIROM_SRAM:
- CPU.PCBase = Memory.SRAM - 0x6000;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_C4:
- CPU.PCBase = Memory.C4RAM - 0x6000;
- CPU.PC = CPU.PCBase + (Address & 0xffff);
- return;
-
- case MAP_DEBUG:
-
- default:
- case MAP_NONE:
- CPU.PCBase = Memory.SRAM;
- CPU.PC = Memory.SRAM + (Address & 0xffff);
- return;
+ switch ((intptr_t) GetAddress)
+ {
+ case MAP_PPU:
+ CPU.PCBase = Memory.FillRAM;
+ break;
+ case MAP_CPU:
+ CPU.PCBase = Memory.FillRAM;
+ break;
+ case MAP_DSP:
+ CPU.PCBase = Memory.FillRAM - 0x6000;
+ break;
+ case MAP_SA1RAM:
+ case MAP_LOROM_SRAM:
+ CPU.PCBase = Memory.SRAM;
+ break;
+ case MAP_BWRAM:
+ CPU.PCBase = Memory.BWRAM - 0x6000;
+ break;
+ case MAP_HIROM_SRAM:
+ CPU.PCBase = Memory.SRAM - 0x6000;
+ break;
+ case MAP_C4:
+ CPU.PCBase = Memory.C4RAM - 0x6000;
+ break;
+ default:
+ CPU.PCBase = Memory.SRAM;
+ break;
+ }
}
+
+ CPU.PC = CPU.PCBase + (Address & 0xffff);
}
#endif
diff --git a/source/gfx.c b/source/gfx.c
index f4848f3..5bd1a57 100644
--- a/source/gfx.c
+++ b/source/gfx.c
@@ -171,7 +171,7 @@ bool S9xInitGFX()
uint8_t bitshift;
for (bitshift = 0; bitshift < 4; bitshift++)
{
- int i;
+ int32_t i;
for (i = 0; i < 16; i++)
{
uint32_t h = 0;
@@ -296,12 +296,12 @@ bool S9xInitGFX()
{
if (GFX.ZERO_OR_X2)
{
- free((char*) GFX.ZERO_OR_X2);
+ free(GFX.ZERO_OR_X2);
GFX.ZERO_OR_X2 = NULL;
}
if (GFX.X2)
{
- free((char*) GFX.X2);
+ free(GFX.X2);
GFX.X2 = NULL;
}
return (false);
@@ -444,17 +444,17 @@ void S9xDeinitGFX(void)
// Free any memory allocated in S9xInitGFX
if (GFX.X2)
{
- free((char*) GFX.X2);
+ free(GFX.X2);
GFX.X2 = NULL;
}
if (GFX.ZERO_OR_X2)
{
- free((char*) GFX.ZERO_OR_X2);
+ free(GFX.ZERO_OR_X2);
GFX.ZERO_OR_X2 = NULL;
}
if (GFX.ZERO)
{
- free((char*) GFX.ZERO);
+ free(GFX.ZERO);
GFX.ZERO = NULL;
}
}
@@ -698,8 +698,8 @@ static inline void SelectTileRenderer(bool normal)
void S9xSetupOBJ()
{
- int SmallWidth, SmallHeight;
- int LargeWidth, LargeHeight;
+ int32_t SmallWidth, SmallHeight;
+ int32_t LargeWidth, LargeHeight;
switch (PPU.OBJSizeSelect)
{
@@ -750,7 +750,7 @@ void S9xSetupOBJ()
* normal FirstSprite, or priority is FirstSprite+Y. The first two are
* easy, the last is somewhat more ... interesting. So we split them up. */
- int Height;
+ int32_t Height;
uint8_t S;
if (!PPU.OAMPriorityRotation || !(PPU.OAMFlip & PPU.OAMAddr & 1))
@@ -758,7 +758,7 @@ void S9xSetupOBJ()
/* normal case */
uint8_t LineOBJ[SNES_HEIGHT_EXTENDED];
memset(LineOBJ, 0, sizeof(LineOBJ));
- int i;
+ int32_t i;
for (i = 0; i < SNES_HEIGHT_EXTENDED; i++)
{
GFX.OBJLines[i].RTOFlags = 0;
@@ -778,7 +778,7 @@ void S9xSetupOBJ()
GFX.OBJWidths[S] = SmallWidth;
Height = SmallHeight;
}
- int HPos = PPU.OBJ[S].HPos;
+ int32_t HPos = PPU.OBJ[S].HPos;
if (HPos == -256) HPos = 256;
if (HPos > -GFX.OBJWidths[S] && HPos <= 256)
{
@@ -815,7 +815,7 @@ void S9xSetupOBJ()
}
while (S != FirstSprite);
- int Y;
+ int32_t Y;
for (Y = 0; Y < SNES_HEIGHT_EXTENDED; Y++)
{
if (LineOBJ[Y] < 32) // Add the sentinel
@@ -848,7 +848,7 @@ void S9xSetupOBJ()
GFX.OBJWidths[S] = SmallWidth;
Height = SmallHeight;
}
- int HPos = PPU.OBJ[S].HPos;
+ int32_t HPos = PPU.OBJ[S].HPos;
if (HPos == -256) HPos = 256;
if (HPos > -GFX.OBJWidths[S] && HPos <= 256)
{
@@ -880,7 +880,7 @@ void S9xSetupOBJ()
}
/* Now go through and pull out those OBJ that are actually visible. */
- int j, Y;
+ int32_t j, Y;
for (Y = 0; Y < SNES_HEIGHT_EXTENDED; Y++)
{
GFX.OBJLines[Y].RTOFlags = Y ? GFX.OBJLines[Y - 1].RTOFlags : 0;
@@ -937,7 +937,7 @@ static void DrawOBJS(bool OnMain, uint8_t D)
bool Value;
} Windows[7];
- int clipcount = GFX.pCurrentClip->Count [4];
+ int32_t clipcount = GFX.pCurrentClip->Count [4];
if (!clipcount)
{
Windows[0].Pos = 0;
@@ -951,12 +951,12 @@ static void DrawOBJS(bool OnMain, uint8_t D)
{
Windows[0].Pos = 1000;
Windows[0].Value = false;
- int clip, i;
+ int32_t clip, i;
for (clip = 0, i = 1; clip < clipcount; clip++)
{
if (GFX.pCurrentClip->Right[clip][4] <= GFX.pCurrentClip->Left[clip][4])
continue;
- int j;
+ int32_t j;
for (j = 0; j < i && Windows[j].Pos < GFX.pCurrentClip->Left[clip][4]; j++);
if (j < i && Windows[j].Pos == GFX.pCurrentClip->Left[clip][4])
Windows[j].Value = true;
@@ -1026,13 +1026,9 @@ static void DrawOBJS(bool OnMain, uint8_t D)
for (Y = GFX.StartY, Offset = Y * GFX.PPL; Y <= GFX.EndY;
Y++, Offset += GFX.PPL)
{
- int I = 0;
-#ifdef MK_DISABLE_TIME_OVER
- int tiles = 0;
-#else
- int tiles = GFX.OBJLines[Y].Tiles;
-#endif
- int S;
+ int32_t I = 0;
+ int32_t tiles = GFX.OBJLines[Y].Tiles;
+ int32_t S;
for (S = GFX.OBJLines[Y].OBJ[I].Sprite; S >= 0
&& I < 32; S = GFX.OBJLines[Y].OBJ[++I].Sprite)
{
@@ -1043,11 +1039,11 @@ static void DrawOBJS(bool OnMain, uint8_t D)
if (OnMain && SUB_OR_ADD(4))
SelectTileRenderer(!GFX.Pseudo && PPU.OBJ [S].Palette < 4);
- int BaseTile = (((GFX.OBJLines[Y].OBJ[I].Line << 1) + (PPU.OBJ[S].Name & 0xf0))
- & 0xf0) | (PPU.OBJ[S].Name & 0x100) | (PPU.OBJ[S].Palette << 10);
- int TileX = PPU.OBJ[S].Name & 0x0f;
- int TileLine = (GFX.OBJLines[Y].OBJ[I].Line & 7) * 8;
- int TileInc = 1;
+ int32_t BaseTile = (((GFX.OBJLines[Y].OBJ[I].Line << 1) + (PPU.OBJ[S].Name & 0xf0))
+ & 0xf0) | (PPU.OBJ[S].Name & 0x100) | (PPU.OBJ[S].Palette << 10);
+ int32_t TileX = PPU.OBJ[S].Name & 0x0f;
+ int32_t TileLine = (GFX.OBJLines[Y].OBJ[I].Line & 7) * 8;
+ int32_t TileInc = 1;
if (PPU.OBJ[S].HFlip)
{
@@ -1059,10 +1055,10 @@ static void DrawOBJS(bool OnMain, uint8_t D)
GFX.Z2 = (PPU.OBJ[S].Priority + 1) * 4 + D;
bool WinStat = true;
- int WinIdx = 0, NextPos = -1000;
- int X = PPU.OBJ[S].HPos;
+ int32_t WinIdx = 0, NextPos = -1000;
+ int32_t X = PPU.OBJ[S].HPos;
if (X == -256) X = 256;
- int t, O;
+ int32_t t, O;
for (t = tiles, O = Offset + X * GFX.PixSize; X <= 256
&& X < PPU.OBJ[S].HPos + GFX.OBJWidths[S];
TileX = (TileX + TileInc) & 0x0f, X += 8, O += 8 * GFX.PixSize)
@@ -1082,7 +1078,7 @@ static void DrawOBJS(bool OnMain, uint8_t D)
}
else
{
- int x = X;
+ int32_t x = X;
while (x < X + 8)
{
if (WinStat)(*DrawClippedTilePtr)(BaseTile | TileX, O, x - X, NextPos - x,
@@ -1157,7 +1153,7 @@ static void DrawBackgroundMosaic(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8
OffsetShift = 3;
}
- int m5 = (BGMode == 5 || BGMode == 6) ? 1 : 0;
+ int32_t m5 = (BGMode == 5 || BGMode == 6) ? 1 : 0;
uint32_t Y;
for (Y = GFX.StartY; Y <= GFX.EndY; Y += Lines)
@@ -1341,7 +1337,7 @@ static void DrawBackgroundOffset(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8
uint16_t* BPS2;
uint16_t* BPS3;
uint32_t Width;
- int VOffsetOffset = BGMode == 4 ? 0 : 32;
+ int32_t VOffsetOffset = BGMode == 4 ? 0 : 32;
uint8_t depths [2] = {Z1, Z2};
BG.StartPalette = 0;
@@ -1392,10 +1388,10 @@ static void DrawBackgroundOffset(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8
SC3 -= 0x08000;
- static const int Lines = 1;
- int OffsetMask;
- int OffsetShift;
- int OffsetEnableMask = 1 << (bg + 13);
+ static const int32_t Lines = 1;
+ int32_t OffsetMask;
+ int32_t OffsetShift;
+ int32_t OffsetEnableMask = 1 << (bg + 13);
if (BG.TileSize == 16)
{
@@ -1414,10 +1410,10 @@ static void DrawBackgroundOffset(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8
uint32_t VOff = LineData [Y].BG[2].VOffset - 1;
uint32_t HOff = LineData [Y].BG[2].HOffset;
- int VirtAlign;
- int ScreenLine = VOff >> 3;
- int t1;
- int t2;
+ int32_t VirtAlign;
+ int32_t ScreenLine = VOff >> 3;
+ int32_t t1;
+ int32_t t2;
uint16_t* s0;
uint16_t* s1;
uint16_t* s2;
@@ -1443,11 +1439,11 @@ static void DrawBackgroundOffset(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8
VOffsetOffset = 32;
}
- int clipcount = GFX.pCurrentClip->Count [bg];
+ int32_t clipcount = GFX.pCurrentClip->Count [bg];
if (!clipcount)
clipcount = 1;
- int clip;
+ int32_t clip;
for (clip = 0; clip < clipcount; clip++)
{
uint32_t Left;
@@ -1676,7 +1672,7 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
else
SC1 = SC0;
- if ((SC1 - (unsigned short*)Memory.VRAM) > 0x10000)
+ if ((SC1 - (uint16_t*)Memory.VRAM) > 0x10000)
SC1 = (uint16_t*)&Memory.VRAM[(((uint8_t*)SC1) - Memory.VRAM) % 0x10000];
if ((PPU.BG[bg].SCSize & 2))
@@ -1686,8 +1682,6 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
if (((uint8_t*)SC2 - Memory.VRAM) >= 0x10000)
SC2 -= 0x08000;
-
-
if ((PPU.BG[bg].SCSize & 1))
SC3 = SC2 + 1024;
else
@@ -1696,24 +1690,22 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
if (((uint8_t*)SC3 - Memory.VRAM) >= 0x10000)
SC3 -= 0x08000;
-
-
- int Lines;
- int VOffsetShift;
+ int32_t Lines;
+ int32_t VOffsetShift;
if (BG.TileSize == 16)
VOffsetShift = 4;
else
VOffsetShift = 3;
- int endy = IPPU.Interlace ? 1 + (GFX.EndY << 1) : GFX.EndY;
+ int32_t endy = IPPU.Interlace ? 1 + (GFX.EndY << 1) : GFX.EndY;
- int Y;
+ int32_t Y;
for (Y = IPPU.Interlace ? GFX.StartY << 1 : GFX.StartY; Y <= endy; Y += Lines)
{
- int y = IPPU.Interlace ? (Y >> 1) : Y;
+ int32_t y = IPPU.Interlace ? (Y >> 1) : Y;
uint32_t VOffset = LineData [y].BG[bg].VOffset;
uint32_t HOffset = LineData [y].BG[bg].HOffset;
- int VirtAlign = (Y + VOffset) & 7;
+ int32_t VirtAlign = (Y + VOffset) & 7;
for (Lines = 1; Lines < 8 - VirtAlign; Lines++)
if ((VOffset != LineData [y + Lines].BG[bg].VOffset) ||
@@ -1725,9 +1717,9 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
Lines = endy + 1 - Y;
VirtAlign <<= 3;
- int ScreenLine = (VOffset + Y) >> VOffsetShift;
- int t1;
- int t2;
+ int32_t ScreenLine = (VOffset + Y) >> VOffsetShift;
+ int32_t t1;
+ int32_t t2;
if (((VOffset + Y) & 15) > 7)
{
t1 = 16;
@@ -1749,15 +1741,15 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
b1 += (ScreenLine & 0x1f) << 5;
b2 += (ScreenLine & 0x1f) << 5;
- int clipcount = GFX.pCurrentClip->Count [bg];
+ int32_t clipcount = GFX.pCurrentClip->Count [bg];
if (!clipcount)
clipcount = 1;
- int clip;
+ int32_t clip;
for (clip = 0; clip < clipcount; clip++)
{
- int Left;
- int Right;
+ int32_t Left;
+ int32_t Right;
if (!GFX.pCurrentClip->Count [bg])
{
@@ -1790,7 +1782,7 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
// Left hand edge clipped tile
if (HPos & 7)
{
- int Offset = (HPos & 7);
+ int32_t Offset = (HPos & 7);
Count = 8 - Offset;
if (Count > Width)
Count = Width;
@@ -1855,10 +1847,10 @@ static void DrawBackgroundMode5(uint32_t bg, uint8_t Z1, uint8_t Z2)
// Middle, unclipped tiles
Count = Width - Count;
- int Middle = Count >> 3;
+ int32_t Middle = Count >> 3;
Count &= 7;
- int C;
+ int32_t C;
for (C = Middle; C > 0; s += (IPPU.HalfWidthPixels ? 4 : 8), Quot++, C--)
{
Tile = READ_2BYTES(t);
@@ -2029,7 +2021,7 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
else
SC1 = SC0;
- if (SC1 >= (unsigned short*)(Memory.VRAM + 0x10000))
+ if (SC1 >= (uint16_t*)(Memory.VRAM + 0x10000))
SC1 = (uint16_t*)&Memory.VRAM[((uint8_t*)SC1 - &Memory.VRAM[0]) % 0x10000];
if (PPU.BG[bg].SCSize & 2)
@@ -2048,11 +2040,9 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
if (((uint8_t*)SC3 - Memory.VRAM) >= 0x10000)
SC3 -= 0x08000;
-
-
- int Lines;
- int OffsetMask;
- int OffsetShift;
+ int32_t Lines;
+ int32_t OffsetMask;
+ int32_t OffsetShift;
if (BG.TileSize == 16)
{
@@ -2070,7 +2060,7 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
{
uint32_t VOffset = LineData [Y].BG[bg].VOffset;
uint32_t HOffset = LineData [Y].BG[bg].HOffset;
- int VirtAlign = (Y + VOffset) & 7;
+ int32_t VirtAlign = (Y + VOffset) & 7;
for (Lines = 1; Lines < 8 - VirtAlign; Lines++)
if ((VOffset != LineData [Y + Lines].BG[bg].VOffset) ||
@@ -2106,10 +2096,10 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
b1 += (ScreenLine & 0x1f) << 5;
b2 += (ScreenLine & 0x1f) << 5;
- int clipcount = GFX.pCurrentClip->Count [bg];
+ int32_t clipcount = GFX.pCurrentClip->Count [bg];
if (!clipcount)
clipcount = 1;
- int clip;
+ int32_t clip;
for (clip = 0; clip < clipcount; clip++)
{
uint32_t Left;
@@ -2221,9 +2211,9 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
// Middle, unclipped tiles
Count = Width - Count;
- int Middle = Count >> 3;
+ int32_t Middle = Count >> 3;
Count &= 7;
- int C;
+ int32_t C;
for (C = Middle; C > 0;
s += (IPPU.HalfWidthPixels ? 4 : 8) * GFX.PixSize, Quot++, C--)
{
@@ -2344,9 +2334,9 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
ScreenColors = DirectColourMaps [0]; \
} \
\
- int aa, cc; \
- int dir; \
- int startx, endx; \
+ int32_t aa, cc; \
+ int32_t dir; \
+ int32_t startx, endx; \
uint32_t Left = 0; \
uint32_t Right = 256; \
uint32_t ClipCount = GFX.pCurrentClip->Count [bg]; \
@@ -2361,7 +2351,7 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
uint32_t Line; \
for (Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \
{ \
- int yy; \
+ int32_t yy; \
\
int32_t HOffset = ((int32_t) LineData [Line].BG[0].HOffset << M7) >> M7; \
int32_t VOffset = ((int32_t) LineData [Line].BG[0].VOffset << M7) >> M7; \
@@ -2370,14 +2360,14 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
int32_t CentreY = ((int32_t) l->CentreY << M7) >> M7; \
\
if (PPU.Mode7VFlip) \
- yy = 255 - (int) Line; \
+ yy = 255 - (int32_t) Line; \
else \
yy = Line; \
\
yy += CLIP_10_BIT_SIGNED(VOffset - CentreY); \
\
- int BB = l->MatrixB * yy + (CentreX << 8); \
- int DD = l->MatrixD * yy + (CentreY << 8); \
+ int32_t BB = l->MatrixB * yy + (CentreX << 8); \
+ int32_t DD = l->MatrixD * yy + (CentreY << 8); \
\
uint32_t clip; \
for (clip = 0; clip < ClipCount; clip++) \
@@ -2409,17 +2399,17 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
cc = l->MatrixC; \
} \
\
- int xx = startx + CLIP_10_BIT_SIGNED(HOffset - CentreX); \
- int AA = l->MatrixA * xx; \
- int CC = l->MatrixC * xx; \
+ int32_t xx = startx + CLIP_10_BIT_SIGNED(HOffset - CentreX); \
+ int32_t AA = l->MatrixA * xx; \
+ int32_t CC = l->MatrixC * xx; \
\
if (!PPU.Mode7Repeat) \
{ \
- int x; \
+ int32_t x; \
for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \
{ \
- int X = ((AA + BB) >> 8) & 0x3ff; \
- int Y = ((CC + DD) >> 8) & 0x3ff; \
+ int32_t X = ((AA + BB) >> 8) & 0x3ff; \
+ int32_t Y = ((CC + DD) >> 8) & 0x3ff; \
uint8_t *TileData = VRAM1 + (Memory.VRAM[((Y & ~7) << 5) + ((X >> 2) & ~1)] << 7); \
uint32_t b = *(TileData + ((Y & 7) << 4) + ((X & 7) << 1)); \
GFX.Z1 = Mode7Depths [(b & GFX.Mode7PriorityMask) >> 7]; \
@@ -2432,11 +2422,11 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
} \
else \
{ \
- int x; \
+ int32_t x; \
for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \
{ \
- int X = ((AA + BB) >> 8); \
- int Y = ((CC + DD) >> 8); \
+ int32_t X = ((AA + BB) >> 8); \
+ int32_t Y = ((CC + DD) >> 8); \
\
if (((X | Y) & ~0x3ff) == 0) \
{ \
@@ -2469,17 +2459,17 @@ static void DrawBackground(uint32_t BGMode, uint32_t bg, uint8_t Z1, uint8_t Z2)
} \
}
-static void DrawBGMode7Background(uint8_t* Screen, int bg)
+static void DrawBGMode7Background(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint8_t, (uint8_t)(b & GFX.Mode7Mask))
}
-static void DrawBGMode7Background16(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint16_t, ScreenColors [b & GFX.Mode7Mask]);
}
-static void DrawBGMode7Background16Add(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Add(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2490,7 +2480,7 @@ static void DrawBGMode7Background16Add(uint8_t* Screen, int bg)
ScreenColors [b & GFX.Mode7Mask]);
}
-static void DrawBGMode7Background16Add1_2(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Add1_2(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2501,7 +2491,7 @@ static void DrawBGMode7Background16Add1_2(uint8_t* Screen, int bg)
ScreenColors [b & GFX.Mode7Mask]);
}
-static void DrawBGMode7Background16Sub(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Sub(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2512,7 +2502,7 @@ static void DrawBGMode7Background16Sub(uint8_t* Screen, int bg)
ScreenColors [b & GFX.Mode7Mask]);
}
-static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2535,9 +2525,9 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
else \
ScreenColors = IPPU.ScreenColors; \
\
- int aa, cc; \
- int dir; \
- int startx, endx; \
+ int32_t aa, cc; \
+ int32_t dir; \
+ int32_t startx, endx; \
uint32_t Left = 0; \
uint32_t Right = 256; \
uint32_t ClipCount = GFX.pCurrentClip->Count [bg]; \
@@ -2558,24 +2548,24 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
uint32_t Line; \
for (Line = GFX.StartY; Line <= GFX.EndY; Line++, Screen += GFX.Pitch, Depth += GFX.PPL, l++) \
{ \
- int yy; \
+ int32_t yy; \
\
- int HOffset = ((int) LineData [Line].BG[0].HOffset << M7) >> M7; \
- int VOffset = ((int) LineData [Line].BG[0].VOffset << M7) >> M7; \
+ int32_t HOffset = ((int32_t) LineData [Line].BG[0].HOffset << M7) >> M7; \
+ int32_t VOffset = ((int32_t) LineData [Line].BG[0].VOffset << M7) >> M7; \
\
- int CentreX = ((int) l->CentreX << M7) >> M7; \
- int CentreY = ((int) l->CentreY << M7) >> M7; \
+ int32_t CentreX = ((int32_t) l->CentreX << M7) >> M7; \
+ int32_t CentreY = ((int32_t) l->CentreY << M7) >> M7; \
\
if (PPU.Mode7VFlip) \
- yy = 255 - (int) Line; \
+ yy = 255 - (int32_t) Line; \
else \
yy = Line; \
\
\
yy += CLIP_10_BIT_SIGNED(VOffset - CentreY); \
bool simpleCase = false; \
- int BB; \
- int DD; \
+ int32_t BB; \
+ int32_t DD; \
/* Make a special case for the identity matrix, since it's a common case and */ \
/* can be done much more quickly without special effects */ \
if (allowSimpleCase && !l->MatrixB && !l->MatrixC && (l->MatrixA == 0x0100) && (l->MatrixD == 0x0100)) \
@@ -2619,10 +2609,10 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
aa = l->MatrixA; \
cc = l->MatrixC; \
} \
- int xx; \
+ int32_t xx; \
\
xx = startx + CLIP_10_BIT_SIGNED(HOffset - CentreX); \
- int AA, CC = 0; \
+ int32_t AA, CC = 0; \
if (simpleCase) \
{ \
AA = xx << 8; \
@@ -2636,11 +2626,11 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
{ \
if (!PPU.Mode7Repeat) \
{ \
- int x = startx; \
+ int32_t x = startx; \
do \
{ \
- int X = ((AA + BB) >> 8) & 0x3ff; \
- int Y = (DD >> 8) & 0x3ff; \
+ int32_t X = ((AA + BB) >> 8) & 0x3ff; \
+ int32_t Y = (DD >> 8) & 0x3ff; \
uint8_t *TileData = VRAM1 + (Memory.VRAM[((Y & ~7) << 5) + ((X >> 2) & ~1)] << 7); \
uint32_t b = *(TileData + ((Y & 7) << 4) + ((X & 7) << 1)); \
GFX.Z1 = Mode7Depths [(b & GFX.Mode7PriorityMask) >> 7]; \
@@ -2656,10 +2646,10 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
} \
else \
{ \
- int x = startx; \
+ int32_t x = startx; \
do { \
- int X = (AA + BB) >> 8; \
- int Y = DD >> 8; \
+ int32_t X = (AA + BB) >> 8; \
+ int32_t Y = DD >> 8; \
\
if (((X | Y) & ~0x3ff) == 0) \
{ \
@@ -2706,7 +2696,7 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
/* You can think of this as a kind of mipmapping. */ \
if ((aa < 460 && aa > -460) && (cc < 460 && cc > -460)) \
{\
- int x; \
+ int32_t x; \
for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \
{ \
uint32_t xPos = AA + BB; \
@@ -2785,7 +2775,7 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
uint32_t DD10 = DD + ccDelX; \
uint32_t DD01 = DD + ddDelY; \
uint32_t DD11 = DD + ccDelX + ddDelY; \
- int x; \
+ int32_t x; \
for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \
{ \
uint32_t X = ((AA + BB) >> 8) & 0x3ff; \
@@ -2822,7 +2812,7 @@ static void DrawBGMode7Background16Sub1_2(uint8_t* Screen, int bg)
} \
else \
{ \
- int x; \
+ int32_t x; \
for (x = startx; x != endx; x += dir, AA += aa, CC += cc, p++, d++) \
{ \
uint32_t xPos = AA + BB; \
@@ -2909,12 +2899,12 @@ static uint32_t Q_INTERPOLATE(uint32_t A, uint32_t B, uint32_t C, uint32_t D)
return x + y;
}
-static void DrawBGMode7Background16_i(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16_i(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7_i(uint16_t, theColor, (ScreenColors[b & GFX.Mode7Mask]));
}
-static void DrawBGMode7Background16Add_i(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Add_i(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7_i(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2925,7 +2915,7 @@ static void DrawBGMode7Background16Add_i(uint8_t* Screen, int bg)
theColor, (ScreenColors[b & GFX.Mode7Mask]));
}
-static void DrawBGMode7Background16Add1_2_i(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Add1_2_i(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7_i(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2936,7 +2926,7 @@ static void DrawBGMode7Background16Add1_2_i(uint8_t* Screen, int bg)
theColor, (ScreenColors[b & GFX.Mode7Mask]));
}
-static void DrawBGMode7Background16Sub_i(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Sub_i(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7_i(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -2947,7 +2937,7 @@ static void DrawBGMode7Background16Sub_i(uint8_t* Screen, int bg)
theColor, (ScreenColors[b & GFX.Mode7Mask]));
}
-static void DrawBGMode7Background16Sub1_2_i(uint8_t* Screen, int bg)
+static void DrawBGMode7Background16Sub1_2_i(uint8_t* Screen, int32_t bg)
{
RENDER_BACKGROUND_MODE7_i(uint16_t, *(d + GFX.DepthDelta) ?
(*(d + GFX.DepthDelta) != 1 ?
@@ -3049,7 +3039,7 @@ static void RenderScreen(uint8_t* Screen, bool sub, bool force_no_add, uint8_t D
}
if (BG0 || ((Memory.FillRAM [0x2133] & 0x40) && BG1))
{
- int bg;
+ int32_t bg;
if ((Memory.FillRAM [0x2133] & 0x40) && BG1)
{
@@ -3184,7 +3174,7 @@ void S9xUpdateScreen(void)
uint32_t y;
for (y = 0; y < starty; y++)
{
- int x;
+ int32_t x;
uint16_t* p = (uint16_t*)(GFX.Screen + y * GFX.Pitch2) + 255;
uint16_t* q = (uint16_t*)(GFX.Screen + y * GFX.Pitch2) + 510;
for (x = 255; x >= 0; x--, p--, q -= 2)
@@ -3672,7 +3662,7 @@ void S9xUpdateScreen(void)
uint32_t y;
for (y = starty; y <= endy; y++)
{
- int x;
+ int32_t x;
uint16_t* p = (uint16_t*)(GFX.Screen + y * GFX.Pitch2) + 255;
uint16_t* q = (uint16_t*)(GFX.Screen + y * GFX.Pitch2) + 510;
for (x = 255; x >= 0; x--, p--, q -= 2)
diff --git a/source/gfx.h b/source/gfx.h
index c840d58..c5f50cb 100644
--- a/source/gfx.h
+++ b/source/gfx.h
@@ -14,8 +14,7 @@ void S9xUpdateScreen();
void RenderLine(uint8_t line);
void S9xBuildDirectColourMaps();
-// External port interface which must be implemented or initialised for each
-// port.
+// External port interface which must be implemented or initialised for each port.
extern struct SGFX GFX;
bool S9xInitGFX();
@@ -37,7 +36,7 @@ struct SGFX
uint32_t Pitch;
// Setup in call to S9xInitGFX()
- int Delta;
+ int32_t Delta;
uint16_t* X2;
uint16_t* ZERO_OR_X2;
uint16_t* ZERO;
@@ -118,12 +117,12 @@ typedef struct
struct SLineMatrixData
{
- short MatrixA;
- short MatrixB;
- short MatrixC;
- short MatrixD;
- short CentreX;
- short CentreY;
+ int16_t MatrixA;
+ int16_t MatrixB;
+ int16_t MatrixC;
+ int16_t MatrixD;
+ int16_t CentreX;
+ int16_t CentreY;
};
extern uint32_t odd_high [4][16];
diff --git a/source/globals.c b/source/globals.c
index e65d1b5..eecb297 100644
--- a/source/globals.c
+++ b/source/globals.c
@@ -41,7 +41,7 @@ SnesModel* Model = &M1SNES;
uint8_t* C4RAM = NULL;
-long OpAddress = 0;
+int32_t OpAddress = 0;
CMemory Memory;
@@ -97,7 +97,7 @@ uint16_t SignExtend [2] =
};
//modified per anomie Mode 5 findings
-int HDMA_ModeByteCounts [8] =
+int32_t HDMA_ModeByteCounts [8] =
{
1, 2, 2, 4, 4, 4, 2, 4
};
@@ -163,7 +163,7 @@ uint8_t BGSizes [2] =
};
uint16_t DirectColourMaps [8][256];
-long FilterValues[4][2] =
+int32_t FilterValues[4][2] =
{
{0, 0},
{240, 0},
diff --git a/source/memmap.c b/source/memmap.c
index 81093df..4a96f66 100644
--- a/source/memmap.c
+++ b/source/memmap.c
@@ -35,12 +35,12 @@ extern struct FxInit_s SuperFX;
#define SET_UI_COLOR(r,g,b) ;
#endif
-static int retry_count = 0;
+static int32_t retry_count = 0;
static uint8_t bytes0x2000 [0x2000];
-int is_bsx(unsigned char*);
-int bs_name(unsigned char*);
+int32_t is_bsx(uint8_t*);
+int32_t bs_name(uint8_t*);
-static int check_char(unsigned c)
+static int32_t check_char(uint32_t c)
{
if ((c & 0x80) == 0)
return 0;
@@ -101,7 +101,7 @@ const uint32_t crc32Table[256] =
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};
-void S9xDeinterleaveType1(int TotalFileSize, uint8_t* base)
+void S9xDeinterleaveType1(int32_t TotalFileSize, uint8_t* base)
{
if (Settings.DisplayColor == 0xffff)
{
@@ -109,8 +109,8 @@ void S9xDeinterleaveType1(int TotalFileSize, uint8_t* base)
SET_UI_COLOR(0, 255, 0);
}
- int i;
- int nblocks = TotalFileSize >> 16;
+ int32_t i;
+ int32_t nblocks = TotalFileSize >> 16;
uint8_t blocks [256];
for (i = 0; i < nblocks; i++)
{
@@ -123,7 +123,7 @@ void S9xDeinterleaveType1(int TotalFileSize, uint8_t* base)
{
for (i = 0; i < nblocks * 2; i++)
{
- int j;
+ int32_t j;
for (j = i; j < nblocks * 2; j++)
{
if (blocks [j] == i)
@@ -143,13 +143,12 @@ void S9xDeinterleaveType1(int TotalFileSize, uint8_t* base)
}
}
}
- free((char*) tmp);
+ free(tmp);
}
}
-void S9xDeinterleaveGD24(int TotalFileSize, uint8_t* base)
+void S9xDeinterleaveGD24(int32_t TotalFileSize, uint8_t* base)
{
-
if (TotalFileSize != 0x300000)
return;
@@ -171,15 +170,15 @@ void S9xDeinterleaveGD24(int TotalFileSize, uint8_t* base)
memcpy(&base[0x200000], &base[0x280000], 0x80000);
// memmove converted: Different mallocs [Neb]
memcpy(&base[0x280000], tmp, 0x80000);
- free((char*) tmp);
+ free(tmp);
S9xDeinterleaveType1(TotalFileSize, base);
}
}
-static bool AllASCII(uint8_t* b, int size)
+static bool AllASCII(uint8_t* b, int32_t size)
{
- int i;
+ int32_t i;
for (i = 0; i < size; i++)
{
if (b[i] < 32 || b[i] > 126)
@@ -188,10 +187,10 @@ static bool AllASCII(uint8_t* b, int size)
return (true);
}
-static int ScoreHiROM(bool skip_header, int32_t romoff)
+static int32_t ScoreHiROM(bool skip_header, int32_t romoff)
{
- int score = 0;
- int o = skip_header ? 0xff00 + 0x200 : 0xff00;
+ int32_t score = 0;
+ int32_t o = skip_header ? 0xff00 + 0x200 : 0xff00;
o += romoff;
@@ -233,10 +232,10 @@ static int ScoreHiROM(bool skip_header, int32_t romoff)
return (score);
}
-static int ScoreLoROM(bool skip_header, int32_t romoff)
+static int32_t ScoreLoROM(bool skip_header, int32_t romoff)
{
- int score = 0;
- int o = skip_header ? 0x7f00 + 0x200 : 0x7f00;
+ int32_t score = 0;
+ int32_t o = skip_header ? 0x7f00 + 0x200 : 0x7f00;
o += romoff;
@@ -278,26 +277,26 @@ static int ScoreLoROM(bool skip_header, int32_t romoff)
static char* Safe(const char* s)
{
static char* safe;
- static int safe_len = 0;
+ static int32_t safe_len = 0;
if (s == NULL)
{
if (safe != NULL)
{
- free((char*)safe);
+ free(safe);
safe = NULL;
}
return NULL;
}
- int len = strlen(s);
+ int32_t len = strlen(s);
if (!safe || len + 1 > safe_len)
{
if (safe)
- free((char*) safe);
+ free(safe);
safe = (char*) malloc(safe_len = len + 1);
}
- int i;
+ int32_t i;
for (i = 0; i < len; i++)
{
if (s [i] >= 32 && s [i] < 127)
@@ -391,65 +390,65 @@ void S9xDeinitMemory()
{
if (Memory.RAM)
{
- free((char*) Memory.RAM);
+ free(Memory.RAM);
Memory.RAM = NULL;
}
if (Memory.SRAM)
{
- free((char*) Memory.SRAM);
+ free(Memory.SRAM);
Memory.SRAM = NULL;
}
if (Memory.VRAM)
{
- free((char*) Memory.VRAM);
+ free(Memory.VRAM);
Memory.VRAM = NULL;
}
if (Memory.ROM)
{
Memory.ROM -= 0x8000;
#ifdef DS2_RAM
- AlignedFree((char*) ROM, PtrAdj.ROM);
+ AlignedFree(ROM, PtrAdj.ROM);
#else
- free((char*) Memory.ROM);
+ free(Memory.ROM);
#endif
Memory.ROM = NULL;
}
if (Memory.BSRAM)
{
- free((char*) Memory.BSRAM);
+ free(Memory.BSRAM);
Memory.BSRAM = NULL;
}
if (IPPU.TileCache [TILE_2BIT])
{
- free((char*) IPPU.TileCache [TILE_2BIT]);
+ free(IPPU.TileCache [TILE_2BIT]);
IPPU.TileCache [TILE_2BIT] = NULL;
}
if (IPPU.TileCache [TILE_4BIT])
{
- free((char*) IPPU.TileCache [TILE_4BIT]);
+ free(IPPU.TileCache [TILE_4BIT]);
IPPU.TileCache [TILE_4BIT] = NULL;
}
if (IPPU.TileCache [TILE_8BIT])
{
- free((char*) IPPU.TileCache [TILE_8BIT]);
+ free(IPPU.TileCache [TILE_8BIT]);
IPPU.TileCache [TILE_8BIT] = NULL;
}
if (IPPU.TileCached [TILE_2BIT])
{
- free((char*) IPPU.TileCached [TILE_2BIT]);
+ free(IPPU.TileCached [TILE_2BIT]);
IPPU.TileCached [TILE_2BIT] = NULL;
}
if (IPPU.TileCached [TILE_4BIT])
{
- free((char*) IPPU.TileCached [TILE_4BIT]);
+ free(IPPU.TileCached [TILE_4BIT]);
IPPU.TileCached [TILE_4BIT] = NULL;
}
if (IPPU.TileCached [TILE_8BIT])
{
- free((char*) IPPU.TileCached [TILE_8BIT]);
+ free(IPPU.TileCached [TILE_8BIT]);
IPPU.TileCached [TILE_8BIT] = NULL;
}
FreeSDD1Data();
@@ -460,12 +459,12 @@ void FreeSDD1Data()
{
if (Memory.SDD1Index)
{
- free((char*) Memory.SDD1Index);
+ free(Memory.SDD1Index);
Memory.SDD1Index = NULL;
}
if (Memory.SDD1Data)
{
- free((char*) Memory.SDD1Data);
+ free(Memory.SDD1Data);
Memory.SDD1Data = NULL;
}
}
@@ -473,12 +472,12 @@ void FreeSDD1Data()
#ifndef LOAD_FROM_MEMORY_TEST
/* Read variable size MSB int from a file */
-static long ReadInt(FILE* f, unsigned nbytes)
+static int32_t ReadInt(FILE* f, uint32_t nbytes)
{
- long v = 0;
+ int32_t v = 0;
while (nbytes--)
{
- int c = fgetc(f);
+ int32_t c = fgetc(f);
if (c == EOF)
return -1;
v = (v << 8) | (c & 0xFF);
@@ -488,8 +487,7 @@ static long ReadInt(FILE* f, unsigned nbytes)
#define IPS_EOF 0x00454F46l
-static void CheckForIPSPatch(const char* rom_filename, bool header,
- int32_t* rom_size)
+static void CheckForIPSPatch(const char* rom_filename, bool header, int32_t* rom_size)
{
char dir [_MAX_DIR + 1];
char drive [_MAX_DRIVE + 1];
@@ -497,18 +495,16 @@ static void CheckForIPSPatch(const char* rom_filename, bool header,
char ext [_MAX_EXT + 1];
char fname [_MAX_PATH + 1];
FILE* patch_file = NULL;
- long offset = header ? 512 : 0;
+ int32_t offset = header ? 512 : 0;
_splitpath(rom_filename, drive, dir, name, ext);
_makepath(fname, drive, dir, name, "ips");
if (!(patch_file = fopen(fname, "rb")))
- {
if (!(patch_file = fopen(S9xGetFilename("ips"), "rb")))
return;
- }
- if (fread((unsigned char*)fname, 1, 5, patch_file) != 5 ||
+ if (fread(fname, 1, 5, patch_file) != 5 ||
strncmp(fname, "PATCH", 5) != 0)
{
fclose(patch_file);
@@ -519,9 +515,9 @@ static void CheckForIPSPatch(const char* rom_filename, bool header,
for (;;)
{
- long len;
- long rlen;
- int rchar;
+ int32_t len;
+ int32_t rlen;
+ int32_t rchar;
ofs = ReadInt(patch_file, 3);
if (ofs == -1)
@@ -592,7 +588,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
{
FILE* ROMFile;
int32_t TotalFileSize = 0;
- int len = 0;
+ int32_t len = 0;
char dir [_MAX_DIR + 1];
char drive [_MAX_DRIVE + 1];
@@ -600,7 +596,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
char ext [_MAX_EXT + 1];
char fname [_MAX_PATH + 1];
- unsigned long FileSize = 0;
+ uint32_t FileSize = 0;
_splitpath(filename, drive, dir, name, ext);
_makepath(fname, drive, dir, name, ext);
@@ -624,7 +620,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
FileSize = fread(ptr, 1, maxsize + 0x200 - (ptr - Memory.ROM), ROMFile);
fclose(ROMFile);
- int calc_size = FileSize & ~0x1FFF; // round to the lower 0x2000
+ int32_t calc_size = FileSize & ~0x1FFF; // round to the lower 0x2000
if ((FileSize - calc_size == 512 && !Settings.ForceNoHeader) ||
Settings.ForceHeader)
@@ -634,7 +630,7 @@ static uint32_t FileLoader(uint8_t* buffer, const char* filename, int32_t maxsiz
#ifdef DS2_DMA
__dcache_writeback_all();
{
- unsigned int i;
+ uint32_t i;
for (i = 0; i < calc_size; i += 512)
{
ds2_DMAcopy_32Byte(2 /* channel: emu internal */, ptr + i, ptr + i + 512, 512);
@@ -724,10 +720,8 @@ bool LoadROM(
bool Tales = false;
uint8_t* RomHeader = Memory.ROM;
-
Memory.ExtendedFormat = NOPE;
-
if (CleanUp7110 != NULL)
(*CleanUp7110)();
@@ -752,8 +746,7 @@ again:
const uint8_t* src = game->data;
Memory.HeaderCount = 0;
- if ((((game->size & 0x1FFF) == 0x200) && !Settings.ForceNoHeader)
- || Settings.ForceHeader)
+ if ((((game->size & 0x1FFF) == 0x200) && !Settings.ForceNoHeader) || Settings.ForceHeader)
{
S9xMessage(S9X_INFO, S9X_HEADERS_INFO,
"Found ROM file header (and ignored it).");
@@ -780,8 +773,7 @@ again:
CheckForIPSPatch(filename, Memory.HeaderCount != 0, &TotalFileSize);
#endif
//fix hacked games here.
- if ((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0x7FC0], 19) == 0)
- && (Memory.ROM[0x7FD5] != 0x31))
+ if ((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0x7FC0], 19) == 0) && (Memory.ROM[0x7FD5] != 0x31))
{
Memory.ROM[0x7FD5] = 0x31;
Memory.ROM[0x7FD6] = 0x02;
@@ -790,8 +782,7 @@ again:
S9xMessage(S9X_ERROR, S9X_ROM_CONFUSING_FORMAT_INFO, "Warning! Hacked Dump!");
}
- if ((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0xFFC0], 19) == 0)
- && (Memory.ROM[0xFFD5] != 0x31))
+ if ((strncmp("HONKAKUHA IGO GOSEI", (char*)&Memory.ROM[0xFFC0], 19) == 0) && (Memory.ROM[0xFFD5] != 0x31))
{
Memory.ROM[0xFFD5] = 0x31;
Memory.ROM[0xFFD6] = 0x02;
@@ -800,8 +791,7 @@ again:
S9xMessage(S9X_ERROR, S9X_ROM_CONFUSING_FORMAT_INFO, "Warning! Hacked Dump!");
}
- if ((Memory.ROM[0x7FD5] == 0x42) && (Memory.ROM[0x7FD6] == 0x13)
- && (strncmp("METAL COMBAT", (char*)&Memory.ROM[0x7FC0], 12) == 0))
+ if ((Memory.ROM[0x7FD5] == 0x42) && (Memory.ROM[0x7FD6] == 0x13) && (strncmp("METAL COMBAT", (char*)&Memory.ROM[0x7FC0], 12) == 0))
{
Settings.DisplayColor = BUILD_PIXEL(31, 0, 0);
SET_UI_COLOR(255, 0, 0);
@@ -841,8 +831,8 @@ again:
}
#endif
- int hi_score=ScoreHiROM(true, 0);
- int lo_score=ScoreLoROM(true, 0);
+ int32_t hi_score = ScoreHiROM(true, 0);
+ int32_t lo_score = ScoreLoROM(true, 0);
if (Memory.HeaderCount == 0 && !Settings.ForceNoHeader &&
((hi_score > lo_score && ScoreHiROM(true, 0) > hi_score) ||
@@ -851,11 +841,10 @@ again:
#ifdef DS2_DMA
__dcache_writeback_all();
{
- unsigned int i;
+ uint32_t i;
for (i = 0; i < TotalFileSize; i += 512)
{
- ds2_DMAcopy_32Byte(2 /* channel: emu internal */, Memory.ROM + i,
- Memory.ROM + i + 512, 512);
+ ds2_DMAcopy_32Byte(2 /* channel: emu internal */, Memory.ROM + i, Memory.ROM + i + 512, 512);
ds2_DMA_wait(2);
ds2_DMA_stop(2);
}
@@ -870,24 +859,18 @@ again:
}
Memory.CalculatedSize = TotalFileSize & ~0x1FFF; // round down to lower 0x2000
- memset(Memory.ROM + Memory.CalculatedSize, 0,
- MAX_ROM_SIZE - Memory.CalculatedSize);
+ memset(Memory.ROM + Memory.CalculatedSize, 0, MAX_ROM_SIZE - Memory.CalculatedSize);
if (Memory.CalculatedSize > 0x400000 &&
- !(Memory.ROM[0x7FD5] == 0x32 && ((Memory.ROM[0x7FD6] & 0xF0) == 0x40))
- && //exclude S-DD1
- !(Memory.ROM[0xFFD5] == 0x3A
- && ((Memory.ROM[0xFFD6] & 0xF0) == 0xF0))) //exclude SPC7110
- {
- //you might be a Jumbo!
- Memory.ExtendedFormat = YEAH;
- }
+ !(Memory.ROM[0x7FD5] == 0x32 && ((Memory.ROM[0x7FD6] & 0xF0) == 0x40)) && //exclude S-DD1
+ !(Memory.ROM[0xFFD5] == 0x3A && ((Memory.ROM[0xFFD6] & 0xF0) == 0xF0))) //exclude SPC7110
+ Memory.ExtendedFormat = YEAH; //you might be a Jumbo!
//If both vectors are invalid, it's type 1 LoROM
- if (Memory.ExtendedFormat == NOPE
- && ((Memory.ROM[0x7FFC] | (Memory.ROM[0x7FFD] << 8)) < 0x8000)
- && ((Memory.ROM[0xFFFC] | (Memory.ROM[0xFFFD] << 8)) < 0x8000))
+ if (Memory.ExtendedFormat == NOPE &&
+ ((Memory.ROM[0x7FFC] | (Memory.ROM[0x7FFD] << 8)) < 0x8000) &&
+ ((Memory.ROM[0xFFFC] | (Memory.ROM[0xFFFD] << 8)) < 0x8000))
{
if (Settings.DisplayColor == 0xffff)
{
@@ -904,7 +887,7 @@ again:
if (Memory.ExtendedFormat != NOPE)
{
- int loromscore, hiromscore, swappedlorom, swappedhirom;
+ int32_t loromscore, hiromscore, swappedlorom, swappedhirom;
loromscore = ScoreLoROM(false, 0);
hiromscore = ScoreHiROM(false, 0);
swappedlorom = ScoreLoROM(false, 0x400000);
@@ -966,30 +949,18 @@ again:
}
// More
- if (!Settings.ForceHiROM && !Settings.ForceLoROM &&
- !Settings.ForceInterleaved && !Settings.ForceInterleaved2 &&
- !Settings.ForceNotInterleaved && !Settings.ForcePAL &&
- !Settings.ForceSuperFX && !Settings.ForceDSP1 &&
- !Settings.ForceSA1 && !Settings.ForceC4 &&
- !Settings.ForceSDD1)
+ if (!Settings.ForceHiROM &&
+ !Settings.ForceLoROM &&
+ !Settings.ForceInterleaved &&
+ !Settings.ForceInterleaved2 &&
+ !Settings.ForceNotInterleaved &&
+ !Settings.ForcePAL &&
+ !Settings.ForceSuperFX &&
+ !Settings.ForceDSP1 &&
+ !Settings.ForceSA1 &&
+ !Settings.ForceC4 &&
+ !Settings.ForceSDD1)
{
-
-
-#ifdef DETECT_NASTY_FX_INTERLEAVE
- //MK: Damn. YI trips a BRK currently. Maybe even on a real cart.
-
-#ifdef MSB_FIRST
- if (strncmp((char*) &ROM [0x7fc0], "YOSHI'S ISLAND", 14) == 0
- && (ROM[0x7FDE] + (ROM[0x7FDF] << 8)) == 57611 && ROM[0x10002] == 0xA9)
-#else
- if (strncmp((char*) &ROM [0x7fc0], "YOSHI'S ISLAND", 14) == 0
- && (*(uint16_t*)&ROM[0x7FDE]) == 57611 && ROM[0x10002] == 0xA9)
-#endif
- {
- Interleaved = true;
- Settings.ForceInterleaved2 = true;
- }
-#endif
if (strncmp((char*) &Memory.ROM [0x7fc0], "YUYU NO QUIZ DE GO!GO!", 22) == 0)
{
Memory.LoROM = true;
@@ -1019,8 +990,6 @@ again:
Memory.LoROM = false;
Memory.HiROM = true;
-
-
}
else if (Settings.ForceInterleaved2)
S9xDeinterleaveType2(false);
@@ -1050,10 +1019,8 @@ again:
hi_score = ScoreHiROM(false, 0);
lo_score = ScoreLoROM(false, 0);
- if ((Memory.HiROM &&
- (lo_score >= hi_score || hi_score < 0)) ||
- (Memory.LoROM &&
- (hi_score > lo_score || lo_score < 0)))
+ if ((Memory.HiROM && (lo_score >= hi_score || hi_score < 0)) ||
+ (Memory.LoROM && (hi_score > lo_score || lo_score < 0)))
{
if (retry_count == 0)
{
@@ -1091,8 +1058,7 @@ void S9xDeinterleaveMode2(void)
void S9xDeinterleaveType2(bool reset)
{
- if (Settings.DisplayColor == 0xffff
- || Settings.DisplayColor == BUILD_PIXEL(0, 31, 0))
+ if (Settings.DisplayColor == 0xffff || Settings.DisplayColor == BUILD_PIXEL(0, 31, 0))
{
Settings.DisplayColor = BUILD_PIXEL(31, 14, 6);
SET_UI_COLOR(255, 119, 25);
@@ -1101,15 +1067,15 @@ void S9xDeinterleaveType2(bool reset)
S9xMessage(S9X_INFO, S9X_ROM_INTERLEAVED_INFO,
"ROM image is in interleaved format - converting...");
- int nblocks = Memory.CalculatedSize >> 16;
- int step = 64;
+ int32_t nblocks = Memory.CalculatedSize >> 16;
+ int32_t step = 64;
while (nblocks <= step)
step >>= 1;
nblocks = step;
uint8_t blocks [256];
- int i;
+ int32_t i;
for (i = 0; i < nblocks * 2; i++)
{
@@ -1118,7 +1084,7 @@ void S9xDeinterleaveType2(bool reset)
}
#ifdef DS2_DMA
- unsigned int TmpAdj;
+ uint32_t TmpAdj;
uint8_t* tmp = (uint8_t*) AlignedMalloc(0x10000, 32, &TmpAdj);
#else
uint8_t* tmp = (uint8_t*) malloc(0x10000);
@@ -1131,7 +1097,7 @@ void S9xDeinterleaveType2(bool reset)
#endif
for (i = 0; i < nblocks * 2; i++)
{
- int j;
+ int32_t j;
for (j = i; j < nblocks * 2; j++)
{
if (blocks [j] == i)
@@ -1169,7 +1135,7 @@ void S9xDeinterleaveType2(bool reset)
}
}
}
- free((char*) tmp);
+ free(tmp);
tmp = NULL;
}
if (reset)
@@ -1226,7 +1192,6 @@ void InitROM(bool Interleaved)
Memory.LoROM = true;
Memory.HiROM = false;
}
-
else
{
Settings.BS = (-1 != is_bsx(Memory.ROM + 0xFFC0));
@@ -1269,7 +1234,8 @@ void InitROM(bool Interleaved)
SPC7110HiROMMap();
else if ((Memory.ROMSpeed & ~0x10) == 0x25)
TalesROMMap(Interleaved);
- else HiROMMap();
+ else
+ HiROMMap();
}
else
{
@@ -1332,8 +1298,8 @@ void InitROM(bool Interleaved)
Settings.SDD1 = false;
}
else if (Settings.ForceSA1 ||
- (!Settings.ForceNoSA1 && (Memory.ROMSpeed & ~0x10) == 0x23 &&
- (Memory.ROMType & 0xf) > 3 && (Memory.ROMType & 0xf0) == 0x30))
+ (!Settings.ForceNoSA1 && (Memory.ROMSpeed & ~0x10) == 0x23 &&
+ (Memory.ROMType & 0xf) > 3 && (Memory.ROMType & 0xf0) == 0x30))
{
Settings.SA1 = true;
Settings.DSP1Master = false;
@@ -1351,9 +1317,7 @@ void InitROM(bool Interleaved)
LoROM24MBSMap();
Settings.DSP1Master = false;
}
-
- else if (strncmp((char*) &Memory.ROM [0x7fc0], "THOROUGHBRED BREEDER3",
- 21) == 0 ||
+ else if (strncmp((char*) &Memory.ROM [0x7fc0], "THOROUGHBRED BREEDER3", 21) == 0 ||
strncmp((char*) &Memory.ROM [0x7fc0], "RPG-TCOOL 2", 11) == 0)
{
SRAM512KLoROMMap();
@@ -1373,7 +1337,8 @@ void InitROM(bool Interleaved)
AlphaROMMap();
else if (Settings.BS)
BSLoROMMap();
- else LoROMMap();
+ else
+ LoROMMap();
}
if (Settings.BS)
@@ -1383,8 +1348,8 @@ void InitROM(bool Interleaved)
uint32_t sum2 = 0;
if (0 == Memory.CalculatedChecksum)
{
- int power2 = 0;
- int size = Memory.CalculatedSize;
+ int32_t power2 = 0;
+ int32_t size = Memory.CalculatedSize;
while (size >>= 1)
power2++;
@@ -1392,27 +1357,23 @@ void InitROM(bool Interleaved)
size = 1 << power2;
uint32_t remainder = Memory.CalculatedSize - size;
- int i;
+ int32_t i;
for (i = 0; i < size; i++)
sum1 += Memory.ROM [i];
- for (i = 0; i < (int) remainder; i++)
+ for (i = 0; i < (int32_t) remainder; i++)
sum2 += Memory.ROM [size + i];
- int sub = 0;
+ int32_t sub = 0;
if (Settings.BS && Memory.ROMType != 0xE5)
{
if (Memory.HiROM)
- {
for (i = 0; i < 48; i++)
sub += Memory.ROM[0xffb0 + i];
- }
else if (Memory.LoROM)
- {
for (i = 0; i < 48; i++)
sub += Memory.ROM[0x7fb0 + i];
- }
sum1 -= sub;
}
@@ -1469,13 +1430,11 @@ void InitROM(bool Interleaved)
Memory.SRAMMask = Memory.SRAMSize ?
((1 << (Memory.SRAMSize + 3)) * 128) - 1 : 0;
}
- if ((Memory.ROMChecksum + Memory.ROMComplementChecksum != 0xffff)
- || Memory.ROMChecksum != Memory.CalculatedChecksum
- || ((uint32_t)Memory.CalculatedSize > (uint32_t)(((1 << (Memory.ROMSize - 7)) * 128)
- * 1024)))
+ if ((Memory.ROMChecksum + Memory.ROMComplementChecksum != 0xffff) ||
+ Memory.ROMChecksum != Memory.CalculatedChecksum ||
+ ((uint32_t)Memory.CalculatedSize > (uint32_t)(((1 << (Memory.ROMSize - 7)) * 128) * 1024)))
{
- if (Settings.DisplayColor == 0xffff
- || Settings.DisplayColor != BUILD_PIXEL(31, 0, 0))
+ if (Settings.DisplayColor == 0xffff || Settings.DisplayColor != BUILD_PIXEL(31, 0, 0))
{
Settings.DisplayColor = BUILD_PIXEL(31, 31, 0);
SET_UI_COLOR(255, 255, 0);
@@ -1500,8 +1459,7 @@ void InitROM(bool Interleaved)
"\"%s\" [%s] %s, %s, Type: %s, Mode: %s, TV: %s, S-RAM: %s, ROMId: %s Company: %2.2s CRC32: %08X",
Memory.ROMName,
(Memory.ROMChecksum + Memory.ROMComplementChecksum != 0xffff ||
- Memory.ROMChecksum != Memory.CalculatedChecksum) ? "bad checksum" :
- "checksum ok",
+ Memory.ROMChecksum != Memory.CalculatedChecksum) ? "bad checksum" : "checksum ok",
MapType(),
Size(),
KartContents(),
@@ -1513,16 +1471,15 @@ void InitROM(bool Interleaved)
Memory.ROMCRC32);
S9xMessage(S9X_INFO, S9X_ROM_INFO, String);
-
Settings.ForceHeader = Settings.ForceHiROM = Settings.ForceLoROM =
- Settings.ForceInterleaved = Settings.ForceNoHeader =
- Settings.ForceNotInterleaved =
- Settings.ForceInterleaved2 = false;
+ Settings.ForceInterleaved = Settings.ForceNoHeader =
+ Settings.ForceNotInterleaved =
+ Settings.ForceInterleaved2 = false;
}
void FixROMSpeed()
{
- int c;
+ int32_t c;
if (CPU.FastROMSpeed == 0)
CPU.FastROMSpeed = SLOW_ONE_CYCLE;
@@ -1532,10 +1489,9 @@ void FixROMSpeed()
Memory.MemorySpeed [c] = (uint8_t) CPU.FastROMSpeed;
}
-
void ResetSpeedMap()
{
- int i;
+ int32_t i;
memset(Memory.MemorySpeed, SLOW_ONE_CYCLE, 0x1000);
for (i = 0; i < 0x400; i += 0x10)
{
@@ -1550,33 +1506,27 @@ void ResetSpeedMap()
void WriteProtectROM()
{
// memmove converted: Different mallocs [Neb]
- memcpy((void*) Memory.WriteMap, (void*) Memory.Map, sizeof(Memory.Map));
- int c;
+ memcpy(Memory.WriteMap, Memory.Map, sizeof(Memory.Map));
+ int32_t c;
for (c = 0; c < 0x1000; c++)
- {
if (Memory.BlockIsROM [c])
Memory.WriteMap [c] = (uint8_t*) MAP_NONE;
- }
}
void MapRAM()
{
- int c;
+ int32_t c, i;
if (Memory.LoROM && !Settings.SDD1)
{
// Banks 70->77, S-RAM
for (c = 0; c < 0x0f; c++)
{
- int i;
for (i = 0; i < 8; i++)
{
- Memory.Map [(c << 4) + 0xF00 + i] = Memory.Map [(c << 4) + 0x700 + i] =
- (uint8_t*) MAP_LOROM_SRAM;
- Memory.BlockIsRAM [(c << 4) + 0xF00 + i] = Memory.BlockIsRAM [(c << 4) + 0x700 +
- i] = true;
- Memory.BlockIsROM [(c << 4) + 0xF00 + i] = Memory.BlockIsROM [(c << 4) + 0x700 +
- i] = false;
+ Memory.Map [(c << 4) + 0xF00 + i] = Memory.Map [(c << 4) + 0x700 + i] = (uint8_t*) MAP_LOROM_SRAM;
+ Memory.BlockIsRAM [(c << 4) + 0xF00 + i] = Memory.BlockIsRAM [(c << 4) + 0x700 + i] = true;
+ Memory.BlockIsROM [(c << 4) + 0xF00 + i] = Memory.BlockIsROM [(c << 4) + 0x700 + i] = false;
}
}
}
@@ -1585,7 +1535,6 @@ void MapRAM()
// Banks 70->77, S-RAM
for (c = 0; c < 0x0f; c++)
{
- int i;
for (i = 0; i < 8; i++)
{
Memory.Map [(c << 4) + 0x700 + i] = (uint8_t*) MAP_LOROM_SRAM;
@@ -1609,7 +1558,7 @@ void MapRAM()
void MapExtraRAM()
{
- int c;
+ int32_t c;
// Banks 7e->7f, RAM
for (c = 0; c < 16; c++)
@@ -1643,16 +1592,16 @@ void MapExtraRAM()
void LoROMMap()
{
- int c;
- int i;
- int j;
- int mask[4];
+ int32_t c;
+ int32_t i;
+ int32_t j;
+ int32_t mask[4];
for (j = 0; j < 4; j++)
mask[j] = 0x00ff;
mask[0] = (Memory.CalculatedSize / 0x8000) - 1;
- int x;
+ int32_t x;
bool foundZeros;
bool pastZeros;
@@ -1720,8 +1669,8 @@ void LoROMMap()
for (i = c + 8; i < c + 16; i++)
{
- int e = 3;
- int d = c >> 4;
+ int32_t e = 3;
+ int32_t d = c >> 4;
while (d > mask[0])
{
d &= mask[e];
@@ -1749,21 +1698,19 @@ void LoROMMap()
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) %
- Memory.CalculatedSize];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) % Memory.CalculatedSize];
for (i = c + 8; i < c + 16; i++)
{
- int e = 3;
- int d = (c + 0x400) >> 4;
+ int32_t e = 3;
+ int32_t d = (c + 0x400) >> 4;
while (d > mask[0])
{
d &= mask[e];
e--;
}
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((
- d) - 1) * 0x8000);
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((d) - 1) * 0x8000);
}
for (i = c; i < c + 16; i++)
@@ -1779,7 +1726,7 @@ void LoROMMap()
}
}
- int sum = 0, k, l, bankcount;
+ int32_t sum = 0, k, l, bankcount;
bankcount = 1 << (Memory.ROMSize - 7); //Mbits
//safety for corrupt headers
@@ -1802,16 +1749,16 @@ void LoROMMap()
void SetaDSPMap()
{
- int c;
- int i;
- int j;
- int mask[4];
+ int32_t c;
+ int32_t i;
+ int32_t j;
+ int32_t mask[4];
for (j = 0; j < 4; j++)
mask[j] = 0x00ff;
mask[0] = (Memory.CalculatedSize / 0x8000) - 1;
- int x;
+ int32_t x;
bool foundZeros;
bool pastZeros;
@@ -1859,8 +1806,8 @@ void SetaDSPMap()
for (i = c + 8; i < c + 16; i++)
{
- int e = 3;
- int d = c >> 4;
+ int32_t e = 3;
+ int32_t d = c >> 4;
while (d > mask[0])
{
d &= mask[e];
@@ -1876,16 +1823,15 @@ void SetaDSPMap()
{
for (i = c + 8; i < c + 16; i++)
{
- int e = 3;
- int d = (c + 0x400) >> 4;
+ int32_t e = 3;
+ int32_t d = (c + 0x400) >> 4;
while (d > mask[0])
{
d &= mask[e];
e--;
}
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((
- d) - 1) * 0x8000);
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = Memory.ROM + (((d) - 1) * 0x8000);
}
//only upper half is ROM
@@ -1913,7 +1859,7 @@ void SetaDSPMap()
}
}
- int sum = 0, k, l, bankcount;
+ int32_t sum = 0, k, l, bankcount;
bankcount = 1 << (Memory.ROMSize - 7); //Mbits
//safety for corrupt headers
if (bankcount > 128)
@@ -1935,8 +1881,8 @@ void SetaDSPMap()
void BSLoROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
if (Settings.BS)
Memory.SRAMSize = 5;
@@ -2013,11 +1959,11 @@ void BSLoROMMap()
void HiROMMap()
{
- int i;
- int c;
- int j;
+ int32_t i;
+ int32_t c;
+ int32_t j;
- int mask[4];
+ int32_t mask[4];
for (j = 0; j < 4; j++)
mask[j] = 0x00ff;
@@ -2032,7 +1978,7 @@ void HiROMMap()
}
- int x;
+ int32_t x;
bool foundZeros;
bool pastZeros;
@@ -2088,8 +2034,8 @@ void HiROMMap()
for (i = c + 8; i < c + 16; i++)
{
- int e = 3;
- int d = c >> 4;
+ int32_t e = 3;
+ int32_t d = c >> 4;
while (d > mask[0])
{
d &= mask[e];
@@ -2118,8 +2064,8 @@ void HiROMMap()
{
for (i = c; i < c + 16; i++)
{
- int e = 3;
- int d = (c) >> 4;
+ int32_t e = 3;
+ int32_t d = (c) >> 4;
while (d > mask[0])
{
d &= mask[e];
@@ -2130,11 +2076,11 @@ void HiROMMap()
}
}
- int bankmax = 0x40 + (1 << (Memory.ROMSize - 6));
+ int32_t bankmax = 0x40 + (1 << (Memory.ROMSize - 6));
//safety for corrupt headers
if (bankmax > 128)
bankmax = 0x80;
- int sum = 0;
+ int32_t sum = 0;
for (i = 0x40; i < bankmax; i++)
{
uint8_t* bank_low = (uint8_t*)Memory.Map[i << 4];
@@ -2149,8 +2095,8 @@ void HiROMMap()
void TalesROMMap(bool Interleaved)
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
if (Interleaved)
{
@@ -2168,8 +2114,7 @@ void TalesROMMap(bool Interleaved)
{
OFFSET0 = 0x000000;
OFFSET1 = 0x000000;
- OFFSET2 = Memory.CalculatedSize -
- 0x400000; //changed to work with interleaved DKJM2.
+ OFFSET2 = Memory.CalculatedSize - 0x400000; //changed to work with interleaved DKJM2.
}
// Banks 00->3f and 80->bf
@@ -2192,7 +2137,7 @@ void TalesROMMap(bool Interleaved)
Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8_t*) MAP_HIROM_SRAM;
Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8_t*) MAP_HIROM_SRAM;
Memory.BlockIsRAM [6 + c] = Memory.BlockIsRAM [7 + c] =
- Memory.BlockIsRAM [0x806 + c] = Memory.BlockIsRAM [0x807 + c] = true;
+ Memory.BlockIsRAM [0x806 + c] = Memory.BlockIsRAM [0x807 + c] = true;
}
else
{
@@ -2215,10 +2160,8 @@ void TalesROMMap(bool Interleaved)
{
for (i = c; i < c + 8; i++)
{
- Memory.Map [i + 0x400] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize -
- 0x400000)) + OFFSET1];
- Memory.Map [i + 0x408] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize -
- 0x400000)) + OFFSET1];
+ Memory.Map [i + 0x400] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize - 0x400000)) + OFFSET1];
+ Memory.Map [i + 0x408] = &Memory.ROM [((c << 12) % (Memory.CalculatedSize - 0x400000)) + OFFSET1];
Memory.Map [i + 0xc00] = &Memory.ROM [((c << 12) % 0x400000) + OFFSET2];
Memory.Map [i + 0xc08] = &Memory.ROM [((c << 12) % 0x400000) + OFFSET2];
Memory.BlockIsROM [i + 0x400] = true;
@@ -2237,12 +2180,10 @@ void TalesROMMap(bool Interleaved)
}
}
- Memory.ROMChecksum = *(Memory.Map[8] + 0xFFDE) + (*(Memory.Map[8] + 0xFFDF) <<
- 8);
- Memory.ROMComplementChecksum = *(Memory.Map[8] + 0xFFDC) + (*
- (Memory.Map[8] + 0xFFDD) << 8);
+ Memory.ROMChecksum = *(Memory.Map[8] + 0xFFDE) + (*(Memory.Map[8] + 0xFFDF) << 8);
+ Memory.ROMComplementChecksum = *(Memory.Map[8] + 0xFFDC) + (*(Memory.Map[8] + 0xFFDD) << 8);
- int sum = 0;
+ int32_t sum = 0;
for (i = 0x40; i < 0x80; i++)
{
uint8_t* bank_low = (uint8_t*)Memory.Map[i << 4];
@@ -2262,8 +2203,8 @@ void TalesROMMap(bool Interleaved)
void AlphaROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2311,14 +2252,15 @@ void DetectSuperFxRamSize()
{
if (strncmp(Memory.ROMName, "STAR FOX 2", 10) == 0)
Memory.SRAMSize = 6;
- else Memory.SRAMSize = 5;
+ else
+ Memory.SRAMSize = 5;
}
}
void SuperFXROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
DetectSuperFxRamSize();
@@ -2336,8 +2278,7 @@ void SuperFXROMMap()
Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8_t*) MAP_CPU;
Memory.Map [0x006 + c] = Memory.Map [0x806 + c] = (uint8_t*) Memory.SRAM - 0x6000;
Memory.Map [0x007 + c] = Memory.Map [0x807 + c] = (uint8_t*) Memory.SRAM - 0x6000;
- Memory.BlockIsRAM [0x006 + c] = Memory.BlockIsRAM [0x007 + c] =
- Memory.BlockIsRAM [0x806 + c] = Memory.BlockIsRAM [0x807 + c] = true;
+ Memory.BlockIsRAM [0x006 + c] = Memory.BlockIsRAM [0x007 + c] = Memory.BlockIsRAM [0x806 + c] = Memory.BlockIsRAM [0x807 + c] = true;
for (i = c + 8; i < c + 16; i++)
{
@@ -2351,8 +2292,7 @@ void SuperFXROMMap()
{
for (i = c; i < c + 16; i++)
{
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) %
- Memory.CalculatedSize];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize];
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
}
}
@@ -2405,8 +2345,8 @@ void SuperFXROMMap()
void SA1ROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2417,8 +2357,7 @@ void SA1ROMMap()
Memory.BlockIsRAM [c + 1] = Memory.BlockIsRAM [c + 0x801] = true;
Memory.Map [c + 2] = Memory.Map [c + 0x802] = (uint8_t*) MAP_PPU;
- Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8_t*) &Memory.FillRAM [0x3000]
- - 0x3000;
+ Memory.Map [c + 3] = Memory.Map [c + 0x803] = (uint8_t*) &Memory.FillRAM [0x3000] - 0x3000;
Memory.Map [c + 4] = Memory.Map [c + 0x804] = (uint8_t*) MAP_CPU;
Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8_t*) MAP_CPU;
Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8_t*) MAP_BWRAM;
@@ -2485,8 +2424,8 @@ void SA1ROMMap()
void LoROM24MBSMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2536,12 +2475,10 @@ void LoROM24MBSMap()
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000];
for (i = c + 8; i < c + 16; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000 - 0x8000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000];
for (i = c; i < c + 16; i++)
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
@@ -2553,8 +2490,8 @@ void LoROM24MBSMap()
void SufamiTurboLoROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2581,12 +2518,10 @@ void SufamiTurboLoROMMap()
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000];
for (i = c + 8; i < c + 16; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000 - 0x8000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000];
for (i = c; i < c + 16; i++)
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
@@ -2625,8 +2560,8 @@ void SufamiTurboLoROMMap()
void SRAM512KLoROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2642,7 +2577,6 @@ void SRAM512KLoROMMap()
Memory.Map [c + 5] = Memory.Map [c + 0x805] = (uint8_t*) MAP_CPU;
Memory.Map [c + 6] = Memory.Map [c + 0x806] = (uint8_t*) MAP_NONE;
Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8_t*) MAP_NONE;
-
for (i = c + 8; i < c + 16; i++)
{
Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [c << 11] - 0x8000;
@@ -2654,12 +2588,10 @@ void SRAM512KLoROMMap()
for (c = 0; c < 0x400; c += 16)
{
for (i = c; i < c + 8; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000];
for (i = c + 8; i < c + 16; i++)
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) +
- 0x200000 - 0x8000];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 11) + 0x200000 - 0x8000];
for (i = c; i < c + 16; i++)
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
@@ -2671,8 +2603,8 @@ void SRAM512KLoROMMap()
void BSHiROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
Memory.SRAMSize = 5;
@@ -2695,11 +2627,9 @@ void BSHiROMMap()
Memory.BlockIsRAM [c + 6] = Memory.BlockIsRAM [c + 0x806] = true;
Memory.Map [c + 7] = Memory.Map [c + 0x807] = (uint8_t*) Memory.RAM;
Memory.BlockIsRAM [c + 7] = Memory.BlockIsRAM [c + 0x807] = true;
-
for (i = c + 8; i < c + 16; i++)
{
- Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) %
- Memory.CalculatedSize];
+ Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) % Memory.CalculatedSize];
Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = true;
}
}
@@ -2727,8 +2657,7 @@ void BSHiROMMap()
{
for (i = c; i < c + 16; i++)
{
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) %
- Memory.CalculatedSize];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize];
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
}
}
@@ -2740,14 +2669,9 @@ void BSHiROMMap()
}
for (i = 0; i < 8; i++)
{
- Memory.Map[0x205 + (i << 4)] = Memory.Map[0x285 + (i << 4)] = Memory.Map[0x305
- + (i << 4)] = Memory.Map[0x385 + (i << 4)] = Memory.Map[0x705 + (i << 4)];
- Memory.BlockIsRAM[0x205 + (i << 4)] = Memory.BlockIsRAM[0x285 +
- (i << 4)] = Memory.BlockIsRAM[0x305 + (i << 4)] = Memory.BlockIsRAM[0x385 +
- (i << 4)] = true;
- Memory.BlockIsROM[0x205 + (i << 4)] = Memory.BlockIsROM[0x285 +
- (i << 4)] = Memory.BlockIsROM[0x305 + (i << 4)] = Memory.BlockIsROM[0x385 +
- (i << 4)] = false;
+ Memory.Map[0x205 + (i << 4)] = Memory.Map[0x285 + (i << 4)] = Memory.Map[0x305 + (i << 4)] = Memory.Map[0x385 + (i << 4)] = Memory.Map[0x705 + (i << 4)];
+ Memory.BlockIsRAM[0x205 + (i << 4)] = Memory.BlockIsRAM[0x285 + (i << 4)] = Memory.BlockIsRAM[0x305 + (i << 4)] = Memory.BlockIsRAM[0x385 + (i << 4)] = true;
+ Memory.BlockIsROM[0x205 + (i << 4)] = Memory.BlockIsROM[0x285 + (i << 4)] = Memory.BlockIsROM[0x305 + (i << 4)] = Memory.BlockIsROM[0x385 + (i << 4)] = false;
}
MapRAM();
@@ -2756,8 +2680,8 @@ void BSHiROMMap()
void JumboLoROMMap(bool Interleaved)
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
uint32_t OFFSET0 = 0x400000;
uint32_t OFFSET2 = 0x000000;
@@ -2765,8 +2689,7 @@ void JumboLoROMMap(bool Interleaved)
if (Interleaved)
{
OFFSET0 = 0x000000;
- OFFSET2 = Memory.CalculatedSize -
- 0x400000; //changed to work with interleaved DKJM2.
+ OFFSET2 = Memory.CalculatedSize - 0x400000; //changed to work with interleaved DKJM2.
}
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2798,10 +2721,8 @@ void JumboLoROMMap(bool Interleaved)
for (i = c + 8; i < c + 16; i++)
{
- Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) +
- OFFSET0] - 0x8000;
- Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % (0x400000)) + OFFSET2] -
- 0x8000;
+ Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0] - 0x8000;
+ Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % (0x400000)) + OFFSET2] - 0x8000;
Memory.BlockIsROM [i + 0x800] = Memory.BlockIsROM [i] = true;
}
}
@@ -2825,17 +2746,14 @@ void JumboLoROMMap(bool Interleaved)
//updated mappings to correct A15 mirroring
for (i = c; i < c + 8; i++)
{
- Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) +
- OFFSET0];
+ Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0];
Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % 0x400000) + OFFSET2];
}
for (i = c + 8; i < c + 16; i++)
{
- Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) +
- OFFSET0] - 0x8000;
- Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % 0x400000) + OFFSET2 ] -
- 0x8000;
+ Memory.Map [i] = &Memory.ROM [((c << 11) % (Memory.CalculatedSize - 0x400000)) + OFFSET0] - 0x8000;
+ Memory.Map [i + 0x800] = &Memory.ROM [((c << 11) % 0x400000) + OFFSET2 ] - 0x8000;
}
for (i = c; i < c + 16; i++)
@@ -2843,11 +2761,10 @@ void JumboLoROMMap(bool Interleaved)
}
//ROM type has to be 64 Mbit header!
- int sum = 0, k, l;
+ int32_t sum = 0, k, l;
for (k = 0; k < 256; k++)
{
- uint8_t* bank = 0x8000 + Memory.Map[8 + (k <<
- 4)]; //use upper half of the banks, and adjust for LoROM.
+ uint8_t* bank = 0x8000 + Memory.Map[8 + (k << 4)]; //use upper half of the banks, and adjust for LoROM.
for (l = 0; l < 0x8000; l++)
sum += bank[l];
}
@@ -2859,8 +2776,8 @@ void JumboLoROMMap(bool Interleaved)
void SPC7110HiROMMap()
{
- int c;
- int i;
+ int32_t c;
+ int32_t i;
// Banks 00->3f and 80->bf
for (c = 0; c < 0x400; c += 16)
@@ -2881,8 +2798,7 @@ void SPC7110HiROMMap()
for (i = c + 8; i < c + 16; i++)
{
- Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) %
- Memory.CalculatedSize];
+ Memory.Map [i] = Memory.Map [i + 0x800] = &Memory.ROM [(c << 12) % Memory.CalculatedSize];
Memory.BlockIsROM [i] = Memory.BlockIsROM [i + 0x800] = true;
}
}
@@ -2903,8 +2819,7 @@ void SPC7110HiROMMap()
{
for (i = c; i < c + 16; i++)
{
- Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) %
- Memory.CalculatedSize];
+ Memory.Map [i + 0x400] = Memory.Map [i + 0xc00] = &Memory.ROM [(c << 12) % Memory.CalculatedSize];
Memory.BlockIsROM [i + 0x400] = Memory.BlockIsROM [i + 0xc00] = true;
}
}
@@ -2920,14 +2835,13 @@ void SPC7110HiROMMap()
Memory.Map [0xD00 + c] = (uint8_t*) MAP_SPC7110_ROM;
Memory.Map [0xE00 + c] = (uint8_t*) MAP_SPC7110_ROM;
Memory.Map [0xF00 + c] = (uint8_t*) MAP_SPC7110_ROM;
- Memory.BlockIsROM [0xD00 + c] = Memory.BlockIsROM [0xE00 + c] =
- Memory.BlockIsROM [0xF00 + c] = true;
+ Memory.BlockIsROM [0xD00 + c] = Memory.BlockIsROM [0xE00 + c] = Memory.BlockIsROM [0xF00 + c] = true;
}
S9xSpc7110Init();
- int sum = 0;
- for (i = 0; i < (int)Memory.CalculatedSize; i++)
+ int32_t sum = 0;
+ for (i = 0; i < (int32_t)Memory.CalculatedSize; i++)
sum += Memory.ROM[i];
if (Memory.CalculatedSize == 0x300000)
@@ -2937,6 +2851,7 @@ void SPC7110HiROMMap()
MapRAM();
WriteProtectROM();
}
+
void SPC7110Sram(uint8_t newstate)
{
if (newstate & 0x80)
@@ -2954,6 +2869,7 @@ void SPC7110Sram(uint8_t newstate)
Memory.Map[0x307] = (uint8_t*)MAP_RONLY_SRAM;
}
}
+
const char* TVStandard()
{
return (Settings.PAL ? "PAL" : "NTSC");
@@ -3007,7 +2923,6 @@ const char* KartContents()
sprintf(tmp, "%s", Contents [(Memory.ROMType & 0xf) % 3]);
-
if (Settings.BS)
sprintf(tmp, "%s+%s", tmp, "BSX");
else if (Settings.SPC7110 && Settings.SPC7110RTC)
@@ -3024,11 +2939,9 @@ const char* KartContents()
case ST_011:
sprintf(tmp, "%s+%s", tmp, "ST-011");
break;
-
case ST_018:
sprintf(tmp, "%s+%s", tmp, "ST-018");
break;
-
}
}
else if ((Memory.ROMType & 0xf) >= 3)
@@ -3062,11 +2975,10 @@ void ApplyROMFixes()
[14:25:27] <@Nach> case 0x340f23e5: //Donkey Kong Country 3 (U) copier hack - handled
*/
- if (Memory.ROMCRC32 == 0x6810aa95 || Memory.ROMCRC32 == 0x340f23e5
- || Memory.ROMCRC32 == 0x77fd806a ||
- strncmp(Memory.ROMName, "HIGHWAY BATTLE 2", 16) == 0 ||
- (strcmp(Memory.ROMName, "FX SKIING NINTENDO 96") == 0
- && Memory.ROM[0x7FDA] == 0))
+ if (Memory.ROMCRC32 == 0x6810aa95 || Memory.ROMCRC32 == 0x340f23e5 || Memory.ROMCRC32 == 0x77fd806a ||
+ strncmp(Memory.ROMName, "HIGHWAY BATTLE 2", 16) == 0 ||
+ (strcmp(Memory.ROMName, "FX SKIING NINTENDO 96") == 0
+ && Memory.ROM[0x7FDA] == 0))
{
Settings.DisplayColor = BUILD_PIXEL(31, 0, 0);
SET_UI_COLOR(255, 0, 0);
@@ -3102,7 +3014,7 @@ void ApplyROMFixes()
//memory map corrections
if (strncmp(Memory.ROMName, "XBAND", 5) == 0)
{
- int c;
+ int32_t c;
for (c = 0xE00; c < 0xE10; c++)
{
Memory.Map [c] = (uint8_t*) MAP_LOROM_SRAM;
@@ -3115,7 +3027,7 @@ void ApplyROMFixes()
//not MAD-1 compliant
if (strcmp(Memory.ROMName, "WANDERERS FROM YS") == 0)
{
- int c;
+ int32_t c;
for (c = 0; c < 0xE0; c++)
{
Memory.Map[c + 0x700] = (uint8_t*)MAP_LOROM_SRAM;
@@ -3129,7 +3041,7 @@ void ApplyROMFixes()
strcmp(Memory.ROMName, "HOME ALONE") == 0)
{
// Banks 00->3f and 80->bf
- int c;
+ int32_t c;
for (c = 0; c < 0x400; c += 16)
{
Memory.Map [c + 6] = Memory.Map [c + 0x806] = Memory.SRAM;
@@ -3145,7 +3057,7 @@ void ApplyROMFixes()
if (strcmp(Memory.ROMName, "RADICAL DREAMERS") == 0 ||
strcmp(Memory.ROMName, "TREASURE CONFLIX") == 0)
{
- int c;
+ int32_t c;
for (c = 0; c < 0x80; c++)
{
@@ -3206,8 +3118,7 @@ void ApplyROMFixes()
// RENDERING RANGER R2
if (strcmp(Memory.ROMId, "AVCJ") == 0 ||
//Mark Davis
- strncmp(Memory.ROMName, "THE FISHING MASTER", 18) == 0
- || //needs >= actual APU timing. (21 is .002 Mhz slower)
+ strncmp(Memory.ROMName, "THE FISHING MASTER", 18) == 0 || //needs >= actual APU timing. (21 is .002 Mhz slower)
// Star Ocean
strncmp(Memory.ROMId, "ARF", 3) == 0 ||
// Tales of Phantasia
@@ -3217,7 +3128,6 @@ void ApplyROMFixes()
// Soulblazer
strcmp(Memory.ROMName, "SOULBLAZER - 1 USA") == 0 ||
strcmp(Memory.ROMName, "SOULBLADER - 1") == 0 ||
-
// Terranigma
strncmp(Memory.ROMId, "AQT", 3) == 0 ||
// Robotrek
@@ -3233,21 +3143,20 @@ void ApplyROMFixes()
// Panic Bomber World
strncmp(Memory.ROMId, "APB", 3) == 0 ||
((strncmp(Memory.ROMName, "Parlor", 6) == 0 ||
- strcmp(Memory.ROMName, "HEIWA Parlor!Mini8") == 0 ||
- strncmp(Memory.ROMName, "SANKYO Fever! ̨��ް!", 21) == 0) &&
- strcmp(Memory.CompanyId, "A0") == 0) ||
+ strcmp(Memory.ROMName, "HEIWA Parlor!Mini8") == 0 ||
+ strncmp(Memory.ROMName, "SANKYO Fever! \xCC\xA8\xB0\xCA\xDE\xB0!", 21) == 0) &&
+ strcmp(Memory.CompanyId, "A0") == 0) ||
strcmp(Memory.ROMName, "DARK KINGDOM") == 0 ||
strcmp(Memory.ROMName, "ZAN3 SFC") == 0 ||
strcmp(Memory.ROMName, "HIOUDEN") == 0 ||
- strcmp(Memory.ROMName, "�ݼɳ�") == 0 || //Tenshi no Uta
+ strcmp(Memory.ROMName, "\xC3\xDD\xBC\xC9\xB3\xC0") == 0 || //Tenshi no Uta
strcmp(Memory.ROMName, "FORTUNE QUEST") == 0 ||
strcmp(Memory.ROMName, "FISHING TO BASSING") == 0 ||
strncmp(Memory.ROMName, "TokyoDome '95Battle 7", 21) == 0 ||
strcmp(Memory.ROMName, "OHMONO BLACKBASS") == 0 ||
strncmp(Memory.ROMName, "SWORD WORLD SFC", 15) == 0 ||
strcmp(Memory.ROMName, "MASTERS") == 0 || //Augusta 2 J
- strcmp(Memory.ROMName, "SFC ���ײ�ް") == 0
- || //Kamen Rider
+ strcmp(Memory.ROMName, "SFC \xB6\xD2\xDD\xD7\xB2\xC0\xDE\xB0") == 0 || //Kamen Rider
strncmp(Memory.ROMName, "LETs PACHINKO(", 14) == 0) //A set of BS games
IAPU.OneCycle = 15;
#endif
@@ -3260,15 +3169,13 @@ void ApplyROMFixes()
strcmp(Memory.ROMName, "DIRT RACER") == 0 ||
Settings.StarfoxHack;
-
if ((strcmp(Memory.ROMName, "LEGEND") == 0 && !Settings.PAL) ||
strcmp(Memory.ROMName, "King Arthurs World") == 0)
SNESGameFixes.EchoOnlyOutput = true;
-
Settings.DaffyDuck = (strcmp(Memory.ROMName, "DAFFY DUCK: MARV MISS") == 0) ||
(strcmp(Memory.ROMName, "ROBOCOP VS THE TERMIN") == 0) ||
- (strcmp(Memory.ROMName, "ROBOCOP VS TERMINATOR") == 0); //ROBOCOP VS THE TERMIN
+ (strcmp(Memory.ROMName, "ROBOCOP VS TERMINATOR") == 0);
Settings.HBlankStart = (256 * Settings.H_Max) / SNES_HCOUNTER_MAX;
//OAM hacks because we don't fully understand the
@@ -3284,20 +3191,17 @@ void ApplyROMFixes()
if (strcmp(Memory.ROMName, "ALIENS vs. PREDATOR") == 0)
SNESGameFixes.alienVSpredetorFix = true;
- if (strcmp(Memory.ROMName, "���̧߰н�") == 0
- || //Super Famista
- strcmp(Memory.ROMName, "���̧߰н� 2") == 0
- || //Super Famista 2
- strcmp(Memory.ROMName, "ZENKI TENCHIMEIDOU") == 0 ||
- strcmp(Memory.ROMName, "GANBA LEAGUE") == 0)
+ if (strcmp(Memory.ROMName, "\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0") == 0 || //Super Famista
+ strcmp(Memory.ROMName, "\xBD\xB0\xCA\xDF\xB0\xCC\xA7\xD0\xBD\xC0 2") == 0 || //Super Famista 2
+ strcmp(Memory.ROMName, "ZENKI TENCHIMEIDOU") == 0 ||
+ strcmp(Memory.ROMName, "GANBA LEAGUE") == 0)
SNESGameFixes.APU_OutPorts_ReturnValueFix = true;
if (strcmp(Memory.ROMName, "FURAI NO SIREN") == 0)
SNESGameFixes.SoundEnvelopeHeightReading2 = true;
//CPU timing hacks
- Settings.H_Max = (SNES_CYCLES_PER_SCANLINE *
- Settings.CyclesPercentage) / 100;
+ Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * Settings.CyclesPercentage) / 100;
// A Couple of HDMA related hacks - Lantus
if ((strcmp(Memory.ROMName, "SFX SUPERBUTOUDEN2") == 0) ||
@@ -3323,28 +3227,10 @@ void ApplyROMFixes()
// Mortal Kombat 3. Fixes cut off speech sample
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100;
- //Darkness Beyond Twilight
- //Crimson beyond blood that flows
- //buried in the stream of time
- //is where your power grows
- //I pledge myself to conquer
- //all the foes who stand
- //before the might gift betsowed
- //in my unworthy hand
if (strcmp(Memory.ROMName, "\x0bd\x0da\x0b2\x0d4\x0b0\x0bd\x0de") == 0 &&
Settings.CyclesPercentage == 100)
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 101) / 100;
-#ifdef DETECT_NASTY_FX_INTERLEAVE
- //XXX: Test without these. Win32 port indicates they aren't needed?
- //Apparently are needed!
- if (strcmp(Memory.ROMName, "WILD TRAX") == 0 ||
- strcmp(Memory.ROMName, "STAR FOX 2") == 0 ||
- strcmp(Memory.ROMName, "YOSSY'S ISLAND") == 0 ||
- strcmp(Memory.ROMName, "YOSHI'S ISLAND") == 0)
- CPU.TriedInterleavedMode2 = true;
-#endif
-
// Start Trek: Deep Sleep 9
if (strncmp(Memory.ROMId, "A9D", 3) == 0 && Settings.CyclesPercentage == 100)
Settings.H_Max = (SNES_CYCLES_PER_SCANLINE * 110) / 100;
@@ -3482,11 +3368,6 @@ void ApplyROMFixes()
SA1.WaitAddress = SA1.Map [0x009899 >> MEMMAP_SHIFT] + 0x9899;
SA1.WaitByteAddress1 = Memory.FillRAM + 0x3000;
}
- /* PACHISURO PALUSUPE */
- if (strcmp(Memory.ROMId, "AGFJ") == 0)
- {
- // Never seems to turn on the SA-1!
- }
/* SD F1 GRAND PRIX */
if (strcmp(Memory.ROMId, "AGFJ") == 0)
SA1.WaitAddress = SA1.Map [0x0181bc >> MEMMAP_SHIFT] + 0x81bc;
@@ -3500,7 +3381,6 @@ void ApplyROMFixes()
/* shogisai2 */
if (strcmp(Memory.ROMId, "AX2J") == 0)
SA1.WaitAddress = SA1.Map [0x00d675 >> MEMMAP_SHIFT] + 0xd675;
-
/* SHINING SCORPION */
if (strcmp(Memory.ROMId, "A4WJ") == 0)
SA1.WaitAddress = SA1.Map [0xc048be >> MEMMAP_SHIFT] + 0x48be;
@@ -3515,9 +3395,8 @@ void ApplyROMFixes()
//Other
// Additional game fixes by sanmaiwashi ...
- if (strcmp(Memory.ROMName,
- "SFX ŲĶ������ɶ��� 1") ==
- 0) //Gundam Knight Story
+ //Gundam Knight Story
+ if (strcmp(Memory.ROMName, "SFX \xC5\xB2\xC4\xB6\xDE\xDD\xC0\xDE\xD1\xD3\xC9\xB6\xDE\xC0\xD8 1") == 0)
{
bytes0x2000 [0xb18] = 0x4c;
bytes0x2000 [0xb19] = 0x4b;
@@ -3529,8 +3408,7 @@ void ApplyROMFixes()
if (strcmp(Memory.ROMName, "HITOMI3") == 0)
{
Memory.SRAMSize = 1;
- Memory.SRAMMask = Memory.SRAMSize ?
- ((1 << (Memory.SRAMSize + 3)) * 128) - 1 : 0;
+ Memory.SRAMMask = Memory.SRAMSize ? ((1 << (Memory.SRAMSize + 3)) * 128) - 1 : 0;
}
//sram value fixes
@@ -3568,9 +3446,9 @@ void ApplyROMFixes()
//BNE
}
-int is_bsx(unsigned char* p)
+int32_t is_bsx(uint8_t* p)
{
- unsigned c;
+ uint32_t c;
if (p[0x19] & 0x4f)
goto notbsx;
@@ -3601,11 +3479,12 @@ int is_bsx(unsigned char* p)
notbsx:
return -1;
}
-int bs_name(unsigned char* p)
+
+int32_t bs_name(uint8_t* p)
{
- unsigned c;
- int lcount;
- int numv; // number of valid name characters seen so far
+ uint32_t c;
+ int32_t lcount;
+ int32_t numv; // number of valid name characters seen so far
numv = 0;
for (lcount = 16; lcount > 0; lcount--)
{
@@ -3662,7 +3541,8 @@ void ParseSNESHeader(uint8_t* RomHeader)
if (RomHeader[0x2A] == 0x33)
// memmove converted: Different mallocs [Neb]
memcpy(Memory.CompanyId, &RomHeader [0], 2);
- else sprintf(Memory.CompanyId, "%02X", RomHeader[0x2A]);
+ else
+ sprintf(Memory.CompanyId, "%02X", RomHeader[0x2A]);
}
#undef INLINE
diff --git a/source/obc1.c b/source/obc1.c
index f0afdd4..2d46238 100644
--- a/source/obc1.c
+++ b/source/obc1.c
@@ -6,9 +6,9 @@
static uint8_t* OBC1_RAM = NULL;
-int OBC1_Address;
-int OBC1_BasePtr;
-int OBC1_Shift;
+int32_t OBC1_Address;
+int32_t OBC1_BasePtr;
+int32_t OBC1_Shift;
uint8_t GetOBC1(uint16_t Address)
{
@@ -63,8 +63,7 @@ void SetOBC1(uint8_t Byte, uint16_t Address)
case 0x7ff4:
{
- unsigned char Temp;
-
+ uint8_t Temp;
Temp = OBC1_RAM[OBC1_BasePtr + (OBC1_Address >> 2) + 0x200];
Temp = (Temp & ~(3 << OBC1_Shift)) | ((Byte & 3) << OBC1_Shift);
OBC1_RAM[OBC1_BasePtr + (OBC1_Address >> 2) + 0x200] = Temp;
diff --git a/source/pixform.h b/source/pixform.h
index 1a8c917..dc4eacc 100644
--- a/source/pixform.h
+++ b/source/pixform.h
@@ -4,8 +4,8 @@
#define _PIXFORM_H_
/* RGB565 format */
-#define BUILD_PIXEL_RGB565(R,G,B) (((int) (R) << 11) | ((int) (G) << 6) | (int) (B))
-#define BUILD_PIXEL2_RGB565(R,G,B) (((int) (R) << 11) | ((int) (G) << 5) | (int) (B))
+#define BUILD_PIXEL_RGB565(R,G,B) (((int32_t) (R) << 11) | ((int32_t) (G) << 6) | (int32_t) (B))
+#define BUILD_PIXEL2_RGB565(R,G,B) (((int32_t) (R) << 11) | ((int32_t) (G) << 5) | (int32_t) (B))
#define DECOMPOSE_PIXEL_RGB565(PIX,R,G,B) {(R) = (PIX) >> 11; (G) = ((PIX) >> 6) & 0x1f; (B) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_RGB565 (1 << 5)
@@ -24,8 +24,8 @@
#define ALPHA_BITS_MASK_RGB565 0x0000
/* RGB555 format */
-#define BUILD_PIXEL_RGB555(R,G,B) (((int) (R) << 10) | ((int) (G) << 5) | (int) (B))
-#define BUILD_PIXEL2_RGB555(R,G,B) (((int) (R) << 10) | ((int) (G) << 5) | (int) (B))
+#define BUILD_PIXEL_RGB555(R,G,B) (((int32_t) (R) << 10) | ((int32_t) (G) << 5) | (int32_t) (B))
+#define BUILD_PIXEL2_RGB555(R,G,B) (((int32_t) (R) << 10) | ((int32_t) (G) << 5) | (int32_t) (B))
#define DECOMPOSE_PIXEL_RGB555(PIX,R,G,B) {(R) = (PIX) >> 10; (G) = ((PIX) >> 5) & 0x1f; (B) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_RGB555 (1 << 15)
@@ -44,8 +44,8 @@
#define ALPHA_BITS_MASK_RGB555 0x0000
/* BGR565 format */
-#define BUILD_PIXEL_BGR565(R,G,B) (((int) (B) << 11) | ((int) (G) << 6) | (int) (R))
-#define BUILD_PIXEL2_BGR565(R,G,B) (((int) (B) << 11) | ((int) (G) << 5) | (int) (R))
+#define BUILD_PIXEL_BGR565(R,G,B) (((int32_t) (B) << 11) | ((int32_t) (G) << 6) | (int32_t) (R))
+#define BUILD_PIXEL2_BGR565(R,G,B) (((int32_t) (B) << 11) | ((int32_t) (G) << 5) | (int32_t) (R))
#define DECOMPOSE_PIXEL_BGR565(PIX,R,G,B) {(B) = (PIX) >> 11; (G) = ((PIX) >> 6) & 0x1f; (R) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_BGR565 (1 << 5)
@@ -64,8 +64,8 @@
#define ALPHA_BITS_MASK_BGR565 0x0000
/* BGR555 format */
-#define BUILD_PIXEL_BGR555(R,G,B) (((int) (B) << 10) | ((int) (G) << 5) | (int) (R))
-#define BUILD_PIXEL2_BGR555(R,G,B) (((int) (B) << 10) | ((int) (G) << 5) | (int) (R))
+#define BUILD_PIXEL_BGR555(R,G,B) (((int32_t) (B) << 10) | ((int32_t) (G) << 5) | (int32_t) (R))
+#define BUILD_PIXEL2_BGR555(R,G,B) (((int32_t) (B) << 10) | ((int32_t) (G) << 5) | (int32_t) (R))
#define DECOMPOSE_PIXEL_BGR555(PIX,R,G,B) {(B) = (PIX) >> 10; (G) = ((PIX) >> 5) & 0x1f; (R) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_BGR555 (1 << 15)
@@ -84,8 +84,8 @@
#define ALPHA_BITS_MASK_BGR555 0x0000
/* GBR565 format */
-#define BUILD_PIXEL_GBR565(R,G,B) (((int) (G) << 11) | ((int) (B) << 6) | (int) (R))
-#define BUILD_PIXEL2_GBR565(R,G,B) (((int) (G) << 11) | ((int) (B) << 5) | (int) (R))
+#define BUILD_PIXEL_GBR565(R,G,B) (((int32_t) (G) << 11) | ((int32_t) (B) << 6) | (int32_t) (R))
+#define BUILD_PIXEL2_GBR565(R,G,B) (((int32_t) (G) << 11) | ((int32_t) (B) << 5) | (int32_t) (R))
#define DECOMPOSE_PIXEL_GBR565(PIX,R,G,B) {(G) = (PIX) >> 11; (B) = ((PIX) >> 6) & 0x1f; (R) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_GBR565 (1 << 5)
@@ -104,8 +104,8 @@
#define ALPHA_BITS_MASK_GBR565 0x0000
/* GBR555 format */
-#define BUILD_PIXEL_GBR555(R,G,B) (((int) (G) << 10) | ((int) (B) << 5) | (int) (R))
-#define BUILD_PIXEL2_GBR555(R,G,B) (((int) (G) << 10) | ((int) (B) << 5) | (int) (R))
+#define BUILD_PIXEL_GBR555(R,G,B) (((int32_t) (G) << 10) | ((int32_t) (B) << 5) | (int32_t) (R))
+#define BUILD_PIXEL2_GBR555(R,G,B) (((int32_t) (G) << 10) | ((int32_t) (B) << 5) | (int32_t) (R))
#define DECOMPOSE_PIXEL_GBR555(PIX,R,G,B) {(G) = (PIX) >> 10; (B) = ((PIX) >> 5) & 0x1f; (R) = (PIX) & 0x1f; }
#define SPARE_RGB_BIT_MASK_GBR555 (1 << 15)
@@ -124,8 +124,8 @@
#define ALPHA_BITS_MASK_GBR555 0x0000
/* RGB5551 format */
-#define BUILD_PIXEL_RGB5551(R,G,B) (((int) (R) << 11) | ((int) (G) << 6) | (int) ((B) << 1) | 1)
-#define BUILD_PIXEL2_RGB5551(R,G,B) (((int) (R) << 11) | ((int) (G) << 6) | (int) ((B) << 1) | 1)
+#define BUILD_PIXEL_RGB5551(R,G,B) (((int32_t) (R) << 11) | ((int32_t) (G) << 6) | (int32_t) ((B) << 1) | 1)
+#define BUILD_PIXEL2_RGB5551(R,G,B) (((int32_t) (R) << 11) | ((int32_t) (G) << 6) | (int32_t) ((B) << 1) | 1)
#define DECOMPOSE_PIXEL_RGB5551(PIX,R,G,B) {(R) = (PIX) >> 11; (G) = ((PIX) >> 6) & 0x1f; (B) = ((PIX) >> 1) & 0x1f; }
#define SPARE_RGB_BIT_MASK_RGB5551 (1)
diff --git a/source/ppu.c b/source/ppu.c
index 8dcb52b..9ef69d5 100644
--- a/source/ppu.c
+++ b/source/ppu.c
@@ -94,7 +94,7 @@ void S9xUpdateHTimer()
void S9xFixColourBrightness()
{
IPPU.XB = mul_brightness [PPU.Brightness];
- int i;
+ int32_t i;
for (i = 0; i < 256; i++)
{
IPPU.Red [i] = IPPU.XB [PPU.CGDATA [i] & 0x1f];
@@ -1195,7 +1195,7 @@ uint8_t S9xGetPPU(uint16_t Address)
}
if ((Address & 3) < 2)
{
- int r = rand();
+ int32_t r = rand();
if (r & 2)
{
if (r & 4)
@@ -1206,7 +1206,7 @@ uint8_t S9xGetPPU(uint16_t Address)
}
else
{
- int r = rand();
+ int32_t r = rand();
if (r & 2)
return ((r >> 3) & 0xff);
}
@@ -1282,7 +1282,7 @@ uint8_t S9xGetPPU(uint16_t Address)
/******************************************************************************/
void S9xSetCPU(uint8_t byte, uint16_t Address)
{
- int d;
+ int32_t d;
if (Address < 0x4200)
{
@@ -2023,7 +2023,7 @@ uint8_t S9xGetCPU(uint16_t Address)
case 0x436A:
case 0x437A:
{
- int d = (Address & 0x70) >> 4;
+ int32_t d = (Address & 0x70) >> 4;
if (IPPU.HDMA & (1 << d))
return (DMA[d].LineCount);
return (Memory.FillRAM[Address]);
@@ -2099,7 +2099,7 @@ static void CommonPPUReset()
PPU.ClipWindow2Inside[4] = PPU.ClipWindow2Inside[5] = true;
PPU.CGFLIP = 0;
- int c;
+ int32_t c;
for (c = 0; c < 256; c++)
{
IPPU.Red [c] = (c & 7) << 2;
@@ -2111,7 +2111,7 @@ static void CommonPPUReset()
PPU.FirstSprite = 0;
PPU.LastSprite = 127;
- int Sprite;
+ int32_t Sprite;
for (Sprite = 0; Sprite < 128; Sprite++)
{
PPU.OBJ[Sprite].HPos = 0;
@@ -2242,12 +2242,12 @@ void S9xResetPPU()
IPPU.PrevMouseX[0] = IPPU.PrevMouseX[1] = 256 / 2;
IPPU.PrevMouseY[0] = IPPU.PrevMouseY[1] = 224 / 2;
- int c;
+ int32_t c;
for (c = 0; c < 0x8000; c += 0x100)
{
if (!Settings.SuperFX)
memset(&Memory.FillRAM [c], c >> 8, 0x100);
- else if ((unsigned)c < 0x3000 || (unsigned)c >= 0x3300)
+ else if ((uint32_t)c < 0x3000 || (uint32_t)c >= 0x3300)
{
/* Don't overwrite SFX pvRegisters at 0x3000-0x32FF,
* they were set in FxReset.
@@ -2269,7 +2269,7 @@ void S9xSoftResetPPU()
{
CommonPPUReset();
- int c;
+ int32_t c;
for (c = 0; c < 0x8000; c += 0x100)
memset(&Memory.FillRAM [c], c >> 8, 0x100);
@@ -2282,14 +2282,14 @@ void S9xSoftResetPPU()
Memory.FillRAM[0x4201] = Memory.FillRAM[0x4213] = 0xFF;
}
-void S9xProcessMouse(int which1)
+void S9xProcessMouse(int32_t which1)
{
- int x, y;
+ int32_t x, y;
uint32_t buttons;
if (IPPU.Controller == SNES_MOUSE && S9xReadMousePosition(which1, &x, &y, &buttons))
{
- int delta_x, delta_y;
+ int32_t delta_x, delta_y;
#define MOUSE_SIGNATURE 0x1
IPPU.Mouse [which1] = MOUSE_SIGNATURE |
(PPU.MouseSpeed [which1] << 4) |
@@ -2346,7 +2346,7 @@ void S9xProcessMouse(int which1)
void ProcessSuperScope()
{
- int x, y;
+ int32_t x, y;
uint32_t buttons;
if (IPPU.Controller == SNES_SUPERSCOPE &&
@@ -2436,7 +2436,7 @@ void S9xUpdateJustifiers()
if (!last_p1)
justifiers |= 0x1000;
- int x, y;
+ int32_t x, y;
uint32_t buttons;
if (Memory.FillRAM[0x4201] & 0x80)
@@ -2614,8 +2614,8 @@ void S9xSuperFXExec()
FxEmulate(~0);
else
FxEmulate((Memory.FillRAM [0x3000 + GSU_CLSR] & 1) ? 700 : 350);
- int GSUStatus = Memory.FillRAM [0x3000 + GSU_SFR] |
- (Memory.FillRAM [0x3000 + GSU_SFR + 1] << 8);
+ int32_t GSUStatus = Memory.FillRAM [0x3000 + GSU_SFR] |
+ (Memory.FillRAM [0x3000 + GSU_SFR + 1] << 8);
if ((GSUStatus & (FLG_G | FLG_IRQ)) == FLG_IRQ)
{
// Trigger a GSU IRQ.
@@ -2651,7 +2651,7 @@ void REGISTER_2104(uint8_t byte)
{
if (PPU.OAMAddr & 0x100)
{
- int addr = ((PPU.OAMAddr & 0x10f) << 1) + (PPU.OAMFlip & 1);
+ int32_t addr = ((PPU.OAMAddr & 0x10f) << 1) + (PPU.OAMFlip & 1);
if (byte != PPU.OAMData [addr])
{
FLUSH_REDRAW();
@@ -2700,7 +2700,7 @@ void REGISTER_2104(uint8_t byte)
uint8_t highbyte = byte;
PPU.OAMWriteRegister |= byte << 8;
- int addr = (PPU.OAMAddr << 1);
+ int32_t addr = (PPU.OAMAddr << 1);
if (lowbyte != PPU.OAMData [addr] ||
highbyte != PPU.OAMData [addr + 1])
diff --git a/source/ppu.h b/source/ppu.h
index 7ad3489..1a83d6f 100644
--- a/source/ppu.h
+++ b/source/ppu.h
@@ -56,27 +56,27 @@ typedef struct
bool InterlaceSprites;
bool DoubleWidthPixels;
bool HalfWidthPixels;
- int RenderedScreenHeight;
- int RenderedScreenWidth;
+ int32_t RenderedScreenHeight;
+ int32_t RenderedScreenWidth;
uint32_t Red [256];
uint32_t Green [256];
uint32_t Blue [256];
uint8_t* XB;
uint16_t ScreenColors [256];
- int PreviousLine;
- int CurrentLine;
- int Controller;
+ int32_t PreviousLine;
+ int32_t CurrentLine;
+ int32_t Controller;
uint32_t Joypads[5];
uint32_t SuperScope;
uint32_t Mouse[2];
- int PrevMouseX[2];
- int PrevMouseY[2];
+ int32_t PrevMouseX[2];
+ int32_t PrevMouseY[2];
struct ClipData Clip [2];
} InternalPPU;
struct SOBJ
{
- short HPos;
+ int16_t HPos;
uint16_t VPos;
uint16_t Name;
uint8_t VFlip;
@@ -132,12 +132,12 @@ typedef struct
uint8_t VBeamFlip;
uint8_t HVBeamCounterLatched;
- short MatrixA;
- short MatrixB;
- short MatrixC;
- short MatrixD;
- short CentreX;
- short CentreY;
+ int16_t MatrixA;
+ int16_t MatrixB;
+ int16_t MatrixC;
+ int16_t MatrixD;
+ int16_t CentreX;
+ int16_t CentreY;
uint8_t Joypad1ButtonReadPos;
uint8_t Joypad2ButtonReadPos;
@@ -159,7 +159,7 @@ typedef struct
uint8_t OAMData [512 + 32];
bool VTimerEnabled;
bool HTimerEnabled;
- short HTimerPosition;
+ int16_t HTimerPosition;
uint8_t Mosaic;
bool BGMosaic [4];
bool Mode7HFlip;
@@ -223,7 +223,7 @@ void S9xResetPPU();
void S9xSoftResetPPU();
void S9xFixColourBrightness();
void S9xUpdateJoypads();
-void S9xProcessMouse(int which1);
+void S9xProcessMouse(int32_t which1);
void S9xSuperFXExec();
void S9xSetPPU(uint8_t Byte, uint16_t Address);
diff --git a/source/sa1.c b/source/sa1.c
index 17e7258..a0d4bba 100644
--- a/source/sa1.c
+++ b/source/sa1.c
@@ -65,7 +65,7 @@ void S9xSA1Reset()
void S9xSA1SetBWRAMMemMap(uint8_t val)
{
- int c;
+ int32_t c;
if (val & 0x80)
{
@@ -147,15 +147,15 @@ uint16_t S9xSA1GetWord(uint32_t address)
void S9xSA1SetByte(uint8_t byte, uint32_t address)
{
- uint8_t* Setaddress = SA1.WriteMap [(address >> MEMMAP_SHIFT) & MEMMAP_MASK];
+ uint8_t* SetAddress = SA1.WriteMap [(address >> MEMMAP_SHIFT) & MEMMAP_MASK];
- if (Setaddress >= (uint8_t*) MAP_LAST)
+ if (SetAddress >= (uint8_t*) MAP_LAST)
{
- *(Setaddress + (address & 0xffff)) = byte;
+ *(SetAddress + (address & 0xffff)) = byte;
return;
}
- switch ((intptr_t) Setaddress)
+ switch ((intptr_t) SetAddress)
{
case MAP_PPU:
S9xSetSA1(byte, address & 0xffff);
@@ -248,10 +248,10 @@ void S9xSA1SetPCBase(uint32_t address)
void S9xSetSA1MemMap(uint32_t which1, uint8_t map)
{
- int c;
- int i;
- int start = which1 * 0x100 + 0xc00;
- int start2 = which1 * 0x200;
+ int32_t c;
+ int32_t i;
+ int32_t start = which1 * 0x100 + 0xc00;
+ int32_t start2 = which1 * 0x200;
if (which1 >= 2)
start2 += 0x400;
@@ -508,18 +508,18 @@ static void S9xSA1CharConv2()
{
uint32_t dest = Memory.FillRAM [0x2235] | (Memory.FillRAM [0x2236] << 8);
uint32_t offset = (SA1.in_char_dma & 7) ? 0 : 1;
- int depth = (Memory.FillRAM [0x2231] & 3) == 0 ? 8 :
- (Memory.FillRAM [0x2231] & 3) == 1 ? 4 : 2;
- int bytes_per_char = 8 * depth;
+ int32_t depth = (Memory.FillRAM [0x2231] & 3) == 0 ? 8 :
+ (Memory.FillRAM [0x2231] & 3) == 1 ? 4 : 2;
+ int32_t bytes_per_char = 8 * depth;
uint8_t* p = &Memory.FillRAM [0x3000] + dest + offset * bytes_per_char;
uint8_t* q = &Memory.ROM [MAX_ROM_SIZE - 0x10000] + offset * 64;
if (depth == 8)
{
- int l;
+ int32_t l;
for (l = 0; l < 8; l++, q += 8)
{
- int b;
+ int32_t b;
for (b = 0; b < 8; b++)
{
uint8_t r = *(q + b);
diff --git a/source/sa1.h b/source/sa1.h
index 079fef5..2b83eb3 100644
--- a/source/sa1.h
+++ b/source/sa1.h
@@ -47,7 +47,7 @@ typedef struct
uint8_t* WriteMap [MEMMAP_NUM_BLOCKS];
int16_t op1;
int16_t op2;
- int arithmetic_op;
+ int arithmetic_op; // For savestate compatibility can't change to int32_t
int64_t sum;
bool overflow;
uint8_t VirtualBitmapFormat;
@@ -56,14 +56,14 @@ typedef struct
SSA1Registers Registers;
} SSA1;
-#define SA1CheckZero() (SA1._Zero == 0)
-#define SA1CheckCarry() (SA1._Carry)
-#define SA1CheckIRQ() (SA1.Registers.PL & IRQ)
-#define SA1CheckDecimal() (SA1.Registers.PL & Decimal)
-#define SA1CheckIndex() (SA1.Registers.PL & IndexFlag)
-#define SA1CheckMemory() (SA1.Registers.PL & MemoryFlag)
-#define SA1CheckOverflow() (SA1._Overflow)
-#define SA1CheckNegative() (SA1._Negative & 0x80)
+#define SA1CheckZero() (SA1._Zero == 0)
+#define SA1CheckCarry() (SA1._Carry)
+#define SA1CheckIRQ() (SA1.Registers.PL & IRQ)
+#define SA1CheckDecimal() (SA1.Registers.PL & Decimal)
+#define SA1CheckIndex() (SA1.Registers.PL & IndexFlag)
+#define SA1CheckMemory() (SA1.Registers.PL & MemoryFlag)
+#define SA1CheckOverflow() (SA1._Overflow)
+#define SA1CheckNegative() (SA1._Negative & 0x80)
#define SA1CheckEmulation() (SA1.Registers.P.W & Emulation)
#define SA1ClearFlags(f) (SA1.Registers.P.W &= ~(f))
diff --git a/source/sa1cpu.c b/source/sa1cpu.c
index baaa929..478df1e 100644
--- a/source/sa1cpu.c
+++ b/source/sa1cpu.c
@@ -116,7 +116,7 @@
void S9xSA1MainLoop()
{
- int i;
+ int32_t i;
if (SA1.Flags & IRQ_PENDING_FLAG)
{
diff --git a/source/sar.h b/source/sar.h
index 4ab4ecb..3f160a6 100644
--- a/source/sar.h
+++ b/source/sar.h
@@ -16,7 +16,7 @@
#define SAR64(b, n) ((b)>>(n))
#else
-static inline int8_t SAR8(const int8_t b, const int n)
+static inline int8_t SAR8(const int8_t b, const int32_t n)
{
#ifndef RIGHTSHIFT_INT8_IS_SAR
if (b < 0) return (b >> n) | (-1 << (8 - n));
@@ -24,7 +24,7 @@ static inline int8_t SAR8(const int8_t b, const int n)
return b >> n;
}
-static inline int16_t SAR16(const int16_t b, const int n)
+static inline int16_t SAR16(const int16_t b, const int32_t n)
{
#ifndef RIGHTSHIFT_INT16_IS_SAR
if (b < 0) return (b >> n) | (-1 << (16 - n));
@@ -32,7 +32,7 @@ static inline int16_t SAR16(const int16_t b, const int n)
return b >> n;
}
-static inline int32_t SAR32(const int32_t b, const int n)
+static inline int32_t SAR32(const int32_t b, const int32_t n)
{
#ifndef RIGHTSHIFT_INT32_IS_SAR
if (b < 0) return (b >> n) | (-1 << (32 - n));
@@ -40,7 +40,7 @@ static inline int32_t SAR32(const int32_t b, const int n)
return b >> n;
}
-static inline int64_t SAR64(const int64_t b, const int n)
+static inline int64_t SAR64(const int64_t b, const int32_t n)
{
#ifndef RIGHTSHIFT_INT64_IS_SAR
if (b < 0) return (b >> n) | (-1 << (64 - n));
diff --git a/source/sdd1.c b/source/sdd1.c
index 93e3a7e..58b934e 100644
--- a/source/sdd1.c
+++ b/source/sdd1.c
@@ -10,12 +10,12 @@ void S9xSetSDD1MemoryMap(uint32_t bank, uint32_t value)
bank = 0xc00 + bank * 0x100;
value = value * 1024 * 1024;
- int c;
+ int32_t c;
for (c = 0; c < 0x100; c += 16)
{
uint8_t* block = &Memory.ROM [value + (c << 12)];
- int i;
+ int32_t i;
for (i = c; i < c + 16; i++)
Memory.Map [i + bank] = block;
@@ -25,7 +25,7 @@ void S9xSetSDD1MemoryMap(uint32_t bank, uint32_t value)
void S9xResetSDD1()
{
memset(&Memory.FillRAM [0x4800], 0, 4);
- int i;
+ int32_t i;
for (i = 0; i < 4; i++)
{
Memory.FillRAM [0x4804 + i] = i;
@@ -35,7 +35,7 @@ void S9xResetSDD1()
void S9xSDD1PostLoadState()
{
- int i;
+ int32_t i;
for (i = 0; i < 4; i++)
S9xSetSDD1MemoryMap(i, Memory.FillRAM [0x4804 + i]);
}
diff --git a/source/sdd1emu.c b/source/sdd1emu.c
index c788b49..5634960 100644
--- a/source/sdd1emu.c
+++ b/source/sdd1emu.c
@@ -18,16 +18,16 @@
#include "port.h"
#include "sdd1emu.h"
-static int valid_bits;
+static int32_t valid_bits;
static uint16_t in_stream;
static uint8_t* in_buf;
static uint8_t bit_ctr[8];
static uint8_t context_states[32];
-static int context_MPS[32];
-static int bitplane_type;
-static int high_context_bits;
-static int low_context_bits;
-static int prev_bits[8];
+static int32_t context_MPS[32];
+static int32_t bitplane_type;
+static int32_t high_context_bits;
+static int32_t low_context_bits;
+static int32_t prev_bits[8];
static struct
{
@@ -84,7 +84,7 @@ static uint8_t run_table[128] =
113, 49, 81, 17, 97, 33, 65, 1
};
-static inline uint8_t GetCodeword(int bits)
+static inline uint8_t GetCodeword(int32_t bits)
{
uint8_t tmp;
@@ -108,7 +108,7 @@ static inline uint8_t GetCodeword(int bits)
return run_table[tmp];
}
-static inline uint8_t GolombGetBit(int code_size)
+static inline uint8_t GolombGetBit(int32_t code_size)
{
if (!bit_ctr[code_size]) bit_ctr[code_size] = GetCodeword(code_size);
bit_ctr[code_size]--;
@@ -159,7 +159,7 @@ static inline uint8_t GetBit(uint8_t cur_bitplane)
return bit;
}
-void SDD1_decompress(uint8_t* out, uint8_t* in, int len)
+void SDD1_decompress(uint8_t* out, uint8_t* in, int32_t len)
{
uint8_t bit, i, plane;
uint8_t byte1, byte2;
diff --git a/source/sdd1emu.h b/source/sdd1emu.h
index a968f7d..07bdeb6 100644
--- a/source/sdd1emu.h
+++ b/source/sdd1emu.h
@@ -3,6 +3,6 @@
#ifndef SDD1EMU_H
#define SDD1EMU_H
-void SDD1_decompress(uint8_t* out, uint8_t* in, int output_length);
+void SDD1_decompress(uint8_t* out, uint8_t* in, int32_t output_length);
#endif
diff --git a/source/seta010.c b/source/seta010.c
index b9ce7c3..0e64248 100644
--- a/source/seta010.c
+++ b/source/seta010.c
@@ -86,7 +86,7 @@ const int16_t ST010_SinTable[256] =
-0x18f8, -0x15e2, -0x12c8, -0x0fab, -0x0c8b, -0x096a, -0x0647, -0x0324
};
-const unsigned char ST010_ArcTan[32][32] =
+const uint8_t ST010_ArcTan[32][32] =
{
{
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
@@ -267,13 +267,13 @@ void ST010_OP01(int16_t x0, int16_t y0, int16_t* x1, int16_t* y1, int16_t* Quadr
*Theta = (ST010_ArcTan[*y1][*x1] << 8) ^ *Quadrant;
}
-void ST010_Scale(int16_t Multiplier, int16_t X0, int16_t Y0, int* X1, int* Y1)
+void ST010_Scale(int16_t Multiplier, int16_t X0, int16_t Y0, int32_t* X1, int32_t* Y1)
{
*X1 = X0 * Multiplier << 1;
*Y1 = Y0 * Multiplier << 1;
}
-void ST010_Multiply(int16_t Multiplicand, int16_t Multiplier, int* Product)
+void ST010_Multiply(int16_t Multiplicand, int16_t Multiplier, int32_t* Product)
{
*Product = Multiplicand * Multiplier << 1;
}
@@ -293,7 +293,7 @@ void ST010_SortDrivers(uint16_t Positions, uint16_t Places[32], uint16_t Drivers
do
{
Sorted = true;
- int i;
+ int32_t i;
for (i = 0; i < Positions - 1; i++)
if (Places[i] < Places[i + 1])
{
@@ -351,7 +351,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
#else
uint16_t Places[32];
uint16_t Positions = ST010_WORD(0x0024);
- int Pos, Offset;
+ int32_t Pos, Offset;
Offset = 0;
@@ -392,9 +392,9 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
/* TODO - FIXME */
ST010_Scale(*(int16_t*)&Memory.SRAM[0x0004], *(int16_t*)&Memory.SRAM[0x0000],
*(int16_t*)&Memory.SRAM[0x0002],
- (int*)&Memory.SRAM[0x0010], (int*)&Memory.SRAM[0x0014]);
+ (int32_t*)&Memory.SRAM[0x0010], (int32_t*)&Memory.SRAM[0x0014]);
#else
- int x1, y1;
+ int32_t x1, y1;
ST010_Scale(ST010_WORD(0x0004), ST010_WORD(0x0000), ST010_WORD(0x0002), &x1,
&y1);
@@ -424,9 +424,9 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
#if defined(FAST_LSB_WORD_ACCESS) && !defined(ANDROID)
/* TODO - FIXME */
ST010_Multiply(*(int16_t*)&Memory.SRAM[0x0000], *(int16_t*)&Memory.SRAM[0x0002],
- (int*)&Memory.SRAM[0x0010]);
+ (int32_t*)&Memory.SRAM[0x0010]);
#else
- int Product;
+ int32_t Product;
ST010_Multiply(ST010_WORD(0x0000), ST010_WORD(0x0002), &Product);
@@ -577,7 +577,7 @@ void S9xSetST010(uint32_t Address, uint8_t Byte)
// calculate AI orientation based on specific guidelines
case 0x05:
{
- int dx, dy;
+ int32_t dx, dy;
int16_t a1, b1, c1;
uint16_t o1;
diff --git a/source/seta011.c b/source/seta011.c
index c2f2f3d..26a0f54 100644
--- a/source/seta011.c
+++ b/source/seta011.c
@@ -10,7 +10,7 @@ ST011_Regs ST011;
uint8_t board[9][9];
// debug
-static int line = 0;
+static int32_t line = 0;
uint8_t S9xGetST011(uint32_t Address)
{
@@ -104,7 +104,7 @@ void S9xSetST011(uint32_t Address, uint8_t Byte)
{
// 9x9 board data: top to bottom, left to right
// Values represent piece types and ownership
- int lcv;
+ int32_t lcv;
for (lcv = 0; lcv < 9; lcv++)
memcpy(board[lcv], ST011.parameters + lcv * 10, 9 * 1);
}
diff --git a/source/seta018.c b/source/seta018.c
index b385adf..00702d1 100644
--- a/source/seta018.c
+++ b/source/seta018.c
@@ -5,7 +5,7 @@
ST018_Regs ST018;
-static int line; // line counter
+static int32_t line; // line counter
uint8_t S9xGetST018(uint32_t Address)
{
diff --git a/source/snes9x.h b/source/snes9x.h
index de67001..1051af4 100644
--- a/source/snes9x.h
+++ b/source/snes9x.h
@@ -115,12 +115,12 @@ typedef struct
uint8_t* PCAtOpcodeStart;
uint8_t* WaitAddress;
uint32_t WaitCounter;
- long Cycles;
- long NextEvent;
- long V_Counter;
- long MemSpeed;
- long MemSpeedx2;
- long FastROMSpeed;
+ long Cycles; // For savestate compatibility can't change to int32_t
+ long NextEvent; // For savestate compatibility can't change to int32_t
+ long V_Counter; // For savestate compatibility can't change to int32_t
+ long MemSpeed; // For savestate compatibility can't change to int32_t
+ long MemSpeedx2; // For savestate compatibility can't change to int32_t
+ long FastROMSpeed; // For savestate compatibility can't change to int32_t
uint32_t AutoSaveTimer;
bool SRAMModified;
uint32_t NMITriggerPoint;
@@ -142,9 +142,9 @@ typedef struct
bool APUEnabled;
bool Shutdown;
uint8_t SoundSkipMethod;
- long H_Max;
- long HBlankStart;
- long CyclesPercentage;
+ int32_t H_Max;
+ int32_t HBlankStart;
+ int32_t CyclesPercentage;
bool DisableIRQ;
bool Paused;
bool ForcedPause;
@@ -213,18 +213,18 @@ typedef struct
#ifdef USE_BLARGG_APU
uint32_t SoundInputRate;
#endif
- bool TraceSoundDSP;
- bool EightBitConsoleSound; // due to caching, this needs S9xSetEightBitConsoleSound()
- int SoundBufferSize;
- int SoundMixInterval;
- bool SoundEnvelopeHeightReading;
- bool DisableSoundEcho;
- bool DisableMasterVolume;
- bool SoundSync;
- bool InterpolatedSound;
- bool ThreadSound;
- bool Mute;
- bool NextAPUEnabled;
+ bool TraceSoundDSP;
+ bool EightBitConsoleSound; // due to caching, this needs S9xSetEightBitConsoleSound()
+ int32_t SoundBufferSize;
+ int32_t SoundMixInterval;
+ bool SoundEnvelopeHeightReading;
+ bool DisableSoundEcho;
+ bool DisableMasterVolume;
+ bool SoundSync;
+ bool InterpolatedSound;
+ bool ThreadSound;
+ bool Mute;
+ bool NextAPUEnabled;
/* Graphics options */
bool Transparency;
@@ -257,8 +257,8 @@ typedef struct
bool TakeScreenshot;
int8_t StretchScreenshots;
uint16_t DisplayColor;
- int SoundDriver;
- int AIDOShmId;
+ int32_t SoundDriver;
+ int32_t AIDOShmId;
bool NoPatch;
bool ForceInterleaveGD24;
} SSettings;
@@ -278,7 +278,7 @@ extern SCPUState CPU;
extern SSNESGameFixes SNESGameFixes;
extern char String [513];
-void S9xMessage(int type, int number, const char* message);
+void S9xMessage(int32_t type, int32_t number, const char* message);
void S9xSetPause(uint32_t mask);
void S9xClearPause(uint32_t mask);
diff --git a/source/soundux.c b/source/soundux.c
index a67ca6b..237392e 100644
--- a/source/soundux.c
+++ b/source/soundux.c
@@ -35,7 +35,7 @@ static uint8_t FilterTapDefinitionBitfield;
extern uint32_t Z;
extern int32_t Loop [16];
-extern long FilterValues[4][2];
+extern int32_t FilterValues[4][2];
extern int32_t NoiseFreq [32];
uint32_t AttackRate [16] =
{
@@ -92,13 +92,13 @@ void DecodeBlockAsm(int8_t*, int16_t*, int32_t*, int32_t*);
#define LAST_SAMPLE 0xffffff
#define JUST_PLAYED_LAST_SAMPLE(c) ((c)->sample_pointer >= LAST_SAMPLE)
-static inline uint8_t* S9xGetSampleAddress(int 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);
}
-void S9xAPUSetEndOfSample(int i, Channel* ch)
+void S9xAPUSetEndOfSample(int32_t i, Channel* ch)
{
ch->state = SOUND_SILENT;
ch->mode = MODE_NONE;
@@ -108,12 +108,12 @@ void S9xAPUSetEndOfSample(int i, Channel* ch)
APU.KeyedChannels &= ~(1 << i);
}
-void S9xAPUSetEndX(int ch)
+void S9xAPUSetEndX(int32_t ch)
{
APU.DSP [APU_ENDX] |= 1 << ch;
}
-void S9xSetEnvRate(Channel* ch, uint32_t rate, int direction, int target, unsigned int mode)
+void S9xSetEnvRate(Channel* ch, uint32_t rate, int32_t direction, int32_t target, uint32_t mode)
{
ch->envx_target = target;
@@ -153,12 +153,12 @@ void S9xSetEnvRate(Channel* ch, uint32_t rate, int direction, int target, unsign
}
}
-void S9xSetEnvelopeRate(int channel, uint32_t rate, int direction, int target, unsigned int mode)
+void S9xSetEnvelopeRate(int32_t channel, uint32_t rate, int32_t direction, int32_t target, uint32_t mode)
{
S9xSetEnvRate(&SoundData.channels [channel], rate, direction, target, mode);
}
-void S9xSetSoundVolume(int channel, int16_t volume_left, int16_t volume_right)
+void S9xSetSoundVolume(int32_t channel, int16_t volume_left, int16_t volume_right)
{
Channel* ch = &SoundData.channels[channel];
ch->volume_left = volume_left;
@@ -196,7 +196,7 @@ void S9xSetEchoEnable(uint8_t byte)
}
SoundData.echo_enable = byte;
- int i;
+ int32_t i;
for (i = 0; i < NUM_CHANNELS; i++)
{
if (byte & (1 << i))
@@ -206,13 +206,13 @@ void S9xSetEchoEnable(uint8_t byte)
}
}
-void S9xSetEchoFeedback(int feedback)
+void S9xSetEchoFeedback(int32_t feedback)
{
CLIP8(feedback);
SoundData.echo_feedback = feedback;
}
-void S9xSetEchoDelay(int delay)
+void S9xSetEchoDelay(int32_t delay)
{
SoundData.echo_buffer_size = (512 * delay * so.playback_rate) >> 15;
SoundData.echo_buffer_size <<= 1;
@@ -234,7 +234,7 @@ void S9xSetFrequencyModulationEnable(uint8_t byte)
SoundData.pitch_mod = byte & 0xFE;
}
-void S9xSetSoundKeyOff(int channel)
+void S9xSetSoundKeyOff(int32_t channel)
{
Channel* ch = &SoundData.channels[channel];
@@ -251,17 +251,17 @@ void S9xFixSoundAfterSnapshotLoad()
SoundData.echo_write_enabled = !(APU.DSP [APU_FLG] & 0x20);
SoundData.echo_channel_enable = APU.DSP [APU_EON];
S9xSetEchoDelay(APU.DSP [APU_EDL] & 0xf);
- S9xSetEchoFeedback((signed char) APU.DSP [APU_EFB]);
-
- S9xSetFilterCoefficient(0, (signed char) APU.DSP [APU_C0]);
- S9xSetFilterCoefficient(1, (signed char) APU.DSP [APU_C1]);
- S9xSetFilterCoefficient(2, (signed char) APU.DSP [APU_C2]);
- S9xSetFilterCoefficient(3, (signed char) APU.DSP [APU_C3]);
- S9xSetFilterCoefficient(4, (signed char) APU.DSP [APU_C4]);
- S9xSetFilterCoefficient(5, (signed char) APU.DSP [APU_C5]);
- S9xSetFilterCoefficient(6, (signed char) APU.DSP [APU_C6]);
- S9xSetFilterCoefficient(7, (signed char) APU.DSP [APU_C7]);
- int i;
+ S9xSetEchoFeedback((int8_t) APU.DSP [APU_EFB]);
+
+ S9xSetFilterCoefficient(0, (int8_t) APU.DSP [APU_C0]);
+ S9xSetFilterCoefficient(1, (int8_t) APU.DSP [APU_C1]);
+ S9xSetFilterCoefficient(2, (int8_t) APU.DSP [APU_C2]);
+ S9xSetFilterCoefficient(3, (int8_t) APU.DSP [APU_C3]);
+ S9xSetFilterCoefficient(4, (int8_t) APU.DSP [APU_C4]);
+ 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;
@@ -270,7 +270,7 @@ void S9xFixSoundAfterSnapshotLoad()
}
}
-void S9xSetFilterCoefficient(int tap, int value)
+void S9xSetFilterCoefficient(int32_t tap, int32_t value)
{
FilterTaps [tap & 7] = value;
if (value == 0 || (tap == 0 && value == 127))
@@ -279,11 +279,11 @@ void S9xSetFilterCoefficient(int tap, int value)
FilterTapDefinitionBitfield |= 1 << (tap & 7);
}
-void S9xSetSoundADSR(int channel, int attack_ind, int decay_ind, int sustain_ind, int sustain_level, int release_rate)
+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)
{
- int attack_rate = AttackRate [attack_ind];
- int decay_rate = DecayRate [decay_ind];
- int sustain_rate = SustainRate [sustain_ind];
+ int32_t attack_rate = AttackRate [attack_ind];
+ int32_t decay_rate = DecayRate [decay_ind];
+ int32_t sustain_rate = SustainRate [sustain_ind];
// Hack for ROMs that use a very short attack rate, key on a
// channel, then switch to decay mode. e.g. Final Fantasy II.
@@ -315,7 +315,7 @@ void S9xSetSoundADSR(int channel, int attack_ind, int decay_ind, int sustain_ind
}
}
-void S9xSetEnvelopeHeight(int channel, int level)
+void S9xSetEnvelopeHeight(int32_t channel, int32_t level)
{
Channel* ch = &SoundData.channels[channel];
@@ -329,7 +329,7 @@ void S9xSetEnvelopeHeight(int channel, int level)
S9xAPUSetEndOfSample(channel, ch);
}
-int S9xGetEnvelopeHeight(int channel)
+int32_t S9xGetEnvelopeHeight(int32_t channel)
{
if ((Settings.SoundEnvelopeHeightReading ||
SNESGameFixes.SoundEnvelopeHeightReading2) &&
@@ -345,20 +345,20 @@ int S9xGetEnvelopeHeight(int channel)
return (0);
}
-void S9xSetSoundFrequency(int channel, int hertz) // hertz [0~64K<<1]
+void S9xSetSoundFrequency(int32_t channel, int32_t hertz) // hertz [0~64K<<1]
{
if (SoundData.channels[channel].type == SOUND_NOISE)
hertz = NoiseFreq [APU.DSP [APU_FLG] & 0x1f];
SoundData.channels[channel].frequency = (hertz * so.freqbase) >> 11;
}
-void S9xSetSoundHertz(int channel, int hertz)
+void S9xSetSoundHertz(int32_t channel, int32_t hertz)
{
SoundData.channels[channel].hertz = hertz;
S9xSetSoundFrequency(channel, hertz);
}
-void S9xSetSoundType(int channel, int type_of_sound)
+void S9xSetSoundType(int32_t channel, int32_t type_of_sound)
{
SoundData.channels[channel].type = type_of_sound;
}
@@ -367,8 +367,8 @@ void DecodeBlock(Channel* ch)
{
int32_t out;
uint8_t filter;
- unsigned char shift;
- signed char sample1, sample2;
+ uint8_t shift;
+ int8_t sample1, sample2;
if (ch->block_pointer >= 0x10000 - 9)
{
@@ -385,7 +385,7 @@ void DecodeBlock(Channel* ch)
ch->loop = (filter & 2) != 0;
int16_t* raw = ch->block = ch->decoded;
- unsigned int i;
+ uint32_t i;
compressed++;
@@ -463,11 +463,11 @@ void DecodeBlock(Channel* ch)
ch->block_pointer += 9;
}
-static inline void MixStereo(int sample_count)
+static inline void MixStereo(int32_t sample_count)
{
static int32_t wave[SOUND_BUFFER_SIZE];
- int pitch_mod = SoundData.pitch_mod & ~APU.DSP[APU_NON];
+ int32_t pitch_mod = SoundData.pitch_mod & ~APU.DSP[APU_NON];
uint32_t J;
for (J = 0; J < NUM_CHANNELS; J++)
@@ -498,7 +498,7 @@ static inline void MixStereo(int sample_count)
if (Settings.InterpolatedSound && freq0 < FIXED_POINT && !mod)
ch->interpolate = ((ch->next_sample - ch->sample) *
- (long) freq0) / (long) FIXED_POINT;
+ (int32_t) freq0) / (int32_t) FIXED_POINT;
}
VL = (ch->sample * ch-> left_vol_level) / 128;
VR = (ch->sample * ch->right_vol_level) / 128;
@@ -703,9 +703,9 @@ static inline void MixStereo(int sample_count)
if (Settings.InterpolatedSound && freq < FIXED_POINT && !mod)
{
ch->interpolate = ((ch->next_sample - ch->sample) *
- (long) freq) / (long) FIXED_POINT;
+ (int32_t) freq) / (int32_t) FIXED_POINT;
ch->sample = (int16_t)(ch->sample + (((ch->next_sample - ch->sample) *
- (long)(ch->count)) / (long) FIXED_POINT));
+ (int32_t)(ch->count)) / (int32_t) FIXED_POINT));
}
else
ch->interpolate = 0;
@@ -713,7 +713,7 @@ static inline void MixStereo(int sample_count)
else
{
// Snes9x 1.53's SPC_DSP.cpp, by blargg
- int feedback = (noise_gen << 13) ^ (noise_gen << 14);
+ int32_t feedback = (noise_gen << 13) ^ (noise_gen << 14);
noise_gen = (feedback & 0x4000) ^ (noise_gen >> 1);
ch->sample = (noise_gen << 17) >> 17;
ch->interpolate = 0;
@@ -752,10 +752,10 @@ stereo_exit:
}
}
-void S9xMixSamples(uint16_t* buffer, int sample_count)
+void S9xMixSamples(int16_t* buffer, int32_t sample_count)
{
- int J;
- int I;
+ int32_t J;
+ int32_t I;
if (SoundData.echo_enable)
memset(EchoBuffer, 0, sample_count * sizeof(EchoBuffer [0]));
@@ -771,7 +771,7 @@ void S9xMixSamples(uint16_t* buffer, int sample_count)
// ... but no filter defined.
for (J = 0; J < sample_count; J++)
{
- int E = Echo [SoundData.echo_ptr];
+ int32_t E = Echo [SoundData.echo_ptr];
Echo[SoundData.echo_ptr++] = (E * SoundData.echo_feedback) / 128 + EchoBuffer [J];
if (SoundData.echo_ptr >= SoundData.echo_buffer_size)
@@ -788,7 +788,7 @@ void S9xMixSamples(uint16_t* buffer, int sample_count)
for (J = 0; J < sample_count; J++)
{
Loop [(Z - 0) & 15] = Echo [SoundData.echo_ptr];
- int E = Loop [(Z - 0) & 15] * FilterTaps [0];
+ int32_t 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];
@@ -824,7 +824,7 @@ void S9xMixSamples(uint16_t* buffer, int sample_count)
void S9xResetSound(bool full)
{
- int i;
+ int32_t i;
for (i = 0; i < 8; i++)
{
SoundData.channels[i].state = SOUND_SILENT;
@@ -893,12 +893,12 @@ void S9xSetPlaybackRate(uint32_t 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 int steps [] =
+ static int32_t steps [] =
{
0, 64, 619, 619, 128, 1, 64, 55, 64, 619
};
- int i, u;
+ int32_t i, u;
for (u = 0 ; u < 10 ; u++)
{
@@ -922,7 +922,7 @@ void S9xSetPlaybackRate(uint32_t playback_rate)
}
S9xSetEchoDelay(APU.DSP [APU_EDL] & 0xf);
- int i;
+ int32_t i;
for (i = 0; i < 8; i++)
S9xSetSoundFrequency(i, SoundData.channels [i].hertz);
}
@@ -934,7 +934,7 @@ bool S9xInitSound()
return (1);
}
-bool S9xSetSoundMode(int channel, int mode)
+bool S9xSetSoundMode(int32_t channel, int32_t mode)
{
Channel* ch = &SoundData.channels[channel];
@@ -971,7 +971,7 @@ bool S9xSetSoundMode(int channel, int mode)
return (false);
}
-void S9xPlaySample(int channel)
+void S9xPlaySample(int32_t channel)
{
Channel* ch = &SoundData.channels[channel];
diff --git a/source/soundux.h b/source/soundux.h
index e4cf3ad..72f00df 100644
--- a/source/soundux.h
+++ b/source/soundux.h
@@ -31,8 +31,8 @@ enum { MODE_NONE = SOUND_SILENT, MODE_ADSR, MODE_RELEASE = SOUND_RELEASE,
typedef struct
{
- int playback_rate;
- int buffer_size;
+ int32_t playback_rate;
+ int32_t buffer_size;
uint32_t freqbase; // notaz
bool mute_sound;
} SoundStatus;
@@ -41,21 +41,21 @@ SoundStatus so;
typedef struct
{
- int state;
- int type;
+ int32_t state;
+ int32_t type;
int16_t volume_left;
int16_t volume_right;
uint32_t hertz;
uint32_t frequency;
uint32_t count;
bool loop;
- int envx;
+ int32_t envx;
int16_t left_vol_level;
int16_t right_vol_level;
int16_t envx_target;
uint32_t env_error;
uint32_t erate;
- int direction;
+ int32_t direction;
uint32_t attack_rate;
uint32_t decay_rate;
uint32_t sustain_rate;
@@ -70,8 +70,8 @@ typedef struct
bool needs_decode;
uint32_t block_pointer;
uint32_t sample_pointer;
- int* echo_buf_ptr;
- int mode;
+ int32_t* echo_buf_ptr;
+ int32_t mode;
int32_t envxx;
int16_t next_sample;
int32_t interpolate;
@@ -86,52 +86,52 @@ typedef struct
typedef struct
{
- int echo_enable;
- int echo_feedback; /* range is -128 .. 127 */
- int echo_ptr;
- int echo_buffer_size;
- int echo_write_enabled;
- int echo_channel_enable;
- int pitch_mod;
+ int32_t echo_enable;
+ int32_t echo_feedback; /* range is -128 .. 127 */
+ int32_t echo_ptr;
+ int32_t echo_buffer_size;
+ int32_t echo_write_enabled;
+ int32_t echo_channel_enable;
+ int32_t pitch_mod;
// Just incase they are needed in the future, for snapshot compatibility.
uint32_t dummy [3];
Channel channels [NUM_CHANNELS];
int16_t master_volume [2]; /* range is -128 .. 127 */
int16_t echo_volume [2]; /* range is -128 .. 127 */
- int noise_hertz;
+ int32_t noise_hertz;
} SSoundData;
SSoundData SoundData;
-void S9xSetSoundVolume(int channel, int16_t volume_left, int16_t volume_right);
-void S9xSetSoundFrequency(int channel, int hertz);
-void S9xSetSoundHertz(int channel, int hertz);
-void S9xSetSoundType(int channel, int type_of_sound);
+void S9xSetSoundVolume(int32_t channel, int16_t volume_left, int16_t volume_right);
+void S9xSetSoundFrequency(int32_t channel, int32_t hertz);
+void S9xSetSoundHertz(int32_t channel, int32_t hertz);
+void S9xSetSoundType(int32_t channel, int32_t type_of_sound);
void S9xSetMasterVolume(int16_t master_volume_left, int16_t master_volume_right);
void S9xSetEchoVolume(int16_t echo_volume_left, int16_t echo_volume_right);
-void S9xSetEnvelopeHeight(int channel, int height);
-void S9xSetSoundADSR(int channel, int attack, int decay, int sustain, int sustain_level, int release);
-void S9xSetSoundKeyOff(int channel);
-void S9xSetSoundDecayMode(int channel);
-void S9xSetSoundAttachMode(int channel);
+void S9xSetEnvelopeHeight(int32_t channel, int32_t height);
+void S9xSetSoundADSR(int32_t channel, int32_t attack, int32_t decay, int32_t sustain, int32_t sustain_level, int32_t release);
+void S9xSetSoundKeyOff(int32_t channel);
+void S9xSetSoundDecayMode(int32_t channel);
+void S9xSetSoundAttachMode(int32_t channel);
void S9xSoundStartEnvelope(Channel*);
-void S9xSetEchoFeedback(int echo_feedback);
+void S9xSetEchoFeedback(int32_t echo_feedback);
void S9xSetEchoEnable(uint8_t byte);
-void S9xSetEchoDelay(int byte);
+void S9xSetEchoDelay(int32_t byte);
void S9xSetEchoWriteEnable(uint8_t byte);
-void S9xSetFilterCoefficient(int tap, int value);
+void S9xSetFilterCoefficient(int32_t tap, int32_t value);
void S9xSetFrequencyModulationEnable(uint8_t byte);
-void S9xSetEnvelopeRate(int channel, uint32_t rate, int direction, int target, unsigned int mode);
-bool S9xSetSoundMode(int channel, int mode);
+void S9xSetEnvelopeRate(int32_t channel, uint32_t rate, int32_t direction, int32_t target, uint32_t mode);
+bool S9xSetSoundMode(int32_t channel, int32_t mode);
void S9xResetSound(bool full);
void S9xFixSoundAfterSnapshotLoad();
-void S9xPlaybackSoundSetting(int channel);
-void S9xPlaySample(int channel);
-void S9xFixEnvelope(int channel, uint8_t gain, uint8_t adsr1, uint8_t adsr2);
-void S9xStartSample(int channel);
+void S9xPlaybackSoundSetting(int32_t channel);
+void S9xPlaySample(int32_t channel);
+void S9xFixEnvelope(int32_t channel, uint8_t gain, uint8_t adsr1, uint8_t adsr2);
+void S9xStartSample(int32_t channel);
-void S9xMixSamples(uint16_t* buffer, int sample_count);
-bool S9xOpenSoundDevice(int, bool, int);
+void S9xMixSamples(int16_t* buffer, int32_t sample_count);
+bool S9xOpenSoundDevice(int32_t, bool, int32_t);
void S9xSetPlaybackRate(uint32_t rate);
#endif
diff --git a/source/spc700.c b/source/spc700.c
index 5e50cf3..7b1a8b7 100644
--- a/source/spc700.c
+++ b/source/spc700.c
@@ -158,11 +158,11 @@ APUSetZN8 ((uint8_t) Int16);
#define Relative()\
Int8 = OP1;\
- Int16 = (intptr_t) (IAPU.PC + 2 - IAPU.RAM) + Int8;
+ Int16 = (int16_t) (IAPU.PC + 2 - IAPU.RAM) + Int8;
#define Relative2()\
Int8 = OP2;\
- Int16 = (intptr_t) (IAPU.PC + 3 - IAPU.RAM) + Int8;
+ Int16 = (int16_t) (IAPU.PC + 3 - IAPU.RAM) + Int8;
#ifdef FAST_LSB_WORD_ACCESS
#define IndexedXIndirect()\
diff --git a/source/spc7110.c b/source/spc7110.c
index 66bfecc..1c87809 100644
--- a/source/spc7110.c
+++ b/source/spc7110.c
@@ -57,7 +57,7 @@ typedef struct SPC7110DecompressionLocationStruct
//this maps an index.bin table to the decompression pack
typedef struct SPC7110DecompressionIndexStruct
{
- int table;
+ int32_t table;
bool is_file;
Data7110 location[256];
} Index7110;
@@ -67,8 +67,8 @@ typedef struct SPC7110DecompressionPackStructure
{
uint8_t* binfiles[MAX_TABLES];
Index7110 tableEnts[MAX_TABLES];
- int last_table;
- int idx;
+ int32_t last_table;
+ int32_t idx;
uint8_t last_idx;
uint16_t last_offset;
} Pack7110;
@@ -158,10 +158,10 @@ void MovePackData()
decompack->last_idx = s7r.reg4804;
//start decompression
- int table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
+ int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
//the table is a offset multiplier byte and a big-endian pointer
- int j = 4 * s7r.reg4804;
+ int32_t j = 4 * s7r.reg4804;
j += s7r.DataRomOffset;
j += table;
@@ -194,7 +194,7 @@ void MovePackData()
//find the table
if (table != decompack->last_table)
{
- int i = 0;
+ int32_t i = 0;
while (i < MAX_TABLES && decompack->tableEnts[i].table != table)
i++;
if (i == MAX_TABLES)
@@ -225,12 +225,12 @@ void MovePackData()
// and reads the data directly. Method 2
void ReadPackData()
{
- static int table_age_2;
- static int table_age_3;
- static int table_age_4;
- static int table_age_5;
+ static int32_t table_age_2;
+ static int32_t table_age_3;
+ static int32_t table_age_4;
+ static int32_t table_age_5;
- int table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
+ int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
if (table == 0)
{
@@ -254,7 +254,7 @@ void ReadPackData()
decompack->last_idx = s7r.reg4804;
- int j = 4 * s7r.reg4804;
+ int32_t j = 4 * s7r.reg4804;
j += s7r.DataRomOffset;
j += table;
@@ -283,7 +283,7 @@ void ReadPackData()
decompack->last_offset %= DECOMP_BUFFER_SIZE;
if (table != decompack->last_table)
{
- int i = 0;
+ int32_t i = 0;
while (i < MAX_TABLES && decompack->tableEnts[i].table != table)
i++;
if (i == MAX_TABLES)
@@ -376,9 +376,9 @@ void GetPackData()
decompack->last_offset = (s7r.reg4805) | (s7r.reg4806 << 8);
decompack->last_idx = s7r.reg4804;
- int table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
+ int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
- int j = 4 * s7r.reg4804;
+ int32_t j = 4 * s7r.reg4804;
j += s7r.DataRomOffset;
j += table;
@@ -407,7 +407,7 @@ void GetPackData()
decompack->last_offset %= DECOMP_BUFFER_SIZE;
if (table != decompack->last_table)
{
- int i = 0;
+ int32_t i = 0;
while (i < MAX_TABLES && decompack->tableEnts[i].table != table)
i++;
if (i == MAX_TABLES)
@@ -899,9 +899,9 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
case 0x480B:
{
s7r.reg480B = data;
- int table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
+ int32_t table = (s7r.reg4803 << 16) | (s7r.reg4802 << 8) | s7r.reg4801;
- int j = 4 * s7r.reg4804;
+ int32_t j = 4 * s7r.reg4804;
j += s7r.DataRomOffset;
j += table;
@@ -965,7 +965,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
{
uint32_t i = (s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811;
if (s7r.reg4818 & 0x08)
- i += (signed char)s7r.reg4814;
+ i += (int8_t)s7r.reg4814;
else
i += s7r.reg4814;
i %= s7r.DataRomSize;
@@ -1029,7 +1029,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
uint32_t i = (s7r.reg4813 << 16) | (s7r.reg4812 << 8) | s7r.reg4811;
if (s7r.reg4818 & 0x08)
- i += (signed char)s7r.reg4814;
+ i += (int8_t)s7r.reg4814;
else
i += s7r.reg4814;
i %= s7r.DataRomSize;
@@ -1117,7 +1117,7 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
{
int16_t m1 = (int16_t)((s7r.reg4824) | (s7r.reg4825 << 8));
int16_t m2 = (int16_t)((s7r.reg4820) | (s7r.reg4821 << 8));
- int mul = m1 * m2;
+ int32_t mul = m1 * m2;
s7r.reg4828 = (uint8_t)(mul & 0x000000FF);
s7r.reg4829 = (uint8_t)((mul & 0x0000FF00) >> 8);
s7r.reg482A = (uint8_t)((mul & 0x00FF0000) >> 16);
@@ -1146,14 +1146,14 @@ void S9xSetSPC7110(uint8_t data, uint16_t Address)
s7r.reg4827 = data;
if (s7r.reg482E & 0x01)
{
- int quotient;
+ int32_t quotient;
int16_t remainder;
- int dividend = (int)(s7r.reg4820 | (s7r.reg4821 << 8) | (s7r.reg4822 << 16) |
- (s7r.reg4823 << 24));
+ int32_t dividend = (int32_t)(s7r.reg4820 | (s7r.reg4821 << 8) | (s7r.reg4822 << 16) |
+ (s7r.reg4823 << 24));
int16_t divisor = (int16_t)(s7r.reg4826 | (s7r.reg4827 << 8));
if (divisor != 0)
{
- quotient = (int)(dividend / divisor);
+ quotient = (int32_t)(dividend / divisor);
remainder = (int16_t)(dividend % divisor);
}
else
@@ -1358,9 +1358,9 @@ uint8_t S9xGetSPC7110Byte(uint32_t Address)
/* Return the number of days in a specific month for a certain year */
/* copied directly for RTC functionality, separated in case of incompatibilities */
/**********************************************************************************************/
-int S9xRTCDaysInMonth(int month, int year)
+int32_t S9xRTCDaysInMonth(int32_t month, int32_t year)
{
- int mdays;
+ int32_t mdays;
switch (month)
{
@@ -1397,8 +1397,8 @@ int S9xRTCDaysInMonth(int month, int year)
void S9xUpdateRTC()
{
- time_t cur_systime;
- long time_diff;
+ time_t cur_systime;
+ int32_t time_diff;
// Keep track of game time by computing the number of seconds that pass on the system
// clock and adding the same number of seconds to the RTC clock structure.
@@ -1413,21 +1413,21 @@ void S9xUpdateRTC()
// If your tick interval is different adjust the
// DAYTICK, HOURTICK, and MINUTETICK defines
- time_diff = (long)(cur_systime - rtc_f9.last_used);
+ time_diff = (int32_t)(cur_systime - rtc_f9.last_used);
rtc_f9.last_used = cur_systime;
if (time_diff > 0)
{
- int seconds;
- int minutes;
- int hours;
- int days;
- int month;
- int year;
- int temp_days;
+ int32_t seconds;
+ int32_t minutes;
+ int32_t hours;
+ int32_t days;
+ int32_t month;
+ int32_t year;
+ int32_t temp_days;
- int year_tens;
- int year_ones;
+ int32_t year_tens;
+ int32_t year_ones;
if (time_diff > DAYTICKS)
@@ -1551,16 +1551,16 @@ bool Load7110Index(char* filename)
{
FILE* fp;
uint8_t buffer[12];
- int table = 0;
+ int32_t table = 0;
uint8_t index = 0;
uint32_t offset = 0;
uint32_t size = 0;
- int i = 0;
+ int32_t i = 0;
fp = fopen(filename, "rb");
if (NULL == fp)
return false;
- int f_len;
+ int32_t f_len;
while (1)
{
i = 0;
@@ -1593,7 +1593,7 @@ bool Load7110Index(char* filename)
void SPC7110Load(char* dirname)
{
char temp_path[PATH_MAX];
- int i = 0;
+ int32_t i = 0;
decompack = (Pack7110*)malloc(sizeof(Pack7110));
@@ -1650,7 +1650,7 @@ void SPC7110Load(char* dirname)
void SPC7110Open(char* dirname)
{
char temp_path[PATH_MAX];
- int i = 0;
+ int32_t i = 0;
decompack = (Pack7110*)malloc(sizeof(Pack7110));
@@ -1689,7 +1689,7 @@ void SPC7110Open(char* dirname)
void SPC7110Grab(char* dirname)
{
char temp_path[PATH_MAX];
- int i = 0;
+ int32_t i = 0;
decompack = (Pack7110*)malloc(sizeof(Pack7110));
@@ -1761,7 +1761,7 @@ void SPC7110Grab(char* dirname)
//Cache 1 clean up function
void Del7110Gfx()
{
- int i;
+ int32_t i;
if (Settings.SPC7110)
{
Do7110Logging();
@@ -1786,7 +1786,7 @@ void Del7110Gfx()
//Cache2 cleanup function
void Close7110Gfx()
{
- int i;
+ int32_t i;
if (Settings.SPC7110)
{
Do7110Logging();
@@ -1811,7 +1811,7 @@ void Close7110Gfx()
//cache 3's clean-up code
void Drop7110Gfx()
{
- int i;
+ int32_t i;
if (Settings.SPC7110)
{
Do7110Logging();
@@ -1904,7 +1904,7 @@ void Do7110Logging()
{
uint8_t ent_temp;
FILE* flog;
- int entries = 0;
+ int32_t entries = 0;
if (Settings.SPC7110)
{
@@ -1955,15 +1955,15 @@ void Do7110Logging()
if (flog)
{
uint8_t buffer[8];
- int table = 0;
+ int32_t table = 0;
uint16_t offset = 0;
uint16_t length = 0;
fseek(flog, 35, 0);
- int f_len;
+ int32_t f_len;
while (1)
{
- int i = 0;
+ int32_t i = 0;
Data7110* log = NULL;
f_len = fread(buffer, 1, 8, flog);
if (f_len < 8) break;
@@ -2032,11 +2032,11 @@ void Do7110Logging()
//count entries
if (flog)
{
- int j = 0;
- int temp = 0;
+ int32_t j = 0;
+ int32_t temp = 0;
for (j = 0; j < MAX_TABLES; j++)
{
- int k;
+ int32_t k;
for (k = 0; k < 256; k++)
{
if (decompack->tableEnts[j].location[k].used_len != 0)
@@ -2068,7 +2068,7 @@ void Do7110Logging()
for (j = 0; j < MAX_TABLES; j++)
{
- int k;
+ int32_t k;
for (k = 0; k < 256; k++)
{
if (decompack->tableEnts[j].location[k].used_len != 0)
@@ -2105,7 +2105,7 @@ bool S9xSaveSPC7110RTC(S7RTC* rtc_f9)
if ((fp = fopen(S9xGetFilename("rtc"), "wb")) == NULL)
return (false);
- int i = 0;
+ int32_t i = 0;
uint8_t temp = 0;
for (i = 0; i < 16; i++)
fwrite(&rtc_f9->reg[i], 1, 1, fp);
@@ -2135,7 +2135,7 @@ bool S9xLoadSPC7110RTC(S7RTC* rtc_f9)
if ((fp = fopen(S9xGetFilename("rtc"), "rb")) == NULL)
return (false);
- int i;
+ int32_t i;
for (i = 0; i < 16; i++)
fread(&(rtc_f9->reg[i]), 1, 1, fp);
uint8_t temp = 0;
diff --git a/source/spc7110.h b/source/spc7110.h
index 92fb1d3..06a594a 100644
--- a/source/spc7110.h
+++ b/source/spc7110.h
@@ -24,7 +24,7 @@ uint8_t* Get7110BasePtr(uint32_t);
void S9xSpc7110Reset();
void S9xUpdateRTC();
void Do7110Logging();
-int S9xRTCDaysInMonth(int month, int year);
+int32_t S9xRTCDaysInMonth(int32_t month, int32_t year);
//These are platform-dependant functions, but should work on
//most systems that use GNU compilers, and on Win32.
@@ -34,67 +34,67 @@ void SPC7110Grab(char*);
typedef struct SPC7110RTC
{
- unsigned char reg[16];
- int16_t index;
- uint8_t control;
- bool init;
- time_t last_used;
+ uint8_t reg[16];
+ int16_t index;
+ uint8_t control;
+ bool init;
+ time_t last_used;
} S7RTC;
typedef struct SPC7110EmuVars
{
- unsigned char reg4800;
- unsigned char reg4801;
- unsigned char reg4802;
- unsigned char reg4803;
- unsigned char reg4804;
- unsigned char reg4805;
- unsigned char reg4806;
- unsigned char reg4807;
- unsigned char reg4808;
- unsigned char reg4809;
- unsigned char reg480A;
- unsigned char reg480B;
- unsigned char reg480C;
- unsigned char reg4811;
- unsigned char reg4812;
- unsigned char reg4813;
- unsigned char reg4814;
- unsigned char reg4815;
- unsigned char reg4816;
- unsigned char reg4817;
- unsigned char reg4818;
- unsigned char reg4820;
- unsigned char reg4821;
- unsigned char reg4822;
- unsigned char reg4823;
- unsigned char reg4824;
- unsigned char reg4825;
- unsigned char reg4826;
- unsigned char reg4827;
- unsigned char reg4828;
- unsigned char reg4829;
- unsigned char reg482A;
- unsigned char reg482B;
- unsigned char reg482C;
- unsigned char reg482D;
- unsigned char reg482E;
- unsigned char reg482F;
- unsigned char reg4830;
- unsigned char reg4831;
- unsigned char reg4832;
- unsigned char reg4833;
- unsigned char reg4834;
- unsigned char reg4840;
- unsigned char reg4841;
- unsigned char reg4842;
- uint8_t AlignBy;
- uint8_t written;
- uint8_t offset_add;
- uint32_t DataRomOffset;
- uint32_t DataRomSize;
- uint32_t bank50Internal;
- uint8_t bank50[DECOMP_BUFFER_SIZE];
+ uint8_t reg4800;
+ uint8_t reg4801;
+ uint8_t reg4802;
+ uint8_t reg4803;
+ uint8_t reg4804;
+ uint8_t reg4805;
+ uint8_t reg4806;
+ uint8_t reg4807;
+ uint8_t reg4808;
+ uint8_t reg4809;
+ uint8_t reg480A;
+ uint8_t reg480B;
+ uint8_t reg480C;
+ uint8_t reg4811;
+ uint8_t reg4812;
+ uint8_t reg4813;
+ uint8_t reg4814;
+ uint8_t reg4815;
+ uint8_t reg4816;
+ uint8_t reg4817;
+ uint8_t reg4818;
+ uint8_t reg4820;
+ uint8_t reg4821;
+ uint8_t reg4822;
+ uint8_t reg4823;
+ uint8_t reg4824;
+ uint8_t reg4825;
+ uint8_t reg4826;
+ uint8_t reg4827;
+ uint8_t reg4828;
+ uint8_t reg4829;
+ uint8_t reg482A;
+ uint8_t reg482B;
+ uint8_t reg482C;
+ uint8_t reg482D;
+ uint8_t reg482E;
+ uint8_t reg482F;
+ uint8_t reg4830;
+ uint8_t reg4831;
+ uint8_t reg4832;
+ uint8_t reg4833;
+ uint8_t reg4834;
+ uint8_t reg4840;
+ uint8_t reg4841;
+ uint8_t reg4842;
+ uint8_t AlignBy;
+ uint8_t written;
+ uint8_t offset_add;
+ uint32_t DataRomOffset;
+ uint32_t DataRomSize;
+ uint32_t bank50Internal;
+ uint8_t bank50[DECOMP_BUFFER_SIZE];
} SPC7110Regs;
extern SPC7110Regs s7r;
diff --git a/source/srtc.c b/source/srtc.c
index 94ad27f..78cb4a7 100644
--- a/source/srtc.c
+++ b/source/srtc.c
@@ -35,7 +35,7 @@ Index Description Range (nibble)
SRTC_DATA rtc;
-static int month_keys[12] = { 1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6 };
+static int32_t month_keys[12] = { 1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6 };
/*********************************************************************************************
@@ -77,12 +77,12 @@ void S9xHardResetSRTC()
/* S9xSRTCComputeDayOfWeek() */
/* Return 0-6 for Sunday-Saturday */
/**********************************************************************************************/
-unsigned int S9xSRTCComputeDayOfWeek()
+uint32_t S9xSRTCComputeDayOfWeek()
{
- unsigned year = rtc.data[10] * 10 + rtc.data[9];
- unsigned month = rtc.data[8];
- unsigned day = rtc.data[7] * 10 + rtc.data[6];
- unsigned day_of_week;
+ uint32_t year = rtc.data[10] * 10 + rtc.data[9];
+ uint32_t month = rtc.data[8];
+ uint32_t day = rtc.data[7] * 10 + rtc.data[6];
+ uint32_t day_of_week;
year += (rtc.data[11] - 9) * 100;
@@ -105,9 +105,9 @@ unsigned int S9xSRTCComputeDayOfWeek()
/* S9xSRTCDaysInMonth() */
/* Return the number of days in a specific month for a certain year */
/**********************************************************************************************/
-int S9xSRTCDaysInMmonth(int month, int year)
+int32_t S9xSRTCDaysInMmonth(int32_t month, int32_t year)
{
- int mdays;
+ int32_t mdays;
switch (month)
{
@@ -145,8 +145,8 @@ int S9xSRTCDaysInMmonth(int month, int year)
/**********************************************************************************************/
void S9xUpdateSrtcTime()
{
- time_t cur_systime;
- long time_diff;
+ time_t cur_systime;
+ int32_t time_diff;
// Keep track of game time by computing the number of seconds that pass on the system
// clock and adding the same number of seconds to the S-RTC clock structure.
@@ -166,23 +166,22 @@ void S9xUpdateSrtcTime()
// If your tick interval is different adjust the
// DAYTICK, HOURTICK, and MINUTETICK defines
- time_diff = (long)(cur_systime - rtc.system_timestamp);
+ time_diff = (int32_t)(cur_systime - rtc.system_timestamp);
rtc.system_timestamp = cur_systime;
if (time_diff > 0)
{
- int seconds;
- int minutes;
- int hours;
- int days;
- int month;
- int year;
- int temp_days;
-
- int year_hundreds;
- int year_tens;
- int year_ones;
-
+ int32_t seconds;
+ int32_t minutes;
+ int32_t hours;
+ int32_t days;
+ int32_t month;
+ int32_t year;
+ int32_t temp_days;
+
+ int32_t year_hundreds;
+ int32_t year_tens;
+ int32_t year_ones;
if (time_diff > DAYTICKS)
{
@@ -420,8 +419,7 @@ void S9xSRTCPreSaveState()
{
S9xUpdateSrtcTime();
- int s = Memory.SRAMSize ?
- (1 << (Memory.SRAMSize + 3)) * 128 : 0;
+ int32_t s = Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0;
if (s > 0x20000)
s = 0x20000;
@@ -452,8 +450,7 @@ void S9xSRTCPostLoadState()
{
if (Settings.SRTC)
{
- int s = Memory.SRAMSize ?
- (1 << (Memory.SRAMSize + 3)) * 128 : 0;
+ int32_t s = Memory.SRAMSize ? (1 << (Memory.SRAMSize + 3)) * 128 : 0;
if (s > 0x20000)
s = 0x20000;
diff --git a/source/tile.h b/source/tile.h
index 427c975..6bc4e23 100644
--- a/source/tile.h
+++ b/source/tile.h
@@ -172,7 +172,7 @@
pixel = PIXEL; \
for (l = LineCount; l != 0; l--, sp += GFX.PPL, Depth += GFX.PPL) \
{ \
- int z; \
+ int32_t z; \
for (z = Pixels - 1; z >= 0; z--) \
if (GFX.Z1 > Depth [z]) \
{ \
@@ -191,7 +191,7 @@
pixel = PIXEL; \
for (l = LineCount; l != 0; l--, sp += GFX.PPL, Depth += GFX.PPL) \
{ \
- int z; \
+ int32_t z; \
for (z = Pixels - 1; z >= 0; z--) \
if (GFX.Z1 > Depth [z]) \
{ \
@@ -217,7 +217,7 @@
pixel = PIXEL; \
for (l = LineCount; l != 0; l--, sp += GFX.PPL, Depth += GFX.PPL) \
{ \
- int z; \
+ int32_t z; \
for (z = Pixels - 2; z >= 0; z -= 2) \
if (GFX.Z1 > Depth [z]) \
{ \
@@ -236,7 +236,7 @@
pixel = PIXEL; \
for (l = LineCount; l != 0; l--, sp += GFX.PPL, Depth += GFX.PPL) \
{ \
- int z; \
+ int32_t z; \
for (z = Pixels - 2; z >= 0; z -= 2) \
if (GFX.Z1 > Depth [z]) \
{ \