Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions libretro/libretro-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ extern int CASSETTE_Insert(const char* filename);
extern void CASSETTE_Remove(void);
extern void CASSETTE_Seek(unsigned int position);
extern int CASSETTE_hold_start;
extern int CASSETTE_hold_start_on_reboot;

//extern int SIO_RotateDisks(void);

Expand Down Expand Up @@ -1100,10 +1101,19 @@ static void update_variables(void)
if (strcmp(var.value, "enabled") == 0)
{
CASSETTE_hold_start = 1;
/* Persist the START-held state across reboots: the cassette boot
* handshake (gtia.c) consumes CASSETTE_hold_start into
* CASSETTE_hold_start_on_reboot once the tape boots. With this at 0
* (the default), a boot tape loads the first time but a subsequent
* reset cold-starts without holding START -> the machine drops to
* the self-test screen instead of reloading. Keeping it at 1 makes
* every reset re-boot the (rewound) tape. */
CASSETTE_hold_start_on_reboot = 1;
}
else if (strcmp(var.value, "disabled") == 0)
{
CASSETTE_hold_start = 0;
CASSETTE_hold_start_on_reboot = 0;
}

if (!libretro_runloop_active)
Expand Down
67 changes: 41 additions & 26 deletions libretro/libretro_core_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,11 @@ extern "C" {
}

