1use crate::app::HelpText;
2
3pub const TIMING_MODE: HelpText = HelpText {
4    heading: "Timing Mode",
5    text: &[
6        "Set timing mode to NTSC (60Hz) or PAL (50Hz).",
7        "The Auto setting will choose automatically based on the region in the iNES header.",
8    ],
9};
10
11pub const DMA_DUMMY_JOY_READ: HelpText = HelpText {
12    heading: "DMA Dummy Joypad Reads",
13    text: &[
14        "Whether to allow DMC DMA to trigger dummy controller port reads.",
15        "This behavior is more accurate to the most common hardware revisions, but it can cause input glitches in a handful of games that use the DMC and don't account for these dummy reads.",
16    ],
17};
18
19pub const ASPECT_RATIO: HelpText = HelpText {
20    heading: "Aspect Ratio",
21    text: &[
22        "Configure aspect ratio.",
23        "NTSC - 8:7 pixel aspect ratio",
24        "PAL - 11:8 pixel aspect ratio",
25    ],
26};
27
28pub const NTSC_V_OVERSCAN: HelpText = HelpText {
29    heading: "Crop NTSC Vertical Overscan",
30    text: &[
31        "If enabled, crop NTSC frames from 256x240 to 256x224.",
32        "The PPU always renders 240 lines even on NTSC consoles, but the top 8 lines and bottom 8 lines were not visible on most contemporary NTSC TVs, leaving 224 lines visible.",
33    ],
34};
35
36pub const REMOVE_SPRITE_LIMIT: HelpText = HelpText {
37    heading: "Remove Sprite Limit",
38    text: &[
39        "If enabled, ignore the hardware's 8 sprite-per-scanline limit.",
40        "This typically eliminates sprite flickering, but it can cause visual glitches in games that use the limit to intentionally hide sprites.",
41    ],
42};
43
44pub const PAL_BLACK_BORDER: HelpText = HelpText {
45    heading: "Emulate PAL Border",
46    text: &[
47        "Emulate PAL border cropping. This crops the topmost line of pixels, the leftmost 2 columns of pixels, and the rightmost 2 columns of pixels.",
48    ],
49};
50
51pub const OVERSCAN: HelpText = HelpText {
52    heading: "Overscan",
53    text: &[
54        "Optionally crop pixels from each individual edge of the frame.",
55        "Some NES games have noticeable visual glitches close to the borders due to video hardware limitations. This setting makes it possible to hide those glitches by cropping graphics close to the borders.",
56    ],
57};
58
59pub const PALETTE: HelpText = HelpText {
60    heading: "Palette",
61    text: &[
62        "Customize the display palette, either by loading from a file or using the builtin palette generator. Supports loading both 512-color and 64-color palette files, though 512-color is preferred.",
63        "The displayed graphic shows 64 colors by default. The 512-color version shows the 64 colors for each of the 8 combinations of color emphasis bits.",
64        "Note this palette is not used when the NTSC video shader is enabled because that shader directly uses the emulated NES NTSC video output.",
65    ],
66};
67
68pub const ULTRASONIC_TRIANGLE: HelpText = HelpText {
69    heading: "Silence Ultrasonic Triangle Output",
70    text: &[
71        "If enabled and a game sets the triangle channel's period to an absurdly low value (0 or 1), mute it instead of oscillating it at an ultrasonic frequency.",
72        "This is less accurate but can reduce audio popping in some games.",
73    ],
74};
75
76pub const AUDIO_TIMING_HACK: HelpText = HelpText {
77    heading: "Audio Timing Hack",
78    text: &[
79        "If enabled, slightly adjust the emulator's audio timing so that audio sync will target exactly 60 fps (NTSC) / 50 fps (PAL) instead of the console's native framerate which is slightly higher.",
80        "Native framerate is approximately 60.0988 fps for NTSC and 50.007 fps for PAL.",
81    ],
82};
83
84pub const AUDIO_RESAMPLING: HelpText = HelpText {
85    heading: "Audio Resampling Algorithm",
86    text: &[
87        "Choose the algorithm used to resample from the NES native sample rate to the output sample rate.",
88        "Windowed sinc interpolation is higher quality and sharper, but it can be much more performance-intensive.",
89    ],
90};