revive GP2X build, update

This commit is contained in:
notaz 2013-08-23 03:09:53 +03:00
parent 8b78786e0f
commit 75a30842c4
35 changed files with 757 additions and 2592 deletions

View file

@ -545,7 +545,7 @@ static void make_config_cfg(char *cfg_buff_512)
void emu_prep_defconfig(void)
{
memset(&defaultConfig, 0, sizeof(defaultConfig));
defaultConfig.EmuOpt = 0x9d | EOPT_RAM_TIMINGS|EOPT_EN_CD_LEDS;
defaultConfig.EmuOpt = 0x9d | EOPT_EN_CD_LEDS;
defaultConfig.s_PicoOpt = POPT_EN_STEREO|POPT_EN_FM|POPT_EN_PSG|POPT_EN_Z80 |
POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_MCD_GFX |
POPT_EN_SVP_DRC|POPT_ACC_SPRITES |

View file

@ -21,10 +21,8 @@ extern int g_screen_height;
#define EOPT_SHOW_FPS (1<<1)
#define EOPT_EN_SOUND (1<<2)
#define EOPT_GZIP_SAVES (1<<3)
#define EOPT_MMUHACK (1<<4)
#define EOPT_NO_AUTOSVCFG (1<<5)
#define EOPT_16BPP (1<<7) // depreceted for .renderer
#define EOPT_RAM_TIMINGS (1<<8)
#define EOPT_EN_CD_LEDS (1<<10)
#define EOPT_A_SN_GAMMA (1<<12)
#define EOPT_VSYNC (1<<13)

View file

@ -7,6 +7,7 @@
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "emu.h"
#include "menu_pico.h"
@ -66,7 +67,6 @@ static const char *men_dummy[] = { NULL };
#else
#define MENU_OPTIONS_GFX
#define MENU_OPTIONS_ADV
#define menu_main_plat_draw NULL
#endif
static void make_bg(int no_scale)
@ -524,6 +524,8 @@ static menu_entry e_menu_adv_options[] =
mee_onoff ("Don't save last used ROM", MA_OPT2_NO_LAST_ROM, currentConfig.EmuOpt, EOPT_NO_AUTOSVCFG),
mee_onoff ("Disable idle loop patching",MA_OPT2_NO_IDLE_LOOPS,PicoOpt, POPT_DIS_IDLE_DET),
mee_onoff ("Disable frame limiter", MA_OPT2_NO_FRAME_LIMIT,currentConfig.EmuOpt, EOPT_NO_FRMLIMIT),
mee_onoff ("Enable dynarecs", MA_OPT2_SVP_DYNAREC, PicoOpt, POPT_EN_SVP_DRC),
mee_onoff ("Status line in main menu", MA_OPT2_STATUS_LINE, currentConfig.EmuOpt, EOPT_SHOW_RTC),
MENU_OPTIONS_ADV
mee_end,
};
@ -537,14 +539,20 @@ static int menu_loop_adv_options(int id, int keys)
// ------------ gfx options menu ------------
static const char h_gamma[] = "Gamma/brightness adjustment (default 100)";
static const char h_gamma[] = "Gamma/brightness adjustment (default 1.00)";
static const char *mgn_aopt_gamma(int id, int *offs)
{
sprintf(static_buff, "%i.%02i", currentConfig.gamma / 100, currentConfig.gamma % 100);
return static_buff;
}
static menu_entry e_menu_gfx_options[] =
{
mee_enum ("Video output mode", MA_OPT_VOUT_MODE, plat_target.vout_method, men_dummy),
mee_enum ("Renderer", MA_OPT_RENDERER, currentConfig.renderer, renderer_names),
mee_enum ("Filter", MA_OPT3_FILTERING, currentConfig.filter, men_dummy),
mee_range_h("Gamma adjustment", MA_OPT3_GAMMA, currentConfig.gamma, 1, 200, h_gamma),
mee_range_cust_h("Gamma correction", MA_OPT2_GAMMA, currentConfig.gamma, 1, 300, mgn_aopt_gamma, h_gamma),
MENU_OPTIONS_GFX
mee_end,
};
@ -753,10 +761,7 @@ static menu_entry e_menu_options[] =
static int menu_loop_options(int id, int keys)
{
static int sel = 0;
int i;
i = me_id2offset(e_menu_options, MA_OPT_CPU_CLOCKS);
e_menu_options[i].enabled = e_menu_options[i].name[0] ? 1 : 0;
me_enable(e_menu_options, MA_OPT_SAVECFG_GAME, PicoGameLoaded);
me_enable(e_menu_options, MA_OPT_LOADCFG, config_slot != config_slot_current);
@ -941,6 +946,56 @@ static const char credits[] =
" Lordus, Exophase, Rokas,\n"
" Nemesis, Tasco Deluxe";
static void menu_main_draw_status(void)
{
static time_t last_bat_read = 0;
static int last_bat_val = -1;
unsigned short *bp = g_screen_ptr;
int bat_h = me_mfont_h * 2 / 3;
int i, u, w, wfill, batt_val;
struct tm *tmp;
time_t ltime;
char time_s[16];
if (!(currentConfig.EmuOpt & EOPT_SHOW_RTC))
return;
ltime = time(NULL);
tmp = gmtime(&ltime);
strftime(time_s, sizeof(time_s), "%H:%M", tmp);
text_out16(g_screen_width - me_mfont_w * 6, me_mfont_h + 2, time_s);
if (ltime - last_bat_read > 10) {
last_bat_read = ltime;
last_bat_val = batt_val = plat_target_bat_capacity_get();
}
else
batt_val = last_bat_val;
if (batt_val < 0 || batt_val > 100)
return;
/* battery info */
bp += (me_mfont_h * 2 + 2) * g_screen_width + g_screen_width - me_mfont_w * 3 - 3;
for (i = 0; i < me_mfont_w * 2; i++)
bp[i] = menu_text_color;
for (i = 0; i < me_mfont_w * 2; i++)
bp[i + g_screen_width * bat_h] = menu_text_color;
for (i = 0; i <= bat_h; i++)
bp[i * g_screen_width] =
bp[i * g_screen_width + me_mfont_w * 2] = menu_text_color;
for (i = 2; i < bat_h - 1; i++)
bp[i * g_screen_width - 1] =
bp[i * g_screen_width - 2] = menu_text_color;
w = me_mfont_w * 2 - 1;
wfill = batt_val * w / 100;
for (u = 1; u < bat_h; u++)
for (i = 0; i < wfill; i++)
bp[(w - i) + g_screen_width * u] = menu_text_color;
}
static int main_menu_handler(int id, int keys)
{
const char *ret_name;
@ -1029,7 +1084,7 @@ void menu_loop(void)
menu_enter(PicoGameLoaded);
in_set_config_int(0, IN_CFG_BLOCKING, 1);
me_loop_d(e_menu_main, &sel, NULL, menu_main_plat_draw);
me_loop_d(e_menu_main, &sel, NULL, menu_main_draw_status);
if (PicoGameLoaded) {
if (engineState == PGS_Menu)
@ -1163,6 +1218,12 @@ void menu_init(void)
menu_init_base();
i = 0;
#if defined(_SVP_DRC) || defined(DRC_SH2)
i = 1;
#endif
me_enable(e_menu_adv_options, MA_OPT2_SVP_DYNAREC, i);
i = me_id2offset(e_menu_gfx_options, MA_OPT_VOUT_MODE);
e_menu_gfx_options[i].data = plat_target.vout_methods;
me_enable(e_menu_gfx_options, MA_OPT_VOUT_MODE,
@ -1173,6 +1234,13 @@ void menu_init(void)
me_enable(e_menu_gfx_options, MA_OPT3_FILTERING,
plat_target.hwfilters != NULL);
me_enable(e_menu_gfx_options, MA_OPT3_GAMMA,
me_enable(e_menu_gfx_options, MA_OPT2_GAMMA,
plat_target.gamma_set != NULL);
i = me_id2offset(e_menu_options, MA_OPT_CPU_CLOCKS);
e_menu_options[i].enabled = 0;
if (plat_target.cpu_clock_set != NULL) {
e_menu_options[i].name = "CPU clock";
e_menu_options[i].enabled = 1;
}
}

View file

@ -51,7 +51,6 @@ typedef enum
MA_OPT2_GZIP_STATES,
MA_OPT2_NO_LAST_ROM,
MA_OPT2_RAMTIMINGS, /* gp2x */
MA_OPT2_SQUIDGEHACK, /* gp2x */
MA_OPT2_STATUS_LINE, /* psp */
MA_OPT2_NO_FRAME_LIMIT, /* psp */
MA_OPT2_SVP_DYNAREC,
@ -66,7 +65,6 @@ typedef enum
MA_OPT3_PRES_FULLSCR,
MA_OPT3_FILTERING,
MA_OPT3_VSYNC,
MA_OPT3_GAMMA,
MA_OPT3_BLACKLVL,
MA_OPT3_LAYER_X,
MA_OPT3_LAYER_Y,

View file

@ -103,7 +103,7 @@ out:
return retval;
}
void mp3_start_play(void *f_, int pos)
void mp3_start_play(void *f_, int pos1024)
{
unsigned char buf[2048];
FILE *f = f_;
@ -117,13 +117,6 @@ void mp3_start_play(void *f_, int pos)
if (!(PicoOpt & POPT_EN_MCD_CDDA) || f == NULL) // cdda disabled or no file?
return;
ret = mp3dec_start();
if (ret != 0)
return;
decoder_active = 1;
mp3_current_file = f;
fseek(f, 0, SEEK_END);
mp3_file_len = ftell(f);
@ -144,12 +137,20 @@ void mp3_start_play(void *f_, int pos)
}
// seek..
if (pos) {
if (pos1024 != 0) {
unsigned long long pos64 = mp3_file_len - mp3_file_pos;
pos64 *= pos;
pos64 *= pos1024;
mp3_file_pos += pos64 >> 10;
}
ret = mp3dec_start(f, mp3_file_pos);
if (ret != 0) {
return;
}
mp3_current_file = f;
decoder_active = 1;
mp3dec_decode(mp3_current_file, &mp3_file_pos, mp3_file_len);
}
@ -182,8 +183,9 @@ void mp3_update(int *buffer, int length, int stereo)
} else {
int ret, left = 1152 - cdda_out_pos;
mix_samples(buffer, cdda_out_buffer + cdda_out_pos * 2,
(left >> shr) * 2);
if (left > 0)
mix_samples(buffer, cdda_out_buffer + cdda_out_pos * 2,
(left >> shr) * 2);
ret = mp3dec_decode(mp3_current_file, &mp3_file_pos,
mp3_file_len);

View file

@ -6,7 +6,7 @@
int mp3_find_sync_word(const unsigned char *buf, int size);
/* decoder */
int mp3dec_start(void);
int mp3dec_start(FILE *f, int fpos_start);
int mp3dec_decode(FILE *f, int *file_pos, int file_len);
extern unsigned short mpeg1_l3_bitrates[16];

View file

@ -9,7 +9,7 @@
#include <stdio.h>
#include "mp3.h"
int mp3dec_start(void)
int mp3dec_start(FILE *f, int fpos_start)
{
return -1;
}

View file

@ -84,7 +84,7 @@ int mp3dec_decode(FILE *f, int *file_pos, int file_len)
return 0;
}
int mp3dec_start(void)
int mp3dec_start(FILE *f, int fpos_start)
{
// must re-init decoder for new track
if (mp3dec)

View file

@ -91,7 +91,7 @@ int mp3dec_decode(FILE *f, int *file_pos, int file_len)
return 0;
}
int mp3dec_start(void)
int mp3dec_start(FILE *f, int fpos_start)
{
void (*avcodec_register_all)(void);
AVCodec *(*avcodec_find_decoder)(enum CodecID id);