struct retro_core_option_v2_category option_cats_us[] = {
{
"system",
"System",
"Emulated machine and hardware: Atari system model, OS and BASIC ROMs, RAM expansions, and add-on hardware. Most take effect after a restart."
},
{
"video",
"Video",
Expand All @@ -407,6 +412,16 @@ struct retro_core_option_v2_category option_cats_us[] = {
"Input",
"Configure 5200 Digital and Analog Joystick sensitivity and Analog deadzone. Activate Swap, Dual Joysticks or Joy 2B+. Activate Paddle mode and set Paddle speed. Set retroarch keyboard type."
},
{
"media",
"Media",
"Disk, tape and cartridge loading behaviour: SIO acceleration, cassette boot, binary-load speed, cartridge autodetect, and host P:/R: device redirection."
},
{
"osd",
"On-Screen Display",
"On-screen indicators drawn over the emulation: emulation speed, disk/tape activity, sector/block counter, and 1200XL LEDs."
},
{ NULL, NULL, NULL },
};

Expand Down Expand Up @@ -805,7 +820,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Select system emulated. Atari 5200 for Atari 5200 console games. 400/800 (OS B) for <48K games or ones that require OS/B. 800XL (64K) works for most content. 130XE (128K), Modern XL/XE(320K Compy Shop), Modern XL/XE(576K), Modern XL/XE(1088K) for content that needs more than 64K. Atari XE Game System for the Atari XE Game System or XEGS console games.",
NULL,
NULL,
"system",
{
{ "400/800 (OS B)", "Atari 400/800 (OS B)" },
{ "800XL (64K)", "Atari 800XL (64K)" },
Expand All @@ -825,7 +840,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Enable for content that needs Atari BASIC in order to run. A proper ROM file (ATARIBAS.ROM) is needed.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -839,7 +854,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Select the operating-system ROM revision used by the Atari 400/800. 'Auto' picks a revision automatically. 'AltirraOS' uses the bundled open-source replacement ROM (no original ROM required). Other revisions require the matching ROM file in the system directory.",
NULL,
NULL,
"system",
{
{ "auto", "Auto" },
{ "Rev. A NTSC", NULL },
Expand All @@ -856,7 +871,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Select the operating-system ROM revision used by the Atari XL/XE/XEGS. 'Auto' picks a revision automatically. 'AltirraOS' uses the bundled open-source replacement ROM (no original ROM required). Other revisions require the matching ROM file in the system directory.",
NULL,
NULL,
"system",
{
{ "auto", "Auto" },
{ "AA00 Rev. 10", NULL },
Expand All @@ -881,7 +896,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Select the BIOS ROM revision used by the Atari 5200. 'Auto' picks a revision automatically. 'AltirraOS' uses the bundled open-source replacement ROM (no original ROM required). Other revisions require the matching ROM file in the system directory.",
NULL,
NULL,
"system",
{
{ "auto", "Auto" },
{ "Original", NULL },
Expand All @@ -897,7 +912,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Select the Atari BASIC ROM revision. 'Auto' picks a revision automatically. 'Altirra BASIC' uses the bundled open-source replacement (no original ROM required). Other revisions require the matching ROM file in the system directory.",
NULL,
NULL,
"system",
{
{ "auto", "Auto" },
{ "Rev. A", NULL },
Expand All @@ -914,7 +929,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulate the Mosaic RAM expansion (Atari 400/800 only). Adds RAM-select boards mapped at $4000-$7FFF. Mutually exclusive with the Axlon expansion.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "16 KB", "16 KB (1 board)" },
Expand All @@ -930,7 +945,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulate the Axlon 128K-compatible bank-switched RAM expansion (Atari 400/800 only). Mutually exclusive with the Mosaic expansion.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "128 KB", NULL },
Expand All @@ -949,7 +964,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"The real Axlon board mirrored its bank-select register at $0FC0-$0FFF; some compatibles did not. Enable for full Axlon compatibility.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -963,7 +978,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Enable MapRAM RAM-under-ROM mapping (Atari XL/XE only), mirroring the OS ROM into RAM for a small speed-up used by some enhanced systems.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -977,7 +992,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Autofire mode for all joystick ports. Fire: autofire while the fire button is held. Always: continuous autofire without holding the button.",
NULL,
NULL,
"input",
{
{ "disabled", NULL },
{ "fire", "While fire held" },
Expand All @@ -992,7 +1007,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Overlay the emulation speed as a percentage on screen.",
NULL,
NULL,
"osd",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1006,7 +1021,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Overlay a disk-drive / tape activity indicator on screen.",
NULL,
NULL,
"osd",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1020,7 +1035,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Overlay the current disk sector / tape block number on screen.",
NULL,
NULL,
"osd",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1034,7 +1049,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Overlay the two 1200XL keyboard LEDs on screen (Atari 1200XL only).",
NULL,
NULL,
"osd",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1048,7 +1063,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulate the XEP80 80-column display interface on the chosen joystick port. Requires the XEP80 charset ROM.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "port 1", "Port 1" },
Expand All @@ -1063,7 +1078,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulate the ICD R-Time 8 real-time clock cartridge.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1077,7 +1092,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Enable the P: printer device SIO patch.",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1091,7 +1106,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Enable the R: serial device SIO patch (Atari 850 emulation / Coder's Cable).",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1105,7 +1120,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Load DOS binary (.xex) files at the slower, more accurate original speed instead of instantly.",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1119,7 +1134,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"This enables ALL SIO acceleration. Enabled improves loading speed for Disk and Cassette images. Disable only for protected disk (.ATX) and protected cassette images. Reboot required if change made while loading a cassette image.",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1133,7 +1148,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Forces emulated system to boot from autoboot cassette images by holding down the \"START\" key on boot.",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1147,7 +1162,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulates the Atari Stereo Sound Mod (second POKEY chip at $D210-$D21F on 800/XL/XE). Stock 800/XL/XE has only one POKEY -- leave this disabled for authentic behavior. Some games (Bounty Bob Strikes Back, Road Race) use POKEY register mirroring tricks that lock up or lose audio when stereo is enabled. The Atari 5200 always uses mono regardless of this setting.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1161,7 +1176,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"If the Atari800 legacy configuration file, .atari800.cfg, is found, it will be loaded, and if not found, a new will be created.",
NULL,
NULL,
"system",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1176,7 +1191,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Emulator will auto detect Atari cartridge based on checksum. (requires good ROM dumps).",
NULL,
NULL,
"media",
{
{ "disabled", NULL },
{ "enabled", NULL },
Expand All @@ -1191,7 +1206,7 @@ struct retro_core_option_v2_definition option_defs_us[] = {
NULL,
"Set the value for emulated analog joystick or paddle center. Use this to properly center player for some games like Kaboom, Starwars or Super Breakout. Default is 114",
NULL,
"5200",
"input",
{
{ "80", NULL },
{ "82", NULL },
Expand Down