1 /*
2  * sact.c: SACT
3  *
4  * Copyright (C) 1997-1998 Masaki Chikama (Wren) <chikama@kasumi.ipl.mech.nagoya-u.ac.jp>
5  *               1998-                           <masaki-c@is.aist-nara.ac.jp>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  *
21 */
22 /* $Id: SACT.c,v 1.10 2004/10/31 04:18:02 chikama Exp $ */
23 
24 #include "config.h"
25 
26 #include <stdio.h>
27 #include <string.h>
28 #include <glib.h>
29 
30 #include "portab.h"
31 #include "system.h"
32 #include "imput.h"
33 #include "xsystem35.h"
34 #include "gametitle.h"
35 #include "message.h"
36 #include "nact.h"
37 #include "sact.h"
38 #include "sprite.h"
39 #include "sactcg.h"
40 #include "sactstring.h"
41 #include "sactsound.h"
42 #include "sactbgm.h"
43 #include "sactcrypto.h"
44 #include "sactchart.h"
45 #include "ngraph.h"
46 #include "surface.h"
47 #include "sactamask.h"
48 
49 /*
50   MT���ޥ�ɤ����ꤵ�줿ʸ����ˤ�äơ��С������֤ΰ㤤��ۼ�
51 
52   Version 1.0 : �������쥤�䡼
53           1.1 : Rance5D
54           1.2(����): �ʤߤ�����
55           1.2(���): SACT��ȯ���å�, �����롦���쥤��, NightDemon
56 */
57 
58 /*
59   �ʤߤ�������������
60 
61   ��å����������å�(���ɡ�̤�ɴط��ʤ������å�) -> Ctrl
62   ��ư��å��������� -> A����
63     A�����������Ȥǡ���ưŪ�˥�å�������������ǹԤ��ޤ���(��ư��å�����
64     ���꤬ON�ˤʤ�ȡ���å�����������ɤα����ˤ��������Ԥ���������(>>>>)��
65     �ä��ޤ������������ϡ�����դ⤷���ϲ�����λ�ޤǡ�A��������³����
66     ����������A������Υ�����Ȥ��ˡ������Ԥ��������뤬ɽ�������в�����줿
67     ���Ȥˤʤ�ޤ���
68   �Хå��� -> �ۥ�����
69 */
70 
71 
72 /*
73    wNum ���ϰϤʤɡ������Υ����å��ϳƥ��֥����ƥ��Ǥ��롣
74 
75 
76 ������ǧ����
77   SACT.CreateSprite �Ϥ��θƤФ줿�ִ֤�CG�����Ѥ����
78     ->SACT.Draw�ޤǤ�CG���ѹ�����Ƥ⡢Create����CG�����
79   OutputMessage�ϥ�å�������ɽ������ޤǤ�ɤäƤ��ʤ���
80   QuakeScreen�Ͻ�λ�ޤǤ�ɤäƤ��ʤ���(����ȴ������)
81   ��ư���ԤϤ��ʤ�
82   OutputMessage �����ƻϤ�ƣ�ʸ���Ť������Ԥ���NewLine�ǤϽ��ʤ���
83   ~KEY 2: ��ľ�������Ƥ�SP_MOVE����λ����ޤǥ����å����ץ饤������ȿ�����ʤ�
84   drag��˥����å����ץ饤�Ȥ�ȿ�����ʤ�
85   ���˥᡼������ץ饤�ȤϤĤͤ�ư��
86   �����å����ץ饤�Ȥϡ��ܥ����������֤ǥ��ץ饤��������ä��褿�Ȥ��⡢
87   cg3���Ѳ����롣���ΤȤ��ܥ����Υ���Ƥ� SpriteKeyWait��ȴ���ʤ���
88   �ޤ����ܥ���������ޤޥ��ץ饤�ȳ��˽ФƤ⡢�Ф����cg1���Ѳ�����
89   GETA/B��ե������������CG2�˥ܥ�������CG3��
90   SWPUT�ϥܥ�������ȴ����
91 */
92 
93 
94 // SACT ��Ϣ�ξ���
95 sact_t sactprv;
96 extern char *xsys35_sact01;
97 
98 /**
99  * SACT.Init (1.0~)
100  *   SACT���Τν����
101  */
Init()102 void Init() {
103 	int p1 = getCaliValue(); /* ISys3x */
104 
105 	// �����ॿ���ȥ�ˤ��С����������
106 	if (0 == strcmp(nact->game_title_name, GT_ESUKA)) {
107 		sact.version = 100;
108 	} else if (0 == strcmp(nact->game_title_name, GT_RANCE5D)){
109 		sact.version = 110;
110 	} else {
111 		sact.version = 120;
112 	}
113 
114 	NOTICE("SACT version = %d\n", sact.version);
115 
116 	// �����ɸ����
117 	sact.origin.x = 0;
118 	sact.origin.y = 0;
119 
120 	// �ƥ��֥����ƥ�����
121 	sp_init();
122 	sstr_init();
123 	ssel_init();
124 	stimer_init();
125 	ssnd_init();
126 
127 	if (nact->files.sact01) {
128 		smask_init(nact->files.sact01);
129 	}
130 
131 	// create depth map
132 	sact.dmap = sf_create_pixel(sf0->width, sf0->height, 16);
133 
134 	// ����¾ System35 �Υǥե����ư����ѹ�
135 	nact->ags.font->antialiase_on = TRUE;
136 	sys_setHankakuMode(2); // ����Ⱦ���Ѵ�̵��
137 	ags_autorepeat(FALSE); // key auto repeat off
138 
139 	if (sact.version >= 120) {
140 		sact.logging = TRUE;
141 	} else {
142 		sact.logging = FALSE;
143 	}
144 
145 	DEBUG_COMMAND("SACT.Init %d:\n", p1);
146 }
147 
148 /**
149  * SACT.CreateSprite (1.0~)
150  *   ���ץ饤�Ⱥ���
151  *   @param wNum: ���ץ饤���ֹ�
152  *   @param wNumCG1: �̾�ɽ������ã��ֹ�
153  *   @param wNumCG2: �ޥ������������Ťͤ��Ȥ��Σã��ֹ�
154  *   @param wNumCG3: ����å������Ȥ��Σã��ֹ�
155  *   @param wType: ���ץ饤�ȤΥ�����
156  */
CreateSprite()157 void CreateSprite() {
158 	int wNum    = getCaliValue();
159 	int wNumCG1 = getCaliValue();
160 	int wNumCG2 = getCaliValue();
161 	int wNumCG3 = getCaliValue();
162 	int wType   = getCaliValue();
163 
164 	sp_new(wNum, wNumCG1, wNumCG2, wNumCG3, wType);
165 
166 	DEBUG_COMMAND_YET("SACT.CreateSprite %d,%d,%d,%d,%d:\n", wNum, wNumCG1, wNumCG2, wNumCG3, wType);
167 }
168 
169 /**
170  * SACT.CreateTextSprite (1.0~)
171  *   ��å�������ɽ�����륹�ץ饤�Ȥκ���
172  *   @param wNum: ���ץ饤���ֹ�
173  *   @param wX: ɽ�����֤Σغ�ɸ
174  *   @param wY: ɽ�����֤Σٺ�ɸ
175  *   @param wWidth: ���ץ饤�Ȥ���
176  *   @param wHeight: ���ץ饤�Ȥι⤵
177  */
CreateTextSprite()178 void CreateTextSprite() {
179 	int wNum = getCaliValue();
180 	int wX   = getCaliValue();
181 	int wY   = getCaliValue();
182 	int wWidth  = getCaliValue();
183 	int wHeight = getCaliValue();
184 
185 	sp_new_msg(wNum, wX, wY, wWidth, wHeight);
186 
187 	DEBUG_COMMAND_YET("SACT.CreateTextSprite %d,%d,%d,%d,%d:\n", wNum, wX, wY, wWidth, wHeight);
188 }
189 
190 /**
191  * SACT.SetWallPaper (1.0~)
192  *   �ɻ�(�����ط�)�Ȥ���ɽ������ãǤ�����
193  *   @param wNum: �ɻ�(�ط�)�Ȥ���ɽ������ãǤ��ֹ�
194  */
SetWallPaper()195 void SetWallPaper() {
196 	int wNum = getCaliValue();
197 
198 	sp_set_wall_paper(wNum);
199 
200 	DEBUG_COMMAND_YET("SACT.SetWallPaper %d:\n", wNum);
201 }
202 
203 /**
204  * SACT.Clear (1.0~)
205  *   �����ץ饤�Ⱥ��(~SP_CLR)
206  */
Clear()207 void Clear() {
208 	sp_free_all();
209 
210 	DEBUG_COMMAND_YET("SACT.Clear:\n");
211 }
212 
213 /**
214  * SACT.Delete (1.0~)
215  *   ���ץ饤�Ȥκ��
216  *   @param wNum: ������륹�ץ饤���ֹ�
217  */
Delete()218 void Delete() {
219 	int wNum = getCaliValue();
220 
221 	sp_free(wNum);
222 
223 	DEBUG_COMMAND_YET("SACT.Delete %d:\n", wNum);
224 }
225 
226 /**
227  * SACT.SpriteDeleteCount (1.0~)
228  *   wNum�֤���wCount�Ĥ��ϰϤΥ��ץ饤�Ȥκ��
229  *   @param wNum: ��Ƭ���ץ饤���ֹ�
230  *   @param wCount: �ϰ�
231  */
SpriteDeleteCount()232 void SpriteDeleteCount() {
233 	int wNum   = getCaliValue();
234 	int wCount = getCaliValue();
235 	int i;
236 
237 	for (i = wNum; i < (wNum + wCount); i++) {
238 		sp_free(i);
239 	}
240 
241 	DEBUG_COMMAND_YET("SACT.SpriteDeleteCount %d,%d:\n", wNum, wCount);
242 }
243 
244 /**
245  * SACT.Draw (1.0~)
246  *   �������ꤵ��Ƥ��륹�ץ饤�Ⱦ��֤���̤�ȿ��(~SP_UPDATE)
247  */
Draw()248 void Draw() {
249 	sp_update_all(TRUE);
250 
251 	DEBUG_COMMAND_YET("SACT.Draw:\n");
252 }
253 
254 /**
255  * SCAT.DrawEffect (1.0~)
256  *   ���̻����դ����̹���
257  *   @param wType: ���ե����ȥ�����
258  *   @param wEffectTime: ���ե����Ȥλ���(1/100��ñ��)
259  *   @param wEffectKey: ����ȴ������ (1.1~) (1��ͭ��)
260  */
DrawEffect()261 void DrawEffect() {
262 	int wType       = getCaliValue();
263 	int wEffectTime = getCaliValue();
264 	int wEffectkey = 1;
265 
266 	if (sact.version >= 110) {
267 		wEffectkey = getCaliValue();
268 	}
269 
270 	sp_eupdate(wType, wEffectTime, wEffectkey);
271 
272 	DEBUG_COMMAND_YET("SACT.DrawEffect %d,%d,%d:\n", wType, wEffectTime, wEffectkey);
273 }
274 
275 /**
276  * SCAT.DrawEffectAlphaMap (1.1~)
277  *   ���ޥ����Ĥ����̹���
278  *   @param nIndexAlphaMap: �ޥ������ֹ�
279  *   @param wEffectTime: ���ե����Ȥλ���(1/100��ñ��)
280  *   @param wEffectKey: ����ȴ������
281  */
DrawEffectAlphaMap()282 void DrawEffectAlphaMap() {
283 	int nIndexAlphaMap = getCaliValue();
284 	int wEffectTime = getCaliValue();
285 	int wEffectKey  = getCaliValue();
286 
287 	sp_eupdate_amap(nIndexAlphaMap, wEffectTime, wEffectKey);
288 
289 	DEBUG_COMMAND_YET("SACT.DrawEffectAlphaMap %d,%d,%d:\n", nIndexAlphaMap, wEffectTime, wEffectKey);
290 }
291 
292 /**
293  * SCAT.QuakeScreen (1.0~)
294  *   �����ɤ餷
295  *   @param wType: 0=�IJ�, 1:��ž
296  *   @param wParam1: wType=0�ΤȤ�x�����ο���
297  *                   wType=1�ΤȤ�����
298  *   @param wParam2: wType=0�ΤȤ�y�����ο���
299  *                   wType=1�ΤȤ���ž��
300  *   @param wCount: ����(1/100��)
301  *   @param nfKeyEnable: ����ȴ�� (1��ͭ��) (1.1~)
302  */
QuakeScreen()303 void QuakeScreen() {
304 	int wType   = getCaliValue();
305 	int wParam1 = getCaliValue();
306 	int wParam2 = getCaliValue();
307 	int wCount  = getCaliValue();
308 	int nfKeyEnable = 1;
309 
310 	if (sact.version >= 110) {
311 		nfKeyEnable = getCaliValue();
312 	}
313 
314 	sp_quake_screen(wType, wParam1, wParam2, wCount, nfKeyEnable);
315 
316 	DEBUG_COMMAND_YET("SACT.QuakeScreen %d,%d,%d,%d,%d:\n", wType, wParam1, wParam2, wCount, nfKeyEnable);
317 }
318 
319 /**
320  * SACT.SetOrigin (1.0~)
321  *   ����ɸ�ѹ�
322  *   @param wX: �����ˤ���غ�ɸ�ΰ���
323  *   @param wY: �����ˤ���ٺ�ɸ�ΰ���
324  */
SetOrigin()325 void SetOrigin() {
326 	int wX = getCaliValue();
327 	int wY = getCaliValue();
328 
329 	sact.origin.x = wX;
330 	sact.origin.y = wY;
331 
332 	DEBUG_COMMAND_YET("SACT.SetOrigin %d,%d:\n", wX, wY);
333 }
334 
335 /**
336  * SACT.SetShow (1.0~)
337  *   ���ץ饤�Ȥ�ɽ�����֤��ѹ�
338  *   @param wNum: ��Ƭ�Υ��ץ饤���ֹ�
339  *   @param wCount: ɽ������Ŀ�
340  *   @param wShow: 0:��ɽ��, 1:ɽ��
341  */
SetShow()342 void SetShow() {
343 	int wNum   = getCaliValue();
344 	int wCount = getCaliValue();
345 	int wShow  = getCaliValue();
346 
347 	sp_set_show(wNum, wCount, wShow);
348 
349 	DEBUG_COMMAND_YET("SACT.SetShow %d,%d,%d:\n", wNum, wCount, wShow);
350 }
351 
352 /**
353  * SACT.SetBlendRate (1.1~)
354  *   ���ץ饤�Ȥ�ɽ�����֤��ѹ�
355  *   @param wNum: ��Ƭ�Υ��ץ饤���ֹ�
356  *   @param wCount: ɽ������Ŀ�
357  *   @param nBlendRate: �֥���Ψ
358  */
SetBlendRate()359 void SetBlendRate() {
360 	int wNum   = getCaliValue();
361 	int wCount = getCaliValue();
362 	int nBlendRate  = getCaliValue();
363 
364 	sp_set_blendrate(wNum, wCount, nBlendRate);
365 
366 	DEBUG_COMMAND_YET("SACT.SetBlendRate %d,%d,%d:\n", wNum, wCount, nBlendRate);
367 }
368 
369 /**
370  * SACT.SetPos (1.0~)
371  *   ���ץ饤�Ȥ�ɽ�����֤�����(�ѹ�)
372  *   @param wNum: ���ץ饤���ֹ�
373  *   @param wX: ɽ���غ�ɸ
374  *   @param wY: ɽ���ٺ�ɸ
375  */
SetPos()376 void SetPos() {
377 	int wNum = getCaliValue();
378 	int wX  = getCaliValue();
379 	int wY  = getCaliValue();
380 
381 	sp_set_pos(wNum, wX, wY);
382 
383 	DEBUG_COMMAND_YET("SACT.SetPos %d,%d,%d:\n", wNum, wX, wY);
384 }
385 
386 /**
387  * SACT.SetMove (1.0~)
388  *   ���ץ饤�Ȥΰ�ư (�����˽������᤹)
389  *   @param wNum: ���ץ饤���ֹ�
390  *   @param wX: ɽ���غ�ɸ
391  *   @param wY: ɽ���ٺ�ɸ
392  */
SetMove()393 void SetMove() {
394 	int wNum = getCaliValue();
395 	int wX   = getCaliValue();
396 	int wY   = getCaliValue();
397 
398 	sp_set_move(wNum, wX, wY);
399 
400 	DEBUG_COMMAND_YET("SACT.SetMove %d,%d,%d:\n", wNum, wX, wY);
401 }
402 
403 /**
404  * SACT.SetMoveTime (1.0~)
405  *   SetMove�ˤ�륹�ץ饤�Ȱ�ư�λ��֤�����
406  *   @param wNum: ���ץ饤���ֹ�
407  *   @param wTime: ��ư��λ����ޤǤλ���(1/100��ñ��)
408  */
SetMoveTime()409 void SetMoveTime() {
410 	int wNum  = getCaliValue();
411 	int wTime = getCaliValue();
412 
413 	sp_set_movetime(wNum, wTime);
414 
415 	DEBUG_COMMAND_YET("SACT.SetMoveTime %d,%d:\n", wNum, wTime);
416 }
417 
418 /**
419  * SACT.SetMoveSpeed (1.0~)
420  *   SetMove�ˤ�륹�ץ饤�Ȱ�ư��®�٤�����
421  *   @param wNum: ���ץ饤���ֹ�
422  *   @param wSpeed: ��ư®��(�ǥե���Ȥ�100%�Ȥ���%����)
423  */
SetMoveSpeed()424 void SetMoveSpeed() {
425 	int wNum   = getCaliValue();
426 	int wSpeed = getCaliValue();
427 
428 	sp_set_movespeed(wNum, wSpeed);
429 
430 	DEBUG_COMMAND_YET("SACT.SetMoveSpeed %d,%d:\n", wNum, wSpeed);
431 }
432 
433 /**
434  * SACT.SetMoveSpeedCount (1.0~)
435  *   ʣ���Υ��ץ饤�Ȥ��Ф��륹�ץ饤�Ȱ�ư��®�٤�����
436  *   @param wNum: ��Ƭ���ץ饤���ֹ�
437  *   @param wCount: �ϰ�
438  *   @param wSpeed: ��ư®��(�ǥե���Ȥ�100%�Ȥ���%����)
439  */
SetMoveSpeedCount()440 void SetMoveSpeedCount() {
441 	int wNum   = getCaliValue();
442 	int wCount = getCaliValue();
443 	int wSpeed = getCaliValue();
444 	int i;
445 
446 	for (i = wNum; i < (wNum + wCount); i++) {
447 		sp_set_movespeed(i, wSpeed);
448 	}
449 
450 	DEBUG_COMMAND_YET("SACT.SetMoveSpeedCount %d,%d,%d:\n", wNum, wCount, wSpeed);
451 }
452 
453 /**
454  * SACT.SetSpriteAnimeTimeInterval (1.1~)
455  *   ʣ���Υ��ץ饤�Ȥ��Ф��륢�˥᡼������ץ饤�Ȥδֳ�
456  *   @param wNum: ��Ƭ���ץ饤���ֹ�
457  *   @param wCount: �ϰ�
458  *   @param nTime: �ֳ�
459  */
SetSpriteAnimeTimeInterval()460 void SetSpriteAnimeTimeInterval() {
461 	int wNum   = getCaliValue();
462 	int wCount = getCaliValue();
463 	int nTime  = getCaliValue();
464 	int i;
465 
466 	for (i = wNum; i < (wNum + wCount); i++) {
467 		sp_set_animeinterval(i, nTime);
468 	}
469 
470 	DEBUG_COMMAND_YET("SACT.SetSpriteAnimeTimeInterval %d,%d,%d:\n", wNum, wCount, nTime);
471 }
472 
473 /**
474  * SACT.AddZKeyHideSprite (1.0~)
475  *   ���������Ԥ���Z�����������줿�Ȥ���ɽ��OFF�ˤʤ륹�ץ饤�Ȥ���Ͽ
476  *   @param wNum: ���ץ饤���ֹ�
477  */
AddZKeyHideSprite()478 void AddZKeyHideSprite() {
479 	int wNum = getCaliValue();
480 
481 	sp_add_zkey_hidesprite(wNum);
482 
483 	DEBUG_COMMAND_YET("SACT.AddZKeyHideSprite %d:\n", wNum);
484 }
485 
486 /**
487  * SACT.ClearZKeyHideSprite (1.0~)
488  *   AddZKeyHideSprite����Ͽ�������ץ饤���ֹ�����ƥ��ꥢ
489  */
ClearZKeyHideSprite()490 void ClearZKeyHideSprite() {
491 	sp_clear_zkey_hidesprite_all();
492 
493 	DEBUG_COMMAND_YET("SACT.ClearZKeyHideSprite:\n");
494 }
495 
496 /**
497  * SACT.SpriteFreeze (1.0~)
498  *   ���ץ饤�ȥ����å���wIndex�ξ��֤Ǹ��ꤷ��~KEY 2:�ʤɤ�ȿ�����ʤ�
499  *   �褦�ˤ���
500  *   @param wNum: ���ץ饤���ֹ�
501  *   @param wIndex: ���ꤹ������ֹ�(1-3)
502  */
SpriteFreeze()503 void SpriteFreeze() {
504 	int wNum   = getCaliValue();
505 	int wIndex = getCaliValue();
506 
507 	sp_freeze_sprite(wNum, wIndex);
508 
509 	DEBUG_COMMAND_YET("SACT.SpriteFreeze %d,%d:\n", wNum, wIndex);
510 }
511 
512 /**
513  * SACT.SpriteThaw (1.0~)
514  *   Freeze�������ץ饤�Ⱦ��֤���
515  *   @param wNum: ���ץ饤���ֹ�
516  */
SpriteThaw()517 void SpriteThaw() {
518 	int wNum = getCaliValue();
519 
520 	sp_thaw_sprite(wNum);
521 
522 	DEBUG_COMMAND_YET("SACT.SpriteThaw %d:\n", wNum);
523 }
524 
525 /**
526  * SACT.SpriteFreezeCount (1.0~)
527  *   ʣ���Υ��ץ饤�Ȥ�Freeze����
528  *   @param wNum: ��Ƭ���ץ饤���ֹ�
529  *   @param wCount: �ϰ�
530  *   @param wIndex: ���ꤹ������ֹ�
531  */
SpriteFreezeCount()532 void SpriteFreezeCount() {
533 	int wNum   = getCaliValue();
534 	int wCount = getCaliValue();
535 	int wIndex = getCaliValue();
536 	int i;
537 
538 	for (i = wNum; i < (wNum + wCount); i++) {
539 		sp_freeze_sprite(i, wIndex);
540 	}
541 
542 	DEBUG_COMMAND_YET("SACT.SpriteFreezeCount %d,%d,%d:\n", wNum, wCount, wIndex);
543 }
544 
545 /**
546  * SACT.SpriteThawCount (1.0~)
547  *    ʣ����Freeze���ץ饤�Ⱦ��֤β��
548  *    @param wNum: ��Ƭ���ץ饤���ֹ�
549  *    @param wCount: �ϰ�
550  */
SpriteThawCount()551 void SpriteThawCount() {
552 	int wNum   = getCaliValue();
553 	int wCount = getCaliValue();
554 	int i;
555 
556 	for (i = wNum; i < (wNum + wCount); i++) {
557 		sp_thaw_sprite(i);
558 	}
559 
560 	DEBUG_COMMAND_YET("SACT.SpriteThawCount %d,%d:\n", wNum, wCount);
561 }
562 
563 /**
564  * SACT.QuakeSpriteAdd (1.0~)
565  *   QuakeSprite���ɤ餹���ץ饤�Ȥ��ɲ�
566  *   @param wNum: ���ץ饤���ֹ�
567  */
QuakeSpriteAdd()568 void QuakeSpriteAdd() {
569 	int wNum = getCaliValue();
570 
571 	sp_add_quakesprite(wNum);
572 
573 	DEBUG_COMMAND_YET("SACT.QuakeSpriteAdd %d:\n", wNum);
574 }
575 
576 /**
577  * SACT.QuakeSpriteReset (1.0~)
578  *   QuakeSpriteAdd����������Ʋ��
579  */
QuakeSpriteReset()580 void QuakeSpriteReset() {
581 	sp_clear_quakesprite_all();
582 	DEBUG_COMMAND_YET("SACT.QuakeSpriteReset:\n");
583 }
584 
585 /**
586  * SACT.QuakeSprite (1.0~)
587  *   QuakeSpriteAdd�����ꤷ�����ץ饤�Ȥ��ɤ餹
588  *   @param wType: 0:�IJ�(���ƤΥ��ץ饤�Ȥ�Ʊ���褦���ɤ餹)
589  *                 1:�IJ�(���ƤΥ��ץ饤�Ȥ�Х�Х���ɤ餹)
590  *   @param wAmplitudeX: �������ο���
591  *   @param wAmplitudeY: �������ο���
592  *   @param wCount: ����(1/100��)
593  *   @param nfKeyEnable: (1.1~): ����������뤢��(=1)
594  */
QuakeSprite()595 void QuakeSprite() {
596 	int wType       = getCaliValue();
597 	int wAmplitudeX = getCaliValue();
598 	int wAmplitudeY = getCaliValue();
599 	int wCount      = getCaliValue();
600 	int nfKeyEnable = 0;
601 
602 	if (sact.version >= 110) {
603 		nfKeyEnable = getCaliValue();
604 	}
605 
606 	sp_quake_sprite(wType, wAmplitudeX, wAmplitudeY, wCount, nfKeyEnable);
607 
608 	DEBUG_COMMAND_YET("SACT.QuakeSprite %d,%d,%d,%d:\n", wType, wAmplitudeX, wAmplitudeY, wCount);
609 }
610 
611 /**
612  * SACT.QuerySpriteIsExist (1.0~)
613  *  ����Υ��ץ饤�Ȥ���Ͽ����Ƥ��뤫�ɤ��������
614  *  @param wNum: ���ץ饤���ֹ�
615  *  @param var: ��Ͽ���֤��֤��ѿ� 0: ̤��Ͽ, 1:����Ͽ
616  */
QuerySpriteIsExist()617 void QuerySpriteIsExist() {
618 	int wNum = getCaliValue();
619 	int *var = getCaliVariable();
620 
621 	sp_query_isexist(wNum, var);
622 
623 	DEBUG_COMMAND_YET("SACT.QuerySpriteIsExist %d,%p:\n", wNum, var);
624 }
625 
626 /**
627  * SACT.QuerySpriteInfo (1.0~)
628  *   ���ץ饤�Ȥξ�������
629  *   @param wNum: ���ץ饤���ֹ�
630  *   @param vType: ���ץ饤�ȥ����ס��ƥ����ȥ��ץ饤�Ȥξ���100
631  *   @param vCG1: �ãǣ�(�ʤ����ϣ�)
632  *   @param vCG2: �ãǣ�(�ʤ����ϣ�)
633  *   @param vCG3: �ãǣ�(�ʤ����ϣ�)
634  */
QuerySpriteInfo()635 void QuerySpriteInfo() {
636 	int wNum   = getCaliValue();
637 	int *vType = getCaliVariable();
638 	int *vCG1  = getCaliVariable();
639 	int *vCG2  = getCaliVariable();
640 	int *vCG3  = getCaliVariable();
641 
642 	sp_query_info(wNum, vType, vCG1, vCG2, vCG3);
643 
644 	DEBUG_COMMAND_YET("SACT.QuerySpriteInfo %d,%p,%p,%p,%p:\n", wNum, vType, vCG1, vCG2, vCG3);
645 }
646 
647 /**
648  * SACT.QuerySpriteShow (1.0~)
649  *   ���ץ饤�Ȥ�ɽ������(SP_SHOW����)�����
650  *   @param wNum: ���ץ饤���ֹ�
651  *   @param vShow: 0:��ɽ��, 1:ɽ��
652  */
QuerySpriteShow()653 void QuerySpriteShow() {
654 	int wNum = getCaliValue();
655 	int *vShow = getCaliVariable();
656 
657 	sp_query_show(wNum, vShow);
658 
659 	DEBUG_COMMAND_YET("SACT.QuerySpriteShow %d,%p:\n", wNum, vShow);
660 }
661 
662 /**
663  * SACT.QuerySpritePos (1.0~)
664  *   ���ץ饤�Ȥ�ɽ�����֤μ���
665  *   @param wNum: ���ץ饤���ֹ�
666  *   @param vX: �غ�ɸ
667  *   @param vY: �ٺ�ɸ
668  */
QuerySpritePos()669 void QuerySpritePos() {
670 	int wNum = getCaliValue();
671 	int *vX  = getCaliVariable();
672 	int *vY  = getCaliVariable();
673 
674 	sp_query_pos(wNum, vX, vY);
675 
676 	DEBUG_COMMAND_YET("SACT.QuerySpritePos %d,%p,%p:\n", wNum, vX, vY);
677 }
678 
679 /**
680  * SACT.QuerySpriteSize (1.0~)
681  *   ���ץ饤�Ȥ��礭���μ���
682  *   @param wNum: ���ץ饤���ֹ�
683  *   @param vWidth: ���ץ饤�Ȥ���
684  *   @param vHeight: ���ץ饤�Ȥι⤵
685  */
QuerySpriteSize()686 void QuerySpriteSize() {
687 	int wNum     = getCaliValue();
688 	int *vWidth  = getCaliVariable();
689 	int *vHeight = getCaliVariable();
690 
691 	sp_query_size(wNum, vWidth, vHeight);
692 
693 	DEBUG_COMMAND_YET("SACT.QuerySpriteSize %d,%p,%p:\n", wNum, vWidth, vHeight);
694 }
695 
696 /**
697  * SACT.QueryTextPos (1.2~)
698  *   ��å��������ץ饤�Ȥ�ʸ������
699  *   @param nMesSpID:
700  *   @param pwX:
701  *   @param pwY:
702  */
QueryTextPos()703 void QueryTextPos() {
704 	int wNum = getCaliValue();
705 	int *vX  = getCaliVariable();
706 	int *vY  = getCaliVariable();
707 
708 	sp_query_textpos(wNum, vX, vY);
709 
710 	DEBUG_COMMAND_YET("SACT.QueryTextPos %d,%p,%p:\n", wNum, vX, vY);
711 }
712 
713 /**
714  * SCAT.CG_Clear (1.0~)
715  *   CG_Create�Ǻ�������CG�����ƺ��
716  */
CG_Clear()717 void CG_Clear() {
718 	scg_freeall();
719 
720 	DEBUG_COMMAND_YET("SACT.CG_Clear:\n");
721 }
722 
723 /**
724  * SACT.CG_Reset (1.0~)
725  *   CG_Create�Ǻ�������CG����
726  *   @param wNumCG: �������CG�ֹ�
727  */
CG_Reset()728 void CG_Reset() {
729 	int wNumCG = getCaliValue();
730 
731 	scg_free(wNumCG);
732 
733 	DEBUG_COMMAND_YET("SACT.CG_Reset %d:\n", wNumCG);
734 }
735 
736 /**
737  * SACT.CG_QueryType (1.0~)
738  *   CG�ξ���(CG�Υ�����)�����
739  *   @param wNumCG: CG�ֹ�
740  *   @param vType: CG�μ���, 0: ̤����, 1:�������Ƥ���, 2: CG_SET�Ǻ���
741  *                 3: CG_REVERSE�Ǻ���, 4: CG_STRETCH�Ǻ���
742  */
CG_QueryType()743 void CG_QueryType() {
744 	int wNumCG = getCaliValue();
745 	int *vType = getCaliVariable();
746 
747 	scg_querytype(wNumCG, vType);
748 
749 	DEBUG_COMMAND_YET("SACT.CG_QueryType %d,%p:\n", wNumCG, vType);
750 }
751 
752 /**
753  * SACT.CG_QuerySize (1.0~)
754  *   CG���礭�������
755  *   @param wNumCG: CG�ֹ�
756  *   @param vWidth: ��
757  *   @param vHeight: �⤵
758  */
CG_QuerySize()759 void CG_QuerySize() {
760 	int wNumCG   = getCaliValue();
761 	int *vWidth  = getCaliVariable();
762 	int *vHeight = getCaliVariable();
763 
764 	scg_querysize(wNumCG, vWidth, vHeight);
765 
766 	DEBUG_COMMAND_YET("SACT.CG_QuerySize %d,%p,%p:\n", wNumCG, vWidth, vHeight);
767 }
768 
769 /**
770  * SACT.CG_QueryBpp (1.0~)
771  *   CG��bpp�����
772  *   @param wNumCG: CG�ֹ�
773  *   @param vBpp: CG��bpp
774  */
CG_QueryBpp()775 void CG_QueryBpp() {
776 	int wNumCG = getCaliValue();
777 	int *vBpp  = getCaliVariable();
778 
779 	scg_querybpp(wNumCG, vBpp);
780 
781 	DEBUG_COMMAND_YET("SACT.CG_QueryBpp %d,%p:\n", wNumCG, vBpp);
782 }
783 
784 /**
785  * SACT.CG_ExistAlphaMap (1.0~)
786  *   CG�Φ��ޥå�(�ޥ���)������У����ʤ���У�
787  *   @param wNumCG: CG�ֹ�
788  *   @param vMask: 0/1
789  */
CG_ExistAlphaMap()790 void CG_ExistAlphaMap() {
791 	int wNumCG = getCaliValue();
792 	int *vMask = getCaliVariable();
793 
794 	scg_existalphamap(wNumCG, vMask);
795 
796 	DEBUG_COMMAND_YET("SACT.CG_ExistAlphaMap %d,%p:\n", wNumCG, vMask);
797 }
798 
799 /**
800  * SACT.CG_Create (1.0~)
801  *   ���ꥵ�����������֥���Ψ�λͳѤ�ɽ������
802  *   @param wNumCG: CG�ֹ�
803  *   @param wWidth: ��
804  *   @param wHeight: �⤵
805  *   @param wR: RGB�ͤ���(0-255)
806  *   @param wG: RGB�ͤ���(0-255)
807  *   @param wB: RGB�ͤ���(0-255)
808  *   @param wBlendRate: �֥���Ψ(0-255)
809  */
CG_Create()810 void CG_Create() {
811 	int wNumCG     = getCaliValue();
812 	int wWidth     = getCaliValue();
813 	int wHeight    = getCaliValue();
814 	int wR         = getCaliValue();
815 	int wG         = getCaliValue();
816 	int wB         = getCaliValue();
817 	int wBlendRate = getCaliValue();
818 
819 	scg_create(wNumCG, wWidth, wHeight, wR, wG, wB, wBlendRate);
820 
821 	DEBUG_COMMAND_YET("SACT.CG_Create %d,%d,%d,%d,%d,%d,%d:\n", wNumCG, wWidth, wHeight, wR, wG, wB, wBlendRate);
822 }
823 
824 /**
825  * SACT,CG_CreateReverse (1.0~)
826  *   ���ˤʤ�CG��ȿž����CG���������
827  *   @param wNumCG: CG�ֹ�
828  *   @param wNumSrcCG: ���ԡ��θ��ˤʤ�CG���ֹ�
829  *   @param wReverseX: X������ȿž�����å�(0:ȿž���ʤ���1:ȿž����)
830  *   @param wReverseY: Y������ȿž�����å�(0:ȿž���ʤ���1:ȿž����)
831  */
CG_CreateReverse()832 void CG_CreateReverse() {
833 	int wNumCG = getCaliValue();
834 	int wNumSrcCG = getCaliValue();
835 	int wReverseX = getCaliValue();
836 	int wReverseY = getCaliValue();
837 
838 	scg_create_reverse(wNumCG, wNumSrcCG, wReverseX, wReverseY);
839 
840 	DEBUG_COMMAND_YET("SACT.CG_CreateReverse %d,%d,%d,%d:\n", wNumCG, wNumSrcCG, wReverseX, wReverseY);
841 }
842 
843 /**
844  * SACT.CG_CreateStretch (1.0~)
845  *   ���ˤʤ�CG�����⤷���Ͻ̾�����CG���������
846  *   @param wNumCG: CG�ֹ�
847  *   @param wWidth: ��������CG����
848  *   @param wHeight: ��������CG�ι⤵
849  *   @param wNumSrcCG: ���ˤʤ�CG���ֹ�
850  */
CG_CreateStretch()851 void CG_CreateStretch() {
852 	int wNumCG    = getCaliValue();
853 	int wWidth    = getCaliValue();
854 	int wHeight   = getCaliValue();
855 	int wNumSrcCG = getCaliValue();
856 
857 	scg_create_stretch(wNumCG, wWidth, wHeight, wNumSrcCG);
858 
859 	DEBUG_COMMAND_YET("SACT.CG_CreateStretch %d,%d,%d,%d:\n", wNumCG, wWidth, wHeight, wNumSrcCG);
860 }
861 
862 /**
863  * SACT.CG_CreateBlend (1.0~)
864  *   �����CG�����ͤ��碌��CG�����
865  *   @param wNumDstCG: CG�ֹ�(������)
866  *   @param wNumBaseCG: �Ť͹�碌�Τ�ȤȤʤ�CG
867  *   @param wX: �Ť͹�碌����֤Σغ�ɸ
868  *   @param wY: �Ť͹�碌����֤Σٺ�ɸ
869  *   @param wNumBlendCG: ��˽Ť͹�碌��CG
870  *   @param wAlphaMapMode: ���ޥåפκ����⡼��
871  */
CG_CreateBlend()872 void CG_CreateBlend() {
873 	int wNumDstCG  = getCaliValue();
874 	int wNumBaseCG = getCaliValue();
875 	int wX = getCaliValue();
876 	int wY = getCaliValue();
877 	int wNumBlendCG   = getCaliValue();
878 	int wAlphaMapMode = getCaliValue();
879 
880 	DEBUG_COMMAND_YET("SACT.CG_CreateBlend %d,%d,%d,%d,%d,%d:\n", wNumDstCG, wNumBaseCG, wX, wY, wNumBlendCG, wAlphaMapMode);
881 	scg_create_blend(wNumDstCG, wNumBaseCG, wX, wY, wNumBlendCG, wAlphaMapMode);
882 
883 }
884 
885 /**
886  * SACT.CG_CreateText (1.0~)
887  *   ʸ������CG�����
888  *   @param wNumCG: ��������CG�ֹ�
889  *   @param wSize: ʸ���ι⤵(pixel)
890  *   @param wR: ʸ����R��(0-255)
891  *   @param wG: ʸ����G��(0-255)
892  *   @param wB: ʸ����B��(0-255)
893  *   @param wText: ���褹��ʸ�����ѿ����ֹ�
894  */
CG_CreateText()895 void CG_CreateText() {
896 	int wNumCG = getCaliValue();
897 	int wSize  = getCaliValue();
898 	int wR     = getCaliValue();
899 	int wG     = getCaliValue();
900 	int wB     = getCaliValue();
901 	int wText  = getCaliValue();
902 
903 	scg_create_text(wNumCG, wSize, wR, wG, wB, wText);
904 
905 	DEBUG_COMMAND_YET("SACT.CG_CreateText %d,%d,%d,%d,%d,%d:\n", wNumCG, wSize, wR, wG, wB, wText);
906 }
907 
908 /**
909  * SACT.CG_CreateTextNum (1.0~)
910  *   ���ͤ��饷���ƥ�ƥ����Ȥ�CG�����
911  *   @param wNumCG: ��������CG�ֹ�
912  *   @param wSize: ʸ���ι⤵(pixel)
913  *   @param wR: ʸ����R��(0-255)
914  *   @param wG: ʸ����G��(0-255)
915  *   @param wB: ʸ����B��(0-255)
916  *   @param wFigs: ���
917  *   @param wZeroPadding: ����������ʤ���ʬ�������뤫�ɤ����Υե饰
918  *                        0:������ᤷ�ʤ� 1:������᤹��
919  *   @param wValue: ���褹����
920  */
CG_CreateTextNum()921 void CG_CreateTextNum() {
922 	int wNumCG       = getCaliValue();
923 	int wSize        = getCaliValue();
924 	int wR           = getCaliValue();
925 	int wG           = getCaliValue();
926 	int wB           = getCaliValue();
927 	int wFigs        = getCaliValue();
928 	int wZeroPadding = getCaliValue();
929 	int wValue       = getCaliValue();
930 
931 	scg_create_textnum(wNumCG, wSize, wR, wG, wB, wFigs, wZeroPadding, wValue);
932 
933 	DEBUG_COMMAND_YET("SACT.CG_CreateTextNum %d,%d,%d,%d,%d,%d,%d,%d:\n", wNumCG, wSize, wR, wG, wB, wFigs, wZeroPadding, wValue);
934 }
935 
936 /**
937  * SACT.CG_Copy (1.0~)
938  *   CG��ʣ��
939  *   @param wNumDst: ʣ�����CG�ֹ�
940  *   @param wNumSrc: ʣ�̸���CG�ֹ�
941  */
CG_Copy()942 void CG_Copy() {
943 	int wNumDst = getCaliValue();
944 	int wNumSrc = getCaliValue();
945 
946 	scg_copy(wNumDst, wNumSrc);
947 
948 	DEBUG_COMMAND_YET("SACT.CG_Copy %d,%d:\n", wNumDst, wNumSrc);
949 }
950 
951 /**
952  * SACT.CG_Cut (1.0~)
953  *   ����CG�ΰ������ڤ�̤���CG�����
954  *   @param wNumDstCG: CG�ֹ�(������)
955  *   @param wNumSrcCG: CG�ֹ�(���åȸ�)
956  *   @param wX: ���åȳ��ϣغ�ɸ
957  *   @param wY: ���åȳ��ϣٺ�ɸ
958  *   @param wWidth: ���å���
959  *   @param wHeight: ���åȹ⤵
960  */
CG_Cut()961 void CG_Cut() {
962 	int wNumDstCG = getCaliValue();
963 	int wNumSrcCG = getCaliValue();
964 	int wX = getCaliValue();
965 	int wY = getCaliValue();
966 	int wWidth  = getCaliValue();
967 	int wHeight = getCaliValue();
968 
969 	scg_cut(wNumDstCG, wNumSrcCG, wX, wY, wWidth, wHeight);
970 
971 	DEBUG_COMMAND_YET("SACT.CG_Cut %d,%d,%d,%d,%d,%d:\n", wNumDstCG, wNumSrcCG, wX, wY, wWidth, wHeight);
972 }
973 
974 /**
975  * SACT.CG_PartCopy (1.0~)
976  *   ����CG�ΰ������ڤ�̤���CG�������CG�Υ��������ΤϤ�ȤΤޤޤǡ�
977  *   �ޥ����ǡ����Τߤ�������Ƹ��ݤ���Υ��������Ѳ�������
978  *   @param wNumDstCG: CG�ֹ�(������)
979  *   @param wNumSrcCG: CG�ֹ�(��)
980  *   @param wX: ���ϣغ�ɸ
981  *   @param wY: ���ϣٺ�ɸ
982  *   @param wWidth: ���å���
983  *   @param wHeight: ���åȹ⤵
984  */
CG_PartCopy()985 void CG_PartCopy() {
986 	int wNumDstCG = getCaliValue();
987 	int wNumSrcCG = getCaliValue();
988 	int wX = getCaliValue();
989 	int wY = getCaliValue();
990 	int wWidth  = getCaliValue();
991 	int wHeight = getCaliValue();
992 
993 	scg_partcopy(wNumDstCG, wNumSrcCG, wX, wY, wWidth, wHeight);
994 
995 	DEBUG_COMMAND_YET("SACT.PartCopy %d,%d,%d,%d,%d,%d:\n", wNumDstCG, wNumSrcCG, wX, wY, wWidth, wHeight);
996 }
997 
998 /**
999  * SACT.WiatKeySimple (1.0~)
1000  *   �̾省�������Ԥ�
1001  *   @param vKey: ���Ϥ��줿����
1002  */
WaitKeySimple()1003 void WaitKeySimple() {
1004 	int *vKey = getCaliVariable();
1005 
1006 	DEBUG_COMMAND_YET("SACT.WaitKeySimple %d:\n", vKey);
1007 
1008 	// �Ȥꤢ����������
1009 	sp_update_all(TRUE);
1010 
1011 	sact.waittype = KEYWAIT_SIMPLE;
1012 	sact.waitkey = -1;
1013 
1014 	while(sact.waitkey == -1) {
1015 		sys_keywait(25, TRUE);
1016 	}
1017 
1018 	sact.waittype = KEYWAIT_NONE;
1019 
1020 	*vKey = sact.waitkey;
1021 
1022 }
1023 
1024 /**
1025  * SACT.WaitKeyMessgae (1.0~)
1026  *   ��å��������������Ԥ�
1027  *   @param wMessageMark1: ���ץ饤���ֹ�1(���˥᡼������ץ饤��)
1028  *   @param wMessageMark2: ���ץ饤���ֹ�2(���˥᡼������ץ饤��)
1029  *   @param wMessageLength: (1.2~)
1030  */
WaitKeyMessage()1031 void WaitKeyMessage() {
1032 	int wMessageMark1 = getCaliValue();
1033 	int wMessageMark2 = getCaliValue();
1034 	int wMessageLength = 0;
1035 
1036 	if (sact.version >= 120) {
1037 		wMessageLength = getCaliValue();
1038 	}
1039 
1040 	smsg_keywait(wMessageMark1, wMessageMark2, wMessageLength);
1041 
1042 	DEBUG_COMMAND_YET("SACT.WaitKeyMessage %d,%d,%d:\n", wMessageMark1, wMessageMark2, wMessageLength);
1043 }
1044 
1045 /**
1046  * SACT.WaitKeySprite (1.0~)
1047  *   ���ץ饤�Ƚ����Ԥ�
1048  *   @param vOK: 0�ʤ�б�����å�
1049  *   @param vRND: �������Ϸ��
1050  *   @param vRsv1: ͽ��
1051  *   @param vRsv2: ͽ��
1052  */
WaitKeySprite()1053 void WaitKeySprite() {
1054 	int *vOK = getCaliVariable();
1055 	int *vRND = getCaliVariable();
1056 	int *vRsv1 = getCaliVariable();
1057 	int *vRsv2 = getCaliVariable();
1058 
1059 	DEBUG_COMMAND("SACT.WaitKeySprite %p,%p,%p,%p:\n", vOK, vRND, vRsv1, vRsv2);
1060 
1061 	sp_keywait(vOK, vRND, vRsv1, vRsv2, NULL, -1);
1062 
1063 	DEBUG_COMMAND_YET("SACT.WaitKeySprite %d,%d,%d,%d:\n", *vOK, *vRND, *vRsv1, *vRsv2);
1064 }
1065 
1066 /**
1067  * SACT.PeekKey (1.2~)
1068  *   ?????
1069  *   @param nKeyCode:
1070  *   @param vResult:
1071  */
PeekKey()1072 void PeekKey() {
1073 	int nKeyCode = getCaliValue();
1074 	int *vResult = getCaliVariable();
1075 
1076 	WARNING("NOT IMPLEMENTED\n");
1077 	DEBUG_COMMAND_YET("SACT.PeekKey %d,%p:\n", nKeyCode, vResult);
1078 }
1079 
1080 /**
1081  * SACT.WaitKeySKipKeyUp (1.0~)
1082  *   ʸ�����ꥭ����������äѤʤ��λ���Υ�����ޤ��Ԥ�
1083  */
WaitMsgSkipKeyUp()1084 void WaitMsgSkipKeyUp() {
1085 	WARNING("NOT IMPLEMENTED\n");
1086 	DEBUG_COMMAND_YET("SACT.WaitMsgSkipKeyUp:\n");
1087 }
1088 
1089 /**
1090  * SACT.WaiKeySimpleTimeOut (1.0~)
1091  *   �����ॢ���ȤĤ�������������
1092  *   @param vRND: ���Ϥ��줿����������
1093  *   @param vD03: �����ॢ���Ȥ������=1, ���ʤ����=0
1094  *   @param wTime: �����ॢ���Ȼ��� (1/100sec)
1095  */
WaitKeySimpleTimeOut()1096 void WaitKeySimpleTimeOut() {
1097 	int *vRND = getCaliVariable();
1098 	int *vD03 = getCaliVariable();
1099 	int wTime = getCaliValue();
1100 
1101 	sact.waittype = KEYWAIT_SIMPLE;
1102 	sact.waitkey = -1;
1103 
1104 	sys_keywait(wTime * 10, TRUE);
1105 	if (sact.waitkey == -1) {
1106 		*vD03 = 1;
1107 		*vRND = 0;
1108 	} else {
1109 		*vD03 = 0;
1110 		*vRND = sact.waitkey;
1111 	}
1112 
1113 	sact.waittype = KEYWAIT_NONE;
1114 
1115 	DEBUG_COMMAND_YET("SACT.WaitKeySimpleTimeOut %p,%p,%d:\n", vRND, vD03, wTime);
1116 }
1117 
1118 /**
1119  * SACT.WaiKeySpriteTimeOut (1.0~)
1120  *   �����ॢ���ȤĤ����ץ饤�ȥ�����������
1121  *   @param vOK: 0 �λ�������å�
1122  *   @param vRND: �����å����ץ饤�Ȥ��ֹ�
1123  *   @param vD01: ���åȥ��ץ饤�Ȥ��ֹ�
1124  *   @param vD02: �ץåȥ��ץ饤�Ȥ��ֹ�
1125  *   @param vD03: �����ॢ���Ȥ������=1, ���ʤ����=0
1126  *   @param wTime: �����ॢ���Ȼ��� (1/100sec)
1127  */
WaitKeySpriteTimeOut()1128 void WaitKeySpriteTimeOut() {
1129 	int *vOK = getCaliVariable();
1130 	int *vRND = getCaliVariable();
1131 	int *vD01 = getCaliVariable();
1132 	int *vD02 = getCaliVariable();
1133 	int *vD03 = getCaliVariable();
1134 	int wTime = getCaliValue();
1135 
1136 	sp_keywait(vOK, vRND, vD01, vD02, vD03, wTime);
1137 
1138 	DEBUG_COMMAND_YET("SACT.WaitKeySpriteTimeOut %p,%p,%p,%p,%p,%d:\n", vOK, vRND, vD01, vD02, vD03, wTime);
1139 }
1140 
1141 /**
1142  * SACT.QueryMessageSkip (1.0~)
1143  *   ??????
1144  *   @param vSkip:
1145  */
QueryMessageSkip()1146 void QueryMessageSkip() {
1147 	int *vSkip = getCaliVariable();
1148 
1149 	*vSkip = get_skipMode() ? 1 : 0;
1150 
1151 	DEBUG_COMMAND_YET("SACT.QueryMessageSkip %p:\n", vSkip);
1152 }
1153 
1154 /**
1155  * SACT.RegistReplaceString (1.0~)
1156  *   ��å��������ʸ������֤�����
1157  *   @param sstr: �Ѵ���ʸ�����ֹ�
1158  *   @param dstr: �Ѵ���ʸ�����ֹ�
1159  */
RegistReplaceString()1160 void RegistReplaceString() {
1161 	int sstr = getCaliValue();
1162 	int dstr = getCaliValue();
1163 
1164 	sstr_regist_replace(sstr, dstr);
1165 
1166 	DEBUG_COMMAND_YET("SACT.RegistReplaceString %d,%d:\n", sstr, dstr);
1167 }
1168 
1169 /**
1170  * SACT.MessageOutput (1.0~)
1171  *   @param wMessageSpriteNumber: ��å�������ɽ�������å��������ץ饤���ֹ�
1172  *                                (~MES)
1173  *   @param wMessageSize: �ե���Ȥ��礭�� (~MES_SIZE|~MES_SET)
1174  *   @param wMessageColorR: ��å������ο�(Red) (~MES_SET|~MES_COLOR)
1175  *   @param wMessageColorG: ��å������ο�(Green) (~MES_SET|~MES_COLOR)
1176  *   @param wMessageColorB: ��å������ο�(Blue) (~MES_SET|~MES_COLOR)
1177  *   @param wMessageFont: ��å������Υե����(0:�����å�, 1:��ī)
1178  *                         (~MES_FONT)
1179  *   @param wMessageSpeed: ��å�������ɽ��®��(0:��������̵��, 1:®��,
1180  *                          2:�椯�餤, 3: �٤�) (~MES_SPEED) (msec)
1181  *   @param wMessageLineSpace: �Դ֥��ڡ��� (~MES_SPC_Y)
1182  *   @param wMessageAlign: �Ԥ��� (1.1~)
1183  *   @param vMessageLength: ???     (1.2~)
1184  */
MessageOutput()1185 void MessageOutput() {
1186 	int wMessageSpriteNumber = getCaliValue();
1187 	int wMessageSize   = getCaliValue();
1188 	int wMessageColorR = getCaliValue();
1189 	int wMessageColorG = getCaliValue();
1190 	int wMessageColorB = getCaliValue();
1191 	int wMessageFont   = getCaliValue();
1192 	int wMessageSpeed  = getCaliValue();
1193 	int wMessageLineSpace = getCaliValue();
1194 	int wMessageAlign   = 0;
1195 	int *vMessageLength  = NULL;
1196 
1197 	if (sact.version >= 110) {
1198 		wMessageAlign  = getCaliValue();
1199 	}
1200 	if (sact.version >= 120) {
1201 		vMessageLength  = getCaliVariable();
1202 	}
1203 
1204 	smsg_out(wMessageSpriteNumber, wMessageSize, wMessageColorR, wMessageColorG, wMessageColorB, wMessageFont, wMessageSpeed, wMessageLineSpace, wMessageAlign, 0, 0, 0, vMessageLength);
1205 
1206 	DEBUG_COMMAND_YET("SACT.MessageOutput %d,%d,%d,%d,%d,%d,%d,%d,%d,%p:\n", wMessageSpriteNumber, wMessageSize, wMessageColorR, wMessageColorG, wMessageColorB, wMessageFont, wMessageSpeed, wMessageLineSpace, wMessageAlign, vMessageLength);
1207 }
1208 
1209 /**
1210  * SACT.MessageOutputEx (1.1~)
1211  *   ��ӤĤ���å���������
1212  *   @param wMessageSpriteNumber: ��å�������ɽ�������å��������ץ饤���ֹ�
1213  *                                (~MES)
1214  *   @param wMessageSize: �ե���Ȥ��礭�� (~MES_SIZE|~MES_SET)
1215  *   @param wMessageColorR: ��å������ο�(Red) (~MES_SET|~MES_COLOR)
1216  *   @param wMessageColorG: ��å������ο�(Green) (~MES_SET|~MES_COLOR)
1217  *   @param wMessageColorB: ��å������ο�(Blue) (~MES_SET|~MES_COLOR)
1218  *   @param wMessageFont: ��å������Υե����(0:�����å�, 1:��ī)
1219  *                         (~MES_FONT)
1220  *   @param wMessageSpeed: ��å�������ɽ��®��(0:��������̵��, 1:®��,
1221  *                          2:�椯�餤, 3: �٤�) (~MES_SPEED)
1222  *   @param wMessageLineSpace: �Դ֥��ڡ��� (~MES_SPC_Y)
1223  *   @param wMessageAlign: �Ԥ���
1224  *   @param wRubySize:     ���ʸ�����礭��
1225  *   @param wRubyFont:     ���ʸ���Υե���Ȥμ���((0:�����å�, 1:��ī)
1226  *   @param wRubyLineSpace: ���ʸ���ȥ�å������ιԴ֥��ڡ���
1227  *   @param vLength: ???    (1.2~)
1228  */
MessageOutputEx()1229 void MessageOutputEx() {
1230 	int wMessageSpriteNumber = getCaliValue();
1231 	int wMessageSize   = getCaliValue();
1232 	int wMessageColorR = getCaliValue();
1233 	int wMessageColorG = getCaliValue();
1234 	int wMessageColorB = getCaliValue();
1235 	int wMessageFont   = getCaliValue();
1236 	int wMessageSpeed  = getCaliValue();
1237 	int wMessageLineSpace = getCaliValue();
1238 	int wMessageAlign  = getCaliValue();
1239 	int wRubySize      = getCaliValue();
1240 	int wRubyFont      = getCaliValue();
1241 	int wRubyLineSpace = getCaliValue();
1242 	int *vLength = NULL;
1243 
1244 	if (sact.version >= 120) {
1245 		vLength = getCaliVariable();
1246 	}
1247 
1248 	smsg_out(wMessageSpriteNumber, wMessageSize, wMessageColorR, wMessageColorG, wMessageColorB, wMessageFont, wMessageSpeed, wMessageLineSpace, wMessageAlign, wRubySize, wRubyFont, wRubyLineSpace, vLength);
1249 
1250 	DEBUG_COMMAND_YET("SACT.MessageOutputEx %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%p:\n", wMessageSpriteNumber, wMessageSize, wMessageColorR, wMessageColorG, wMessageColorB, wMessageFont, wMessageSpeed, wMessageLineSpace,wMessageAlign, wRubySize, wRubyFont, wRubyLineSpace, vLength);
1251 }
1252 
1253 /**
1254  * SACT.MessageNewLine (1.0~)
1255  *   ����(�ҥ��ޥ������) (~MES_NEW_LINE)
1256  *   @param wMessageSpriteNumber: ��å��������ץ饤���ֹ�
1257  *   @param wMessageSize: �ե���Ȥ��礭�� (~MES_SIZE|~MES_SET)
1258  */
MessageNewLine()1259 void MessageNewLine() {
1260 	int wMessageSpriteNumber = getCaliValue();
1261 	int wMessageSize = getCaliValue();
1262 
1263 	smsg_newline(wMessageSpriteNumber, wMessageSize);
1264 
1265 	DEBUG_COMMAND_YET("SACT.MessageNewLine %d,%d:\n", wMessageSpriteNumber, wMessageSize);
1266 }
1267 
1268 /**
1269  * SACT.MessageClear (1.0~)
1270  *   ��å������ΰ�ξõ�(A���ޥ������)
1271  *   @param wMessageSpriteNumber: ��å��������ץ饤���ֹ�
1272  */
MessageClear()1273 void MessageClear() {
1274 	int wMessageSpriteNumber = getCaliValue();
1275 
1276 	smsg_clear(wMessageSpriteNumber);
1277 
1278 	DEBUG_COMMAND_YET("SACT.MessageClear %d:\n", wMessageSpriteNumber);
1279 }
1280 
1281 /**
1282  * SACT.MessageIsEmpty  (1.0~)
1283  *   ��å��������ĤäƤ����� wResult �� 0 ���֤�?
1284  *   @param wResult: ��̤��֤��ѿ�
1285  */
MessageIsEmpty()1286 void MessageIsEmpty() {
1287 	int *wResult = getCaliVariable();
1288 
1289 	*wResult = smsg_is_empty();
1290 
1291 	DEBUG_COMMAND_YET("SACT.MessageIsEmpty %p:\n", wResult);
1292 }
1293 
1294 /**
1295  * SACT.MessagePeek  (1.2+~) (�ʤߤ������ˤϤʤ�)
1296  *   ��å������Хåե������Ƥ��������
1297  *   @param vCount: ���������Կ�
1298  *   @param nTopStringNum: �Хåե����������ʸ�����ѿ��κǽ�
1299  */
MessagePeek()1300 void MessagePeek() {
1301 	int *vCount = getCaliVariable();
1302 	int nTopStringNum = getCaliValue();
1303 
1304 	WARNING("NOT IMPLEMENTED\n");
1305 
1306 	DEBUG_COMMAND_YET("SACT.MessagePeek %p,%d:\n", vCount, nTopStringNum);
1307 }
1308 
1309 /**
1310  * SACT.Log_Stop (1.2~)
1311  *   ���μ����
1312  */
Log_Stop()1313 void Log_Stop() {
1314 	sact.logging = FALSE;
1315 	DEBUG_COMMAND_YET("SACT.Log_Stop:\n");
1316 }
1317 
1318 /**
1319  * SACT.Log_Start (1.2~)
1320  *   ���μ賫��
1321  */
Log_Start()1322 void Log_Start() {
1323 	sact.logging = TRUE;
1324 	DEBUG_COMMAND_YET("SACT.Log_Start:\n");
1325 }
1326 
1327 /**
1328  * SACT.MenuClear (1.0~)
1329  *   SACT����������������ꥢ
1330  */
MenuClear()1331 void MenuClear() {
1332 	ssel_clear();
1333 
1334 	DEBUG_COMMAND_YET("SACT.MenuClear:\n");
1335 }
1336 
1337 /**
1338  * SACT.MenuAdd (1.0~)
1339  *   ��Ͽʸ�����SACT��������������ɲ�
1340  *   @param nString: ��Ͽ����ʸ�����ѿ��ֹ�
1341  *   @param wI: ��Ͽ������� (1-)
1342  */
MenuAdd()1343 void MenuAdd() {
1344 	int nString = getCaliValue();
1345 	int wI = getCaliValue();
1346 
1347 	ssel_add(nString, wI);
1348 
1349 	DEBUG_COMMAND_YET("SACT.MenuAdd %d,%d:\n", nString, wI);
1350 }
1351 
1352 /**
1353  * SACT.MenuOpen (1.0~)
1354  *   SACT��������롼��
1355  *   @param wMenuResult: ������(�ֹ�) ������뤷����0
1356  *   @param wNum: ��,�طʤȤ��륹�ץ饤���ֹ� (~SP_SEL)
1357  *   @param wChoiceSize: �����ʸ�������� (~SEL_SIZE)
1358  *   @param wMenuOutSpc: �ȥ��ץ饤�Ȥγ�¦����Υԥ������(~SP_SETSELSPC)
1359  *   @param wChoiceLineSpace: �����ιԴ�(1�˸���?)
1360  *   @param wChoiceAutoMoveCursor: �����ץ���˼�ưŪ�˰�ư�����������ֹ�
1361  *   @param nAlign: �Ԥ��� (0:��, 1:���, 2: ��) (1.1~)
1362  */
MenuOpen()1363 void MenuOpen() {
1364 	int *wMenuResult = getCaliVariable();
1365 	int wNum         = getCaliValue();
1366 	int wChoiceSize  = getCaliValue();
1367 	int wMenuOutSpc  = getCaliValue();
1368 	int wChoiceLineSpace = getCaliValue();
1369 	int wChoiceAutoMoveCursor = getCaliValue();
1370 	int nAlign = 0;
1371 
1372 	if (sact.version >= 110) {
1373 		nAlign = getCaliValue();
1374 	}
1375 
1376 	*wMenuResult = ssel_select(wNum, wChoiceSize, wMenuOutSpc, wChoiceLineSpace, wChoiceAutoMoveCursor, nAlign);
1377 
1378 	DEBUG_COMMAND_YET("SACT.MenuOpen %p,%d,%d,%d,%d,%d,%d:\n", wMenuResult, wNum, wChoiceSize, wMenuOutSpc, wChoiceLineSpace, wChoiceAutoMoveCursor, nAlign);
1379 }
1380 
1381 /**
1382  * SACT.PushString (1.0~)
1383  *   SACT������ʸ�����ѿ���ץå���
1384  *   @param nString: ʸ�����ѿ��ֹ�
1385  */
PushString()1386 void PushString() {
1387 	int nString = getCaliValue();
1388 
1389 	sstr_push(nString);
1390 
1391 	DEBUG_COMMAND_YET("SACT.PushString %d:\n", nString);
1392 }
1393 
1394 /**
1395  * SACT.PopString (1.0~)
1396  *   SACT�����˥ץå��夷��ʸ�����ѿ���ݥå�
1397  *   @param nString: ʸ�����ѿ��ֹ�
1398  */
PopString()1399 void PopString() {
1400 	int nString = getCaliValue();
1401 
1402 	sstr_pop(nString);
1403 
1404 	DEBUG_COMMAND_YET("SACT.PopString %d:\n", nString);
1405 }
1406 
1407 /**
1408  * SACT.Numeral_XXXX
1409  *   ���ץ饤����ˡ�����ο���(0��9)���Ф����б�����CG�ֹ��
1410  *   ɽ�����֡��ֳ֤ʤɤ��Ǽ�����Ф���Ԥ�
1411  */
1412 
1413 /**
1414  * SACT.Numeral_SetCG (1.0~)
1415  *   ����ο��ͤ��Ф���CG�ֹ������
1416  *   @param nNum: ���ץ饤���ֹ�
1417  *   @param nIndex: ����(0-9)
1418  *   @param nCG: �������б�����CG�ֹ�
1419  */
Numeral_SetCG()1420 void Numeral_SetCG() {
1421 	int nNum = getCaliValue();
1422 	int nIndex = getCaliValue();
1423 	int nCG = getCaliValue();
1424 
1425 	sp_num_setcg(nNum, nIndex, nCG);
1426 
1427 	DEBUG_COMMAND_YET("SACT.Numeral_SetCG %d,%d,%d:\n", nNum, nIndex, nCG);
1428 }
1429 
1430 /**
1431  * SACT.Numeral_GetCG (1.0~)
1432  *   ����ο��ͤ��Ф���CG�ֹ������
1433  *   @param nNum: ���ץ饤���ֹ�
1434  *   @param nIndex: ����(0-9)
1435  *   @param vCG: ���ꤵ��Ƥ���CG�ֹ���֤��ѿ�
1436  */
Numeral_GetCG()1437 void Numeral_GetCG() {
1438 	int nNum = getCaliValue();
1439 	int nIndex = getCaliValue();
1440 	int *vCG = getCaliVariable();
1441 
1442 	sp_num_getcg(nNum, nIndex, vCG);
1443 
1444 	DEBUG_COMMAND_YET("SACT.Numeral_GetCG %d,%d,%p:\n", nNum, nIndex, vCG);
1445 }
1446 
1447 /**
1448  * SACT.Numeral_SetPos (1.0~)
1449  *   Numeral��ɽ�����֤�����
1450  *   @param nNum: ���ץ饤���ֹ�
1451  *   @param nX: ɽ���غ�ɸ
1452  *   @param ny: ɽ���ٺ�ɸ
1453  */
Numeral_SetPos()1454 void Numeral_SetPos() {
1455 	int nNum = getCaliValue();
1456 	int nX = getCaliValue();
1457 	int nY = getCaliValue();
1458 
1459 	sp_num_setpos(nNum, nX, nY);
1460 
1461 	DEBUG_COMMAND_YET("SACT.Numeral_SetPos %d,%d,%d:\n", nNum, nX, nY);
1462 }
1463 
1464 /**
1465  * SACT.Numeral_GetPos (1.0~)
1466  *   Numeral_SetPos�����ꤷ����ɸ�μ��Ф�
1467  *   @param nNum: ���ץ饤���ֹ�
1468  *   @param vX: �غ�ɸ���Ǽ�����ѿ�
1469  *   @param vY: �ٺ�ɸ���Ǽ�����ѿ�
1470  */
Numeral_GetPos()1471 void Numeral_GetPos() {
1472 	int nNum = getCaliValue();
1473 	int *vX = getCaliVariable();
1474 	int *vY = getCaliVariable();
1475 
1476 	sp_num_getpos(nNum, vX, vY);
1477 
1478 	DEBUG_COMMAND_YET("SACT.Numeral_GetPos %d,%p,%p:\n", nNum, vX, vY);
1479 }
1480 
1481 /**
1482  * SACT.Numeral_SetSpan (1.0~)
1483  *   Numeral�δֳ�(Span)������
1484  *   @param nNum: ���ץ饤���ֹ�
1485  *   @param nSpan: �ֳ�
1486  */
Numeral_SetSpan()1487 void Numeral_SetSpan() {
1488 	int nNum = getCaliValue();
1489 	int nSpan = getCaliValue();
1490 
1491 	sp_num_setspan(nNum, nSpan);
1492 
1493 	DEBUG_COMMAND_YET("SACT.Numeral_SetSpan %d,%d:\n", nNum, nSpan);
1494 }
1495 
1496 /**
1497  * SACT.Numeral_GetSpan (1.0~)
1498  *   Numeral_SetSpan�����ꤷ���ͤμ��Ф�
1499  *   @param nNum: ���ץ饤���ֹ�
1500  *   @param vSpan: �ͤ��Ǽ�����ѿ�
1501  */
Numeral_GetSpan()1502 void Numeral_GetSpan() {
1503 	int nNum = getCaliValue();
1504 	int *vSpan = getCaliVariable();
1505 
1506 	sp_num_getspan(nNum, vSpan);
1507 
1508 	DEBUG_COMMAND_YET("SACT.Numeral_GetSpan %d,%p:\n", nNum, vSpan);
1509 }
1510 
1511 /**
1512  * SACT.ExpSp_Clear (1.0~)
1513  *   �������ץ饤�����ꥯ�ꥢ
1514  */
ExpSp_Clear()1515 void ExpSp_Clear() {
1516 	DEBUG_COMMAND_YET("SACT.ExpSp_Clear:\n");
1517 
1518 	sp_exp_clear();
1519 }
1520 
1521 /**
1522  * SACT.ExpSp_Add (1.0~)
1523  *   �������ץ饤�������ɲ�
1524  *   @param wNumSP1: �����å����ץ饤��
1525  *   @param wNumSP2: �������ץ饤��
1526  */
ExpSp_Add()1527 void ExpSp_Add() {
1528 	int wNumSP1 = getCaliValue();
1529 	int wNumSP2 = getCaliValue();
1530 
1531 	sp_exp_add(wNumSP1, wNumSP2);
1532 
1533 	DEBUG_COMMAND_YET("SACT.ExpSp_Add %d,%d:\n", wNumSP1, wNumSP2);
1534 }
1535 
1536 /**
1537  * SACT.ExpSp_Del (1.0~)
1538  *   �������ץ饤�Ⱥ��
1539  *   @param wNum: ���ץ饤���ֹ�
1540  */
ExpSp_Del()1541 void ExpSp_Del() {
1542 	int wNum = getCaliValue();
1543 
1544 	sp_exp_del(wNum);
1545 
1546 	DEBUG_COMMAND_YET("SACT.ExpSp_Del %d:\n", wNum);
1547 }
1548 
1549 /**
1550  * SACT.TimerSet (1.0~)
1551  *   �����ID�Υ����ޡ���wCount�ͤǥꥻ�å�
1552  *   @param wTimerID: �����ޡ�ID
1553  *   @param wCount: �ꥻ�åȤ�����
1554  */
TimerSet()1555 void TimerSet() {
1556 	int wTimerID = getCaliValue();
1557 	int wCount = getCaliValue();
1558 
1559 	stimer_reset(wTimerID, wCount);
1560 
1561 	DEBUG_COMMAND("SACT.TimerSet %d,%d:\n", wTimerID, wCount);
1562 }
1563 
1564 /**
1565  * SACT.TimerGet (1.0~)
1566  *   �����ID�Υ����ޡ���RND�˼���
1567  *   @param wTimerID: �����ޡ�ID
1568  *   @param vRND: ���������ѿ�
1569  */
TimerGet()1570 void TimerGet() {
1571 	int wTimerID = getCaliValue();
1572 	int *vRND = getCaliVariable();
1573 
1574 	*vRND = stimer_get(wTimerID);
1575 
1576 	DEBUG_COMMAND("SACT.TimerGet %d,%p:\n", wTimerID, vRND);
1577 }
1578 
1579 /**
1580  * SACT.TimerWait (1.0~)
1581  *   ����ID�Υ����ޡ������ꥫ����Ȥˤʤ�ޤ��Ԥ�
1582  *   @param wTimerID: �����ޡ�ID
1583  *   @param wCount: ���ꥫ�����
1584  */
TimerWait()1585 void TimerWait() {
1586 	int wTimerID = getCaliValue();
1587 	int wCount = getCaliValue();
1588 
1589 	while(wCount > stimer_get(wTimerID)) {
1590 		sys_keywait(10, FALSE);
1591 	}
1592 
1593 	DEBUG_COMMAND("SACT.TimerWait %d,%d:\n", wTimerID, wCount);
1594 }
1595 
1596 /**
1597  * SACT.Wait (1.1~)
1598  *   ������֡����٤Ƥ�ư������
1599  *   @param nCount: ����(1/100��ñ��)
1600  */
Wait()1601 void Wait() {
1602 	int wCount = getCaliValue();
1603 
1604 	sys_keywait(wCount*10, FALSE);
1605 
1606 	DEBUG_COMMAND_YET("SACT.Wait %d:\n", wCount);
1607 }
1608 
1609 /**
1610  * SACT.SoundPlay (1.0~)
1611  *   �������ľ�ܺ���  (~SOUND_PLAY)
1612  *   @param wNum: ���������ֹ�
1613  */
SoundPlay()1614 void SoundPlay() {
1615 	int wNum = getCaliValue();
1616 
1617 	ssnd_play(wNum);
1618 
1619 	DEBUG_COMMAND_YET("SACT.SoundPlay %d:\n", wNum);
1620 }
1621 
1622 /**
1623  * SACT.SoundStop (1.0~)
1624  *   ������ɺ������ (~SOUND_STOP)
1625  *   @param wNum: ��ߤ����ֹ�
1626  *   @param wFadeTime: ��ߤ���ޤǤλ��� (1/100sec)
1627  */
SoundStop()1628 void SoundStop() {
1629 	int wNum = getCaliValue();
1630 	int wFadeTime = getCaliValue();
1631 
1632 	ssnd_stop(wNum, wFadeTime);
1633 
1634 	DEBUG_COMMAND_YET("SACT.SoundStop %d,%d:\n", wNum, wFadeTime);
1635 }
1636 
1637 /**
1638  * SACT.SoundStopAll (1.1~)
1639  *   ������ɺ������ (~SOUND_STOP)
1640  *   @param wNum: ��ߤ����ֹ�
1641  *   @param wFadeTime: ��ߤ���ޤǤλ��� (1/100sec)
1642  */
SoundStopAll()1643 void SoundStopAll() {
1644 	int wFadeTime = getCaliValue();
1645 
1646 	ssnd_stopall(wFadeTime);
1647 
1648 	DEBUG_COMMAND_YET("SACT.SoundStopAll %d:\n", wFadeTime);
1649 }
1650 
1651 /**
1652  * SACT.SoundWait (1.0~)
1653  *   �إå��ǻ��ꤵ�줿����or������λ�ޤ��Ԥ�  (~SOUND_WAIT)
1654  *   @param wNum: �����ֹ�
1655  */
SoundWait()1656 void SoundWait() {
1657 	int wNum = getCaliValue();
1658 
1659 	ssnd_wait(wNum);
1660 
1661 	DEBUG_COMMAND_YET("SACT.SoundWait %d:\n", wNum);
1662 }
1663 
1664 /**
1665  * SACT.SoundWaitKey (1.0~)
1666  *   ���ꤵ�줿������ɤ�������λ���뤫���������������ޤ��Ԥ�
1667  *   @param wNum: �����ֹ�
1668  *   @param vKey: ������륭��
1669  */
SoundWaitKey()1670 void SoundWaitKey() {
1671 	int wNum = getCaliValue();
1672 	int *vKey = getCaliVariable();
1673 
1674 	ssnd_waitkey(wNum, vKey);
1675 
1676 	DEBUG_COMMAND_YET("SACT.SoundWaitKey %d,%p:\n", wNum, vKey);
1677 }
1678 
1679 /**
1680  * SACT.SoundPrepare (1.0~)
1681  *   �����ν�������(~SOUND_PREPARE)
1682  *   @param wNum: ���������ֹ�
1683  */
SoundPrepare()1684 void SoundPrepare() {
1685 	int wNum = getCaliValue();
1686 
1687 	ssnd_prepare(wNum);
1688 
1689 	DEBUG_COMMAND_YET("SACT.SoundPrepare %d:\n", wNum);
1690 }
1691 
1692 /**
1693  * SACT.SoundPrepareLR (1.0~)
1694  *   �����ν�������(����ȿž) (~SOUND_PREPARE_LR)
1695  *   @param wNum: ���������ֹ�
1696  */
SoundPrepareLR()1697 void SoundPrepareLR() {
1698 	int wNum = getCaliValue();
1699 
1700 	ssnd_prepareLRrev(wNum);
1701 
1702 	DEBUG_COMMAND_YET("SACT.SoundPrepareLR %d:\n", wNum);
1703 }
1704 
1705 /**
1706  * SACT.SoundPlayLR (1.0~)
1707  *   ����ȿž���ƺ��� (~SOUND_PLAY_LR)
1708  *   @param wNum: ���������ֹ�
1709  */
SoundPlayLR()1710 void SoundPlayLR() {
1711 	int wNum = getCaliValue();
1712 
1713 	ssnd_playLRrev(wNum);
1714 
1715 	DEBUG_COMMAND_YET("SACT.SoundPlayLR %d:\n", wNum);
1716 }
1717 
1718 /**
1719  * SACT.SpriteSound (1.0~)
1720  * �������(���ץ饤�Ȼ���) (~SP_SOUND)
1721  *   @param wNumSP: ���ꤹ�륹�ץ饤���ֹ�
1722  *   @param nCount: ���ꤹ��Ŀ�
1723  *   @param wNumWave1: Sound1
1724  *   @param wNumWave2: Sound2
1725  *   @param wNumWave3: Sound3
1726  */
SpriteSound()1727 void SpriteSound() {
1728 	int wNumSP = getCaliValue();
1729 	int nCount = getCaliValue();
1730 	int wNumWave1 = getCaliValue();
1731 	int wNumWave2 = getCaliValue();
1732 	int wNumWave3 = getCaliValue();
1733 	int i;
1734 
1735 	for (i = wNumSP; i < (wNumSP + nCount); i++) {
1736 		sp_sound_set(i, wNumWave1, wNumWave2, wNumWave3);
1737 	}
1738 
1739 	DEBUG_COMMAND_YET("SACT.SpriteSound %d,%d,%d,%d,%d:\n", wNumSP, nCount, wNumWave1, wNumWave2, wNumWave3);
1740 }
1741 
1742 /**
1743  * SACT.SpriteSoundWait (1.0~)
1744  *   SpriteSound�����ꤷ�����٤Ƥβ��κ�����λ�ޤ��Ԥ� (~SP_SOUND_WAIT)
1745  */
SpriteSoundWait()1746 void SpriteSoundWait() {
1747 	DEBUG_COMMAND_YET("SACT.SpriteSoundWait:\n");
1748 
1749 	sp_sound_wait();
1750 }
1751 
1752 /**
1753  * SACT.SpriteSoundOB (1.0~)
1754  *   �ϰϳ�����å������Ȥ��β�  (~SPRITE_SOUND_OB)
1755  *   @param wNumWave: ���������ֹ桢���ǥ��ꥢ
1756  */
SpriteSoundOB()1757 void SpriteSoundOB() {
1758 	int wNumWave = getCaliValue();
1759 
1760 	sp_sound_ob(wNumWave);
1761 
1762 	DEBUG_COMMAND_YET("SACT.SpriteSoundOB %d:\n", wNumWave);
1763 }
1764 
1765 /**
1766  * SACT.MusicCheck (1.0~)
1767  *   ���ڥǡ��������뤫�ɤ��� (~MUSIC_CHECK)
1768  *   @param wNum: �ֹ�
1769  *   @param vRND: 0:�ʤ���1:����
1770  */
MusicCheck()1771 void MusicCheck() {
1772 	int wNum = getCaliValue();
1773 	int *vRND = getCaliVariable();
1774 
1775 	*vRND = smus_check(wNum);
1776 
1777 	DEBUG_COMMAND_YET("SACT.MusicCheck %d,%p:\n", wNum, vRND);
1778 }
1779 
1780 /**
1781  * SACT.MusicGetLength (1.0~)
1782  *   ���ڥǡ�����Ĺ����1/100��ñ�̤Ǽ��� (~MUSIC_GET_LENGTH)
1783  *   @param wNum: �����ֹ�
1784  *   @param vRND: ��������Ĺ�����Ǽ�����ѿ�
1785  */
MusicGetLength()1786 void MusicGetLength() {
1787 	int wNum = getCaliValue();
1788 	int *vRND = getCaliVariable();
1789 
1790 	*vRND = smus_getlength(wNum);
1791 
1792 	DEBUG_COMMAND_YET("SACT.MusicGetLength %d,%d:\n", wNum, *vRND);
1793 }
1794 
1795 /**
1796  * SACT.MusicGetPos (1.0~)
1797  *   ���ڥǡ����κ������֤�1/100��ñ�̤Ǽ��� (~MUSIC_GET_POS)
1798  *   @param wNum: �����ֹ�
1799  *   @param vRND: �����������֤��Ǽ�����ѿ�
1800  */
MusicGetPos()1801 void MusicGetPos() {
1802 	int wNum = getCaliValue();
1803 	int *vRND = getCaliVariable();
1804 
1805 	*vRND = smus_getpos(wNum);
1806 
1807 	DEBUG_COMMAND_YET("SACT.MusicGetPos %d,%d:\n", wNum, *vRND);
1808 }
1809 
1810 /**
1811  * SACT.MusicPlay (1.0~)
1812  *   ���� (~MUSIC_PLAY)
1813  *   @param wNum: �����ֹ�
1814  *   @param wFadeTime: �ե����ɥ������(1/100��)
1815  *   @param wVolume: ����(0-100)
1816  */
MusicPlay()1817 void MusicPlay() {
1818 	int wNum = getCaliValue();
1819 	int wFadeTime = getCaliValue();
1820 	int wVolume = getCaliValue();
1821 
1822 	smus_play(wNum, wFadeTime, wVolume);
1823 
1824 	DEBUG_COMMAND_YET("SACT.MusicPlay %d,%d,%d:\n", wNum, wFadeTime, wVolume);
1825 }
1826 
1827 /**
1828  * SACT.MusicStop (1.0~)
1829  *   ������� (~MUSIC_STOP)
1830  *   @param wNum: �����ֹ�
1831  *   @param wFadeTime: ��λ����ޤǤλ���(1/100��)
1832  */
MusicStop()1833 void MusicStop() {
1834 	int wNum = getCaliValue();
1835 	int wFadeTime = getCaliValue();
1836 
1837 	smus_stop(wNum, wFadeTime);
1838 
1839 	DEBUG_COMMAND_YET("SACT.MusicStop %d,%d:\n", wNum, wFadeTime);
1840 }
1841 
1842 /**
1843  * SACT.MusicStopAll (1.2~)
1844  *   ���٤Ƥβ��ڤ����
1845  *   @param wFadeTime: ��λ����ޤǤλ���(1/100��)
1846  */
MusicStopAll()1847 void MusicStopAll() {
1848 	int wFadeTime = getCaliValue();
1849 
1850 	smus_stopall(wFadeTime);
1851 
1852 	DEBUG_COMMAND_YET("SACT.MusicStopAll %d:\n", wFadeTime);
1853 }
1854 
1855 /**
1856  * SACT.MusicFade (1.0~)
1857  *   ����Υܥ�塼��ޤǥե����� (~MUSIC_FADE)
1858  *   @param wNum: �����ֹ�
1859  *   @param wFadeTime: �ե����ɻ���(1/100��)
1860  *   @param wVolume: ���� (1-100)
1861  */
MusicFade()1862 void MusicFade() {
1863 	int wNum = getCaliValue();
1864 	int wFadeTime = getCaliValue();
1865 	int wVolume = getCaliValue();
1866 
1867 	smus_fade(wNum, wFadeTime, wVolume);
1868 
1869 	DEBUG_COMMAND_YET("SACT.MusicFade %d,%d,%d:\n", wNum, wFadeTime, wVolume);
1870 }
1871 
1872 /**
1873  * SACT.MusicWait (1.0~)
1874  *   ��������λ����ޤ��Ԥ� (~MUSIC_WAIT)
1875  *   @param wNum: �����ֹ�
1876  *   @param nTimeOut: (1.1~)
1877  */
MusicWait()1878 void MusicWait() {
1879 	int wNum = getCaliValue();
1880 	int nTimeOut = 0;
1881 
1882 	if (sact.version >= 110) {
1883 		nTimeOut = getCaliValue();
1884 	}
1885 
1886 	smus_wait(wNum, nTimeOut);
1887 
1888 	DEBUG_COMMAND_YET("SACT.MusicWait %d,%d:\n", wNum, nTimeOut);
1889 }
1890 
1891 /**
1892  * SACT.MusicWatiPos (1.0~)
1893  *   ����β��ڤ�wIndex�֤Υޡ����ǻ��ꤵ�줿�������֤����ޤ��Ԥ�
1894  *   (~MUSIC_WAIT_POS)
1895  *   @param wNum: �����ֹ�
1896  *   @param wIndex: ���֥ޡ����ֹ�
1897  */
MusicWaitPos()1898 void MusicWaitPos() {
1899 	int wNum = getCaliValue();
1900 	int wIndex = getCaliValue();
1901 
1902 	smus_waitpos(wNum, wIndex);
1903 
1904 	DEBUG_COMMAND_YET("SACT.MusicWaitPos %d,%d:\n", wNum, wIndex);
1905 }
1906 
1907 /**
1908  * SACT.SoundGetLinkNum (1.0~)
1909  *   ��������ͥ�Υ���ֹ����� (~SOUND_GET_LINK_NUM)
1910  *   @param wNum: �����ͥ��ֹ�
1911  *   @param vRND: ����ֹ�(̤���ѡᣰ)
1912  */
SoundGetLinkNum()1913 void SoundGetLinkNum() {
1914 	int wNum = getCaliValue();
1915 	int *vRND = getCaliVariable();
1916 
1917 	*vRND = ssnd_getlinknum(wNum);
1918 
1919 	DEBUG_COMMAND_YET("SACT.SoundGetLinkNum %d,%p:\n", wNum, vRND);
1920 }
1921 
1922 /**
1923  * SACT.ChartPos (1.0~)
1924  *   ������ѥ��㡼�Ⱥ���
1925  *   @param pos : ��̽����ѿ�
1926  *   @param pos1: �Ǿ���
1927  *   @param pos2: ������
1928  *   @param val1: ʬΨ�Ǿ���
1929  *   @param val2: ʬΨ������
1930  *   @param val : ʬΨ
1931  *
1932  *     pos = ((pos2-pos1) / (val2-val1)) * (val-val1) + pos1
1933  */
ChartPos()1934 void ChartPos() {
1935 	int *pos = getCaliVariable();
1936 	int pos1 = getCaliValue();
1937 	int pos2 = getCaliValue();
1938 	int val1 = getCaliValue();
1939 	int val2 = getCaliValue();
1940 	int val  = getCaliValue();
1941 
1942 	schart_pos(pos, pos1, pos2, val1, val2, val);
1943 
1944 	DEBUG_COMMAND_YET("SACT.ChartPos %p,%d,%d,%d,%d,%d:\n", pos, pos1, pos2, val1, val2, val);
1945 }
1946 
1947 /**
1948  * SACT.NumToStr (1.0~)
1949  *   ���� -> ʸ�����Ѵ�
1950  *   @param strno: �Ѵ��Ѥ�ʸ�����ѿ��ֹ�
1951  *   @param fig:   ������
1952  *   @param zeropad: 0: ������ᤷ�ʤ�, 1: ������᤹��
1953  *   @param num: �Ѵ��������
1954  */
NumToStr()1955 void NumToStr() {
1956 	int strno   = getCaliValue();
1957 	int fig     = getCaliValue();
1958 	int zeropad = getCaliValue();
1959 	int num     = getCaliValue();
1960 
1961 	sstr_num2str(strno, fig, zeropad, num);
1962 
1963 	DEBUG_COMMAND_YET("SACT.NumToStr %d,%d,%d,%d:\n", strno, fig, zeropad, num);
1964 }
1965 
1966 /**
1967  * SACT.Maze_Create (1.0~)
1968  */
Maze_Create()1969 void Maze_Create() {
1970 	int p1 = getCaliValue();
1971 	int p2 = getCaliValue();
1972 
1973 	WARNING("NOT IMPLEMENTED\n");
1974 
1975 	DEBUG_COMMAND_YET("SACT.Maze_Create %d,%d:\n", p1,p2);
1976 }
1977 
1978 /**
1979  * SACT.Maze_Get (1.0~)
1980  */
Maze_Get()1981 void Maze_Get() {
1982 	int *p1 = getCaliVariable();
1983 	int p2 = getCaliValue();
1984 	int p3 = getCaliValue();
1985 
1986 	WARNING("NOT IMPLEMENTED\n");
1987 
1988 	DEBUG_COMMAND_YET("SACT.Maze_Get %p,%d,%d:\n", p1,p2,p3);
1989 }
1990 
1991 /**
1992  * SACT.EncryptWORD (1.0~)
1993  */
EncryptWORD()1994 void EncryptWORD() {
1995 	int *array = getCaliVariable();
1996 	int num = getCaliValue();
1997 	int key = getCaliValue();
1998 
1999 	scryp_encrypt_word(array, num, key);
2000 
2001 	DEBUG_COMMAND_YET("SACT.EncryptWORD %p,%d,%d:\n", array, num, key);
2002 }
2003 
2004 /**
2005  * SACT.DecryptWORD (1.0~)
2006  */
DecryptWORD()2007 void DecryptWORD() {
2008 	int *array = getCaliVariable();
2009 	int num = getCaliValue();
2010 	int key = getCaliValue();
2011 
2012 	scryp_encrypt_word(array, num, key);
2013 
2014 	DEBUG_COMMAND_YET("SACT.DecryptWORD %p,%d,%d:\n", array, num, key);
2015 }
2016 
2017 /**
2018  * SACT.EncryptString (1.0~)
2019  */
EncryptString()2020 void EncryptString() {
2021 	int p1 = getCaliValue();
2022 	int p2 = getCaliValue();
2023 
2024 	scryp_encrypt_str(p1, p2);
2025 
2026 	DEBUG_COMMAND_YET("SACT.EncryptString %d,%d:\n", p1,p2);
2027 }
2028 
2029 /**
2030  * SACT.DecryptString (1.0~)
2031  */
DecryptString()2032 void DecryptString() {
2033 	int p1 = getCaliValue();
2034 	int p2 = getCaliValue();
2035 
2036 	scryp_decrypt_str(p1, p2);
2037 
2038 	DEBUG_COMMAND_YET("SACT.DecryptString %d,%d:\n", p1,p2);
2039 }
2040 
2041 /**
2042  * SACT.XMenuClear (1.0~)
2043  *   ��ĥ��˥塼�����
2044  */
XMenuClear()2045 void XMenuClear() {
2046 	spxm_clear();
2047 
2048 	DEBUG_COMMAND_YET("SACT.XMenuClear:\n");
2049 }
2050 
2051 /**
2052  * SACT.XMenuRegister (1.0~)
2053  *   ���ߥХåե��ˤ���ʸ������ĥ��˥塼�Υ����ƥ�Ȥ�����Ͽ
2054  *   @param nRegiNum: ��ĥ��˥塼����������ǥå����ֹ�
2055  *   @param nMenuID: �����줿�Ȥ����֤��ֹ�(ID)
2056  */
XMenuRegister()2057 void XMenuRegister() {
2058 	int nRegiNum = getCaliValue();
2059 	int nMenuID  = getCaliValue();
2060 
2061 	spxm_register(nRegiNum, nMenuID);
2062 
2063 	DEBUG_COMMAND_YET("SACT.XMenuRegister %d,%d:\n", nRegiNum, nMenuID);
2064 }
2065 
2066 /**
2067  * SACT.XMenuGetNum (1.0~)
2068  *   XMenuRegister����Ͽ���줿ID���֤�
2069  *   @param nRegiNum: ��������ǥå����ֹ�
2070  *   @param vMenuID: ��Ͽ����Ƥ���ID���Ǽ�����ѿ�
2071  */
XMenuGetNum()2072 void XMenuGetNum() {
2073 	int nRegiNum = getCaliValue();
2074 	int *vMenuID = getCaliVariable();
2075 
2076 	*vMenuID = spxm_getnum(nRegiNum);
2077 
2078 	DEBUG_COMMAND_YET("SACT.XMenuGetNum %d,%p:\n", nRegiNum, vMenuID);
2079 }
2080 
2081 /**
2082  * SACT.XMenuGetText (1.0~)
2083  *   XMenuRegister����Ͽ���������ƥ������ʸ�����ѿ��˥��ԡ�����
2084  *   @param nRegiNum: ��������ǥå����ֹ�
2085  *   @param strno: ���ԡ���ʸ�����ѿ��ֹ�
2086  */
XMenuGetText()2087 void XMenuGetText() {
2088 	int nRegiNum = getCaliValue();
2089 	int strno    = getCaliValue();
2090 
2091 	spxm_gettext(nRegiNum, strno);
2092 
2093 	DEBUG_COMMAND_YET("SACT.XMenuGetText %d,%d:\n", nRegiNum, strno);
2094 }
2095 
2096 /**
2097  * SACT.XMenuTitleRegister (1.0~)
2098  *   ���ߥХåե��ˤ���ʸ������ĥ��˥塼�Υ����ȥ�Ȥ�����Ͽ
2099  */
XMenuTitleRegister()2100 void XMenuTitleRegister() {
2101 	spxm_titlereg();
2102 
2103 	DEBUG_COMMAND_YET("SACT.XMenuTitleRegister:\n");
2104 }
2105 
2106 /**
2107  * SACT.XMenuTitleGet (1.0~)
2108  *   ��ĥ��˥塼�Υ����ȥ������ʸ�����ѿ��˥��ԡ�
2109  *   @param strno: ���ԡ���ʸ�����ѿ��ֹ�
2110  */
XMenuTitleGet()2111 void XMenuTitleGet() {
2112 	int strno = getCaliValue();
2113 
2114 	spxm_titleget(strno);
2115 
2116 	DEBUG_COMMAND_YET("SACT.XMenuTitleGet %d:\n", strno);
2117 }
2118