enable -Wall and fix warnings reported by it
authornotaz <notaz@pixelinis>
Mon, 5 Sep 2011 16:31:58 +0000 (19:31 +0300)
committernotaz <notaz@pixelinis>
Mon, 5 Sep 2011 21:18:06 +0000 (00:18 +0300)
23 files changed:
arm/arm_emit.h
cheats.c
cheats.h
cpu.c
cpu.h
cpu_threaded.c
font.h
gp2x/Makefile
gp2x/gp2x.c
gui.c
gui.h
input.c
main.c
main.h
memory.c
memory.h
pandora/Makefile
sound.c
sound.h
video.c
x86/Makefile
x86/x86_emit.h
zip.c

index 5d2eee0..a270a24 100644 (file)
@@ -233,7 +233,6 @@ u32 arm_disect_imm_32bit(u32 imm, u32 *stores, u32 *rotations)
 {
   u32 store_count = 0;
   u32 left_shift = 0;
-  u32 i;
 
   // Otherwise it'll return 0 things to store because it'll never
   // find anything.
@@ -276,7 +275,6 @@ u32 arm_disect_imm_32bit(u32 imm, u32 *stores, u32 *rotations)
       {
         // Then we can throw out the last bit and tack it on
         // to the first bit.
-        u32 initial_bits = rotations[0];
         stores[0] =
          (stores[0] << ((top_bits + (32 - rotations[0])) & 0x1F)) |
          ((imm >> left_shift) & 0xFF);
index 7040b2f..8fa69ae 100644 (file)
--- a/cheats.c
+++ b/cheats.c
@@ -25,7 +25,7 @@ u32 num_cheats;
 void decrypt_gsa_code(u32 *address_ptr, u32 *value_ptr, cheat_variant_enum
  cheat_variant)
 {
-  u32 i, i2, code_position;
+  u32 i;
   u32 address = *address_ptr;
   u32 value = *value_ptr;
   u32 r = 0xc6ef3720;
@@ -58,11 +58,11 @@ void decrypt_gsa_code(u32 *address_ptr, u32 *value_ptr, cheat_variant_enum
   *value_ptr = value;
 }
 
-void add_cheats(u8 *cheats_filename)
+void add_cheats(char *cheats_filename)
 {
   FILE *cheats_file;
-  u8 current_line[256];
-  u8 *name_ptr;
+  char current_line[256];
+  char *name_ptr;
   u32 *cheat_code_ptr;
   u32 address, value;
   u32 num_cheat_lines;
@@ -110,8 +110,8 @@ void add_cheats(u8 *cheats_filename)
         cheats[num_cheats].cheat_name[CHEAT_NAME_LENGTH - 1] = 0;
         cheat_name_length = strlen(cheats[num_cheats].cheat_name);
         if(cheat_name_length &&
-         (cheats[num_cheats].cheat_name[cheat_name_length - 1] == '\n') ||
-         (cheats[num_cheats].cheat_name[cheat_name_length - 1] == '\r'))
+         ((cheats[num_cheats].cheat_name[cheat_name_length - 1] == '\n') ||
+          (cheats[num_cheats].cheat_name[cheat_name_length - 1] == '\r')))
         {
           cheats[num_cheats].cheat_name[cheat_name_length - 1] = 0;
           cheat_name_length--;
@@ -382,6 +382,9 @@ void process_cheats()
         case CHEAT_TYPE_GAMESHARK_V3:
           process_cheat_gs3(cheats + i);
           break;
+
+        default:
+          break;
       }
     }
   }
index 65b46ae..bb06e2d 100644 (file)
--- a/cheats.h
+++ b/cheats.h
@@ -28,7 +28,7 @@ typedef enum
 
 typedef struct
 {
-  u8 cheat_name[CHEAT_NAME_LENGTH];
+  char cheat_name[CHEAT_NAME_LENGTH];
   u32 cheat_active;
   u32 cheat_codes[256];
   u32 num_cheat_lines;
@@ -36,7 +36,7 @@ typedef struct
 } cheat_type;
 
 void process_cheats();
-void add_cheats(u8 *cheats_filename);
+void add_cheats(char *cheats_filename);
 
 #define MAX_CHEATS 16
 
diff --git a/cpu.c b/cpu.c
index 2bb8997..d8ea5db 100644 (file)
--- a/cpu.c
+++ b/cpu.c
@@ -362,7 +362,7 @@ void print_register_usage()
 
 
 #define calculate_reg_sh()                                                    \
-  u32 reg_sh;                                                                 \
+  u32 reg_sh = 0;                                                             \
   switch((opcode >> 4) & 0x07)                                                \
   {                                                                           \
     /* LSL imm */                                                             \
@@ -451,7 +451,7 @@ void print_register_usage()
   }                                                                           \
 
 #define calculate_reg_sh_flags()                                              \
-  u32 reg_sh;                                                                 \
+  u32 reg_sh = 0;                                                             \
   switch((opcode >> 4) & 0x07)                                                \
   {                                                                           \
     /* LSL imm */                                                             \
@@ -604,7 +604,7 @@ void print_register_usage()
   }                                                                           \
 
 #define calculate_reg_offset()                                                \
-  u32 reg_offset;                                                             \
+  u32 reg_offset = 0;                                                         \
   switch((opcode >> 5) & 0x03)                                                \
   {                                                                           \
     /* LSL imm */                                                             \
@@ -960,7 +960,7 @@ const u32 psr_masks[16] =
   else                                                                        \
                                                                               \
   if(((_address & aligned_address_mask##size) == 0) &&                        \
-   (map = memory_map_read[address >> 15]))                                    \
+   (map = memory_map_read[_address >> 15]))                                   \
   {                                                                           \
     dest = *((type *)((u8 *)map + (_address & 0x7FFF)));                      \
   }                                                                           \
@@ -1016,37 +1016,39 @@ const u32 psr_masks[16] =
 
 #define load_aligned32(address, dest)                                         \
 {                                                                             \
-  u8 *map = memory_map_read[address >> 15];                                   \
-  if(address < 0x10000000)                                                    \
+  u32 _address = address;                                                     \
+  u8 *map = memory_map_read[_address >> 15];                                  \
+  if(_address < 0x10000000)                                                   \
   {                                                                           \
-    memory_region_access_read_u32[address >> 24]++;                           \
+    memory_region_access_read_u32[_address >> 24]++;                          \
     memory_reads_u32++;                                                       \
   }                                                                           \
   if(map)                                                                     \
   {                                                                           \
-    dest = address32(map, address & 0x7FFF);                                  \
+    dest = address32(map, _address & 0x7FFF);                                 \
   }                                                                           \
   else                                                                        \
   {                                                                           \
-    dest = read_memory32(address);                                            \
+    dest = read_memory32(_address);                                           \
   }                                                                           \
 }                                                                             \
 
 #define store_aligned32(address, value)                                       \
 {                                                                             \
-  u8 *map = memory_map_write[address >> 15];                                  \
-  if(address < 0x10000000)                                                    \
+  u32 _address = address;                                                     \
+  u8 *map = memory_map_write[_address >> 15];                                 \
+  if(_address < 0x10000000)                                                   \
   {                                                                           \
-    memory_region_access_write_u32[address >> 24]++;                          \
+    memory_region_access_write_u32[_address >> 24]++;                         \
     memory_writes_u32++;                                                      \
   }                                                                           \
   if(map)                                                                     \
   {                                                                           \
-    address32(map, address & 0x7FFF) = value;                                 \
+    address32(map, _address & 0x7FFF) = value;                                \
   }                                                                           \
   else                                                                        \
   {                                                                           \
-    cpu_alert = write_memory32(address, value);                               \
+    cpu_alert = write_memory32(_address, value);                              \
     if(cpu_alert)                                                             \
       goto alert;                                                             \
   }                                                                           \
@@ -1233,7 +1235,7 @@ const u32 psr_masks[16] =
   const u32 _sa = src_a;                                                      \
   const u32 _sb = src_b;                                                      \
   u32 dest = _sa + _sb;                                                       \
-  calculate_flags_add(dest, src_a, src_b);                                    \
+  calculate_flags_add(dest, _sa, _sb);                                        \
   reg[dest_reg] = dest;                                                       \
   thumb_pc_offset(2);                                                         \
 }                                                                             \
@@ -1241,7 +1243,7 @@ const u32 psr_masks[16] =
 #define thumb_add_noflags(type, dest_reg, src_a, src_b)                       \
 {                                                                             \
   thumb_decode_##type();                                                      \
-  u32 dest = src_a + src_b;                                                   \
+  u32 dest = (src_a) + (src_b);                                               \
   reg[dest_reg] = dest;                                                       \
   thumb_pc_offset(2);                                                         \
 }                                                                             \
@@ -1252,7 +1254,7 @@ const u32 psr_masks[16] =
   const u32 _sa = src_a;                                                      \
   const u32 _sb = src_b;                                                      \
   u32 dest = _sa - _sb;                                                       \
-  calculate_flags_sub(dest, src_a, src_b);                                    \
+  calculate_flags_sub(dest, _sa, _sb);                                        \
   reg[dest_reg] = dest;                                                       \
   thumb_pc_offset(2);                                                         \
 }                                                                             \
@@ -4058,19 +4060,19 @@ u32 last_instruction = 0;
 
 u32 in_interrupt = 0;
 
-u32 debug_on()
+void debug_on()
 {
   current_debug_state = STEP;
   debug_screen_start();
 }
 
-u32 debug_off(debug_state new_debug_state)
+void debug_off(debug_state new_debug_state)
 {
   current_debug_state = new_debug_state;
   debug_screen_end();
 }
 
-u32 function_cc step_debug(u32 pc, u32 cycles)
+void function_cc step_debug(u32 pc, u32 cycles)
 {
   u32 thumb = 0;
 
@@ -4134,6 +4136,9 @@ u32 function_cc step_debug(u32 pc, u32 cycles)
 
       break;
     }
+
+    default:
+      break;
   }
 
   if((current_debug_state == STEP) ||
@@ -4263,7 +4268,7 @@ u32 function_cc step_debug(u32 pc, u32 cycles)
 
       case 'a':
       {
-        u8 current_savestate_filename[512];
+        char current_savestate_filename[512];
         u16 *current_screen = copy_screen();
         get_savestate_filename_noshot(savestate_slot,
          current_savestate_filename);
@@ -4286,8 +4291,6 @@ u32 function_cc step_debug(u32 pc, u32 cycles)
     reg[REG_PC] = pc + 2;
   else
     reg[REG_PC] = pc + 4;
-
-  return 0;
 }
 
 void set_cpu_mode(cpu_mode_type new_mode)
@@ -4352,7 +4355,7 @@ void raise_interrupt(irq_type irq_raised)
   }
 }
 
