; ; HGIMG3.0 define and macros ; #ifndef __hgimg3__ #define __hgimg3__ #runtime "hsp3hg" #define FLAG_NONE 0 #define FLAG_ENTRY 1 #define FLAG_VISIBLE 2 #define FLAG_MOVING 4 #define OBJ_HIDE 1 #define OBJ_TREE 2 #define OBJ_XFRONT 4 #define OBJ_UVANIM 8 #define OBJ_UVANIM_1SHOT 16 #define OBJ_MOVE 32 #define OBJ_FLIP 64 #define OBJ_BORDER 0x80 #define OBJ_2D 0x100 #define OBJ_TIMER 0x200 #define OBJ_WIPEBOM 0x400 #define OBJ_NOSORT 0x800 #define OBJ_GRAVITY 0x1000 #define OBJ_SKY 0x2000 #define OBJ_GROUND 0x4000 #define OBJ_LOOKAT 0x80000 #define SHADE_LINES 0x80 #define SHADE_NOLIGHT 0x100 #define SHADE_TOON 0x200 #enum PRMSET_MODE = 0 #enum PRMSET_FLAG #enum PRMSET_SHADE #enum PRMSET_TIMER #enum PRMSET_MYGROUP #enum PRMSET_COLGROUP #define HGOBJ_CAMERA 0 #define HGOBJ_LIGHT 1 #define CAM_MODE_NORMAL 0 #define CAM_MODE_LOOKAT 1 ; ; system request ; #define SYSREQ_NONE 0 #define SYSREQ_MAXMODEL 1 #define SYSREQ_MAXOBJ 2 #define SYSREQ_MAXTEX 3 #define SYSREQ_MAXMOC 4 #define SYSREQ_DXMODE 5 #define SYSREQ_DXHWND 6 #define SYSREQ_DXWIDTH 7 #define SYSREQ_DXHEIGHT 8 #define SYSREQ_COLORKEY 9 #define SYSREQ_RESULT 10 #define SYSREQ_RESVMODE 11 #define SYSREQ_PKTSIZE 12 #define SYSREQ_MAXEVENT 13 #define SYSREQ_PTRD3D 14 #define SYSREQ_PTRD3DDEV 15 #regcmd 18 #cmd _hgini $00 #cmd hgreset $01 #cmd hgbye $02 #cmd hgsetreq $03 #cmd hggetreq $04 #cmd hgdraw $05 #cmd hgsync $06 #cmd hgrect $07 #cmd hgrotate $08 #cmd hgsquare $09 #cmd settex $0a #cmd setfont $0b #cmd falpha $0c #cmd fprt $0d #cmd setsizef $0e #cmd setbg $0f #cmd clscolor $10 #cmd clsblur $11 #cmd clstex $12 #cmd texmake $13 #cmd texcls $14 #cmd texmes $15 #cmd texdel $16 #cmd setuv $17 #cmd addspr $18 #cmd regobj $19 #cmd delobj $1a #cmd addplate $1b #cmd addsplate $1c #cmd setcolor $1d #cmd addbox $1e #cmd addmesh $1f #cmd setpos $20 #cmd setang $21 #cmd setscale $22 #cmd setdir $23 #cmd setefx $24 #cmd setwork $25 #cmd addpos $28 #cmd addang $29 #cmd addscale $2a #cmd adddir $2b #cmd addefx $2c #cmd addwork $2d #cmd getpos $30 #cmd getang $31 #cmd getscale $32 #cmd getdir $33 #cmd getefx $34 #cmd getwork $35 #cmd getposi $38 #cmd getangi $39 #cmd getscalei $3a #cmd getdiri $3b #cmd getefxi $3c #cmd getworki $3d #cmd selpos $40 #cmd selang $41 #cmd selscale $42 #cmd seldir $43 #cmd selefx $44 #cmd selwork $45 #define selcpos selpos HGOBJ_CAMERA #define selcang selang HGOBJ_CAMERA #define selcint seldir HGOBJ_CAMERA #define sellpos selpos HGOBJ_LIGHT #define sellang selang HGOBJ_LIGHT #define sellcolor selscale HGOBJ_LIGHT #define sellambient seldir HGOBJ_LIGHT #cmd objset1 $48 #cmd objsetf1 $48 #cmd objset1r $49 #cmd objset2 $4a #cmd objsetf2 $4a #cmd objset2r $4b #cmd objset3 $4c #cmd objsetf3 $4c #cmd objset3r $4d #cmd objadd1 $4e #cmd objaddf1 $4e #cmd objadd1r $4f #cmd objadd2 $50 #cmd objaddf2 $50 #cmd objadd2r $51 #cmd objadd3 $52 #cmd objaddf3 $52 #cmd objadd3r $53 #cmd adddxf $60 #cmd modelscale $61 #cmd texload2 $62 #cmd event_wait $63 #cmd event_jump $64 #cmd event_prmset $65 #cmd event_prmon $66 #cmd event_prmoff $67 #cmd event_pos $68 #cmd event_ang $69 #cmd event_scale $6a #cmd event_dir $6b #cmd event_efx $6c #cmd event_work $6d #cmd event_angr $6f #cmd event_addpos $70 #cmd event_addang $71 #cmd event_addscale $72 #cmd event_adddir $73 #cmd event_addefx $74 #cmd event_addwork $75 #cmd event_addangr $77 #cmd event_setpos $78 #cmd event_setang $79 #cmd event_setscale $7a #cmd event_setdir $7b #cmd event_setefx $7c #cmd event_setwork $7d #cmd event_setangr $7f #cmd setevent $80 #cmd delevent $81 #cmd cammode $82 #cmd addxfile $83 #cmd getmdiffuse $84 #cmd settoon $85 #cmd setmonotoon $86 #cmd settoonedge $87 #cmd event_uv $88 #cmd newevent $89 #cmd setangr $8a #cmd addangr $8b #cmd getangr $8c #cmd setobjmode $8d #cmd setobjmodel $8e #cmd setcoli $8f #cmd enumobj $90 #cmd getenum $91 #cmd bindxfile $92 #cmd addtexanim $93 #cmd settexanimfile $94 #cmd settexanimmode $95 #cmd event_wpos $98 #cmd event_wang $99 #cmd event_wscale $9a #cmd event_wdir $9b #cmd event_wefx $9c #cmd event_wwait $9d #cmd fvset $9e #cmd fvseti $9e #cmd fvadd $9f #cmd fvsub $a0 #cmd fvmul $a1 #cmd fvdiv $a2 #cmd fvdir $a3 #cmd fvmin $a4 #cmd fvmax $a5 #cmd fvunit $a6 #cmd fvouter $a7 #cmd fvinner $a8 #cmd fvface $a9 #define fsin(%1,%2) %1=sin(%2) #define fcos(%1,%2) %1=cos(%2) #define fsqr(%1,%2) %1=sqrt(%2) #define froti(%1,%2) %1=%2/6433.98175455188992 #cmd fv2str $aa #cmd f2str $ab #cmd str2fv $ac #cmd str2f $ad #cmd objgetstr $ae #cmd objgetfv $af #cmd objgetv $b0 #cmd objsetfv $b1 #cmd objsetv $b2 #cmd objaddfv $b3 #cmd selmoc $b4 #cmd setborder $b5 #cmd findobj $b6 #cmd nextobj $b7 #cmd getcoli $b8 #cmd addxanim $b9 #cmd objact $ba #cmd objspeed $bb #cmd getanim $bc #cmd modelspeed $bd #cmd hgline $be #cmd hgcapture $bf #cmd reglight $c0 #cmd objlight $c1 #cmd getxinfo $c2 #cmd setxinfo $c3 #cmd fire_init $100 #cmd fire_exec $101 #cmd fire_set $102 #cmd wave_init $103 #cmd wave_apply $104 #cmd wave_set $105 #cmd mosaic_draw $106 #cmd mosaic_set $107 #module "HGIMG" #define global WORKSCR 3 #deffunc hgini int p1,int p2 ; initalize ; mref bm,67 hgmode = bm.3 _hgini p1,p2 ; hgsel=ginfo(3) buffer WORKSCR,128,128,hgmode gsel hgsel return #deffunc texload str fn ; texture reg ; gsel WORKSCR picload fn winx=ginfo(12):winy=ginfo(13) px=1:repeat 12 if px>=winx : break px=px<<1:loop py=1:repeat 12 if py>=winy : break py=py<<1:loop if ( px!=winx )|( py!=winy ) { ; 2^nサイズでない時は補正 buffer WORKSCR,px,py,hgmode cls 4 picload fn,1 } settex winx,winy if stat<0 : dialog "Texture Error("+stat+")" { gsel hgsel : return } i=stat await 0 gsel hgsel return i #deffunc loadtoon int p1,str fn ; Apply Toon Texture ; gsel WORKSCR if fn!="" : picload fn winx=ginfo(12):winy=ginfo(13) settex winx,winy if stat<0 : dialog "Texture Error("+stat+")" : gsel hgsel : return texid=stat dim coltable,256 maxcolor=(winy/8) repeat maxcolor y=cnt*8:pget 0,y coltable.cnt=(ginfo(16)<<16)|(ginfo(17)<<8)|ginfo(18) ;dialog strf("#%x",coltable.cnt) loop settoon p1,coltable,maxcolor,texid gsel hgsel return #deffunc preloadtoon str fn ; Apply Toon Texture ; gsel WORKSCR picload fn winx=ginfo(12):winy=ginfo(13) settex winx,winy if stat<0 : dialog "Texture Error("+stat+")" : gsel hgsel : return texid=stat dim coltable,256 maxcolor=(winy/8) repeat maxcolor y=cnt*8:pget 0,y coltable.cnt=(ginfo(16)<<16)|(ginfo(17)<<8)|ginfo(18) ;dialog strf("#%x",coltable.cnt) loop gsel hgsel return #deffunc presettoon int p1, int p2 setmonotoon p1, $ffffff, p2, texid return #deffunc maketoon int p1,int p2 ; Make a Toon Texture ; dim coltable,1024 getmdiffuse coltable, p1 maxcolor=stat i=maxcolor*8 py=1:repeat 12 if py>=i : break py=py<<1:loop if py<128 : py=128 buffer WORKSCR,128,py,0 ;screen 2,128,py,0 cls 1 i=0:x1=40:x2=128 repeat maxcolor y=i*8:col=coltable.cnt repeat cnt if col=coltable.cnt : y=-1 loop if y>=0 { ;cstr=0:cstr=col:str cstr,8+16 ;wbuf+="#"+i+":"+cstr+"\n" c1=col&255:c2=(col>>8)&255:c3=(col>>16)&255 color c3>>1,c2>>1,c1>>1 boxf 0,y+4,x1,y+8 color c3,c2,c1 boxf x1,y+4,x2,y+8 boxf 0,y,x2,y+3 i++ } loop ;bsave "a.txt",wbuf if p2&1 { settex 128,py if stat<0 : dialog "Texture Error("+stat+")" : gsel hgsel : return texid=stat maxcolor=(py/8) repeat maxcolor y=cnt*8:pget 0,y coltable.cnt=(ginfo(16)<<16)|(ginfo(17)<<8)|ginfo(18) loop settoon p1,coltable,maxcolor,texid } if p2&2 { bmpsave "toon.bmp" } gsel hgsel return #global #endif