mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-06 07:38:05 -04:00
platforms, revisit Pico ptr handling
This commit is contained in:
parent
724db457da
commit
dca20effa2
11 changed files with 147 additions and 90 deletions
|
@ -1043,8 +1043,6 @@ void emu_reset_game(void)
|
|||
|
||||
void run_events_pico(unsigned int events)
|
||||
{
|
||||
int lim_x;
|
||||
|
||||
if (events & PEV_PICO_SWINP) {
|
||||
pico_inp_mode++;
|
||||
if (pico_inp_mode > 2)
|
||||
|
@ -1069,6 +1067,10 @@ void run_events_pico(unsigned int events)
|
|||
PicoPicohw.page = 6;
|
||||
emu_status_msg("Page %i", PicoPicohw.page);
|
||||
}
|
||||
if (events & PEV_PICO_PEN) {
|
||||
currentConfig.EmuOpt ^= EOPT_PICO_PEN;
|
||||
emu_status_msg("%s Pen", currentConfig.EmuOpt & EOPT_PICO_PEN ? "Show" : "Hide");
|
||||
}
|
||||
|
||||
if (pico_inp_mode == 0)
|
||||
return;
|
||||
|
@ -1080,20 +1082,16 @@ void run_events_pico(unsigned int events)
|
|||
if (PicoIn.pad[0] & 8) pico_pen_x++;
|
||||
PicoIn.pad[0] &= ~0x0f; // release UDLR
|
||||
|
||||
lim_x = (Pico.video.reg[12]&1) ? 319 : 255;
|
||||
if (pico_pen_y < 8)
|
||||
pico_pen_y = 8;
|
||||
if (pico_pen_y < PICO_PEN_ADJUST_Y)
|
||||
pico_pen_y = PICO_PEN_ADJUST_Y;
|
||||
if (pico_pen_y > 224 - PICO_PEN_ADJUST_Y)
|
||||
pico_pen_y = 224 - PICO_PEN_ADJUST_Y;
|
||||
if (pico_pen_x < 0)
|
||||
pico_pen_x = 0;
|
||||
if (pico_pen_x > lim_x - PICO_PEN_ADJUST_X)
|
||||
pico_pen_x = lim_x - PICO_PEN_ADJUST_X;
|
||||
if (pico_pen_x < PICO_PEN_ADJUST_X)
|
||||
pico_pen_x = PICO_PEN_ADJUST_X;
|
||||
if (pico_pen_x > 320 - PICO_PEN_ADJUST_X)
|
||||
pico_pen_x = 320 - PICO_PEN_ADJUST_X;
|
||||
|
||||
PicoPicohw.pen_pos[0] = pico_pen_x;
|
||||
if (!(Pico.video.reg[12] & 1))
|
||||
PicoPicohw.pen_pos[0] += pico_pen_x / 4;
|
||||
PicoPicohw.pen_pos[0] += 0x3c;
|
||||
PicoPicohw.pen_pos[0] = 0x03c + pico_pen_x;
|
||||
PicoPicohw.pen_pos[1] = pico_inp_mode == 1 ? (0x2f8 + pico_pen_y) : (0x1fc + pico_pen_y);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ extern int g_screen_ppitch; // pitch in pixels
|
|||
#define EOPT_NO_FRMLIMIT (1<<18)
|
||||
#define EOPT_WIZ_TEAR_FIX (1<<19)
|
||||
#define EOPT_EXT_FRMLIMIT (1<<20) // no internal frame limiter (limited by snd, etc)
|
||||
#define EOPT_PICO_PEN (1<<21)
|
||||
|
||||
enum {
|
||||
EOPT_SCALE_NONE = 0,
|
||||
|
@ -106,7 +107,7 @@ extern unsigned char *movie_data;
|
|||
extern int reset_timing;
|
||||
extern int flip_after_sync;
|
||||
|
||||
#define PICO_PEN_ADJUST_X 4
|
||||
#define PICO_PEN_ADJUST_X 2
|
||||
#define PICO_PEN_ADJUST_Y 2
|
||||
extern int pico_pen_x, pico_pen_y;
|
||||
extern int pico_inp_mode;
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
#define PEVB_PICO_PNEXT 21
|
||||
#define PEVB_PICO_PPREV 20
|
||||
#define PEVB_PICO_SWINP 19
|
||||
#define PEVB_RESET 18
|
||||
#define PEVB_PICO_PEN 18
|
||||
#define PEVB_RESET 17
|
||||
|
||||
#define PEV_VOL_DOWN (1 << PEVB_VOL_DOWN)
|
||||
#define PEV_VOL_UP (1 << PEVB_VOL_UP)
|
||||
|
@ -42,8 +43,9 @@
|
|||
#define PEV_PICO_PNEXT (1 << PEVB_PICO_PNEXT)
|
||||
#define PEV_PICO_PPREV (1 << PEVB_PICO_PPREV)
|
||||
#define PEV_PICO_SWINP (1 << PEVB_PICO_SWINP)
|
||||
#define PEV_PICO_PEN (1 << PEVB_PICO_PEN)
|
||||
#define PEV_RESET (1 << PEVB_RESET)
|
||||
|
||||
#define PEV_MASK 0x7ffc0000
|
||||
#define PEV_MASK 0x7ffe0000
|
||||
|
||||
#endif /* INCLUDE_c48097f3ff2a6a9af1cce8fd7a9b3f0c */
|
||||
|
|
|
@ -30,6 +30,7 @@ const struct in_default_bind in_sdl_defbinds[] = {
|
|||
{ SDLK_F6, IN_BINDTYPE_EMU, PEVB_PICO_PPREV },
|
||||
{ SDLK_F7, IN_BINDTYPE_EMU, PEVB_PICO_PNEXT },
|
||||
{ SDLK_F8, IN_BINDTYPE_EMU, PEVB_PICO_SWINP },
|
||||
{ SDLK_F9, IN_BINDTYPE_EMU, PEVB_PICO_PEN },
|
||||
{ SDLK_BACKSPACE, IN_BINDTYPE_EMU, PEVB_FF },
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
|
|
|
@ -366,6 +366,7 @@ me_bind_action emuctrl_actions[] =
|
|||
{ "Pico Next page ", PEV_PICO_PNEXT },
|
||||
{ "Pico Prev page ", PEV_PICO_PPREV },
|
||||
{ "Pico Switch input", PEV_PICO_SWINP },
|
||||
{ "Pico Display pen ", PEV_PICO_PEN },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
|
@ -473,6 +474,7 @@ static menu_entry e_menu_md_options[] =
|
|||
mee_onoff_h ("FM audio", MA_OPT2_ENABLE_YM2612, PicoIn.opt, POPT_EN_FM, h_fmsound),
|
||||
mee_onoff_h ("FM filter", MA_OPT_FM_FILTER, PicoIn.opt, POPT_EN_FM_FILTER, h_fmfilter),
|
||||
mee_onoff_h ("FM DAC noise", MA_OPT2_ENABLE_YM_DAC, PicoIn.opt, POPT_EN_FM_DAC, h_dacnoise),
|
||||
mee_onoff ("Show Pico pen", MA_OPT_PICO_PEN, currentConfig.EmuOpt, EOPT_PICO_PEN),
|
||||
mee_end,
|
||||
};
|
||||
|
||||
|
@ -928,14 +930,6 @@ static const char *mgn_opt_region(int id, int *offs)
|
|||
}
|
||||
}
|
||||
|
||||
static const char *mgn_saveloadcfg(int id, int *offs)
|
||||
{
|
||||
strcpy(static_buff, " ");
|
||||
if (config_slot != 0)
|
||||
sprintf(static_buff, "[%i]", config_slot);
|
||||
return static_buff;
|
||||
}
|
||||
|
||||
static const char h_hotkeysvld[] = "Slot used for save/load by emulator hotkey";
|
||||
|
||||
static menu_entry e_menu_options[] =
|
||||
|
@ -1289,6 +1283,34 @@ static int main_menu_handler(int id, int keys)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const char *mgn_picopage(int id, int *offs)
|
||||
{
|
||||
strcpy(static_buff, " ");
|
||||
sprintf(static_buff, "%i", PicoPicohw.page);
|
||||
return static_buff;
|
||||
}
|
||||
|
||||
static int mh_picopage(int id, int keys)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (keys & (PBTN_LEFT|PBTN_RIGHT)) { // multi choice
|
||||
PicoPicohw.page += (keys & PBTN_LEFT) ? -1 : 1;
|
||||
if (PicoPicohw.page < 0) PicoPicohw.page = 6;
|
||||
else if (PicoPicohw.page > 6) PicoPicohw.page = 0;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const char *mgn_saveloadcfg(int id, int *offs)
|
||||
{
|
||||
strcpy(static_buff, " ");
|
||||
if (config_slot != 0)
|
||||
sprintf(static_buff, "[%i]", config_slot);
|
||||
return static_buff;
|
||||
}
|
||||
|
||||
static int mh_saveloadcfg(int id, int keys)
|
||||
{
|
||||
int ret;
|
||||
|
@ -1330,10 +1352,11 @@ static menu_entry e_menu_main[] =
|
|||
mee_label (""),
|
||||
mee_label (""),
|
||||
mee_handler_id("Resume game", MA_MAIN_RESUME_GAME, main_menu_handler),
|
||||
mee_handler_id("Save State", MA_MAIN_SAVE_STATE, main_menu_handler),
|
||||
mee_handler_id("Load State", MA_MAIN_LOAD_STATE, main_menu_handler),
|
||||
mee_handler_id("Save state", MA_MAIN_SAVE_STATE, main_menu_handler),
|
||||
mee_handler_id("Load state", MA_MAIN_LOAD_STATE, main_menu_handler),
|
||||
mee_handler_id("Reset game", MA_MAIN_RESET_GAME, main_menu_handler),
|
||||
mee_handler_id("Change CD", MA_MAIN_CHANGE_CD, main_menu_handler),
|
||||
mee_cust_s_h ("Storyware page", MA_MAIN_PICO_PAGE, 0,mh_picopage, mgn_picopage, NULL),
|
||||
mee_handler_id("Patches / GameGenie",MA_MAIN_PATCHES, main_menu_handler),
|
||||
mee_handler_id("Load new game", MA_MAIN_LOAD_ROM, main_menu_handler),
|
||||
mee_handler ("Change options", menu_loop_options),
|
||||
|
@ -1354,6 +1377,7 @@ void menu_loop(void)
|
|||
me_enable(e_menu_main, MA_MAIN_LOAD_STATE, PicoGameLoaded);
|
||||
me_enable(e_menu_main, MA_MAIN_RESET_GAME, PicoGameLoaded);
|
||||
me_enable(e_menu_main, MA_MAIN_CHANGE_CD, PicoIn.AHW & PAHW_MCD);
|
||||
me_enable(e_menu_main, MA_MAIN_PICO_PAGE, PicoIn.AHW & PAHW_PICO);
|
||||
me_enable(e_menu_main, MA_MAIN_PATCHES, PicoPatches != NULL);
|
||||
me_enable(e_menu_main, MA_OPT_SAVECFG_GAME, PicoGameLoaded);
|
||||
me_enable(e_menu_main, MA_OPT_LOADCFG, PicoGameLoaded && config_slot != config_slot_current);
|
||||
|
|
|
@ -12,6 +12,7 @@ typedef enum
|
|||
MA_MAIN_RESET_GAME,
|
||||
MA_MAIN_LOAD_ROM,
|
||||
MA_MAIN_CHANGE_CD,
|
||||
MA_MAIN_PICO_PAGE,
|
||||
MA_MAIN_CONTROLS,
|
||||
MA_MAIN_CREDITS,
|
||||
MA_MAIN_PATCHES,
|
||||
|
@ -49,6 +50,7 @@ typedef enum
|
|||
MA_OPT_SOUND_FILTER,
|
||||
MA_OPT_SOUND_ALPHA,
|
||||
MA_OPT_FM_FILTER,
|
||||
MA_OPT_PICO_PEN,
|
||||
MA_OPT2_GAMMA,
|
||||
MA_OPT2_A_SN_GAMMA,
|
||||
MA_OPT2_DBLBUFF, /* giz */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue