1 /************************************************************************/
2 /* */
3 /* QUASI88 */
4 /* */
5 /************************************************************************/
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <gtk/gtk.h>
10
11 #include "quasi88.h"
12 #include "device.h"
13
14 #include "getconf.h" /* config_init */
15 #include "suspend.h" /* stateload_system */
16 #include "menu.h" /* menu_about_osd_msg */
17
18
19 /***********************************************************************
20 * ���ץ����
21 ************************************************************************/
22 static const T_CONFIG_TABLE gtksys_options[] =
23 {
24 /* 300��349: �����ƥ��¸���ץ���� */
25
26 /* -- GRAPHIC -- */
27 { 300, "gdkimage", X_FIX, &use_gdk_image, TRUE, 0,0, 0 },
28 { 300, "nogdkimage", X_FIX, &use_gdk_image, FALSE, 0,0, 0 },
29
30
31 /* ��ü */
32 { 0, NULL, X_INV, 0,0,0,0, 0 },
33 };
34
help_msg_gtksys(void)35 static void help_msg_gtksys(void)
36 {
37 fprintf
38 (
39 stdout,
40 " ** GRAPHIC (GTK depend) **\n"
41 " -gdkimage/-nogdkimage use GdkImage/use GdkRGB [-gdkimage]\n"
42 );
43 }
44
45
46
47 /***********************************************************************
48 * �ᥤ�����
49 ************************************************************************/
50 static void gtksys_init(void);
51 static void gtksys_exit(void);
52 static void finish(void);
53
main(int argc,char ** argv)54 int main(int argc, char **argv)
55 {
56 gtk_set_locale();
57 #ifdef __CYGWIN__
58 _Xsetlocale(LC_ALL, "ja_JP.EUC"); /* ??? */
59 #endif // __CYGWIN__
60
61 gtk_init(&argc, &argv);
62 /* gtk_rc_parse("./gtkrc"); */
63
64 if (config_init(argc, argv, /* �Ķ������ & �������� */
65 gtksys_options,
66 help_msg_gtksys)) {
67
68 quasi88_atexit(finish); /* quasi88() �¹���˶�����λ�����ݤ�
69 ������Хå��ؿ�����Ͽ���� */
70
71 gtksys_init();
72
73 gtk_main();
74
75 config_exit(); /* ������������� */
76 }
77
78 return 0;
79 }
80
81
82
83 /*
84 * ������λ���Υ�����Хå��ؿ� (quasi88_exit()�ƽл��ˡ����������)
85 */
finish(void)86 static void finish(void)
87 {
88 gtksys_exit();
89
90 config_exit(); /* ������������� */
91 }
92
93
94
95 /*---------------------------------------------------------------------------*/
96 static gint idle_id = 0;
97 static int start_flg = FALSE;
98 static gboolean idle_callback(gpointer dummy);
99
gtksys_init(void)100 static void gtksys_init(void)
101 {
102 idle_id = g_idle_add(idle_callback, NULL);
103
104 start_flg = TRUE;
105
106 quasi88_start();
107 }
108
gtksys_exit(void)109 static void gtksys_exit(void)
110 {
111 quasi88_stop(TRUE);
112
113 if (idle_id) {
114 g_source_remove(idle_id);
115 idle_id = 0;
116 }
117 if (start_flg) {
118 gtk_main_quit();
119 start_flg = FALSE;
120 }
121 }
122
idle_callback(gpointer dummy)123 static gboolean idle_callback(gpointer dummy)
124 {
125 switch (quasi88_loop()) {
126 case QUASI88_LOOP_EXIT: /* ��λ */
127 gtksys_exit();
128 /* exit(0); */ /* Motif�ʤ� �Ǹ�� exit() ? */
129 return FALSE;
130
131 case QUASI88_LOOP_ONE: /* 1�ե졼��в� */
132 #if 0
133 {
134 static int i = 0, j=0;
135 if (++j > 55) {
136 printf( "%d\n", i );
137 i++;
138 j=0;
139 }
140 }
141 #endif
142 return TRUE;
143
144 case QUASI88_LOOP_BUSY: /* ̵�� */
145 default:
146 return TRUE;
147 }
148 }
149
150
151
152 /***********************************************************************
153 * ���ơ��ȥ��ɡ����ơ��ȥ�����
154 ************************************************************************/
155
156 /* ¾�ξ��٤Ƥ����� or �����֤��줿��˸ƤӽФ���롣
157 * ɬ�פ˱����ơ������ƥ��ͭ�ξ�����ղä��Ƥ⤤�����ȡ�
158 */
159
stateload_system(void)160 int stateload_system(void)
161 {
162 return TRUE;
163 }
statesave_system(void)164 int statesave_system(void)
165 {
166 return TRUE;
167 }
168
169
170
171 /***********************************************************************
172 * ��˥塼���̤�ɽ�����롢�����ƥ��ͭ��å�����
173 ************************************************************************/
174
menu_about_osd_msg(int req_japanese,int * result_code,const char * message[])175 int menu_about_osd_msg(int req_japanese,
176 int *result_code,
177 const char *message[])
178 {
179 static const char *about_en =
180 {
181 "Fullscreen mode not supported.\n"
182 "Joystick not supported.\n"
183 };
184
185 static const char *about_jp =
186 {
187 "�ե륹�����ɽ���ϥ��ݡ��Ȥ���Ƥ��ޤ���\n"
188 "���祤���ƥ��å��ϥ��ݡ��Ȥ���Ƥ��ޤ���\n"
189 "�ޥ������������ɽ������ϥ��ݡ��Ȥ���Ƥ��ޤ���\n"
190 "��������ե�������ɤ߹��ߤϥ��ݡ��Ȥ���Ƥ��ޤ���\n"
191 };
192
193
194 *result_code = -1; /* ʸ�������ɻ���ʤ� */
195
196 if (req_japanese == FALSE) {
197 *message = about_en;
198 } else {
199 *message = about_jp;
200 }
201
202 return TRUE;
203 }
204