aboutsummaryrefslogtreecommitdiff
path: root/overrides/picodrive.h
blob: f0c9ca0c7487c8f16b68403a0bf72f5b590b4a91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "overrides.h"

static const struct core_override_option picodrive_core_option_overrides[] = {
	{
		.key = "picodrive_region",
		.info = "Specify which region the system is from. 'PAL'/'Europe' is 50hz while 'NTSC'/'US' is 60hz."
	},
	{
		.key = "picodrive_smsmapper",
		.desc = "SMS ROM Mapping",
	},
	{
		.key = "picodrive_renderer",
		.info = "Specify video rendering method. 'Good' and 'Fast' are incompatible with games that rely on mid-frame palette/sprite updates.",
	},
	{
		.key = "picodrive_sound_rate",
		.desc = "Sample Rate",
	},
	{
		.key = "picodrive_smsfm",
		.desc = "SMS FM Sound",
	},
	{
		.key = "picodrive_dacnoise",
		.desc = "FM DAC Noise",
	},
	{
		.key = "picodrive_overscan",
		.info = "Crop out the potentially random glitchy video output that would have been hidden by the TV bezel."
	},
	{
		.key = "picodrive_audio_filter",
		.info = "Enable a low pass audio filter to better simulate the characteristic sound of a Model 1 Genesis. Ignored for SMS and PICO.",
	},
	{
		.key = "picodrive_lowpass_range",
		.info = "Specify the cut-off frequency of the audio low pass filter. A higher value increases the perceived 'strength' of the filter.",
	},
	{
		.key = "picodrive_frameskip",
		.info = "Skip frames to avoid audio crackling. Improves performance at the expense of visual smoothness.",
	},
	{
		.key = "picodrive_frameskip_threshold",
		.desc = "FS Threshold (%%)",
		.info = "When 'Frameskip' is set to 'Threshold', sets how low the audio buffer can get before frames will be skipped.",
	},
	{
		.key = "picodrive_sprlim",
		.info = "Removes the original sprite-per-scanline hardware limit. This reduces flickering but can cause visual glitches during special effects.",
	},
	{
		.key = "picodrive_aspect",
		.blocked = true,
	},
	{ NULL }
};

me_bind_action picodrive_ctrl_actions[] =
{
	{ "UP       ",  1 << RETRO_DEVICE_ID_JOYPAD_UP},
	{ "DOWN     ",  1 << RETRO_DEVICE_ID_JOYPAD_DOWN },
	{ "LEFT     ",  1 << RETRO_DEVICE_ID_JOYPAD_LEFT },
	{ "RIGHT    ",  1 << RETRO_DEVICE_ID_JOYPAD_RIGHT },
	{ "A        ",  1 << RETRO_DEVICE_ID_JOYPAD_Y },
	{ "B        ",  1 << RETRO_DEVICE_ID_JOYPAD_B },
	{ "C        ",  1 << RETRO_DEVICE_ID_JOYPAD_A },
	{ "X        ",  1 << RETRO_DEVICE_ID_JOYPAD_L },
	{ "Y        ",  1 << RETRO_DEVICE_ID_JOYPAD_X },
	{ "Z        ",  1 << RETRO_DEVICE_ID_JOYPAD_R },
	{ "MODE     ",  1 << RETRO_DEVICE_ID_JOYPAD_SELECT },
	{ "START    ",  1 << RETRO_DEVICE_ID_JOYPAD_START },
	{ NULL,       0 }
};

const struct core_override_fast_forward picodrive_fast_forward = {
	.type_key = "picodrive_frameskip",
	.type_value = "auto",
	.interval_key = "picodrive_frameskip_interval",
};

#define picodrive_overrides {                                    \
	.core_name = "picodrive",                                \
	.fast_forward = &picodrive_fast_forward,                 \
	.actions = picodrive_ctrl_actions,                       \
	.action_size = array_size(picodrive_ctrl_actions),       \
	.options = picodrive_core_option_overrides               \
}