mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Add -devvideo option which specifies SDL rendering driver name
This commit is contained in:
@@ -99,7 +99,7 @@ boolean ags_check_param_xy(int *x, int *y) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void ags_init() {
|
||||
void ags_init(const char *videodev) {
|
||||
nact->ags.mouse_movesw = 2; /* 0:IZを無視, 1: 直接指定場所へ, 2: スムーズに指定場所に */
|
||||
nact->ags.pal = &pal_256;
|
||||
nact->ags.world_size.width = SYS35_DEFAULT_WIDTH;
|
||||
@@ -110,7 +110,7 @@ void ags_init() {
|
||||
nact->ags.view_area.w = SYS35_DEFAULT_WIDTH;
|
||||
nact->ags.view_area.h = SYS35_DEFAULT_HEIGHT;
|
||||
|
||||
sdl_Initilize();
|
||||
sdl_Initialize(videodev);
|
||||
font_init();
|
||||
|
||||
initPal(&pal_256);
|
||||
|
||||
@@ -126,7 +126,7 @@ typedef struct _ags ags_t;
|
||||
|
||||
|
||||
/* 初期化関係 */
|
||||
extern void ags_init();
|
||||
extern void ags_init(const char *videodev);
|
||||
extern void ags_remove();
|
||||
|
||||
/* ウィンド関係 */
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
struct inputstring_param;
|
||||
|
||||
/* 初期化関係 */
|
||||
extern int sdl_Initilize(void);
|
||||
extern int sdl_Initialize(const char *videodev);
|
||||
extern void sdl_Remove(void);
|
||||
|
||||
/* ウィンド関係 */
|
||||
|
||||
+24
-7
@@ -36,7 +36,7 @@
|
||||
#include "xsystem35.h"
|
||||
#include "image.h"
|
||||
|
||||
static void window_init(void);
|
||||
static void window_init(const char *driver_name);
|
||||
static void makeDIB(int width, int height, int depth);
|
||||
|
||||
struct sdl_private_data *sdl_videodev;
|
||||
@@ -73,11 +73,10 @@ static boolean joy_open(void) {
|
||||
}
|
||||
|
||||
/* SDL の初期化 */
|
||||
int sdl_Initilize(void) {
|
||||
int sdl_Initialize(const char *videodev) {
|
||||
sdl_videodev = calloc(1, sizeof(struct sdl_private_data));
|
||||
|
||||
/* make topleve window */
|
||||
window_init();
|
||||
window_init(videodev);
|
||||
|
||||
/* offscreen Pixmap */
|
||||
makeDIB(SYS35_DEFAULT_WIDTH, SYS35_DEFAULT_HEIGHT, SYS35_DEFAULT_DEPTH);
|
||||
@@ -127,8 +126,26 @@ void sdl_setWindowTitle(char *name) {
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Visual に応じて Window を生成する */
|
||||
static void window_init(void) {
|
||||
static int rendering_driver_index(const char *driver_name) {
|
||||
if (!driver_name)
|
||||
return -1;
|
||||
|
||||
SDL_RendererInfo info;
|
||||
int nr_devs = SDL_GetNumRenderDrivers();
|
||||
for (int i = 0; i < nr_devs; i++) {
|
||||
if (!SDL_GetRenderDriverInfo(i, &info) && !strcmp(info.name, driver_name))
|
||||
return i;
|
||||
}
|
||||
|
||||
fprintf(stderr, "Unknown video driver \"%s\". Valid names are:\n", driver_name);
|
||||
for (int i = 0; i < nr_devs; i++) {
|
||||
if (SDL_GetRenderDriverInfo(i, &info) == 0)
|
||||
fprintf(stderr, " %s\n", info.name);
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void window_init(const char *driver_name) {
|
||||
SDL_SetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, "0");
|
||||
|
||||
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
|
||||
@@ -151,7 +168,7 @@ static void window_init(void) {
|
||||
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||
SYS35_DEFAULT_WIDTH, SYS35_DEFAULT_HEIGHT,
|
||||
flags);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, rendering_driver_index(driver_name), 0);
|
||||
SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
|
||||
SDL_RenderSetIntegerScale(sdl_renderer, integer_scaling);
|
||||
}
|
||||
|
||||
+12
-1
@@ -80,6 +80,8 @@ static void sys35_remove();
|
||||
static void sys35_ParseOption(int *argc, char **argv);
|
||||
static void check_profile();
|
||||
|
||||
static char *videodev = NULL;
|
||||
|
||||
/* for debugging */
|
||||
static int debuglv = DEBUGLEVEL;
|
||||
enum {
|
||||
@@ -112,6 +114,7 @@ static void sys35_usage(boolean verbose) {
|
||||
puts("Usage: xsystem35 [OPTIONS]\n");
|
||||
puts("OPTIONS");
|
||||
puts(" -gamefile file : set game resource file to 'file'");
|
||||
puts(" -devvideo device : set video device name to 'device'");
|
||||
puts(" -devcd device : set cdrom device name to 'device'");
|
||||
puts(" -devmidi device: set midi device name to 'device'");
|
||||
|
||||
@@ -209,7 +212,7 @@ static void sys35_init() {
|
||||
|
||||
v_initVars();
|
||||
|
||||
ags_init();
|
||||
ags_init(videodev);
|
||||
|
||||
for (i = 0; i < FONTTYPEMAX; i++)
|
||||
font_set_name_and_index(i, fontname_tt[i], fontface[i]);
|
||||
@@ -275,6 +278,8 @@ static void sys35_ParseOption(int *argc, char **argv) {
|
||||
debugger_mode = DEBUGGER_CUI;
|
||||
} else if (0 == strcmp(argv[i], "-debug_dap")) {
|
||||
debugger_mode = DEBUGGER_DAP;
|
||||
} else if (0 == strcmp(argv[i], "-devvideo")) {
|
||||
videodev = argv[i + 1];
|
||||
} else if (0 == strcmp(argv[i], "-devcd")) {
|
||||
if (argv[i + 1] != NULL) {
|
||||
cd_set_devicename(argv[i + 1]);
|
||||
@@ -356,6 +361,12 @@ static void check_profile() {
|
||||
audio_buffer_size = atoi(param);
|
||||
}
|
||||
|
||||
/* Video device */
|
||||
param = get_profile("video_device");
|
||||
if (param) {
|
||||
videodev = param;
|
||||
}
|
||||
|
||||
/* CD-ROM device name の設定 */
|
||||
param = get_profile("cdrom_device");
|
||||
if (param) {
|
||||
|
||||
Reference in New Issue
Block a user