-u32 execute_arm(u32 cycles)
+void execute_arm(u32 cycles)
 {
   u32 pc = reg[REG_PC];
   u32 opcode;
diff --git a/cpu.h b/cpu.h
index 7ce72db..f19d202 100644 (file)
--- a/cpu.h
+++ b/cpu.h
@@ -109,11 +109,13 @@ extern debug_state current_debug_state;
 extern u32 instruction_count;
 extern u32 last_instruction;
 
-u32 function_cc step_debug(u32 pc, u32 cycles);
-u32 execute_arm(u32 cycles);
+void execute_arm(u32 cycles);
 void raise_interrupt(irq_type irq_raised);
 void set_cpu_mode(cpu_mode_type new_mode);
 
+void debug_on();
+void debug_off(debug_state new_debug_state);
+
 u32 function_cc execute_load_u8(u32 address);
 u32 function_cc execute_load_u16(u32 address);
 u32 function_cc execute_load_u32(u32 address);
index 547b3c0..db7155c 100644 (file)
@@ -3177,7 +3177,7 @@ block_exit_type block_exits[MAX_EXITS];
 s32 translate_block_##type(u32 pc, translation_region_type                    \
  translation_region, u32 smc_enable)                                          \
 {                                                                             \
-  u32 opcode;                                                                 \
+  u32 opcode = 0;                                                             \
   u32 last_opcode;                                                            \
   u32 condition;                                                              \
   u32 last_condition;                                                         \
@@ -3192,9 +3192,9 @@ s32 translate_block_##type(u32 pc, translation_region_type                    \
   u32 branch_target;                                                          \
   u32 cycle_count = 0;                                                        \
   u8 *translation_target;                                                     \
-  u8 *backpatch_address;                                                      \
-  u8 *translation_ptr;                                                        \
-  u8 *translation_cache_limit;                                                \
+  u8 *backpatch_address = NULL;                                               \
+  u8 *translation_ptr = NULL;                                                 \
+  u8 *translation_cache_limit = NULL;                                         \
   s32 i;                                                                      \
   u32 flag_status;                                                            \
   block_exit_type external_block_exits[MAX_EXITS];                            \
diff --git a/font.h b/font.h
index 27f6200..3a0062f 100644 (file)
--- a/font.h
+++ b/font.h
@@ -23,6 +23,8 @@
 #define FONT_WIDTH  6
 #define FONT_HEIGHT 10
 
+#ifdef WANT_FONT_BITS
+
 /* Font information:
    name: 6x10
    facename: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO8859-1
@@ -5876,3 +5878,5 @@ static unsigned long _font_offset[256] =
   2210, /* (0xfe) */
   2220  /* (0xff) */
 };
+
+#endif /* WANT_FONT_BITS */
index 529fa37..9d281c1 100644 (file)
@@ -29,7 +29,7 @@ CFLAGS     += -DWIZ_BUILD
 endif
 # NOTE: -funroll-loops will slow down compiling considerably
 CFLAGS     += -O3 -std=c99 -msoft-float -funsigned-char -fno-common           \
-              -fno-builtin                                                    \
+              -fno-builtin -Wall                                              \
 
 INCLUDES   = `$(PREFIX)/bin/sdl-config --cflags` -I$(PREFIX)/include
 LIBS       = `$(PREFIX)/bin/sdl-config --libs`               \
@@ -42,6 +42,10 @@ endif
 
 .SUFFIXES: .c
 
+all:    $(BIN)
+
+cpu.o cpu_threaded.z: CFLAGS += -Wno-unused-variable -Wno-unused-label
+
 %.z: %.c
        $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
 
@@ -57,7 +61,7 @@ endif
 %.o: %.s
        $(CC) $(ASFLAGS) $(INCLUDES) -c -o $@ $<
 
-all:   $(OBJS)
+$(BIN):        $(OBJS)
        $(CC) $(OBJS) $(LIBS) -o $(BIN)
        $(STRIP) $(BIN)
 
index ad3c215..7bef895 100644 (file)
@@ -32,7 +32,9 @@
 
 static u32 gpsp_gp2x_dev_audio;
 static u32 gpsp_gp2x_dev;
+#ifdef WIZ_BUILD
 static u32 gpsp_gp2x_gpiodev;
+#endif
 
 static u32 gp2x_audio_volume = 74/2;
 
diff --git a/gui.c b/gui.c
index 22a39e0..cd8f4f3 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -69,7 +69,7 @@
 #define COLOR_HELP_TEXT     color16(16, 40, 24)
 
 #ifdef PSP_BUILD
