More ... | hsp261cmp.as
過去に作られたものを有効に利用するために。 対応状況は、ノートを見てね。 hsp261cmp.as;
; HSP2.61 Compatible macros
;
#ifndef __hsp261cmp__
#define global __hsp261cmp__
; システム変数
#define global curdir dirinfo(0)
#define global exedir dirinfo(1)
#define global windir dirinfo(2)
#define global sysdir dirinfo(3)
#define global cmdline dirinfo(4)
#define global winx ginfo@hsp(12)
#define global winy ginfo@hsp(13)
#define global rval ginfo@hsp(16)
#define global gval ginfo@hsp(17)
#define global bval ginfo@hsp(18)
#define global paluse ginfo@hsp(19)
#define global dispx ginfo@hsp(20)
#define global dispy ginfo@hsp(21)
#define global csrx ginfo@hsp(22)
#define global csry ginfo@hsp(23)
#undef rnd
#define rnd(%1,%2) %1=rnd@hsp(%2)
#undef gettime
#define gettime(%1,%2) %1=gettime@hsp(%2)
#undef wpeek
#define wpeek(%1,%2,%3) %1=wpeek@hsp(%2,%3)
#undef peek
#define peek(%1,%2,%3) %1=peek@hsp(%2,%3)
#undef notemax
#define notemax(%1) %1=notemax@hsp
#undef strlen
#define strlen(%1,%2) %1=strlen@hsp(%2)
#undef sysinfo
#define sysinfo(%1,%2) %1=sysinfo@hsp(%2)
#undef getpath
#define getpath(%1,%2,%3) %1=getpath@hsp(%2,%3)
#undef strmid
#define strmid(%1,%2,%3) %1=strmid@hsp(%2,%3)
#undef instr
#define instr(%1,%2,%3,%4) %1=instr@hsp(%2,%4,%3)
; 互換命令
#undef ginfo
#undef mes
#undef print
//#define global mes(%1) mes@_hsp261cmp str(%1) // 複数行文字列が渡せない
//#define global mes(%1) mes@_hsp261cmp "" + %1 // これだとmes 1+2+3のようにできませんが…
#define global mes(%1) mes@_hsp261cmp "" + (%1)
#define global print mes
#module _hsp261cmp
#define global prmx prmx@_hsp261cmp
#define global prmy prmy@_hsp261cmp
#deffunc ginfo int p1
prmx=ginfo@hsp(p1*2)
prmy=ginfo@hsp(p1*2+1)
return
#deffunc text int p1
text_speed = p1
return
#deffunc mes@_hsp261cmp str p1
if text_speed > 0 {
base_x = ginfo@hsp(22)
// pos_x = bx
pos_x = base_x
pos_y = ginfo@hsp(23)
string = p1
string_index = 0
string_length = strlen@hsp(string)
repeat
await text_speed
pos pos_x, pos_y
if wpeek@hsp(string, string_index) == 2573 {
mes@hsp "\n"
pos_x = base_x
pos_y += ginfo@hsp(15)
string_index += 2
} else {
code = peek@hsp(string, string_index)
step = ((code >= 129 & code <= 159) | (code >= 224 & code <= 252)) + 1
mes@hsp strmid@hsp(string, string_index, step)
string_index += step
pos_x += ginfo@hsp(14)
}
if string_index >= string_length : break
loop
pos base_x, pos_y + ginfo@hsp(15)
} else {
mes@hsp p1
}
return
#deffunc skiperr int p1
if p1: onerror gosub *onerr: else: onerror 0
return
*onerr
return
#deffunc getpal int p1, local palette_data, local offset
mref palette_data, 69
offset = p1 * 3
color peek(palette_data, offset), peek(palette_data, offset + 1), peek(palette_data, offset + 2)
return
#global
// マルチメディア制御命令
#define global sndload mmload
#define global snd mmplay
#define global sndoff mmstop
// objsend
#define global objsend(%1 = 0, %2 = 0, %3 = 0, %4 = 0, %5 = 0) \
if (%2) == -1 { \
objsel %1 \
} else { \
if %5 { \
sendmsg objinfo_hwnd(%1), %2, %3, %4 \
} else { \
sendmsg objinfo_hwnd(%1), %2, %3, varptr(%4) \
} \
}
#deffunc palfade
palette ,,,,1 ;非常に変。どうすれば、ちゃんと実装できるのか?
#global
#endif
|