mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-06 15:48:05 -04:00
revive GP2X build, update
This commit is contained in:
parent
8b78786e0f
commit
75a30842c4
35 changed files with 757 additions and 2592 deletions
|
@ -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 |
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(<ime);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include <stdio.h>
|
||||
#include "mp3.h"
|
||||
|
||||
int mp3dec_start(void)
|
||||
int mp3dec_start(FILE *f, int fpos_start)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue