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 |