[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

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