From 479ed5da60afcdc5f073147b955f3655b1c753e9 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 20:05:27 -0700 Subject: [PATCH 01/12] Fix log message for android logcat to reflect actual core name. --- libretro/libretro-core.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro/libretro-core.h b/libretro/libretro-core.h index 9cc5ec8..97aff31 100644 --- a/libretro/libretro-core.h +++ b/libretro/libretro-core.h @@ -43,7 +43,7 @@ extern int pauseg; #if defined(__ANDROID__) || defined(ANDROID) #include -#define LOG_TAG "RetroArch.Vice" +#define LOG_TAG "RetroArch.Atari800" #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #else #define LOGI printf From 2cf20e68af1924889a2f7a75b2bbc243f55af066 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 20:18:28 -0700 Subject: [PATCH 02/12] Add much needed variables to libretro-core.c for setting system type, video standard, and various other boot boot parameters. --- libretro/libretro-core.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 73074c2..54850fe 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -76,7 +76,26 @@ void retro_set_environment(retro_environment_t cb) cb( RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, (void*)ports ); struct retro_variable variables[] = { - + { + "atari800_system", + "Atari System; 400/800 (OS B)|800XL (64K)|130XE (128K)|5200", + }, + { + "atari800_ntscpal", + "Video Standard; NTSC|PAL", + }, + { + "atari800_internalbasic", + "Internal BASIC (hold OPTION on boot); disabled|enabled", + }, + { + "atari800_sioaccel", + "SIO Acceleration; disabled|enabled", + }, + { + "atari800_cassboot", + "Boot from Cassette; disabled|enabled", + }, { "atari800_opt1", "Autodetect A5200 CartType; disabled|enabled" , From 3283e846461c3aa7b2de36c76d1ae0acec721ea3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 21:35:16 -0700 Subject: [PATCH 03/12] Add code to react to set atari800 state from libretro variables, first pass. --- libretro/libretro-core.c | 112 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 54850fe..e6c8a02 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -163,8 +163,118 @@ static void update_variables(void) texture_init(); //reset_screen(); } - + var.key = "atari800_system"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "400/800 (OS B)") == 0) + { + Atari800_machine_type = Atari800_MACHINE_800; + MEMORY_ram_size = 48; + Atari800_builtin_basic = FALSE; + Atari800_keyboard_leds = FALSE; + Atari800_f_keys = FALSE; + Atari800_jumper = FALSE; + Atari800_builtin_game = FALSE; + Atari800_keyboard_detached = FALSE; + } + else if (strcmp(var.value, "800XL (64K)") == 0) + { + Atari800_machine_type = Atari800_MACHINE_XLXE; + MEMORY_ram_size = 64; + Atari800_builtin_basic = TRUE; + Atari800_keyboard_leds = FALSE; + Atari800_f_keys = FALSE; + Atari800_jumper = FALSE; + Atari800_builtin_game = FALSE; + Atari800_keyboard_detached = FALSE; + } + else if (strcmp(var.value, "130XE (128K)") == 0) + { + Atari800_machine_type = Atari800_MACHINE_XLXE; + MEMORY_ram_size = 128; + Atari800_builtin_basic = TRUE; + Atari800_keyboard_leds = FALSE; + Atari800_f_keys = FALSE; + Atari800_jumper = FALSE; + Atari800_builtin_game = FALSE; + Atari800_keyboard_detached = FALSE; + } + else if (strcmp(var.value, "5200") == 0) + { + Atari800_machine_type = Atari800_MACHINE_5200; + MEMORY_ram_size = 16; + Atari800_builtin_basic = FALSE; + Atari800_keyboard_leds = FALSE; + Atari800_f_keys = FALSE; + Atari800_jumper = FALSE; + Atari800_builtin_game = FALSE; + Atari800_keyboard_detached = FALSE; + } + } + + var.key = "atari800_ntscpal"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + { + Atari800_tv_mode = Atari800_TV_NTSC; + } + else if (strcmp(var.value, "disabled") == 0) + { + Atari800_tv_mode = Atari800_TV_PAL; + } + } + + var.key = "atari800_internalbasic"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + { + Atari800_disable_basic = FALSE; + } + else if (strcmp(var.value, "disabled") == 0) + { + Atari800_disable_basic = TRUE; + } + } + + var.key = "atari800_sioaccel"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + { + ESC_enable_sio_patch = Devices_enable_h_patch = Devices_enable_p_patch = Devices_enable_r_patch = TRUE; + } + else if (strcmp(var.value, "disabled") == 0) + { + ESC_enable_sio_patch = Devices_enable_h_patch = Devices_enable_p_patch = Devices_enable_r_patch = FALSE; + } + } + + var.key = "atari800_cassboot"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + { + CASSETTE_hold_start=1; + } + else if (strcmp(var.value, "disabled") == 0) + { + CASSETTE_hold_start=0; + } + } + } static void retro_wrap_emulator() From 3e7cdb0508c1d576b133c3373a5c4fb544711682 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 21:48:01 -0700 Subject: [PATCH 04/12] Add needed externs. --- libretro/libretro-core.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index e6c8a02..7c40350 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -33,6 +33,26 @@ extern char RPATH[512]; extern char RETRO_DIR[512]; int cap32_statusbar=0; +/* atari800 configuration vars */ +extern int Atari800_machine_type; +extern int Atari800_builtin_basic; +extern int Atari800_keyboard_leds; +extern int Atari800_f_keys; +extern int Atari800_jumper; +extern int Atari800_builtin_game; +extern int Atari800_keyboard_detached; +extern int MEMORY_ram_size; +extern int Atari800_disable_basic; +extern int ESC_enable_sio_patch; +extern int Devices_enable_h_patch; +extern int Devices_enable_p_patch; +extern int Devices_enable_r_patch; +extern int CASSETTE_hold_start; + +#define Atari800_TV_UNSET 0 +#define Atari800_TV_PAL 312 +#define Atari800_TV_NTSC 262 + #include "cmdline.c" extern void update_input(void); From 9f4577511c317c6c7c2648f9ba3bb28b64b77170 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 21:55:13 -0700 Subject: [PATCH 05/12] include atari.h instead of manually grafting in externs. --- libretro/libretro-core.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 7c40350..7bd1102 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -1,6 +1,7 @@ #include "libretro.h" #include "libretro-core.h" +#include "atari.h" cothread_t mainThread; cothread_t emuThread; @@ -33,26 +34,6 @@ extern char RPATH[512]; extern char RETRO_DIR[512]; int cap32_statusbar=0; -/* atari800 configuration vars */ -extern int Atari800_machine_type; -extern int Atari800_builtin_basic; -extern int Atari800_keyboard_leds; -extern int Atari800_f_keys; -extern int Atari800_jumper; -extern int Atari800_builtin_game; -extern int Atari800_keyboard_detached; -extern int MEMORY_ram_size; -extern int Atari800_disable_basic; -extern int ESC_enable_sio_patch; -extern int Devices_enable_h_patch; -extern int Devices_enable_p_patch; -extern int Devices_enable_r_patch; -extern int CASSETTE_hold_start; - -#define Atari800_TV_UNSET 0 -#define Atari800_TV_PAL 312 -#define Atari800_TV_NTSC 262 - #include "cmdline.c" extern void update_input(void); From 6aa0248b5541e63a283b5e5eeee56ba1f79321b2 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 22:00:59 -0700 Subject: [PATCH 06/12] Add the rest of the .h's --- libretro/libretro-core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 7bd1102..3eb51fb 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -2,6 +2,9 @@ #include "libretro-core.h" #include "atari.h" +#include "devices.h" +#include "esc.h" +#include "memory.h" cothread_t mainThread; cothread_t emuThread; From c4cbef905f85d583429e2a34a3bc01607170289f Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 22:03:22 -0700 Subject: [PATCH 07/12] oops, forgot cassette.h --- libretro/libretro-core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 3eb51fb..c00c625 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -5,6 +5,7 @@ #include "devices.h" #include "esc.h" #include "memory.h" +#include "cassette.h" cothread_t mainThread; cothread_t emuThread; From d5c6d1f14f94170b0f65753e55a0bcd0798a4093 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 22:16:12 -0700 Subject: [PATCH 08/12] Add machine initialization calls. --- libretro/libretro-core.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index c00c625..8aed4b0 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -160,7 +160,7 @@ static void update_variables(void) if (pch) retroh = strtoul(pch, NULL, 0); - fprintf(stderr, "[libretro-vice]: Got size: %u x %u.\n", retrow, retroh); + fprintf(stderr, "[libretro-atari800]: Got size: %u x %u.\n", retrow, retroh); CROP_WIDTH =retrow; CROP_HEIGHT= (retroh-80); @@ -184,6 +184,7 @@ static void update_variables(void) Atari800_jumper = FALSE; Atari800_builtin_game = FALSE; Atari800_keyboard_detached = FALSE; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "800XL (64K)") == 0) { @@ -195,6 +196,7 @@ static void update_variables(void) Atari800_jumper = FALSE; Atari800_builtin_game = FALSE; Atari800_keyboard_detached = FALSE; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "130XE (128K)") == 0) { @@ -206,6 +208,7 @@ static void update_variables(void) Atari800_jumper = FALSE; Atari800_builtin_game = FALSE; Atari800_keyboard_detached = FALSE; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "5200") == 0) { @@ -217,6 +220,7 @@ static void update_variables(void) Atari800_jumper = FALSE; Atari800_builtin_game = FALSE; Atari800_keyboard_detached = FALSE; + Atari800_InitialiseMachine(); } } @@ -243,10 +247,12 @@ static void update_variables(void) if (strcmp(var.value, "enabled") == 0) { Atari800_disable_basic = FALSE; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "disabled") == 0) { Atari800_disable_basic = TRUE; + Atari800_InitialiseMachine(); } } @@ -258,10 +264,12 @@ static void update_variables(void) if (strcmp(var.value, "enabled") == 0) { ESC_enable_sio_patch = Devices_enable_h_patch = Devices_enable_p_patch = Devices_enable_r_patch = TRUE; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "disabled") == 0) { - ESC_enable_sio_patch = Devices_enable_h_patch = Devices_enable_p_patch = Devices_enable_r_patch = FALSE; + ESC_enable_sio_patch = Devices_enable_h_patch = Devices_enable_p_patch = Devices_enable_r_patch = FALSE; + Atari800_InitialiseMachine(); } } @@ -273,10 +281,12 @@ static void update_variables(void) if (strcmp(var.value, "enabled") == 0) { CASSETTE_hold_start=1; + Atari800_InitialiseMachine(); } else if (strcmp(var.value, "disabled") == 0) { CASSETTE_hold_start=0; + Atari800_InitialiseMachine(); } } From f5c5738ff8bca2d40b7f0a7de606dfeb4bd1f936 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 21 Aug 2017 22:40:57 -0700 Subject: [PATCH 09/12] fix ntsc pal switch. --- libretro/libretro-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 8aed4b0..7479cda 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -229,11 +229,11 @@ static void update_variables(void) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - if (strcmp(var.value, "enabled") == 0) + if (strcmp(var.value, "NTSC") == 0) { Atari800_tv_mode = Atari800_TV_NTSC; } - else if (strcmp(var.value, "disabled") == 0) + else if (strcmp(var.value, "PAL") == 0) { Atari800_tv_mode = Atari800_TV_PAL; } From 49b8d466dd990f1da4ed8092c7c509f2c9131db2 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 22 Aug 2017 10:38:21 -0700 Subject: [PATCH 10/12] Add switch for NTSC/PAL artifacting. (TODO: Get NTSC Filter working!) --- libretro/libretro-core.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 7479cda..1ff3ea9 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -6,6 +6,7 @@ #include "esc.h" #include "memory.h" #include "cassette.h" +#include "artifact.h" cothread_t mainThread; cothread_t emuThread; @@ -100,6 +101,10 @@ void retro_set_environment(retro_environment_t cb) { "atari800_cassboot", "Boot from Cassette; disabled|enabled", + }, + { + "atari800_artifacting", + "Hi-Res Artifacting; disabled|enabled", }, { "atari800_opt1", @@ -289,6 +294,39 @@ static void update_variables(void) Atari800_InitialiseMachine(); } } + + var.key = "atari800_artifacting"; + var.value = NULL; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) + { + if (strcmp(var.value, "enabled") == 0) + { + if (Atari800_tv_mode == Atari800_TV_NTSC) + { + ARTIFACT_Set(ARTIFACT_NTSC_NEW); + ARTIFACT_SetTVMode(Atari800_TV_NTSC); + } + else if (Atari800_tv_mode == Atari800_TV_PAL) + { + ARTIFACT_Set(ARTIFACT_PAL_BLEND); + ARTIFACT_SetTVMode(Atari800_TV_PAL); + } + } + else if (strcmp(var.value, "disabled") == 0) + { + if (Atari800_tv_mode == Atari800_TV_NTSC) + { + ARTIFACT_Set(ARTIFACT_NONE); + ARTIFACT_SetTVMode(Atari800_TV_NTSC); + } + else if (Atari800_tv_mode == Atari800_TV_PAL) + { + ARTIFACT_Set(ARTIFACT_NONE); + ARTIFACT_SetTVMode(Atari800_TV_PAL); + } + } + } } From d4e6b085056b8f15f46b3bd2efe8ee8dd42e119d Mon Sep 17 00:00:00 2001 From: root Date: Tue, 22 Aug 2017 10:44:43 -0700 Subject: [PATCH 11/12] Turn off pal blending support until I can figure out why the pal blender isn't compiling. --- libretro/libretro-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 1ff3ea9..365da7e 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -309,7 +309,7 @@ static void update_variables(void) } else if (Atari800_tv_mode == Atari800_TV_PAL) { - ARTIFACT_Set(ARTIFACT_PAL_BLEND); + ARTIFACT_Set(ARTIFACT_NONE); // PAL Blending has been flipped off in config for now. ARTIFACT_SetTVMode(Atari800_TV_PAL); } } From 78b59495725cfe16a4965bfa5c246dfb5fb0b583 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 22 Aug 2017 11:08:51 -0700 Subject: [PATCH 12/12] change new artifacting to old temporarily. --- libretro/libretro-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 365da7e..6566fed 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -304,7 +304,7 @@ static void update_variables(void) { if (Atari800_tv_mode == Atari800_TV_NTSC) { - ARTIFACT_Set(ARTIFACT_NTSC_NEW); + ARTIFACT_Set(ARTIFACT_NTSC_OLD); ARTIFACT_SetTVMode(Atari800_TV_NTSC); } else if (Atari800_tv_mode == Atari800_TV_PAL)