Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
libretro-chailove
Commits
9e5b3808
Unverified
Commit
9e5b3808
authored
Jul 13, 2019
by
RobLoach
Committed by
GitHub
Jul 13, 2019
Browse files
Merge pull request #369 from libretro/sublabels
Add Core Option sublabels
parents
a9c774b0
69835f9a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Makefile.common
View file @
9e5b3808
...
...
@@ -42,7 +42,7 @@ ifneq ($(STATIC_LINKING), 1)
$(CORE_DIR)
/vendor/libretro-common/lists/string_list.c
\
$(CORE_DIR)
/vendor/libretro-common/memmap/memalign.c
\
$(CORE_DIR)
/vendor/libretro-common/streams/file_stream.c
\
$(CORE_DIR)
/vendor/libretro-common/vfs/
*
.c
\
$(CORE_DIR)
/vendor/libretro-common/vfs/
vfs_implementation
.c
\
)
# Ensure the sinc_resampler_neon is available for ARM NEON devices.
SOURCES_S
+=
$(CORE_DIR)
/vendor/libretro-common/audio/resampler/drivers/sinc_resampler_neon.o
...
...
src/libretro.cpp
View file @
9e5b3808
...
...
@@ -4,6 +4,7 @@
#include <sstream>
#include <iostream>
#include "libretro.h"
#include "libretro_core_options.h"
#include "ChaiLove.h"
static
retro_video_refresh_t
video_cb
;
...
...
@@ -61,17 +62,8 @@ void retro_set_environment(retro_environment_t cb) {
bool
no_rom
=
false
;
cb
(
RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME
,
&
no_rom
);
// Set the Variables.
struct
retro_variable
variables
[]
=
{
{
"chailove_alphablending"
,
"Alpha Blending; enabled|disabled"
,
},
{
"chailove_highquality"
,
"High Quality; enabled|disabled"
,
},
{
NULL
,
NULL
},
};
cb
(
RETRO_ENVIRONMENT_SET_VARIABLES
,
variables
);
// Configure the core options.
libretro_set_core_options
(
cb
);
}
/**
...
...
src/libretro_core_options.h
0 → 100644
View file @
9e5b3808
#ifndef SRC_LIBRETRO_CORE_OPTIONS_H_
#define SRC_LIBRETRO_CORE_OPTIONS_H_
#include <stdlib.h>
#include <string.h>
#include <libretro.h>
#include <retro_inline.h>
#ifdef __cplusplus
extern
"C"
{
#endif
/*
********************************
* Core Option Definitions
********************************
*/
/* RETRO_LANGUAGE_ENGLISH */
/* Default language:
* - All other languages must include the same keys and values
* - Will be used as a fallback in the event that frontend language
* is not available
* - Will be used as a fallback for any missing entries in
* frontend language definition */
struct
retro_core_option_definition
option_defs_us
[]
=
{
{
"chailove_alphablending"
,
"Alpha Blending"
,
"Whether or not to enable hardware alpha blending. This will improve graphics, but have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
"chailove_highquality"
,
"High Quality"
,
"When enabled, will take steps to improve the graphic fidelity. Can have an impact on performance."
,
{
{
"enabled"
,
NULL
},
{
"disabled"
,
NULL
},
{
NULL
,
NULL
},
},
"enabled"
},
{
NULL
,
NULL
,
NULL
,
{{
0
}},
NULL
},
};
/* RETRO_LANGUAGE_JAPANESE */
/* RETRO_LANGUAGE_FRENCH */
/* RETRO_LANGUAGE_SPANISH */
/* RETRO_LANGUAGE_GERMAN */
/* RETRO_LANGUAGE_ITALIAN */
/* RETRO_LANGUAGE_DUTCH */
/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
/* RETRO_LANGUAGE_RUSSIAN */
/* RETRO_LANGUAGE_KOREAN */
/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
/* RETRO_LANGUAGE_ESPERANTO */
/* RETRO_LANGUAGE_POLISH */
/* RETRO_LANGUAGE_VIETNAMESE */
/* RETRO_LANGUAGE_ARABIC */
/* RETRO_LANGUAGE_GREEK */
/* RETRO_LANGUAGE_TURKISH */
/*
********************************
* Language Mapping
********************************
*/
struct
retro_core_option_definition
*
option_defs_intl
[
RETRO_LANGUAGE_LAST
]
=
{
option_defs_us
,
/* RETRO_LANGUAGE_ENGLISH */
NULL
,
/* RETRO_LANGUAGE_JAPANESE */
NULL
,
/* RETRO_LANGUAGE_FRENCH */
NULL
,
/* RETRO_LANGUAGE_SPANISH */
NULL
,
/* RETRO_LANGUAGE_GERMAN */
NULL
,
/* RETRO_LANGUAGE_ITALIAN */
NULL
,
/* RETRO_LANGUAGE_DUTCH */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_BRAZIL */
NULL
,
/* RETRO_LANGUAGE_PORTUGUESE_PORTUGAL */
NULL
,
/* RETRO_LANGUAGE_RUSSIAN */
NULL
,
/* RETRO_LANGUAGE_KOREAN */
NULL
,
/* RETRO_LANGUAGE_CHINESE_TRADITIONAL */
NULL
,
/* RETRO_LANGUAGE_CHINESE_SIMPLIFIED */
NULL
,
/* RETRO_LANGUAGE_ESPERANTO */
NULL
,
/* RETRO_LANGUAGE_POLISH */
NULL
,
/* RETRO_LANGUAGE_VIETNAMESE */
NULL
,
/* RETRO_LANGUAGE_ARABIC */
NULL
,
/* RETRO_LANGUAGE_GREEK */
NULL
,
/* RETRO_LANGUAGE_TURKISH */
};
/*
********************************
* Functions
********************************
*/
/* Handles configuration/setting of core options.
* Should only be called inside retro_set_environment().
* > We place the function body in the header to avoid the
* necessity of adding more .c files (i.e. want this to
* be as painless as possible for core devs)
*/
static
INLINE
void
libretro_set_core_options
(
retro_environment_t
environ_cb
)
{
unsigned
version
=
0
;
if
(
!
environ_cb
)
return
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION
,
&
version
)
&&
(
version
==
1
))
{
struct
retro_core_options_intl
core_options_intl
;
unsigned
language
=
0
;
core_options_intl
.
us
=
option_defs_us
;
core_options_intl
.
local
=
NULL
;
if
(
environ_cb
(
RETRO_ENVIRONMENT_GET_LANGUAGE
,
&
language
)
&&
(
language
<
RETRO_LANGUAGE_LAST
)
&&
(
language
!=
RETRO_LANGUAGE_ENGLISH
))
core_options_intl
.
local
=
option_defs_intl
[
language
];
environ_cb
(
RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL
,
&
core_options_intl
);
}
else
{
size_t
i
;
size_t
num_options
=
0
;
struct
retro_variable
*
variables
=
NULL
;
char
**
values_buf
=
NULL
;
/* Determine number of options */
while
(
true
)
{
if
(
option_defs_us
[
num_options
].
key
)
{
num_options
++
;
}
else
{
break
;
}
}
/* Allocate arrays */
variables
=
(
struct
retro_variable
*
)
calloc
(
num_options
+
1
,
sizeof
(
struct
retro_variable
));
values_buf
=
(
char
**
)
calloc
(
num_options
,
sizeof
(
char
*
));
if
(
!
variables
||
!
values_buf
)
{
goto
error
;
}
/* Copy parameters from option_defs_us array */
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
const
char
*
key
=
option_defs_us
[
i
].
key
;
const
char
*
desc
=
option_defs_us
[
i
].
desc
;
struct
retro_core_option_value
*
values
=
option_defs_us
[
i
].
values
;
size_t
buf_len
=
3
;
values_buf
[
i
]
=
NULL
;
if
(
desc
)
{
size_t
num_values
=
0
;
/* Determine number of values */
while
(
true
)
{
if
(
values
[
num_values
].
value
)
{
buf_len
+=
strlen
(
values
[
num_values
].
value
);
num_values
++
;
}
else
{
break
;
}
}
/* Build values string */
if
(
num_values
>
1
)
{
size_t
j
;
buf_len
+=
num_values
-
1
;
buf_len
+=
strlen
(
desc
);
values_buf
[
i
]
=
(
char
*
)
calloc
(
buf_len
,
sizeof
(
char
));
if
(
!
values_buf
[
i
])
goto
error
;
strcpy
(
values_buf
[
i
],
desc
);
// NOLINT
strcat
(
values_buf
[
i
],
"; "
);
// NOLINT
for
(
j
=
0
;
j
<
num_values
;
j
++
)
{
strcat
(
values_buf
[
i
],
values
[
j
].
value
);
// NOLINT
if
(
j
!=
num_values
-
1
)
strcat
(
values_buf
[
i
],
"|"
);
// NOLINT
}
}
}
variables
[
i
].
key
=
key
;
variables
[
i
].
value
=
values_buf
[
i
];
}
/* Set variables */
environ_cb
(
RETRO_ENVIRONMENT_SET_VARIABLES
,
variables
);
error:
/* Clean up */
if
(
values_buf
)
{
for
(
i
=
0
;
i
<
num_options
;
i
++
)
{
if
(
values_buf
[
i
])
{
free
(
values_buf
[
i
]);
values_buf
[
i
]
=
NULL
;
}
}
free
(
values_buf
);
values_buf
=
NULL
;
}
if
(
variables
)
{
free
(
variables
);
variables
=
NULL
;
}
}
}
#ifdef __cplusplus
}
#endif
#endif // SRC_LIBRETRO_CORE_OPTIONS_H_
libretro-common
@
4ad6d556
Compare
b506f652
...
4ad6d556
Subproject commit
b506f65216ec46374c88477dc689e84496b99540
Subproject commit
4ad6d556e4c75c1ecdd29211ca10e1e4cc6d74a3
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment