From: notaz Date: Mon, 5 Sep 2011 16:31:58 +0000 (+0300) Subject: enable -Wall and fix warnings reported by it X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbba320911a86c0ee373f8297f80a2b82de22039;p=gpsp.git enable -Wall and fix warnings reported by it --- diff --git a/arm/arm_emit.h b/arm/arm_emit.h index 5d2eee0..a270a24 100644 --- a/arm/arm_emit.h +++ b/arm/arm_emit.h @@ -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); diff --git a/cheats.c b/cheats.c index 7040b2f..8fa69ae 100644 --- 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; } } } diff --git a/cheats.h b/cheats.h index 65b46ae..bb06e2d 100644 --- 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 --- 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 --- 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); diff --git a/cpu_threaded.c b/cpu_threaded.c index 547b3c0..db7155c 100644 --- a/cpu_threaded.c +++ b/cpu_threaded.c @@ -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 --- 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 */ diff --git a/gp2x/Makefile b/gp2x/Makefile index 529fa37..9d281c1 100644 --- a/gp2x/Makefile +++ b/gp2x/Makefile @@ -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) diff --git a/gp2x/gp2x.c b/gp2x/gp2x.c index ad3c215..7bef895 100644 --- a/gp2x/gp2x.c +++ b/gp2x/gp2x.c @@ -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 --- 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", @@ -102,12 +102,12 @@ #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 --- 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 --- 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 --- 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 --- 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(); diff --git a/memory.c b/memory.c index c0d4f11..103e85a 100644 --- 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; diff --git a/memory.h b/memory.h index ca2ecd6..5e65821 100644 --- 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); diff --git a/pandora/Makefile b/pandora/Makefile index 090cccb..a485146 100644 --- a/pandora/Makefile +++ b/pandora/Makefile @@ -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 --- 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 --- 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 --- 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; } } diff --git a/x86/Makefile b/x86/Makefile index c9bf680..c1d772b 100644 --- a/x86/Makefile +++ b/x86/Makefile @@ -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} diff --git a/x86/x86_emit.h b/x86/x86_emit.h index 6f02d07..efdceb5 100644 --- a/x86/x86_emit.h +++ b/x86/x86_emit.h @@ -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 --- 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);