-  u8 *clock_speed_options[] =
+  static const char *clock_speed_options[] =
   {
     "33MHz", "66MHz", "100MHz", "133MHz", "166MHz", "200MHz", "233MHz",
     "266MHz", "300MHz", "333MHz"
@@ -79,7 +79,7 @@
   #define get_clock_speed_number() \
     clock_speed_number = (clock_speed / 33) - 1
 #elif defined(WIZ_BUILD)
-  u8 *clock_speed_options[] =
+  static const char *clock_speed_options[] =
   {
     "300MHz", "333MHz", "366MHz", "400MHz", "433MHz",
     "466MHz", "500MHz", "533MHz", "566MHz", "600MHz",
@@ -91,7 +91,7 @@
   #define get_clock_speed_number() \
     clock_speed_number = (clock_speed - 300) / 33
 #elif defined(GP2X_BUILD)
-  u8 *clock_speed_options[] =
+  static const char *clock_speed_options[] =
   {
     "150MHz", "160MHz", "170MHz", "180MHz", "190MHz",
     "200MHz", "210MHz", "220MHz", "230MHz", "240MHz",
   #define get_clock_speed_number() \
     clock_speed_number = (clock_speed - 150) / 10
 #else
-  u8 *clock_speed_options[] =
+  static const char *clock_speed_options[] =
   {
     "0"
   };
-  #define menu_get_clock_speed() 0
-  #define get_clock_speed_number() 0
+  #define menu_get_clock_speed()
+  #define get_clock_speed_number()
 #endif
 
 
@@ -125,25 +125,24 @@ int sort_function(const void *dest_str_ptr, const void *src_str_ptr)
   return strcasecmp(dest_str, src_str);
 }
 
-s32 load_file(u8 **wildcards, u8 *result)
+s32 load_file(const char **wildcards, char *result)
 {
   DIR *current_dir;
   struct dirent *current_file;
   struct stat file_info;
-  u8 current_dir_name[MAX_PATH];
-  u8 current_dir_short[81];
+  char current_dir_name[MAX_PATH];
+  char current_dir_short[81];
   u32 current_dir_length;
   u32 total_filenames_allocated;
   u32 total_dirnames_allocated;
-  u8 **file_list;
-  u8 **dir_list;
+  char **file_list;
+  char **dir_list;
   u32 num_files;
   u32 num_dirs;
-  u8 *file_name;
+  char *file_name;
   u32 file_name_length;
   u32 ext_pos = -1;
   u32 chosen_file, chosen_dir;
-  u32 dialog_result = 1;
   s32 return_value = 1;
   s32 current_file_selection;
   s32 current_file_scroll_value;
@@ -168,10 +167,10 @@ s32 load_file(u8 **wildcards, u8 *result)
 
     total_filenames_allocated = 32;
     total_dirnames_allocated = 32;
-    file_list = (u8 **)malloc(sizeof(u8 *) * 32);
-    dir_list = (u8 **)malloc(sizeof(u8 *) * 32);
-    memset(file_list, 0, sizeof(u8 *) * 32);
-    memset(dir_list, 0, sizeof(u8 *) * 32);
+    file_list = (char **)malloc(sizeof(char *) * 32);
+    dir_list = (char **)malloc(sizeof(char *) * 32);
+    memset(file_list, 0, sizeof(char *) * 32);
+    memset(dir_list, 0, sizeof(char *) * 32);
 
     num_files = 0;
     num_dirs = 0;
@@ -199,8 +198,7 @@ s32 load_file(u8 **wildcards, u8 *result)
         {
           if(S_ISDIR(file_info.st_mode))
           {
-            dir_list[num_dirs] =
-             (u8 *)malloc(file_name_length + 1);
+            dir_list[num_dirs] = malloc(file_name_length + 1);
 
             sprintf(dir_list[num_dirs], "%s", file_name);
 
@@ -227,7 +225,7 @@ s32 load_file(u8 **wildcards, u8 *result)
                  wildcards[i]))
                 {
                   file_list[num_files] =
-                   (u8 *)malloc(file_name_length + 1);
+                   malloc(file_name_length + 1);
 
                   sprintf(file_list[num_files], "%s", file_name);
 
@@ -241,26 +239,26 @@ s32 load_file(u8 **wildcards, u8 *result)
 
         if(num_files == total_filenames_allocated)
         {
-          file_list = (u8 **)realloc(file_list, sizeof(u8 *) *
+          file_list = (char **)realloc(file_list, sizeof(char *) *
            total_filenames_allocated * 2);
           memset(file_list + total_filenames_allocated, 0,
-           sizeof(u8 *) * total_filenames_allocated);
+           sizeof(char *) * total_filenames_allocated);
           total_filenames_allocated *= 2;
         }
 
         if(num_dirs == total_dirnames_allocated)
         {
-          dir_list = (u8 **)realloc(dir_list, sizeof(u8 *) *
+          dir_list = (char **)realloc(dir_list, sizeof(char *) *
            total_dirnames_allocated * 2);
           memset(dir_list + total_dirnames_allocated, 0,
-           sizeof(u8 *) * total_dirnames_allocated);
+           sizeof(char *) * total_dirnames_allocated);
           total_dirnames_allocated *= 2;
         }
       }
     } while(current_file);
 
-    qsort((void *)file_list, num_files, sizeof(u8 *), sort_function);
-    qsort((void *)dir_list, num_dirs, sizeof(u8 *), sort_function);
+    qsort((void *)file_list, num_files, sizeof(char *), sort_function);
+    qsort((void *)dir_list, num_dirs, sizeof(char *), sort_function);
 
     closedir(current_dir);
 
@@ -296,8 +294,6 @@ s32 load_file(u8 **wildcards, u8 *result)
 
     clear_screen(COLOR_BG);
   {
-    u8 print_buffer[81];
-
     while(repeat)
     {
       flip_screen();
@@ -526,6 +522,9 @@ s32 load_file(u8 **wildcards, u8 *result)
           return_value = -1;
           repeat = 0;
           break;
+
+        default:
+          break;
       }
     }
   }
@@ -747,7 +746,7 @@ u32 gamepad_config_line_to_button[] =
 
 #endif
 
-u8 *scale_options[] =
+static const char *scale_options[] =
 {
 #ifdef PSP_BUILD
   "unscaled 3:2", "scaled 3:2", "fullscreen 16:9"
@@ -765,7 +764,7 @@ u8 *scale_options[] =
 
 s32 load_game_config_file()
 {
-  u8 game_config_filename[512];
+  char game_config_filename[512];
   u32 file_loaded = 0;
   u32 i;
   change_ext(gamepak_filename, game_config_filename, ".cfg");
@@ -840,7 +839,7 @@ s32 load_game_config_file()
 
 s32 load_config_file()
 {
-  u8 config_path[512];
+  char config_path[512];
 
   #if defined(_WIN32) || defined(_WIN32_WCE)
     sprintf(config_path, "%s\\%s", main_path, GPSP_CONFIG_FILENAME);
@@ -858,8 +857,6 @@ s32 load_config_file()
     if(file_size == 92)
     {
       u32 file_options[file_size / 4];
-      u32 i;
-      s32 menu_button = -1;
       file_read_array(config_file, file_options);
 
       screen_scale = file_options[0] %
@@ -885,6 +882,8 @@ s32 load_config_file()
       // key, if not assign to triangle
 
 #ifndef PC_BUILD
+      u32 i;
+      s32 menu_button = -1;
       for(i = 0; i < 16; i++)
       {
         gamepad_config_map[i] = file_options[7 + i] %
@@ -913,7 +912,7 @@ s32 load_config_file()
 
 s32 save_game_config_file()
 {
-  u8 game_config_filename[512];
+  char game_config_filename[512];
   u32 i;
 
   change_ext(gamepak_filename, game_config_filename, ".cfg");
@@ -946,7 +945,7 @@ s32 save_game_config_file()
 
 s32 save_config_file()
 {
-  u8 config_path[512];
+  char config_path[512];
 
   #if (defined(PSP_BUILD) || defined(ARM_ARCH)) && !defined(_WIN32_WCE)
     sprintf(config_path, "%s/%s", main_path, GPSP_CONFIG_FILENAME);
@@ -961,7 +960,6 @@ s32 save_config_file()
   if(file_check_valid(config_file))
   {
     u32 file_options[23];
-    u32 i;
 
     file_options[0] = screen_scale;
     file_options[1] = screen_filter;
@@ -972,6 +970,7 @@ s32 save_config_file()
     file_options[6] = analog_sensitivity_level;
 
 #ifndef PC_BUILD
+    u32 i;
     for(i = 0; i < 16; i++)
     {
       file_options[7 + i] = gamepad_config_map[i];
@@ -999,16 +998,16 @@ typedef enum
 
 u32 savestate_slot = 0;
 
-void get_savestate_snapshot(u8 *savestate_filename)
+void get_savestate_snapshot(char *savestate_filename)
 {
   u16 snapshot_buffer[240 * 160];
-  u8 savestate_timestamp_string[80];
+  char savestate_timestamp_string[80];
 
   file_open(savestate_file, savestate_filename, read);
 
   if(file_check_valid(savestate_file))
   {
-    u8 weekday_strings[7][11] =
+    const char weekday_strings[7][11] =
     {
       "Sunday", "Monday", "Tuesday", "Wednesday",
       "Thursday", "Friday", "Saturday"
@@ -1045,9 +1044,9 @@ void get_savestate_snapshot(u8 *savestate_filename)
 #endif
 }
 
-void get_savestate_filename(u32 slot, u8 *name_buffer)
+void get_savestate_filename(u32 slot, char *name_buffer)
 {
-  u8 savestate_ext[16];
+  char savestate_ext[16];
 
   sprintf(savestate_ext, "%d.svs", slot);
   change_ext(gamepak_filename, name_buffer, savestate_ext);
@@ -1055,9 +1054,9 @@ void get_savestate_filename(u32 slot, u8 *name_buffer)
   get_savestate_snapshot(name_buffer);
 }
 
-void get_savestate_filename_noshot(u32 slot, u8 *name_buffer)
+void get_savestate_filename_noshot(u32 slot, char *name_buffer)
 {
-  u8 savestate_ext[16];
+  char savestate_ext[16];
 
   sprintf(savestate_ext, "%d.svs", slot);
   change_ext(gamepak_filename, name_buffer, savestate_ext);
@@ -1072,19 +1071,16 @@ void get_savestate_filename_noshot(u32 slot, u8 *name_buffer)
 
 u32 menu(u16 *original_screen)
 {
-  u8 print_buffer[81];
+  char print_buffer[81];
   u32 clock_speed_number;
-  u32 _current_option = 0;
   gui_action_type gui_action;
-  menu_enum _current_menu = MAIN_MENU;
   u32 i;
   u32 repeat = 1;
   u32 return_value = 0;
   u32 first_load = 0;
-  u8 savestate_ext[16];
-  u8 current_savestate_filename[512];
-  u8 line_buffer[80];
-  u8 cheat_format_str[10][41];
+  char current_savestate_filename[512];
+  char line_buffer[80];
+  char cheat_format_str[10][41];
 
   menu_type *current_menu;
   menu_option_type *current_option;
@@ -1094,7 +1090,8 @@ u32 menu(u16 *original_screen)
   auto void choose_menu();
   auto void clear_help();
 
-  static const u8 * const gamepad_help[] =
+#ifndef PC_BUILD
+  static const char * const gamepad_help[] =
   {
     "Up button on GBA d-pad.",
     "Down button on GBA d-pad.",
@@ -1120,6 +1117,33 @@ u32 menu(u16 *original_screen)
     "Does nothing."
   };
 
+  static const char *gamepad_config_buttons[] =
+  {
+    "UP",
+    "DOWN",
+    "LEFT",
+    "RIGHT",
+    "A",
+    "B",
+    "L",
+    "R",
+    "START",
+    "SELECT",
+    "MENU",
+    "FASTFORWARD",
+    "LOAD STATE",
+    "SAVE STATE",
+    "RAPIDFIRE A",
+    "RAPIDFIRE B",
+    "RAPIDFIRE L",
+    "RAPIDFIRE R",
+    "VOLUME UP",
+    "VOLUME DOWN",
+    "DISPLAY FPS",
+    "NOTHING"
+  };
+#endif
+
   void menu_update_clock()
   {
     get_clock_speed_number();
@@ -1146,8 +1170,8 @@ u32 menu(u16 *original_screen)
 
   void menu_load()
   {
-    u8 *file_ext[] = { ".gba", ".bin", ".zip", NULL };
-    u8 load_filename[512];
+    const char *file_ext[] = { ".gba", ".bin", ".zip", NULL };
+    char load_filename[512];
     save_game_config_file();
     if(load_file(file_ext, load_filename) != -1)
     {
@@ -1206,8 +1230,8 @@ u32 menu(u16 *original_screen)
 
   void menu_load_state_file()
   {
-    u8 *file_ext[] = { ".svs", NULL };
-    u8 load_filename[512];
+    const char *file_ext[] = { ".svs", NULL };
+    char load_filename[512];
     if(load_file(file_ext, load_filename) != -1)
     {
       load_state(load_filename);
@@ -1268,55 +1292,28 @@ u32 menu(u16 *original_screen)
      current_savestate_filename);
   }
 
-  u8 *yes_no_options[] = { "no", "yes" };
-  u8 *enable_disable_options[] = { "disabled", "enabled" };
+  const char *yes_no_options[] = { "no", "yes" };
+  const char *enable_disable_options[] = { "disabled", "enabled" };
 
-  u8 *frameskip_options[] = { "automatic", "manual", "off" };
-  u8 *frameskip_variation_options[] = { "uniform", "random" };
+  const char *frameskip_options[] = { "automatic", "manual", "off" };
+  const char *frameskip_variation_options[] = { "uniform", "random" };
 
 #ifndef PSP_BUILD
-  u8 *audio_buffer_options[] =
+  static const char *audio_buffer_options[] =
   {
     "16 bytes", "32 bytes", "64 bytes",
     "128 bytes", "256 bytes", "512 bytes", "1024 bytes", "2048 bytes",
     "4096 bytes", "8192 bytes", "16284 bytes"
   };
 #else
-  u8 *audio_buffer_options[] =
+  const char *audio_buffer_options[] =
   {
     "3072 bytes", "4096 bytes", "5120 bytes", "6144 bytes", "7168 bytes",
     "8192 bytes", "9216 bytes", "10240 bytes", "11264 bytes", "12288 bytes"
   };
-
 #endif
 
-  u8 *update_backup_options[] = { "Exit only", "Automatic" };
-
-  u8 *gamepad_config_buttons[] =
-  {
-    "UP",
-    "DOWN",
-    "LEFT",
-    "RIGHT",
-    "A",
-    "B",
-    "L",
-    "R",
-    "START",
-    "SELECT",
-    "MENU",
-    "FASTFORWARD",
-    "LOAD STATE",
-    "SAVE STATE",
-    "RAPIDFIRE A",
-    "RAPIDFIRE B",
-    "RAPIDFIRE L",
-    "RAPIDFIRE R",
-    "VOLUME UP",
-    "VOLUME DOWN",
-    "DISPLAY FPS",
-    "NOTHING"
-  };
+  static const char *update_backup_options[] = { "Exit only", "Automatic" };
 
   // Marker for help information, don't go past this mark (except \n)------*
   menu_option_type graphics_sound_options[] =
@@ -1772,6 +1769,9 @@ u32 menu(u16 *original_screen)
         if(current_option->option_type & SUBMENU_OPTION)
           choose_menu(current_option->sub_menu);
         break;
+
+      default:
+        break;
     }
   }
 
diff --git a/gui.h b/gui.h
index 27aafe5..aa01e23 100644 (file)
--- a/gui.h
+++ b/gui.h
@@ -22,7 +22,7 @@
 
 #define GPSP_CONFIG_FILENAME "gpsp.cfg"
 
-s32 load_file(u8 **wildcards, u8 *result);
+s32 load_file(const char **wildcards, char *result);
 u32 adjust_frameskip(u32 button_id);
 s32 load_game_config_file();
 s32 load_config_file();
@@ -32,9 +32,9 @@ u32 menu(u16 *original_screen);
 
 extern u32 savestate_slot;
 
-void get_savestate_filename_noshot(u32 slot, u8 *name_buffer);
-void get_savestate_filename(u32 slot, u8 *name_buffer);
-void get_savestate_snapshot(u8 *savestate_filename);
+void get_savestate_filename_noshot(u32 slot, char *name_buffer);
+void get_savestate_filename(u32 slot, char *name_buffer);
+void get_savestate_snapshot(char *savestate_filename);
 
 #ifdef WIZ_BUILD
   #define default_clock_speed 533
diff --git a/input.c b/input.c
index acd01f5..4917094 100644 (file)
--- a/input.c
+++ b/input.c
@@ -24,7 +24,6 @@
 void trigger_key(u32 key)
 {
   u32 p1_cnt = io_registers[REG_P1CNT];
-  u32 p1;
 
   if((p1_cnt >> 14) & 0x01)
   {
@@ -474,7 +473,7 @@ u32 update_input()
 
       case BUTTON_ID_LOADSTATE:
       {
-        u8 current_savestate_filename[512];
+        char current_savestate_filename[512];
         get_savestate_filename_noshot(savestate_slot,
          current_savestate_filename);
         load_state(current_savestate_filename);
@@ -483,7 +482,7 @@ u32 update_input()
 
       case BUTTON_ID_SAVESTATE:
       {
-        u8 current_savestate_filename[512];
+        char current_savestate_filename[512];
         u16 *current_screen = copy_screen();
         get_savestate_filename_noshot(savestate_slot,
          current_savestate_filename);
@@ -670,6 +669,9 @@ gui_action_type get_gui_input()
           case SDLK_BACKSPACE:
             gui_action = CURSOR_BACK;
             break;
+
+          default:
+            break;
         }
         break;
       }
@@ -742,7 +744,7 @@ u32 update_input()
 
         if(event.key.keysym.sym == SDLK_F5)
         {
-          u8 current_savestate_filename[512];
+          char current_savestate_filename[512];
           u16 *current_screen = copy_screen();
           get_savestate_filename_noshot(savestate_slot,
            current_savestate_filename);
@@ -753,7 +755,7 @@ u32 update_input()
 
         if(event.key.keysym.sym == SDLK_F7)
         {
-          u8 current_savestate_filename[512];
+          char current_savestate_filename[512];
           get_savestate_filename_noshot(savestate_slot,
            current_savestate_filename);
           load_state(current_savestate_filename);
diff --git a/main.c b/main.c
index ad79024..340b0be 100644 (file)
--- a/main.c
+++ b/main.c
@@ -82,7 +82,7 @@ u32 clock_speed = 200;
 #else
 u32 clock_speed = 333;
 #endif
-u8 main_path[512];
+char main_path[512];
 
 void trigger_ext_event();
 
@@ -131,7 +131,7 @@ void trigger_ext_event();
     }                                                                         \
   }                                                                           \
 
-u8 *file_ext[] = { ".gba", ".bin", ".zip", NULL };
+static const char *file_ext[] = { ".gba", ".bin", ".zip", NULL };
 
 #ifdef ARM_ARCH
 void ChangeWorkingDirectory(char *exe)
@@ -178,21 +178,12 @@ void init_main()
 
 int main(int argc, char *argv[])
 {
-  u32 i;
-  u32 vcount = 0;
-  u32 ticks;
-  u32 dispstat;
-  u8 load_filename[512];
-  u8 bios_filename[512];
-
 #ifdef PSP_BUILD
   sceKernelRegisterSubIntrHandler(PSP_VBLANK_INT, 0,
    vblank_interrupt_handler, NULL);
   sceKernelEnableSubIntr(PSP_VBLANK_INT, 0);
 #endif
 
-  extern char *cpu_mode_names[];
-
   init_gamepak_buffer();
 
   // Copy the directory path of the executable into main_path
@@ -218,6 +209,7 @@ int main(int argc, char *argv[])
   init_video();
 
 #ifdef GP2X_BUILD
+  char bios_filename[512];
   sprintf(bios_filename, "%s/%s", main_path, "gba_bios.bin");
   if(load_bios(bios_filename) == -1)
 #else
@@ -292,7 +284,7 @@ int main(int argc, char *argv[])
     if(load_gamepak(argv[1]) == -1)
     {
 #ifndef PSP_BUILD
-      printf("Failed to load gamepak %s, exiting.\n", load_filename);
+      printf("Failed to load gamepak %s, exiting.\n", argv[1]);
 #endif
       exit(-1);
     }
@@ -305,6 +297,7 @@ int main(int argc, char *argv[])
   }
   else
   {
+    char load_filename[512];
     if(load_file(file_ext, load_filename) == -1)
     {
       menu(copy_screen());
@@ -392,7 +385,7 @@ void trigger_ext_event()
   static u32 event_number = 0;
   static u64 benchmark_ticks[16];
   u64 new_ticks;
-  u8 current_savestate_filename[512];
+  char current_savestate_filename[512];
 
   return;
 
@@ -874,7 +867,7 @@ void reset_gba()
 
 #ifdef PSP_BUILD
 
-u32 file_length(u8 *filename, s32 dummy)
+u32 file_length(char *filename, s32 dummy)
 {
   SceIoStat stats;
   sceIoGetstat(filename, &stats);
@@ -896,7 +889,7 @@ void get_ticks_us(u64 *tick_return)
 
 #else
 
-u32 file_length(u8 *dummy, FILE *fp)
+u32 file_length(char *dummy, FILE *fp)
 {
   u32 length;
 
@@ -940,9 +933,9 @@ void get_ticks_us(u64 *ticks_return)
 
 #endif
 
-void change_ext(u8 *src, u8 *buffer, u8 *extension)
+void change_ext(const char *src, char *buffer, const char *extension)
 {
-  u8 *dot_position;
+  char *dot_position;
   strcpy(buffer, src);
   dot_position = strrchr(buffer, '.');
 
diff --git a/main.h b/main.h
index 9475e61..6cd471e 100644 (file)
--- a/main.h
+++ b/main.h
@@ -71,9 +71,6 @@ extern u32 global_cycles_per_instruction;
 extern u32 synchronize_flag;
 extern u32 skip_next_frame;
 
-extern timer_type timer[4];
-static u32 prescale_table[] = { 0, 6, 8, 10 };
-
 extern u32 cycle_memory_access;
 extern u32 cycle_pc_relative_access;
 extern u32 cycle_sp_relative_access;
@@ -86,7 +83,7 @@ extern u32 flush_ram_count;
 
 extern u64 base_timestamp;
 
-extern u8 main_path[512];
+extern char main_path[512];
 
 extern u32 update_backup_flag;
 extern u32 clock_speed;
@@ -97,18 +94,18 @@ void synchronize();
 void quit();
 void delay_us(u32 us_count);
 void get_ticks_us(u64 *tick_return);
-void game_name_ext(u8 *src, u8 *buffer, u8 *extension);
+void game_name_ext(char *src, char *buffer, char *extension);
 void main_write_mem_savestate(file_tag_type savestate_file);
 void main_read_savestate(file_tag_type savestate_file);
 
 
 #ifdef PSP_BUILD
 
-u32 file_length(u8 *filename, s32 dummy);
+u32 file_length(char *filename, s32 dummy);
 
 #else
 
-u32 file_length(u8 *dummy, FILE *fp);
+u32 file_length(char *dummy, FILE *fp);
 
 #endif
 
@@ -117,6 +114,11 @@ extern u32 virtual_frame_count;
 extern u32 max_frameskip;
 extern u32 num_skipped_frames;
 
+#ifdef IN_MEMORY_C
+
+extern timer_type timer[4];
+static u32 prescale_table[] = { 0, 6, 8, 10 };
+
 #define count_timer(timer_number)                                             \
   timer[timer_number].reload = 0x10000 - value;                               \
   if(timer_number < 2)                                                        \
@@ -181,7 +183,9 @@ extern u32 num_skipped_frames;
   }                                                                           \
   address16(io_registers, 0x102 + (timer_number * 4)) = value;                \
 
-void change_ext(u8 *src, u8 *buffer, u8 *extension);
+#endif // IN_MEMORY_C
+
+void change_ext(const char *src, char *buffer, const char *extension);
 
 void set_clock_speed();
 
index c0d4f11..103e85a 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -17,6 +17,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#define IN_MEMORY_C
 #include "common.h"
 
 // This table is configured for sequential access on system defaults
@@ -170,7 +171,7 @@ flash_size_type flash_size = FLASH_SIZE_64KB;
 
 u8 read_backup(u32 address)
 {
-  u8 value;
+  u8 value = 0;
 
   if(backup_type == BACKUP_NONE)
     backup_type = BACKUP_SRAM;
@@ -328,6 +329,9 @@ void function_cc write_eeprom(u32 address, u32 value)
         eeprom_mode = EEPROM_BASE_MODE;
       }
       break;
+
+    default:
+      break;
   }
 }
 
@@ -1636,6 +1640,9 @@ void function_cc write_rtc(u32 address, u32 value)
                       case RTC_WRITE_STATUS:
                         rtc_status = rtc_data[0];
                         break;
+
+                      default:
+                        break;
                     }
                   }
                 }
@@ -1671,6 +1678,9 @@ void function_cc write_rtc(u32 address, u32 value)
                 }
               }
               break;
+
+            default:
+              break;
           }
         }
       }
@@ -1897,7 +1907,7 @@ u32 save_backup(char *name)
 
     if(file_check_valid(backup_file))
     {
-      u32 backup_size;
+      u32 backup_size = 0;
 
       switch(backup_type)
       {
@@ -1921,6 +1931,9 @@ u32 save_backup(char *name)
           else
             backup_size = 0x2000;
           break;
+
+        default:
+          break;
       }
 
       file_write(backup_file, gamepak_backup, backup_size);
@@ -1952,7 +1965,7 @@ void update_backup_force()
 
 #define CONFIG_FILENAME "game_config.txt"
 
-u8 *skip_spaces(u8 *line_ptr)
+char *skip_spaces(char *line_ptr)
 {
   while(*line_ptr == ' ')
     line_ptr++;
@@ -1960,10 +1973,10 @@ u8 *skip_spaces(u8 *line_ptr)
   return line_ptr;
 }
 
-s32 parse_config_line(u8 *current_line, u8 *current_variable, u8 *current_value)
+s32 parse_config_line(char *current_line, char *current_variable, char *current_value)
 {
-  u8 *line_ptr = current_line;
-  u8 *line_ptr_new;
+  char *line_ptr = current_line;
+  char *line_ptr_new;
 
   if((current_line[0] == 0) || (current_line[0] == '#'))
     return -1;
@@ -1994,14 +2007,12 @@ s32 parse_config_line(u8 *current_line, u8 *current_variable, u8 *current_value)
   return 0;
 }
 
-s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
+s32 load_game_config(char *gamepak_title, char *gamepak_code, char *gamepak_maker)
 {
-  u8 current_line[256];
-  u8 current_variable[256];
-  u8 current_value[256];
-  u8 config_path[512];
-  u8 *line_ptr;
-  u32 fgets_value;
+  char current_line[256];
+  char current_variable[256];
+  char current_value[256];
+  char config_path[512];
   FILE *config_file;
 
   idle_loop_target_pc = 0xFFFFFFFF;
@@ -2069,7 +2080,7 @@ s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
             }
 
             if(!strcmp(current_variable, "iwram_stack_optimize") &&
-              !strcmp(current_value, "no"))
+              !strcmp(current_value, "no\0")) /* \0 for broken toolchain workaround */
             {
                 iwram_stack_optimize = 0;
             }
@@ -2145,16 +2156,16 @@ s32 load_gamepak_raw(char *name)
   return -1;
 }
 
-u8 gamepak_title[13];
-u8 gamepak_code[5];
-u8 gamepak_maker[3];
-u8 gamepak_filename[512];
+char gamepak_title[13];
+char gamepak_code[5];
+char gamepak_maker[3];
+char gamepak_filename[512];
 
 u32 load_gamepak(char *name)
 {
   char *dot_position = strrchr(name, '.');
   s32 file_size;
-  u8 cheats_filename[256];
+  char cheats_filename[256];
 
 #ifdef WIZ_BUILD
   file_size = wiz_load_gamepak(name);
@@ -2994,7 +3005,6 @@ void init_gamepak_buffer()
 
 void init_memory()
 {
-  u32 i;
   u32 map_offset = 0;
 
   memory_regions[0x00] = (u8 *)bios_rom;
@@ -3133,7 +3143,6 @@ void load_state(char *savestate_filename)
   if(file_check_valid(savestate_file))
   {
     char current_gamepak_filename[512];
-    char savestate_gamepak_filename[512];
     u32 i;
     u32 current_color;
 
index ca2ecd6..5e65821 100644 (file)
--- a/memory.h
+++ b/memory.h
@@ -168,10 +168,10 @@ extern u32 memory_limits[16];
 extern u32 waitstate_cycles_sequential[16][3];
 
 extern u32 gamepak_size;
-extern u8 gamepak_title[13];
-extern u8 gamepak_code[5];
-extern u8 gamepak_maker[3];
-extern u8 gamepak_filename[512];
+extern char gamepak_title[13];
+extern char gamepak_code[5];
+extern char gamepak_maker[3];
+extern char gamepak_filename[512];
 
 cpu_alert_type dma_transfer(dma_transfer_type *dma);
 u8 *memory_region(u32 address, u32 *memory_limit);
index 090cccb..a485146 100644 (file)
@@ -14,10 +14,9 @@ BIN       = gpsp
 # Platform specific definitions 
 
 VPATH      += .. ../arm
-CFLAGS     += -DARM_ARCH -DPND_BUILD
-CFLAGS     += -funsigned-char
+CFLAGS     += -DARM_ARCH -DPND_BUILD -Wall
 CFLAGS     += -mcpu=cortex-a8 -mtune=cortex-a8 -mfloat-abi=softfp -ffast-math
-CFLAGS     += -fno-common -fno-builtin
+CFLAGS     += -fno-common
 CFLAGS     += -ggdb
 CFLAGS     += -O2
 
@@ -28,10 +27,12 @@ LIBS       += -ldl -lpthread -lz
 
 # Compilation:
 
+all:   $(BIN)
+
 %.o: %.S
        $(CC) $(CFLAGS) -c -o $@ $<
 
-all:   $(BIN)
+cpu.o cpu_threaded.o: CFLAGS += -Wno-unused-variable -Wno-unused-label
 
 $(BIN): $(OBJS)
        $(CC) $(OBJS) $(LIBS) -o $(BIN)
diff --git a/sound.c b/sound.c
index 01d61e2..9810407 100644 (file)
--- a/sound.c
+++ b/sound.c
@@ -27,9 +27,8 @@ gbc_sound_struct gbc_sound_channel[4];
 
 u32 sound_frequency = 44100;
 
-SDL_AudioSpec sound_settings;
 SDL_mutex *sound_mutex;
-SDL_cond *sound_cv;
+static SDL_cond *sound_cv;
 
 #ifdef PSP_BUILD
 u32 audio_buffer_size_number = 1;
@@ -37,15 +36,15 @@ u32 audio_buffer_size_number = 1;
 u32 audio_buffer_size_number = 8;
 #endif
 
-u32 audio_buffer_size;
-u32 sound_on = 0;
-s16 sound_buffer[BUFFER_SIZE];
-u32 sound_buffer_base = 0;
+u32 sound_on;
+static u32 audio_buffer_size;
+static s16 sound_buffer[BUFFER_SIZE];
+static u32 sound_buffer_base;
 
-u32 sound_last_cpu_ticks = 0;
-fixed16_16 gbc_sound_tick_step;
+static u32 sound_last_cpu_ticks;
+static fixed16_16 gbc_sound_tick_step;
 
-u32 sound_exit_flag;
+static u32 sound_exit_flag;
 
 // Queue 1, 2, or 4 samples to the top of the DS FIFO, wrap around circularly
 
@@ -751,6 +750,8 @@ void sound_exit()
 
 void init_sound()
 {
+  SDL_AudioSpec sound_settings;
+
 #ifdef PSP_BUILD
   audio_buffer_size = (audio_buffer_size_number * 1024) + 3072;
 #else
diff --git a/sound.h b/sound.h
index 303cf83..d71c733 100644 (file)
--- a/sound.h
+++ b/sound.h
@@ -118,7 +118,6 @@ extern u32 enable_low_pass_filter;
 extern u32 audio_buffer_size_number;
 
 extern SDL_mutex *sound_mutex;
-extern SDL_cond *sound_cv;
 
 void sound_timer_queue8(u32 channel, u8 value);
 void sound_timer_queue16(u32 channel, u16 value);
@@ -130,6 +129,8 @@ void init_sound();
 void sound_write_mem_savestate(file_tag_type savestate_file);
 void sound_read_savestate(file_tag_type savestate_file);
 
+#ifdef IN_MEMORY_C
+
 #define gbc_sound_tone_control_low(channel, address)                          \
 {                                                                             \
   u32 initial_volume = (value >> 12) & 0x0F;                                  \
@@ -321,6 +322,7 @@ static u32 gbc_sound_wave_volume[4] = { 0, 16384, 8192, 4096 };
   timer[timer_number].frequency_step =                                        \
    float_to_fp16_16(16777216.0 / (timer_reload * sound_frequency))            \
 
+#endif // IN_MEMORY_C
 
 void reset_sound();
 void sound_exit();
diff --git a/video.c b/video.c
index a33accf..bf0c2ab 100644 (file)
--- a/video.c
+++ b/video.c
@@ -18,6 +18,7 @@
  */
 
 #include "common.h"
+#define WANT_FONT_BITS
 #include "font.h"
 
 #ifdef PSP_BUILD
@@ -129,11 +130,11 @@ const u32 video_scale = 1;
 
 #endif
 
-void render_scanline_conditional_tile(u32 start, u32 end, u16 *scanline,
- u32 enable_flags, u32 dispcnt, u32 bldcnt, tile_layer_render_struct
+static void render_scanline_conditional_tile(u32 start, u32 end, u16 *scanline,
+ u32 enable_flags, u32 dispcnt, u32 bldcnt, const tile_layer_render_struct
  *layer_renderers);
-void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
- u32 enable_flags, u32 dispcnt, u32 bldcnt, bitmap_layer_render_struct
+static void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
+ u32 enable_flags, u32 dispcnt, u32 bldcnt, const bitmap_layer_render_struct
  *layer_renderers);
 
 #define no_op                                                                 \
@@ -1011,23 +1012,18 @@ void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
 
 
 
-
-// Map widths and heights
-
-u32 map_widths[] = { 256, 512, 256, 512 };
-u32 map_heights[] = { 256, 256, 512, 512 };
+static const u32 map_widths[] = { 256, 512, 256, 512 };
 
 // Build text scanline rendering functions.
 
 #define render_scanline_text_builder(combine_op, alpha_op)                    \
-void render_scanline_text_##combine_op##_##alpha_op(u32 layer,                \
+static void render_scanline_text_##combine_op##_##alpha_op(u32 layer,         \
  u32 start, u32 end, void *scanline)                                          \
 {                                                                             \
   render_scanline_extra_variables_##combine_op##_##alpha_op(text);            \
   u32 bg_control = io_registers[REG_BG0CNT + layer];                          \
   u32 map_size = (bg_control >> 14) & 0x03;                                   \
   u32 map_width = map_widths[map_size];                                       \
-  u32 map_height = map_heights[map_size];                                     \
   u32 horizontal_offset =                                                     \
    (io_registers[REG_BG0HOFS + (layer * 2)] + start) % 512;                   \
   u32 vertical_offset = (io_registers[REG_VCOUNT] +                           \
@@ -1278,7 +1274,6 @@ void render_scanline_affine_##combine_op##_##alpha_op(u32 layer,              \
   u32 bg_control = io_registers[REG_BG0CNT + layer];                          \
   u32 current_pixel;                                                          \
   s32 source_x, source_y;                                                     \
-  u32 vcount = io_registers[REG_VCOUNT];                                      \
   u32 pixel_x, pixel_y;                                                       \
   u32 layer_offset = (layer - 2) * 8;                                         \
   s32 dx, dy;                                                                 \
@@ -1287,7 +1282,7 @@ void render_scanline_affine_##combine_op##_##alpha_op(u32 layer,              \
   u32 map_pitch = map_size + 4;                                               \
   u8 *map_base = vram + (((bg_control >> 8) & 0x1F) * (1024 * 2));            \
   u8 *tile_base = vram + (((bg_control >> 2) & 0x03) * (1024 * 16));          \
-  u8 *tile_ptr;                                                               \
+  u8 *tile_ptr = NULL;                                                        \
   u32 map_offset, last_map_offset = (u32)-1;                                  \
   u32 i;                                                                      \
   render_scanline_dest_##alpha_op *dest_ptr =                                 \
@@ -1475,13 +1470,11 @@ render_scanline_affine_builder(transparent, alpha);
 // Build bitmap scanline rendering functions.
 
 #define render_scanline_bitmap_builder(type, alpha_op, width, height)         \
-void render_scanline_bitmap_##type##_##alpha_op(u32 start, u32 end,           \
+static void render_scanline_bitmap_##type##_##alpha_op(u32 start, u32 end,    \
  void *scanline)                                                              \
 {                                                                             \
-  u32 bg_control = io_registers[REG_BG2CNT];                                  \
   u32 current_pixel;                                                          \
   s32 source_x, source_y;                                                     \
-  u32 vcount = io_registers[REG_VCOUNT];                                      \
   s32 pixel_x, pixel_y;                                                       \
                                                                               \
   s32 dx = (s16)io_registers[REG_BG2PA];                                      \
@@ -1542,7 +1535,7 @@ render_scanline_bitmap_builder(mode5, normal, 160, 128);
 
 // Structs containing functions to render the layers for each mode, for
 // each render type.
-tile_layer_render_struct tile_mode_renderers[3][4] =
+static const tile_layer_render_struct tile_mode_renderers[3][4] =
 {
   {
     tile_layer_render_functions(text), tile_layer_render_functions(text),
@@ -1558,7 +1551,7 @@ tile_layer_render_struct tile_mode_renderers[3][4] =
   }
 };
 
-bitmap_layer_render_struct bitmap_mode_renderers[3] =
+static const bitmap_layer_render_struct bitmap_mode_renderers[3] =
 {
   bitmap_layer_render_functions(mode3),
   bitmap_layer_render_functions(mode4),
@@ -1567,11 +1560,11 @@ bitmap_layer_render_struct bitmap_mode_renderers[3] =
 
 
 #define render_scanline_layer_functions_tile()                                \
-  tile_layer_render_struct *layer_renderers =                                 \
+  const tile_layer_render_struct *layer_renderers =                           \
    tile_mode_renderers[dispcnt & 0x07]                                        \
 
 #define render_scanline_layer_functions_bitmap()                              \
-  bitmap_layer_render_struct *layer_renderers =                               \
+  const bitmap_layer_render_struct *layer_renderers =                         \
    bitmap_mode_renderers + ((dispcnt & 0x07) - 3)                             \
 
 
@@ -1583,8 +1576,8 @@ bitmap_layer_render_struct bitmap_mode_renderers[3] =
   + (tile_size_##color_depth * ((obj_width - 8) / 8))                         \
 
 
-// Adjust the obj's starting point if it goes too far off the left edge of    \
-// the screen.                                                                \
+// Adjust the obj's starting point if it goes too far off the left edge of
+// the screen.
 
 #define obj_tile_right_offset_noflip(color_depth)                             \
   tile_ptr += (partial_tile_offset / 8) * tile_size_##color_depth             \
@@ -1844,14 +1837,13 @@ bitmap_layer_render_struct bitmap_mode_renderers[3] =
 
 #define obj_render_affine(combine_op, color_depth, alpha_op, map_space)       \
 {                                                                             \
-  s16 *params = oam_ram + (((obj_attribute_1 >> 9) & 0x1F) * 16);             \
+  s16 *params = (s16 *)oam_ram + (((obj_attribute_1 >> 9) & 0x1F) * 16);      \
   s32 dx = params[3];                                                         \
   s32 dmx = params[7];                                                        \
   s32 dy = params[11];                                                        \
   s32 dmy = params[15];                                                       \
   s32 source_x, source_y;                                                     \
   s32 tile_x, tile_y;                                                         \
-  u32 tile_offset;                                                            \
   u32 tile_map_offset;                                                        \
   s32 middle_x;                                                               \
   s32 middle_y;                                                               \
@@ -1910,12 +1902,14 @@ bitmap_layer_render_struct bitmap_mode_renderers[3] =
   }                                                                           \
 }                                                                             \
 
-u32 obj_width_table[] = { 8, 16, 32, 64, 16, 32, 32, 64, 8, 8, 16, 32 };
-u32 obj_height_table[] = { 8, 16, 32, 64, 8, 8, 16, 32, 16, 32, 32, 64 };
+static const u32 obj_width_table[] =
+  { 8, 16, 32, 64, 16, 32, 32, 64, 8, 8, 16, 32 };
+static const u32 obj_height_table[] =
+  { 8, 16, 32, 64, 8, 8, 16, 32, 16, 32, 32, 64 };
 
-u8 obj_priority_list[5][160][128];
-u32 obj_priority_count[5][160];
-u32 obj_alpha_count[160];
+static u8 obj_priority_list[5][160][128];
+static u32 obj_priority_count[5][160];
+static u32 obj_alpha_count[160];
 
 
 // Build obj rendering functions
@@ -1934,11 +1928,11 @@ u32 obj_alpha_count[160];
 
 
 #define render_scanline_obj_extra_variables_color()                           \
-  u32 dest;                                                                   \
   u32 pixel_combine = color_combine_mask(4) | (1 << 8)                        \
 
 #define render_scanline_obj_extra_variables_alpha_obj(map_space)              \
   render_scanline_obj_extra_variables_color();                                \
+  u32 dest;                                                                   \
   if((pixel_combine & 0x00000200) == 0)                                       \
   {                                                                           \
     render_scanline_obj_color32_##map_space(priority, start, end, scanline);  \
@@ -1953,7 +1947,8 @@ u32 obj_alpha_count[160];
 
 #define render_scanline_obj_extra_variables_partial_alpha(map_space)          \
   render_scanline_obj_extra_variables_color();                                \
-  u32 base_pixel_combine = pixel_combine                                      \
+  u32 base_pixel_combine = pixel_combine;                                     \
+  u32 dest                                                                    \
 
 #define render_scanline_obj_extra_variables_copy(type)                        \
   u32 bldcnt = io_registers[REG_BLDCNT];                                      \
@@ -2063,7 +2058,7 @@ u32 obj_alpha_count[160];
 
 #define render_scanline_obj_builder(combine_op, alpha_op, map_space,          \
  partial_alpha_op)                                                            \
-void render_scanline_obj_##alpha_op##_##map_space(u32 priority,               \
+static void render_scanline_obj_##alpha_op##_##map_space(u32 priority,        \
  u32 start, u32 end, render_scanline_dest_##alpha_op *scanline)               \
 {                                                                             \
   render_scanline_obj_extra_variables_##alpha_op(map_space);                  \
@@ -2127,7 +2122,7 @@ render_scanline_obj_builder(copy, copy_bitmap, 2D, no_partial_alpha);
 
 
 
-void order_obj(u32 video_mode)
+static void order_obj(u32 video_mode)
 {
   s32 obj_num, priority, row;
   s32 obj_x, obj_y;
@@ -2135,14 +2130,8 @@ void order_obj(u32 video_mode)
   s32 obj_width, obj_height;
   u32 obj_priority;
   u32 obj_attribute_0, obj_attribute_1, obj_attribute_2;
-  s32 vcount = io_registers[REG_VCOUNT];
-  u32 partial_tile_run, partial_tile_offset;
-  u32 pixel_run;
   u32 current_count;
   u16 *oam_ptr = oam_ram + 508;
-  u16 *dest_ptr;
-  u8 *tile_base = vram + 0x10000;
-  u8 *tile_ptr;
 
   for(priority = 0; priority < 5; priority++)
   {
@@ -2234,7 +2223,7 @@ void order_obj(u32 video_mode)
 u32 layer_order[16];
 u32 layer_count;
 
-u32 order_layers(u32 layer_flags)
+static void order_layers(u32 layer_flags)
 {
   s32 priority, layer_number;
   layer_count = 0;
@@ -2279,7 +2268,7 @@ u32 order_layers(u32 layer_flags)
 #define fill_line_color_color32()                                             \
 
 #define fill_line_builder(type)                                               \
-void fill_line_##type(u16 color, render_scanline_dest_##type *dest_ptr,       \
+static void fill_line_##type(u16 color, render_scanline_dest_##type *dest_ptr,\
  u32 start, u32 end)                                                          \
 {                                                                             \
   fill_line_color_##type();                                                   \
@@ -2479,7 +2468,7 @@ void expand_blend(u32 *screen_src_ptr, u16 *screen_dest_ptr,
 
 // Blend scanline with white.
 
-void expand_darken(u16 *screen_src_ptr, u16 *screen_dest_ptr,
+static void expand_darken(u16 *screen_src_ptr, u16 *screen_dest_ptr,
  u32 start, u32 end)
 {
   u32 pixel_top;
@@ -2495,7 +2484,7 @@ void expand_darken(u16 *screen_src_ptr, u16 *screen_dest_ptr,
 
 // Blend scanline with black.
 
-void expand_brighten(u16 *screen_src_ptr, u16 *screen_dest_ptr,
+static void expand_brighten(u16 *screen_src_ptr, u16 *screen_dest_ptr,
  u32 start, u32 end)
 {
   u32 pixel_top;
@@ -2517,7 +2506,7 @@ void expand_brighten(u16 *screen_src_ptr, u16 *screen_dest_ptr,
 // Expand scanline such that if both top and bottom pass it's alpha,
 // if only top passes it's as specified, and if neither pass it's normal.
 
-void expand_darken_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
+static void expand_darken_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
  u32 start, u32 end)
 {
   s32 blend = 16 - (io_registers[REG_BLDY] & 0x1F);
@@ -2541,7 +2530,7 @@ void expand_darken_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
 }
 
 
-void expand_brighten_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
+static void expand_brighten_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
  u32 start, u32 end)
 {
   s32 blend = io_registers[REG_BLDY] & 0x1F;
@@ -2776,7 +2765,7 @@ void expand_brighten_partial_alpha(u32 *screen_src_ptr, u16 *screen_dest_ptr,
 
 // Renders an entire scanline from 0 to 240, based on current color mode.
 
-void render_scanline_tile(u16 *scanline, u32 dispcnt)
+static void render_scanline_tile(u16 *scanline, u32 dispcnt)
 {
   u32 current_layer;
   u32 layer_order_pos;
@@ -2787,9 +2776,8 @@ void render_scanline_tile(u16 *scanline, u32 dispcnt)
    render_condition_alpha, render_condition_fade, 0, 240);
 }
 
-void render_scanline_bitmap(u16 *scanline, u32 dispcnt)
+static void render_scanline_bitmap(u16 *scanline, u32 dispcnt)
 {
-  u32 bldcnt = io_registers[REG_BLDCNT];
   render_scanline_layer_functions_bitmap();
   u32 current_layer;
   u32 layer_order_pos;
@@ -2908,8 +2896,8 @@ void render_scanline_bitmap(u16 *scanline, u32 dispcnt)
 // Render all of the BG and OBJ in a tiled scanline from start to end ONLY if
 // enable_flag allows that layer/OBJ. Also conditionally render color effects.
 
-void render_scanline_conditional_tile(u32 start, u32 end, u16 *scanline,
- u32 enable_flags, u32 dispcnt, u32 bldcnt, tile_layer_render_struct
+static void render_scanline_conditional_tile(u32 start, u32 end, u16 *scanline,
+ u32 enable_flags, u32 dispcnt, u32 bldcnt, const tile_layer_render_struct
  *layer_renderers)
 {
   u32 current_layer;
@@ -2925,8 +2913,8 @@ void render_scanline_conditional_tile(u32 start, u32 end, u16 *scanline,
 // Render the BG and OBJ in a bitmap scanline from start to end ONLY if
 // enable_flag allows that layer/OBJ. Also conditionally render color effects.
 
-void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
- u32 enable_flags, u32 dispcnt, u32 bldcnt, bitmap_layer_render_struct
+static void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
+ u32 enable_flags, u32 dispcnt, u32 bldcnt, const bitmap_layer_render_struct
  *layer_renderers)
 {
   u32 current_layer;
@@ -2970,7 +2958,7 @@ void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
 #define window_coords(window_number)                                          \
   u32 window_##window_number##_x1, window_##window_number##_x2;               \
   u32 window_##window_number##_y1, window_##window_number##_y2;               \
-  u32 window_##window_number##_enable;                                        \
+  u32 window_##window_number##_enable = 0;                                    \
   window_##window_number##_y1 =                                               \
    io_registers[REG_WIN##window_number##V] >> 8;                              \
   window_##window_number##_y2 =                                               \
@@ -3181,7 +3169,7 @@ void render_scanline_conditional_bitmap(u32 start, u32 end, u16 *scanline,
   }                                                                           \
 
 #define render_scanline_window_builder(type)                                  \
-void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
+static void render_scanline_window_##type(u16 *scanline, u32 dispcnt)         \
 {                                                                             \
   u32 vcount = io_registers[REG_VCOUNT];                                      \
   u32 winout = io_registers[REG_WINOUT];                                      \
@@ -3219,7 +3207,6 @@ void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
     /* Just OBJ windows */                                                    \
     case 0x04:                                                                \
     {                                                                         \
-      u32 window_obj_enable = winout >> 8;                                    \
       render_window_clip_obj(type, 0, 240);                                   \
       break;                                                                  \
     }                                                                         \
@@ -3227,7 +3214,6 @@ void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
     /* Window 0 and OBJ window */                                             \
     case 0x05:                                                                \
     {                                                                         \
-      u32 window_obj_enable = winout >> 8;                                    \
       u32 winin = io_registers[REG_WININ];                                    \
       window_coords(0);                                                       \
       render_window_multi(type, 0, obj);                                      \
@@ -3237,7 +3223,6 @@ void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
     /* Window 1 and OBJ window */                                             \
     case 0x06:                                                                \
     {                                                                         \
-      u32 window_obj_enable = winout >> 8;                                    \
       u32 winin = io_registers[REG_WININ];                                    \
       window_coords(1);                                                       \
       render_window_multi(type, 1, obj);                                      \
@@ -3247,7 +3232,6 @@ void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
     /* Window 0, 1, and OBJ window */                                         \
     case 0x07:                                                                \
     {                                                                         \
-      u32 window_obj_enable = winout >> 8;                                    \
       u32 winin = io_registers[REG_WININ];                                    \
       window_coords(0);                                                       \
       window_coords(1);                                                       \
@@ -3260,7 +3244,7 @@ void render_scanline_window_##type(u16 *scanline, u32 dispcnt)                \
 render_scanline_window_builder(tile);
 render_scanline_window_builder(bitmap);
 
-u32 active_layers[6] = { 0x1F, 0x17, 0x1C, 0x14, 0x14, 0x14 };
+static const u32 active_layers[6] = { 0x1F, 0x17, 0x1C, 0x14, 0x14, 0x14 };
 
 u32 small_resolution_width = 240;
 u32 small_resolution_height = 160;
@@ -3270,11 +3254,9 @@ void update_scanline()
 {
   u32 pitch = get_screen_pitch();
   u32 dispcnt = io_registers[REG_DISPCNT];
-  u32 display_flags = (dispcnt >> 8) & 0x1F;
   u32 vcount = io_registers[REG_VCOUNT];
   u16 *screen_offset = get_screen_pixels() + (vcount * pitch);
   u32 video_mode = dispcnt & 0x07;
-  u32 current_layer;
 
   // If OAM has been modified since the last scanline has been updated then
   // reorder and reprofile the OBJ lists.
@@ -3383,6 +3365,8 @@ void flip_screen()
   {
     switch(screen_scale)
     {
+      case unscaled:
+        break;
       case scaled_aspect:
         upscale_aspect(gpsp_gp2x_screen, screen_pixels);
         break;
@@ -3914,15 +3898,8 @@ void set_gba_resolution(video_scale_type scale)
   if(screen_scale != scale)
   {
     screen_scale = scale;
-    switch(scale)
-    {
-      case unscaled:
-      case scaled_aspect:
-      case fullscreen:
-        small_resolution_width = 240 * video_scale;
-        small_resolution_height = 160 * video_scale;
-        break;
-    }
+    small_resolution_width = 240 * video_scale;
+    small_resolution_height = 160 * video_scale;
   }
 }
 
index c9bf680..c1d772b 100644 (file)
@@ -15,7 +15,7 @@ BIN       ?= gpsp.exe
 # Platform specific definitions 
 
 VPATH      += ..
-CFLAGS     += -DPC_BUILD -m32
+CFLAGS     += -DPC_BUILD -Wall -m32
 INCLUDES   = -I${PREFIX}/include `sdl-config --cflags`
 LIBS       = -L${PREFIX}/lib `sdl-config --libs` -mconsole -lz -m32
 
@@ -23,15 +23,19 @@ LIBS       = -L${PREFIX}/lib `sdl-config --libs` -mconsole -lz -m32
 
 .SUFFIXES: .c .S
 
+all:   ${BIN}
+
 %.o: %.c
        ${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $<
 
 %.o: %.S
        ${CC} ${CFLAGS} -c -o $@ $<
 
-all:   ${OBJS}
+cpu.o cpu_threaded.o: CFLAGS += -Wno-unused-variable -Wno-unused-label
+
+${BIN}:        ${OBJS}
        ${CC} ${OBJS} ${LIBS} -o ${BIN}  
-       ${STRIP} ${BIN}
+#      ${STRIP} ${BIN}
 
 clean:
        rm -f *.o ${BIN} 
index 6f02d07..efdceb5 100644 (file)
@@ -887,7 +887,7 @@ u32 function_cc execute_rrx(u32 value)
 #define collapse_flags()                                                      \
   reg[REG_CPSR] = (reg[REG_N_FLAG] << 31) | (reg[REG_Z_FLAG] << 30) |         \
    (reg[REG_C_FLAG] << 29) | (reg[REG_V_FLAG] << 28) |                        \
-   reg[REG_CPSR] & 0xFF                                                       \
+   (reg[REG_CPSR] & 0xFF)                                                     \
 
 // It should be okay to still generate result flags, spsr will overwrite them.
 // This is pretty infrequent (returning from interrupt handlers, et al) so
@@ -1200,7 +1200,7 @@ typedef enum
   generate_store_reg_pc_no_flags(a0, rd);                                     \
 }                                                                             \
 
-u32 function_cc execute_mul_flags(u32 dest)
+static void function_cc execute_mul_flags(u32 dest)
 {
   calculate_z_flag(dest);
   calculate_n_flag(dest);
@@ -1228,7 +1228,7 @@ u32 function_cc execute_mul_flags(u32 dest)
   arm_multiply_flags_##flags();                                               \
 }                                                                             \
 
-u32 function_cc execute_mul_long_flags(u32 dest_lo, u32 dest_hi)
+static void function_cc execute_mul_long_flags(u32 dest_lo, u32 dest_hi)
 {
   reg[REG_Z_FLAG] = (dest_lo == 0) & (dest_hi == 0);
   calculate_n_flag(dest_hi);
@@ -2045,7 +2045,7 @@ u32 function_cc execute_ror_imm_op(u32 value, u32 shift)
 
 #define thumb_conditional_branch(condition)                                   \
 {                                                                             \
-  condition_check_type condition_check;                                       \
+  condition_check_type condition_check = CONDITION_TRUE;                      \
   generate_cycle_update();                                                    \
   generate_condition_##condition(a0, a1);                                     \
   generate_conditional_branch_type(a0, a1);                                   \
@@ -2171,7 +2171,7 @@ data_proc_generate_logic_test_function(teq, rn ^ rm);
 data_proc_generate_sub_test_function(cmp, rn, rm);
 data_proc_generate_add_test_function(cmn, rn, rm);
 
-u32 function_cc execute_swi(u32 pc)
+static void function_cc execute_swi(u32 pc)
 {
   reg_mode[MODE_SUPERVISOR][6] = pc;
   collapse_flags();
@@ -2182,7 +2182,7 @@ u32 function_cc execute_swi(u32 pc)
 
 #define arm_conditional_block_header()                                        \
 {                                                                             \
-  condition_check_type condition_check;                                       \
+  condition_check_type condition_check = CONDITION_TRUE;                      \
   generate_condition(a0, a1);                                                 \
   generate_conditional_branch_type(a0, a1);                                   \
 }
diff --git a/zip.c b/zip.c
index a264603..32d8611 100644 (file)
--- a/zip.c
+++ b/zip.c
@@ -46,11 +46,11 @@ struct SZIPFileHeader
 u32 load_file_zip(char *filename)
 {
   struct SZIPFileHeader data;
-  u8 tmp[1024];
+  char tmp[1024];
   s32 retval = -1;
   u8 *buffer = NULL;
   u8 *cbuffer;
-  u8 *ext;
+  char *ext;
 
   file_open(fd, filename, read);