sample\d3module\demo\d3m_techdemo.hsp » Plain Format
;============================================================
TITL = "s.programs d3module techdemo"
VER = "1.68"
; s.programs http://spn.php.xdomain.jp/
;============================================================
#packopt hide 1
#packopt xsize 1
#packopt ysize 1
#packopt name "d3m_techdemo"
; 0 - release, 1 - create
#define DVMODE 0
#include "d3m.hsp" ; include d3module
; const
_PI = 3.14159265
_2PI = 6.28318531
;============================================================
; initialize
; display modes
modex = 640, 720, 800, 1280, 1360, 1920, 0
modey = 480, 480, 600, 720, 768, 1080
str_res = ""
repeat
if modex(cnt) = 0 : break
if modex(cnt) > ginfo_dispx | modey(cnt) > ginfo_dispy : break
str_res += "" + modex(cnt) + " x " + modey(cnt) + "\n"
loop
; default value
com_res = 1
chk_sound = 1
chk_full = 1
chk_loop = 0
chk_fulsp = 0
chk_fps = 0
;============================================================
; select screen
*select_scr
screen 0, 480, 300
title TITL
syscolor 15 : boxf
redraw 0
; gradi
color 255, 255, 255 : boxf , , , 99
repeat 99
f = 0.4 * cnt*cnt / 99/99 + 0.6 * cnt / 99
hsvcolor 191, sin(f * _PI) * 96, f * 255
boxf , cnt, , cnt
loop
repeat ginfo_winx
hsvcolor cnt, 192, 255
boxf cnt, 95, cnt, 99
loop
color
boxf , 95, , 96
boxf 43, , 44
; title
pget 80, 10 : pos 80, 38
font "Meiryo", 14, 1
mes TITL + " " + VER
hsvcolor , , 255 : pos 80, 39
mes TITL + " " + VER
; credit
pos 270, 160
font "Meiryo", 12 : syscolor 8
mes "music : 'Vijore'\n by onoken\n http://www.axsword.com/"
; c-mark
x = 270 : y = 240 : w = 64 : h = 32
syscolor 17 : circle x, y, x+w, y+h
x += w * 15 / 80 : y += h * 5 / 40 : w = w * 67 / 80 : h = h * 30 / 40
syscolor 15 : circle x, y, x+w, y+h
font "Meiryo", 12, 1 : syscolor 17 : pos x+5, y+h/2-8
mes "d3module for HSP3"
redraw
pos 80, 115
objsize 128, 20, 24
combox com_res, 200, str_res
chkbox "音楽 sound", chk_sound
chkbox "全画面 fullscreen", chk_full
chkbox "loop", chk_loop
chkbox "full-speed benckmark", chk_fulsp
chkbox "show fps", chk_fps
button "RUN !", *run_setup
objsel stat
#if DVMODE = 0
stop
#endif
;============================================================
; RUN ! button
#define SCR_BLUR 3
*run_setup
gsel 0, -1
winx = modex(com_res)
winy = modey(com_res)
#if DVMODE = 1
chk_full = 0
chk_fulsp = 1
chk_fps = 1
winx = 99
winy = 99
#endif
if winx ! ginfo_dispx & winy ! ginfo_dispx & chk_full {
chgdisp 1, winx, winy
if stat {
chgdisp
dialog ""+winx+" x "+winy+" への画面モード変更はできませんでした。\nウィンドウモードで実行します。", 0, "error"
chk_full = 0
} else {
wait 50
}
}
if winx = ginfo_dispx | chk_full {
; mode_fullscreen
SCR_FB = 2
bgscr SCR_FB, winx, winy, 0, 0, 0
gsel SCR_FB, 2
mouse -1
} else {
; mode_windowed
SCR_FB = 0
screen SCR_FB, winx, winy, 4, (ginfo_dispx - winx - 6) / 2, (ginfo_dispy - winy - 24) / 2
}
#if DVMODE = 1
winx = 1280 : winy = 720
screen SCR_FB, winx, winy, 4, 0, 0
#endif
oncmd gosub *ssctrl, 0x0112 ; WM_SYSCOMMAND
title TITL : color : boxf
;__demo スクリーン準備完了__
; 各シーン 初期化ルーチン
gosub *demoinit
; blur scr
buffer SCR_BLUR, winx, winy
gsel SCR_FB
; demo 本体 実行
gosub *mainseq
; demo 終了
chgdisp
gsel SCR_FB, -1
if frms {
mouse
wait 80
dialog "thank you!\n\nbenchmark score : " + frms + " d3marks", , TITL
}
end
;------------------------------------------------------------ ss-ctrl (WM_SYSCOMMAND)
*ssctrl
if wparam = 0xF140 : return 1 ; SC_SCREENSAVE
return
;----------------------------- bracon
#define efctblur gsel SCR_FB : gmode 3, , , mode_blur : pos 0, 0 : gcopy SCR_BLUR, 0, 0, winx, winy : mode_blur = 0
#deffunc useblur double p1
mode_blur = limit( 256-(expf(logf(0.00390625 * p1)*(32.0/(fps+1))) * 256), 32, 256)
gsel SCR_BLUR
return
;============================================================ INIT
; demo init4
#define TEX_TEMP SCR_BLUR
#define TEX_METAL 10
#define TEX_DGIT 11
#define TEX_MOON 12
#define TEX_FONT 13
*demoinit
; ディレクトリ [demo] があれば移動
astr = "demo"
dirlist bstr, astr
if stat : chdir astr
; particle
d3mkparticle 0, 255, 255, 255
d3mkparticle 1, 255, 255, 100
d3mkparticle 2, 255, 100, 100
d3mkparticle 3, 127, 255, 127
d3mkparticle 4, 127, 255, 255
d3mkparticle 5, 100, 127, 255
; ptc 画像読み込み
buffer TEX_TEMP, 160, 160
#define PTC_STAR 6
#define PTC_MOON 7
#define PTC_XS 8
picload "star.jpg", 1
d3ldparticle PTC_STAR, TEX_TEMP, 0, 0, 160, 160
picload "flmoon.jpg", 1
d3ldparticle PTC_MOON, TEX_TEMP, 0, 0, 160, 160
; ×型
arr = 4, 4, 30, 30, 150, 30
d3mkparticle PTC_XS, 200, 200, 400, arr
; get "d3module" dots
picload "d3mlogo.gif", 1 ; 68 x 18
cx = 68 : cy = 18 : d3tc = 0
repeat cy
y = cnt
repeat cx
x = cnt
pget x, y
if ginfo_r {
d3tx(d3tc) = cx/2 - x
d3ty(d3tc) = cy/2 - y
d3tc++
}
loop
loop
; メタルテクスチャ作成
buffer TEX_TEMP, 64, 1024
repeat 64
hsvcolor , , (1.0 - sin(_PI * cnt / 63)) * 240
boxf cnt, , cnt
loop
buffer TEX_METAL, 64, 1024
repeat 1024
hsvcolor cnt / 4, 128, 128 + rnd(64)
boxf , cnt, , cnt
loop
gmode 6, ginfo_winx, ginfo_winy, 192
gcopy TEX_TEMP
; letter 画像読み込み
celload "letter.jpg", TEX_FONT
fntx = 80
fnty = 60
fnt_s6 = 0.0625
fnt_s4 = 0.046875
fnt_s3 = 0.03125
; 010101 画像読み込み
celload "digits.gif", TEX_DGIT
; moon gnd 画像読み込み
celload "moongnd.jpg", TEX_MOON
; double ary
ddim ptcx, 16
ddim ptcy, 16
ddim ptcz, 16
ddim afx, 16
ddim afy, 16
ddim afz, 16
; str table
sdim astr_ins, 16, 9
astr_ins = "d3arrow", "d3box", "d3circle", "d3line", "d3lineto", "d3mes", "d3particle", "d3pset", "d3ribbonto"
sdim astr_cred, 16, 9
astr_cred = "s.programs", "d3module", "techdemo", "created by", "sprocket,", "running on", "HSP 3.5,", "music : 'Vijore'", "by onoken"
return
;============================================================ ■ ■
; demo mainloop
;============================================================ ■ ■ LOOP
*mainseq
bpm = 144.0
bt_len = 928 ; length; beat (386.66 sec)
st_pos = 666 ; start offset; ms
frms = 0 ; bench score
#if DVMODE ! 0
; ********************************************************************** startpos
st_pos = int(12.0 * 1920000 / bpm)
; **********************************************************************
#endif
if chk_sound {
mci "open \"" + dir_cur + "\\vijore.wma\" alias snds"
if stat = -1 {
dialog "サウンド再生エラー\nサウンド OFF で実行します。", , "error"
chk_sound = 0
}
}
if chk_sound {
mci "set snds time format milliseconds"
mci "seek snds to " + st_pos
mci "play snds"
} else {
time_offset = d3timer() - st_pos
}
color : boxf
sysfont
; demo main-loop
repeat
await (chk_fulsp = 0) * 16
; escape
stick ka, 1023 : if ka & 128 : frms = 0 : break
; music timer
if chk_sound {
mci "status snds position"
ms = stat
} else {
ms = d3timer() - time_offset
}
#if 0
; ss-bmp saver
a = ms / 500
if a ! bkms {
bkms = a
bmpsave "sc" + strf("%04d", a) + ".bmp"
}
#endif
fbt = bpm * ms / 60000 - 4
ibt = int( fbt )
if fbt < 0 : await 1 : continue ; 始まるのを待つ
if ibt >= bt_len : break ; 終わり
fps = d3getfps()
; cbN : N beat count-up (0.0 -> 1.0)
cb1 = fbt - ibt
cb2 = (fbt - (ibt / 2 * 2)) / 2
cb4 = (fbt - (ibt / 4 * 4)) / 4
cb8 = (fbt - (ibt / 8 * 8)) / 8
cb16 = (fbt - (ibt / 16 * 16)) / 16
cb32 = (fbt - (ibt / 32 * 32)) / 32
cb1s = cb1 * cb1
cb2s = cb2 * cb2
cb4s = cb4 * cb4
cb8s = cb8 * cb8
cb16s = cb16 * cb16
cb32s = cb32 * cb32
; xbN : N beat count-down (1.0 -> 0.0)
xb1 = 1.0 - cb1
xb2 = 1.0 - cb2
xb4 = 1.0 - cb4
xb8 = 1.0 - cb8
xb16 = 1.0 - cb16
xb32 = 1.0 - cb32
xb1s = xb1 * xb1
xb2s = xb2 * xb2
xb4s = xb4 * xb4
xb8s = xb8 * xb8
xb16s = xb16 * xb16
xb32s = xb32 * xb32
; 32 beat カウンタ
bcnt = ibt \ 32
fcnt = cb1 + bcnt
; preps
redraw 0
randomize 0
pmode = 0
xb1ss = xb1s
; default bgcolor
c = 32.0 + cos(cb32 * 12.56637) * 16
if bcnt < 8 : c += xb8s * 160
if bcnt >= 24 : c += cb8s * 128
;============================================================
; シーン制御テーブル 32 beat (13.3 sec) / scene, (29 scenes)
on (ibt/32) gosub *galax1, *helic1, *logotip1, *logotip2, *tips1, *rappa1, *prop1, *tube1, *tube2, *helic2, *pfeil1, *xtube1, *cubes1, *lumin1, *logotip3, *logotip4, *moon1, *moon2, *xtube2, *pfeil2, *hexa1, *penta1, *tube3, *prop2, *moon3, *moon4, *tips2, *arry1, *galax2
if mode_blur : efctblur
frms++
if chk_fps {
a = ""
repeat fps / 10 : a += "/" : loop
a += " " + fps + " fps\n" + (ibt/32) + "-" + bcnt
repeat 3-bcnt\4 : a += "." : loop
repeat 2
color , 255 * cnt
pos 10-cnt, 10-cnt
mes a
loop
}
redraw
loop
if chk_sound {
mci "stop snds"
mci "close snds"
}
; fade
color 255, 255, 255
gmode 6, , , 20
ax = 0, winx, winx, 0
ay = 0, 0, winy, winy
repeat 16
gsquare -1, ax, ay
await 20
loop
if (ka = 0) & chk_loop : goto *mainseq
return
;----------------------------- beat 変形 1
*mod_xb1ss
if fcnt >= 31.50 {
; 1/2 beat 進行
f = fbt + 0.50
f = 1.0 - f + int(f)
xb1ss = f * f
} else:if fcnt >= 30.75 {
; 1/4 beat 進行
f = fbt + 0.25
f = 1.0 - f + int(f)
xb1ss = f * f
}
return
;----------------------------- beat 変形 2
*mod_xb1ss_2
if fcnt >= 31.50 {
; 1/2 beat 進行
f = fbt + 0.50
f = 1.0 - f + int(f)
xb1ss = f * f
} else:if fcnt >= 30.75 {
; 1/4 beat 進行
f = fbt + 0.25
f = 1.0 - f + int(f)
xb1ss = f * f
} else:if fcnt >= 30.00 {
xb1ss = xb1s
} else:if fcnt >= 28.00 {
xb1ss = xb2s
}
return
;============================================================ ■ ■ DEMO SCENE
; Beatbeatbeat!!@#$%^&*
;============================================================ ■ ■ ■
;============================================================ □
; telop typer
; inp : [gmode], str types, wx, py, sx, sy
#module
#deffunc screen_type str inp1, double wx, double py, double sx, double sy
types = inp1
ppy = int( py * winy@ - sy / 2 )
ssx = 0.5 * winx@ * sx
ssy = 0.5 * winy@ * sy
ay = ppy-ssy, ppy-ssy, ppy+ssy, ppy+ssy
by = 0, 0, fnty@, fnty@
len = strlen(types) - 1
repeat len + 1
x = int( ( (double(cnt)/len - 0.5) * wx + 0.5 ) * winx@)
ax = x-ssx, x+ssx, x+ssx, x-ssx
tx = fntx@ * (peek(types, cnt) - ' ')
bx = tx, tx+fntx@, tx+fntx@, tx
gsquare TEX_FONT@, ax, ay, bx, by
loop
return
#global
;============================================================ □
; 010101 polys
*draw_numpolys
POLYS = 11
dh = _2PI / POLYS
; トンネル
repeat 5
z0 = 1000 * cnt
z1 = z0 + 700
az = z0, z1, z1, z0
repeat POLYS
th = dh * cnt - 0.08
x0 = cos(th) * r
y0 = sin(th) * r
th = dh * cnt + 0.08
x1 = cos(th) * r
y1 = sin(th) * r
ax = x0, x0, x1, x1
ay = y0, y0, y1, y1
d3texture ax, ay, az, TEX_DGIT, rnd(8)*80, 0, 80, 24
loop
loop
return
;============================================================ ■
; galaxy
;----------------------------- Phase 1
*galax1
if bcnt >= 28 {
cc = cb4s * 5 + 1
} else:if bcnt >= 8 {
cc = 1.0
} else {
cc = cb8
}
cc += sin(cb32 * 12.56637) / 8
; カメラセッティング
d3setcam 0, 700 + xb32 * 2000, 600
gosub *@f
; opening telop
sx = fnt_s6
sy = fnt_s6
py = 0.3
wx = sin((cb32) * _2PI) * 0.8
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "s.programs", wx, py, sx, sy
}
wx = sin((cb32 - 0.5) * _2PI) * 0.8
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "d3module", wx, py, sx, sy
}
sx = fnt_s3
sy = fnt_s3
py = 0.75
if chk_sound {
wx = sin((cb32) * _2PI) * 0.7
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "music : 'Vijore' by onoken", wx, py, sx, sy
}
}
wx = sin((cb32 + 0.5) * _2PI) * 0.5
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "press [Esc] to exit", wx, py, sx, sy
}
; フレア
if bcnt >= 28 {
d3setcam 2
repeat 50
r = (1.0 - (0.001 * rnd(rnd(1000) + 1))) * cb4 * 0.7 + 0.1
f = cb32 + rnd(32768)
gmode 5, , , cb4s * 224
d3particle 0, 0, sin(f) * r, cos(f) * r, 0.02
if rnd(3) = 0 {
gmode 5, , , cb4s * 64
d3particlem 5, 0.10
}
loop
}
color
boxf , , , 0.125 * winy
boxf , 0.875 * winy
return
;----------------------------- Phase 2
*galax2
if bcnt >= 24 {
cc = xb8
} else:if bcnt >= 8 {
cc = 1
} else {
cc = sqrt(cb8)
}
; カメラセッティング
d3setcam 0, 1100 + cb32s * 2000, 600
pmode = 1
gosub *@f
; opening telop
wx = sin(cb32 * _PI * 1.5) * 0.6
if wx > 0.0 {
sx = fnt_s3
sy = fnt_s3
gmode 5, , , wx * 400
py = 0.2
screen_type "Thank you...", wx, py, sx, sy
}
wx = sin((cb32 - 0.25) * _PI * 1.5) * 0.6
if wx > 0.0 {
sx = fnt_s3
sy = fnt_s3
gmode 5, , , wx * 400
py = 0.8
screen_type "Benchmark score : " + frms, wx, py, sx, sy
}
return
;----------------------------- main
*@
; 背景
c = cc * 16
color limit(c, 0, 255), limit(1.2 * c, 0, 255), limit(1.4 * c, 0, 255)
boxf
; stars
repeat 800
if pmode {
z = limit( rnd(5000) - cb32s * 2000, -59999, 0)
} else {
z = limit( rnd(5000) - cb32s * 2000 - 2800, 0, 59999)
}
r = double( rnd(600) )
f = r / 200 + 0.002 * rnd(32768) / (r + 100) + _2PI * cnt / 5 - cb32
; 厚み (1.66+)
a = double( rnd(5000) ) / (r + 100)
if rnd(2) {
z += a
} else {
z -= a
}
gmode 5, , , cc * 224
d3particle 0, cos(f) * r, sin(f) * r, z, 15 * (600 - r) / 600 + 2
if rnd(4) = 0 {
gmode 5, , , cc * 64
d3particlem 5, 45 * (600 - r) / 600 + 5
}
if rnd(8) = 0 {
a = sin(cb32*_PI*4 + cnt*cnt)
gmode 5, , , a * limit( cc * 64, 0, 64 )
d3particlem PTC_XS, a * 90
}
loop
; x
gmode 5, , , cc * 64
d3particle 5, 0, 0, 0, 500
d3particlem 2, 300
d3particlemr PTC_STAR, cb2s*(bcnt>=30)*200 + 200, -cb32
d3particlemr PTC_STAR, 200, cb32 * 3
; 浮遊物
repeat 200
gmode 5, , , cc * 224
d3particle 0, rnd(4000)-2000, -rnd(4000), rnd(4000)-2000, 7
if rnd(3) = 0 {
gmode 5, , , cc * 64
d3particlem 5, 30
}
loop
return
;============================================================ ■
; らせん
;----------------------------- Phase 1
*helic1
; カメラ座標
r = 10000 - cb32s*cb32s*cb32s*cb32s * 10000
f = cb32 * 2 + cb32s*cb32s*cb32s*cb32s * 6
d3setcam sin(f) * r, cos(f) * r, 8000 - r/2, 0, 0, 8000
gosub *@f
; opening telop
wx = sin((cb32) * _PI) * 0.8
if wx > 0.0 {
sx = fnt_s6
sy = fnt_s6
py = 0.3
gmode 5, , , wx * 300
screen_type "techdemo", wx, py, sx, sy
}
sx = fnt_s3
sy = fnt_s3
wx = sin((cb32) * _2PI) * 0.4
if wx > 0.0 {
py = 0.70
gmode 5, , , wx * 400
screen_type "Written in", wx, py, sx, sy
}
wx = sin((cb32 - 0.25) * _2PI) * 0.7
if wx > 0.0 {
py = 0.75
gmode 5, , , wx * 400
screen_type "Hot Soup Processor", wx, py, sx, sy
}
wx = sin((cb32 - 0.50) * _2PI) * 0.4
if wx > 0.0 {
py = 0.80
gmode 5, , , wx * 400
screen_type "Version 3.5", wx, py, sx, sy
}
color
boxf , , , 0.125 * winy
boxf , 0.875 * winy
return
;----------------------------- Phase 2
*helic2
if bcnt < 4 : useblur xb4 * 192
if bcnt < 8 : c += xb8 * 32
; カメラセッティング
if bcnt < 16 {
y = 6000.0 - cb16s * 3000
cz = xb16s * 16000
tz = xb16s * 16000
} else {
y = xb16s * 3000
cz = cb16s*cb16 * 16000
tz = cb16s * 16000
}
d3setcam 0, y, cz, 0, 0, tz
gosub *@f
return
;----------------------------- main
*@
; 背景 (c, c, c)
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
boxf
; らせん
; draw 0 - 16000, 300 - 1000
c += 160
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
repeat 101
z0 = 16000.0 * (100 - cnt) / 100
th = 3.395 * cnt + cb32*10
a = cnt
repeat 5
r = cnt * 150 + 400
x0 = cos(th) * r
y0 = sin(th) * r
if cnt = 4 {
d3circle x0, y0, z0, 70, 1
gmode 5, , , 160
d3particlem a\4+1, 210
} else {
d3circle x0, y0, z0, 30, 1
gmode 5, , , 160
d3particlem a\4+1, 90
}
loop
loop
; 極
repeat 2
zz = cnt * 16000
gmode 5, , , 48
d3particle 0, 0, 0, zz, 1500
gmode 5, , , 128
d3particlemr PTC_STAR, 700, -cb32
d3particlemr PTC_STAR, 700, cb32 * 3
loop
; 浮遊物
repeat 500
gmode 5, , , 192
d3particle cnt\6, rnd(4000)-2000, rnd(4000)-2000, rnd(20000)-2000, 30
if rnd(3) = 0 {
gmode 5, , , 32
d3particlem cnt\6, 240
}
if rnd(16) = 0 {
a = sin(cb32*_PI*4 + cnt*cnt)
gmode 5, , , a * 72
d3particlem PTC_XS, a * 480
}
loop
repeat 100
gmode 5, , , 192
d3particle 0, rnd(10000)-5000, rnd(10000)-5000, rnd(20000)-2000, 30
if rnd(3) = 0 {
gmode 5, , , 32
d3particlem 5, 240
}
loop
return
;============================================================ ■
; logo tips
;----------------------------- Phase 1
*logotip1
; カメラ座標
d3setcam xb32 * 5000 - 4500, xb32s*xb32s*xb32s * -3000, 0, 0, xb32s * 2000, 0
nx = xb32 * 700 + 200
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(c * 2, 0, 255)
boxf
gmd = 160
gosub *@f
color
boxf , , , 0.125 * winy
boxf , 0.875 * winy
return
;----------------------------- Phase 11
*logotip11
; カメラ座標
d3setcam xb32 * 5000 - 4500, xb32s*xb32s*xb32s * -3000, 0, 0, xb32s * 2000, 0
nx = xb32 * 700 + 200
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(c * 2, 0, 255)
boxf
gmd = 160
goto *@f
;----------------------------- Phase 2
*logotip2
; blur
if bcnt >= 24 : useblur cb8 * 224
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(c * 2, 0, 255)
boxf
if bcnt < 16 {
a = xb16s * xb16s * 64
color limit(ginfo_r+a, 0, 255), limit(ginfo_g+a, 0, 255), limit(ginfo_b+a, 0, 255)
boxf , , , 0.125 * winy
boxf , 0.875 * winy
}
randomize 0
; カメラ座標
y = cb32s*cb32s*cb32s * 3000
d3setcam xb32s * 3000 + cb32s * 8000 - 8000, y, 0, 0, -y, 0
nx = cb32s * 900
gmd = 160
if bcnt < 16 {
gmd += xb16s * 64
}
pmode = 1
gosub *@f
; opening telop
if bcnt < 16 {
wx = 0.5 + (sqrt(cb32)) / 3
sx = fnt_s4
sy = fnt_s4
gmode 5, , , xb16s * xb16 * 120
py = 0.3
screen_type "s.programs", wx, py, sx, sy
py = 0.7
screen_type "Version " + VER, wx, py, sx, sy
; fire-particles
d3setcam 0, -100, 0
repeat 150
f = rnd(32768)
r = sqrt(cb32) * rnd(200) + 30
gmode 5, , , xb16s * 48
d3particle 1, cos(f) * r, 0, sin(f) * r / 3, 1
gmode 5, , , xb16s * 24
if cnt \ 3 = 0 {
d3particlem PTC_XS, 4
} else {
d3particlem 5, 4
}
loop
}
return
;----------------------------- Phase 3
*logotip3
; blur
if bcnt >= 24 : useblur cb8 * 224
; カメラ座標
r = cb32s * 3000 + 5900
f = 1.57 * cb32s + _PI
d3setcam cos(f) * r, sin(f) * r, 0, xb32s * 5000, 0, 0
nx = cb32s * 800
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(c * 2, 0, 255)
boxf
gmd = 192
gosub *@f
return
;----------------------------- Phase 4
*logotip4
; blur
if bcnt >= 24 : useblur cb8 * 224
; カメラ座標
d3setcam 1, (cb32-0.5)*6000 + 1, 3000, 0, (cb32-0.5)*6000, 0
nx = 1400
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(c * 2, 0, 255)
boxf
gmd = 100
goto *@f
;----------------------------- main
*@
gmode 5, , , gmd
; タイル
repeat d3tc
x = (rnd(1000) - 500) * nx / 1000
z = d3ty(cnt) * 100
y = d3tx(cnt) * 100 - z/5
ax = x, x, x, x
ay = y - 150, y + 150, y + 150, y - 150
az = z - 50, z - 50, z + 50, z + 50
d3particle 5, x, y, z, 60
if bcnt < 16 & pmode {
gmode 5, , , xb16s * 224
if cnt\6 {
d3particlem 5, 140
} else {
d3particlem PTC_STAR, 250
}
gmode 5, , , gmd
}
if stat : d3texture ax, ay, az, TEX_METAL, 0, 400 + z/3, 64, 32
loop
; 浮遊物
repeat 600
gmode 5, , , gmd
d3particle 0, rnd(10000)-5000, rnd(10000)-5000, rnd(10000)-5000, 18
if rnd(3) = 0 {
gmode 5, , , gmd / 6
d3particlem 5, 72
}
loop
return
;============================================================ ■
; 010101 tips
;----------------------------- Phase 1
*tips1
; blur
if bcnt < 8 : useblur xb8 * 224
; bgcolor+
if bcnt >= 24 : c += xb8s*xb8 * 224
cc = 1
; カメラ座標
y = cb32s*cb32s*cb32s * 5500 - 5000 + xb32s * 2000
d3setcam 0, y, xb32 * 800, 0, 10000, xb32 * -30000
nx = 1000
gosub *@f
; opening telop
sx = fnt_s3
sy = fnt_s3
py = 0.5
wx = sin((cb32) * _2PI) * 0.7
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "'s.programs net' moved to", wx, py, sx, sy
}
wx = sin((cb32 - 0.5) * _2PI) * 0.7
if wx > 0.0 {
gmode 5, , , wx * 300
screen_type "http://spn.php.xdomain.jp/", wx, py, sx, sy
}
return
;----------------------------- Phase 2
*tips2
; blur
if bcnt < 8 : useblur xb8 * 224
if bcnt >= 24 {
cc = xb8
} else:if bcnt >= 4 {
cc = 1
} else {
cc = xb4s / 4 + 1
}
c = cc * c ; bgc
; カメラ座標
d3setcam cb32s * -1000, sin(cb32 * _PI * 1.2) * 4000, cb32s*cb32 * -5000, 0,0,0, cb32s * 2 + 1
nx = xb32 * 1000 + 50
goto *@f
;----------------------------- main
*@
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(1.5 * c, 0, 255)
boxf
gmode 5, , , cc * 160
; タイル
repeat d3tc
x = (rnd(1000) - 500) * nx / 1000
z = d3ty(cnt) * -100
y = d3tx(cnt) * 150
ax = x, x, x, x
ay = y - 150, y + 150, y + 150, y - 150
az = z - 50, z - 50, z + 50, z + 50
d3particle 5, z, y, x, 55
if stat : d3texture az, ay, ax, TEX_DGIT, cnt\8*80, 0, 80, 24
loop
; 浮遊物
repeat 600
gmode 5, , , cc * 160
d3particle 0, rnd(10000)-5000, rnd(10000)-5000, rnd(10000)-5000, 18
if rnd(3) = 0 {
gmode 5, , , cc * 32
d3particlem 5, 72
}
loop
return
;============================================================ ■
; ラッパ
;----------------------------- Phase 1
*rappa1
; bgcolor
if bcnt < 28 : c += xb1s * 64
; カメラ座標
r = xb32s * 1000
d3setcam r, r, r + 600, 0, xb32 * 600, 400 - cb32s * 800
gosub *@f
; opening telop
if bcnt < 8 {
wx = xb32
sx = fnt_s6
sy = fnt_s6
gmode 5, , , xb8s * 64
py = 0.77 + cb8 * 0.11
types = "d3module"
screen_type types, wx, py, sx, sy
}
sx = fnt_s3
sy = fnt_s3
repeat 9
wx = sin((cb32 - 0.0625 * cnt) * _2PI) * 0.5
if wx > 0.0 {
types = astr_ins(cnt)
py = 0.1 + 0.1 * cnt
gmode 5, , , wx * 255
screen_type types, wx, py, sx, sy
}
loop
return
;----------------------------- main
*@
; BG
hsvcolor cb32 * 192 + 96, 64, limit(c, 0, 255)
boxf
; ラッパ設定
hsvcolor cb32 * 192 + 96, 128, 255
POLYS = 22
; rappa beat
if bcnt <= 27 {
zz = xb1s * 77
aa = xb1s * _2PI
} else {
zz = 0.0
aa = xb4 * _2PI ;0.0
}
; draw ラッパ
dh = _2PI / POLYS
r1 = 0.0
repeat 10
r0 = r1
r1 = r1 * 1.2 + 40
c = cnt
z0 = sqrt( absf( cos( _PI * c / 10 ) ) ) * 200 + c*c * 2 + zz * sqrt(10-c)
c = cnt + 1
z1 = sqrt( absf( cos( _PI * c / 10 ) ) ) * 200 + c*c * 2 + zz * sqrt(10-c)
gra = 0.1 * (10 - cnt)
d3initlineto
repeat POLYS + 1
th = dh * cnt + cb32*2
x0 = cos(th) * r0
y0 = sin(th) * r0
x1 = cos(th) * r1
y1 = sin(th) * r1
gmode 5, , , gra * ((sin(th * 3 + aa) + 1) * 72 + 72 + rnd(64))
d3ribbonto x0, y0, z0, x1, y1, z1
if cnt {
gmode 5, , , gra * 200
d3particlem 1, 10
if rnd(3) = 0 {
gmode 5, , , gra * 100
d3particlem 0, r1 / 10 + 20
}
}
loop
; sonic
if cnt \ 3 = 1 {
z0 -= zz * sqrt(10-cnt) * 5
z1 += zz * sqrt(10-cnt) * 5
d3initlineto
repeat POLYS + 1
th = dh * cnt + cb32*2
x0 = cos(th) * r0
y0 = sin(th) * r0
x1 = cos(th) * r1
y1 = sin(th) * r1
gmode 5, , , gra * sin(th * 4) * zz / 2
d3ribbonto x0, y0, z0, x1, y1, z1
loop
}
loop
; 以下 別座標系で描画
c = 0.0
if bcnt < 8 : c += xb8s * -1000
if bcnt >= 28 : c += cb4s * 2000
x = cb32 * 2000 - 1000
d3setcam x, 1000 - c, 0, x, -10000, 0
gmode 5, , , 160
; 浮遊物
repeat 200
d3particle 1, rnd(4000)-2000, -rnd(1000), rnd(2000)-1000, 10
loop
return
;============================================================ ■
; プロペラ
;----------------------------- Phase 1
*prop1
; blur
if bcnt >= 24 : useblur cb8 * 224
; bgcolor
if bcnt < 29 : c += xb1s * 32
; camera
x = cb32 * 4000 + 40
y = 50.0 - xb32 * 100
d3setcam y - 30, x, y, 0, -10000, 0
pmode = 1
phase = cb32 * 30 + cb32s*cb32 * 30
goto *@f
;----------------------------- Phase 2
*prop2
; bgcolor
c += sin(_PI * cb32) * xb1s * 16
; camera
d3setcam sin(cb32*2.3)*200+200, cb32 * 4400 - 500, 0, 0, cb32 * 3400, 0, 2.2
phase = cb32 * 27.7 + 0.9
goto *@f
;----------------------------- main
*@
; BG
hsvcolor cb32 * 192 + 96, 64, limit(c, 0, 255)
boxf
; 軸
hsvcolor cb32 * 192 + 96, 128, limit(c * 5, 0, 255)
POLYS = 3
dh = _2PI / POLYS
repeat POLYS
th = dh * cnt + phase
x0 = cos(th) * 2
y0 = sin(th) * 2
d3line x0, 0, y0, x0, 4000, y0
loop
; fog
if pmode {
; case
POLYS = 13
dh = _2PI / POLYS
hsvcolor cb32 * 192 + 96, 64, limit(c * 1.44, 0, 255)
repeat POLYS
th = dh * cnt - cb32 * 6
x0 = cos(th) * 500
y0 = sin(th) * 500
d3line x0, -6000, y0, x0, 6000, y0
th = dh * cnt - cb32 * 6 + 0.04
x0 = cos(th) * 500
y0 = sin(th) * 500
d3line x0, -5000, y0, x0, 5000, y0
th = dh * cnt - cb32 * 6 + 0.08
x0 = cos(th) * 500
y0 = sin(th) * 500
d3line x0, -4000, y0, x0, 4000, y0
loop
gmode 5, , , 64
d3particle 5, 0, -4500, 0, 2000
d3particlem 0, 1000
d3particlem 0, 500
}
; CHAIN
POINTS = 64
gmode 5, , , 160
repeat POINTS + 1
d3particle 0, 0, cnt * 4000 / POINTS, 0, 5
if rnd(2) : d3particlem 5, 15
loop
; プロペラ
POLYS = 5
dh = _2PI / POLYS
hsvcolor cb32 * 192 + 96, 128, 192
repeat 8
phase += dh / 2
z = 500 * cnt
gmode 5, , , 160
d3particle 0, 0, z, 0, 20
d3particlem 5, 60
repeat POLYS
th = dh * cnt + phase
d3initlineto
repeat 6
r0 = 60 * cnt
a = 0.05 * (7-cnt) ; 前縁
x0 = cos(th+a) * r0
y0 = sin(th+a) * r0
a = -a ; 後縁
x1 = cos(th+a) * r0
y1 = sin(th+a) * r0
zz = 4 * (6-cnt)
gmode 5, , , absf(sin(th)) * (6-cnt)/6 * 192 + 16
d3ribbonto x0, z-zz, y0, x1, z+zz, y1
if cnt {
gmode 5, , , 100
d3particlem 1, 5
if rnd(2) : d3particlem cnt, 15
}
loop
loop
loop
if pmode {
; 以下 別座標系で描画
c = 0.0
if bcnt < 8 : c += xb8s * 500
if bcnt >= 28 : c += cb4s * 2000
x = cb32 * 2000 - 1000
d3setcam x, 1000 - c, 0, x, -10000, 0
gmode 5, , , 128
f = 0.0
if bcnt < 28 : f += xb1s * 100
; 浮遊物
repeat 100
d3particle 0, rnd(4000)-2000, -rnd(1500)+f, rnd(3000)-1500, 15
loop
; 010101 polys
if bcnt < 8 {
; セッティング
d3setcam 0, 0, xb8 * 5000, cos(cb8 * 3), sin(cb8 * 3), -10000
gmode 5, , , xb8 * 128
r = 1000
goto *draw_numpolys
}
} else {
; 浮遊物
repeat 800
r = rnd(1000) + 100
f = phase * (1200-r) / 6000 + rnd(32768)
gmode 5, , , 128
d3particle 0, cos(f) * r, (rnd(10000) + cb32*(1000-r)*5 )\8000 - 1000, sin(f) * r, 5
if rnd(3) = 0 {
gmode 5, , , 40
d3particlem 0, 20
}
loop
}
return
;============================================================ ■
; トンネル
;----------------------------- Phase 1
*tube1
if bcnt >= 24 : useblur cb8 * 192
gosub *mod_xb1ss
c += xb1ss * 32 ; bgcolor
; 背景 (c, c, c)
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
boxf
; カメラセッティング
f = cb32 * 11
r = cb32s * 2000 + xb32s * 2000 - 2000
d3setcam 0, 0, cb32 * 14000 + 1000, sin(f)*r, cos(f)*r, cb32 * 20000 - 2000
gosub *@f
return
;----------------------------- Phase 2
*tube2
if bcnt < 8 : useblur xb8 * 192
if bcnt >= 24 : useblur cb8 * 192
if bcnt < 29 : c += xb1s * 32 ; bgcolor
; 背景 (c, c, c)
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
boxf
; カメラセッティング
f = cb32 * 11
r = cb32s * 2000 + xb32s * 2000 - 2000
d3setcam 0, 0, cb32 * 14000 + 1000, sin(f)*r, cos(f)*r, cb32 * 20000 - 2000
pmode = 1 ; モード
gosub *@f
return
;----------------------------- Phase 3 - making
*tube3
; bgcolor
c += sin(_PI * cb32) * xb1s * 10
; 背景 (c, c, c)
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
boxf
; カメラセッティング
d3setcam sin(cb32 * _PI) * 700, 0, 8000, 0, 0, cb32 * 14000 + 1000
; allow + circle
f = cb32 * 11
r = cb32s * 2000 + xb32s * 2000 - 2000
a = 160
color limit(ginfo_r+a, 0, 255), limit(ginfo_g+a, 0, 255), limit(ginfo_b+a, 0, 255)
d3circle 0, 0, cb32 * 14000 + 1000, 30, 1
if stat : pos dx@d3m+5, dy@d3m+5 : mes "camera"
d3circle sin(f)*r, cos(f)*r, cb32 * 20000 - 2000, 200
if stat : pos dx@d3m+5, dy@d3m+5 : mes "target"
d3arrow sin(f)*r, cos(f)*r, cb32 * 20000 - 2000, 0, 0, cb32 * 14000 + 1000
goto *@f
;----------------------------- main
*@
; 周 POLYS
POLYS = 8
dh = _2PI / POLYS
; トンネル
r0 = 1000
hsvcolor 100, 192, 255
repeat 19, bcnt
z0 = 1000 * (cnt\19 - 1) - 400
z1 = z0 + 800
az = z0, z0, z1, z1
repeat POLYS
th = dh * cnt - 0.24 + dh/2
x0 = cos(th) * r0
y0 = sin(th) * r0
th = dh * cnt + 0.24 + dh/2
x1 = cos(th) * r0
y1 = sin(th) * r0
if pmode {
gmode 5, , , 128
d3particle 0, (x0+x1)/2, (y0+y1)/2, (z0+z1)/2, 300
; カラフルモード
hsvcolor rnd(192), 192, 255
gmode 5, , , 160
} else {
gmode 5, , , 64
d3particle 0, (x0+x1)/2, (y0+y1)/2, (z0+z1)/2, 300
; OFF モード
if bcnt < 16 : gmode 5, , , 32
if bcnt >= 16 : gmode 5, , , 32 + xb16s*xb16 * 224
}
if stat {
ax = x0, x1, x1, x0
ay = y0, y1, y1, y0
d3square ax, ay, az ; トンネル
}
loop
loop
gmode 5, , , 224
d3particle 0, 0, 0, 0, 1000
gmode 5, , , 128
d3particlem 0, 2000
gmode 5, , , 224
d3particle 0, 0, 0, 16000, 1000
gmode 5, , , 128
d3particlem 0, 2000
if pmode {
; 浮遊物
gmode 5, , , 224
repeat 400
d3particle cnt\6, rnd(820)-410, rnd(820)-410, rnd(16000), 25
loop
}
return
;============================================================ ■
; 飛行機
;----------------------------- Phase 1
*pfeil1
gosub *mod_xb1ss
; bgcolor
c += xb1ss * 8
if bcnt < 8 : c += xb8 * 32
; setcam
r = 2000 - xb32s * 2000 - cb32s * 2000
f = cb32 * 6
d3setcam cos(f) * r, cb32s*cb32s * 2000 - 2450, sin(f) * r, 0, xb32s * -1000, 0
; 姿勢
x = 0.0
y = 0.0
z = 0.0
ang = -cos(f + 1.5)
; パラメータ
arkf = 0.5
ppitch = 0.2
pphase = cb32 * 150
bgspeed = 40000
gosub *@f
return
;----------------------------- Phase 2
*pfeil2
gosub *mod_xb1ss_2
; bgcolor
c += xb1ss * 8
if bcnt < 8 : c += xb8s * 64
; setcam
r = 1500
f = sin(cb32 * 5.8) * 0.7 - 1.48
d3setcam cos(f) * r, sin(f) * r, sin(cb32 * _PI) * 500 ;cb32s*cb32s*500 - cb32*62.5
; 姿勢
x = 0.0
y = 0.0
z = cb32s * 2000
ang = cos(cb32 * _PI) * 6
; パラメータ
arkf = sin(cb8s * cb8 * _PI * 5) * 10 * cb8s * cb8 * (bcnt >= 24) ; はばたき
ppitch = ( xb16 * 0.2 * (bcnt < 16))
pphase = (-xb16s * xb16s * 32 * (bcnt < 16)) - _PI / 6
bgspeed = cb32 * 80000 + 40000
pmode = 1
goto *@f
;----------------------------- main
*@
; BG
color limit(c, 0, 255), limit(c, 0, 255), limit(1.6 * c, 0, 255)
boxf
; 浮遊物
repeat 300
gmode 5, , , 224
d3particle 0, rnd(4000)-2000, (rnd(32768) - cb32 * bgspeed + 1000000)\10000-3000, (rnd(32768) + xb32*5000)\4000-2000, 10
if rnd(3) = 0 {
gmode 5, , , 32
d3particlem 5, 40
}
if rnd(16) = 0 {
gmode 5, , , 32
d3particlem PTC_XS, 100
}
loop
; ローカル座標設定
d3setlocal x, z, y, cos(ang),0,-sin(ang), 0,1,0, sin(ang),0,cos(ang)
; ノズル位置 index
ptcc = 0
; craft (-300〜300 cube)
repeat 1
hsvcolor , , 192
; 胴体
d3initlineto
repeat 61
y = cnt * 10 - 300
r = sin(0.0523 * cnt) * 30 + 5
th = 0.3 * cnt + cb32 * 100
gmode 5, , , rnd(64) + 64
d3ribbonto cos(th) * -r, y, sin(th) * -r, cos(th) * r, y, sin(th) * r
loop
; 主翼
POLYS = 2
dh = _2PI / POLYS
repeat POLYS
th = dh * cnt
d3initlineto
repeat 7
gmode 5, , , (7 - cnt) * 33
x1 = cos(th) * cnt * 60
y1 = sin(th) * cnt * 60
d3ribbonto x1, 120-6*cnt*cnt, y1 + 10 + arkf*cnt*cnt, x1, -4*cnt*cnt, y1 - 10 + arkf*cnt*cnt
gmode 5, , , 192
d3particlem 1, 10
gmode 5, , , 32
d3particlem 0, 50
if pmode = 0 {
; ノズル位置記録
if cnt >= 6 {
ptcx(ptcc) = x1
ptcy(ptcc) = y1 - 10 + arkf*cnt*cnt
ptcz(ptcc) = -4*cnt*cnt
ptcc++
}
}
loop
loop
; 尾翼
POLYS = 3
dh = _2PI / POLYS
repeat POLYS
th = dh * cnt + 1.5707963
d3initlineto
repeat 4
gmode 5, , , (4 - cnt) * 50
x1 = cos(th) * cnt * 50
y1 = sin(th) * cnt * 50
d3ribbonto x1, -150-sqrt(cnt)*50, y1, x1, -260, y1
gmode 5, , , 192
d3particlem 1, 10
gmode 5, , , 32
d3particlem 0, 50
if pmode {
; ノズル位置記録
if cnt >= 3 {
ptcx(ptcc) = x1
ptcy(ptcc) = y1
ptcz(ptcc) = -260
ptcc++
}
}
loop
loop
; ペラ
POLYS = 3
dh = _2PI / POLYS
repeat 2
if cnt {
; rear
z0 = -300
az = z0 + 10, z0 - 10, z0 - 10, z0 + 10
phase = pphase
ppitch = -ppitch
} else {
; front
z0 = 300
az = z0 - 10, z0 + 10, z0 + 10, z0 - 10
phase = -phase
}
repeat POLYS
th = dh * cnt + phase
d3initlineto
repeat 4
gmode 5, , , (4 - cnt) * 50
x1 = cos(th + ppitch * cnt / 2) * cnt * 50
y1 = sin(th + ppitch * cnt / 2) * cnt * 50
x2 = cos(th + ppitch * cnt / 2 + ppitch) * cnt * 50
y2 = sin(th + ppitch * cnt / 2 + ppitch) * cnt * 50
d3ribbonto x1, z0+10, y1, x2, z0-10, y2
gmode 5, , , 192
d3particlem 1, 10
gmode 5, , , 32
d3particlem 0, 50
loop
loop
loop
loop
if pmode = 0 {
; ダスト
dzmax = 2000
repeat 200
dz = (cnt * 10 + cb4 * dzmax) \ dzmax
x = ptcx(cnt\ptcc)
y = ptcy(cnt\ptcc)
z = ptcz(cnt\ptcc)
r = sqrt(dz) * 2
th = cnt;0.001 * rnd(6283)
gmode 5, , , (dzmax - dz) * 128 / dzmax
d3particle PTC_XS, cos(th) * r + x, z - dz, sin(th) * r + y, 25
loop
}
if pmode {
; x-ダスト
dzmax = 120 ; blue
repeat 12
dz = (cnt * 10 + cb1 * dzmax * 2) \ dzmax
x = ptcx(cnt\ptcc)
y = ptcy(cnt\ptcc)
z = ptcz(cnt\ptcc)
r = dz / 100
th = 0.001 * rnd(6283)
gmode 5, , , (dzmax - dz) * 128 / dzmax
d3particle 5, cos(th) * r + x, z - dz, sin(th) * r + y, dz / 3 + 100
loop
dzmax = 400 ; blue
repeat 40
dz = (cnt * 10 + cb1 * dzmax * 2) \ dzmax
x = ptcx(cnt\ptcc)
y = ptcy(cnt\ptcc)
z = ptcz(cnt\ptcc)
r = dz / 30
th = 0.001 * rnd(6283)
gmode 5, , , (dzmax - dz) * 192 / dzmax
d3particle 5, cos(th) * r + x, z - dz, sin(th) * r + y, 30
loop
dzmax = 600 ; yellow
repeat 60
dz = (cnt * 10 + cb1 * dzmax * 2) \ dzmax
x = ptcx(cnt\ptcc)
y = ptcy(cnt\ptcc)
z = ptcz(cnt\ptcc)
r = dz / 100
th = 0.001 * rnd(6283)
gmode 5, , , (dzmax - dz) * 100 / dzmax
d3particle 1, cos(th) * r + x, z - dz, sin(th) * r + y, dz / 10 + 40
loop
dzmax = 2000 ; white
repeat 100
dz = (cnt * 20 + cb1 * dzmax) \ dzmax
x = ptcx(cnt\ptcc)
y = ptcy(cnt\ptcc)
z = ptcz(cnt\ptcc)
r = dz / 150
th = 0.001 * rnd(6283)
gmode 5, , , sin(_PI * sqrt(double(dz)/dzmax) ) * 32
d3particle 0, cos(th) * r + x, z - dz - 600, sin(th) * r + y, dz / 30 + 50
loop
; ローカル座標設定
a = cb4s
d3setlocal 0, 0, 0, cos(a),0,-sin(a), 0,1,0, sin(a),0,cos(a)
; stargate
if bcnt >= 16 {
; tunnel
repeat 5
gmode 5, , , cb16s * cb16s * (10 - cnt) * 30
d3particle 5, 0, 10000 - cnt * 2000, 0, cnt * 200 + 500
loop
}
if bcnt >= 28 {
; gate
y = 4000
rr = cb4s * 5000
gmode 5, , , cb4s * 100
POLYS = 80
dh = _2PI / POLYS
repeat 6
a = cb32 * 10 + cnt * 2
repeat POLYS
x = cos(dh * cnt) * sin(dh*cnt) * cos(a*2) * rr
z = sin(dh * cnt) * sin(dh*cnt) * cos(a/2) * rr
d3particle PTC_XS, x, y, z, 80
loop
loop
}
if bcnt >= 30 {
; star
gmode 5, , , cb2 * 128
d3particle PTC_STAR, 0, 4000, 0, cb4s * 1500
}
}
return
;============================================================ ■
; x チューブ
;----------------------------- Phase 1
*xtube1
gosub *mod_xb1ss_2
; bgcolor
c /= 2
c += xb1ss * 32
; param
cc = cb32 * 1300 ; z 位置
r = 640.0 - xb1ss * 100 ; tube 半径
mg = cos(cb32 * _2PI * 3) * 5000 ; tube 曲がり
mr = 100 ; ゆれ r
mc = 0.0009 ; ゆれ sin speed
ms = 0.0011 ; ゆれ cos speed
; カメラ転回
f = cb32 * 10 + cos(cb32 * 10)
gosub *@f
return
;----------------------------- Phase 2
*xtube2
gosub *mod_xb1ss
if bcnt > 24 : c += cb8s * 64
; param
cc = cb32 * 2000 + cb32s * cb32s * cb32s * 400 ; z 位置
r = 640.0 - xb1ss * 100 ; tube 半径
mg = cos(cb32 * _2PI * 3) * 5000 * xb32 ; 曲がり
mr = xb32 * 100 ; ゆれ r
mc = 0.0013 ; ゆれ sin speed
ms = 0.0017 ; ゆれ cos speed
; カメラ転回
f = cb32 * 20 + xb32 * cos(cb32 * 10) * 2 + xb32 * sin(cb32 * 17)
pmode = 1
goto *@f
;----------------------------- main
*@
; BG
hsvcolor 112, 64, limit(c, 0, 255)
boxf
; setup
POLYS = 11
LOOPS = 11
dh = _2PI / POLYS
dz = 500.0 / POLYS
cz = dz * cc
cx = cos(mc * cz) * mr
cy = sin(ms * cz) * mr
d3setcam cx, cy, cz, cx + sin(f), cy + cos(f), cz + 100
; チューブ
hsvcolor (cb32 * 160) * pmode + 112, 128, 255
repeat POLYS * LOOPS, cc
c = cnt
th = dh * c : z = dz * c : cr = double(c - cc) / (POLYS * LOOPS)
x1 = cos(th) * r + cos(mc * z) * mr
y1 = sin(th) * r + sin(ms * z) * mr + cr*cr*mg
z1 = z
c = cnt + POLYS
th = dh * c : z = dz * c : cr = double(c - cc) / (POLYS * LOOPS)
cr = double(c - cc) / (POLYS * LOOPS)
x2 = cos(th) * r + cos(mc * z) * mr
y2 = sin(th) * r + sin(ms * z) * mr + cr*cr*mg
z2 = z
if bcnt >= 28 & pmode : z2 += cb4 * dz * POLYS / 3
gmode 5, , , (1.0-cr) * ((sin(th+f) + 1.2) * 128 + (cnt*cnt\32))
d3ribbonto x1, y1, z1, x2, y2, z2
gmode 5, , , (1.0-cr) * 56
d3particlem 2, 150
loop
; 浮遊物
repeat POLYS * LOOPS, cc
c = cnt
r = ((((c^0x5555)*c)^c)*c&0x7fffffff)\500 + 100
th = dh * c : z = dz * c : cr = double(c - cc) / (POLYS * LOOPS)
x1 = cos(th) * r + cos(mc * z) * mr
y1 = sin(th) * r + sin(ms * z) * mr + cr*cr*mg
z1 = z
gmode 5, , , (1.0-cr) * 255
d3particle 2, x1, y1, z1, 20
if rnd(3) = 0 {
gmode 5, , , (1.0-cr) * 64
d3particlem 5, 100
}
loop
return
;============================================================ ■
; cubes
;----------------------------- Phase 1
*cubes1
gosub *mod_xb1ss_2
; bgcolor
c += xb1ss * 8
gosub *@f
return
;----------------------------- main
*@
; 背景
color limit(c, 0, 255), limit(1.2 * c, 0, 255), limit(1.4 * c, 0, 255)
boxf
; setcam
cx = cb32 * 32000
d3setcam cx, 0, 0, cx - cos(cb32 * _2PI) * 1000, sin(cb32 * _2PI) * 500, sin(cb32 * _PI * 4) * 500, cb32s*cb32s*cb32s*cb32s*cb32s * 3 + 1
color limit(c+10, 0, 255), limit(1.2 * c + 20, 0, 255), limit(1.4 * c + 30, 0, 255)
; frame 1
repeat 36
y = (cnt / 6) * 1000 - 2500
z = (cnt \ 6) * 1000 - 2500
d3line 0, y, z, 32000, y, z
loop
; frame 2
repeat 9
x = cnt * 4000
repeat 6
y = cnt * 1000 - 2500
d3line x, y, -2500, x, y, 2500
d3line x, -2500, y, x, 2500, y
loop
loop
; particles
repeat 36 * 10
y = (cnt / 6 \ 6) * 1000 - 2500
z = (cnt \ 6) * 1000 - 2500
x = (-rnd(32000) + cb32 * 64000) \ 32000
gmode 5, , , 192
d3particle 1, x, y, z, 50
if rnd(3) = 0 {
gmode 5, , , 64
d3particlem 5, 200
}
loop
; cubes
color 64, 96, 128
a = 0.0
repeat 9
x = cnt * 4000
repeat 16
y = (cnt / 4) * 1000 - 1500
z = (cnt \ 4) * 1000 - 1500
a += 0.5
r = cos(xb1ss * _PI * 2 + a) * 50 + 200
gmode 5, , , 48
d3particle 5, x, y, z, r
if stat : gosub *draw_cube
loop
loop
gmode 5, , , 224
d3particle 0, -1000, 0, 0, 1000
gmode 5, , , 64
d3particlem 5, 4000
gmode 5, , , 224
d3particle 0, 33000, 0, 0, 1000
gmode 5, , , 64
d3particlem 5, 4000
return
;============================================================ □
; cube □ (x, y, z, r)
*draw_cube
d3initlineto
x1 = x - r
x2 = x + r
y1 = y - r
y2 = y + r
z1 = z - r
z2 = z + r
d3ribbonto x1, y1, z1, x1, y1, z2
gmode 5, , , 96
d3ribbonto x2, y1, z1, x2, y1, z2
gmode 5, , , 64
d3ribbonto x2, y2, z1, x2, y2, z2
gmode 5, , , 96
d3ribbonto x1, y2, z1, x1, y2, z2
gmode 5, , , 64
d3ribbonto x1, y1, z1, x1, y1, z2
ax = x1, x2, x2, x1
ay = y1, y1, y2, y2
az = z2, z2, z2, z2
gmode 5, , , 128
d3square ax, ay, az
return
;============================================================ ■
; 光 obj
;----------------------------- Phase 1
*lumin1
gosub *mod_xb1ss
f = cb32 * 9
r = 1700.0
if bcnt < 4 : r -= xb4s * 1000
d3setcam cos(f) * r, sin(f + 0.5) * r, sin(f/2) * r/2
gosub *@f
return
;----------------------------- main
*@
; BG
hsvcolor 112, 64, limit(c, 0, 255)
boxf
; 球体描画
#define ctype r_lumin(%1,%2) 500 + sin(%1 * 5 + cb32 * 30) * sin(%2) * 150 + sin(%2 * 2 + cb32 * 30) * 120
#define ctype th_lumin(%1,%2) %1 + %2 * sin(cb32 * _2PI * 1)
#define ctype ph_lumin(%1,%2) %2
POLYS = 26 ; 球体分割数
dh = _2PI / POLYS
flg = 1
; oOOo
color 96, 96, 192
repeat POLYS / 2
ph0 = dh * cnt
ph1 = dh * (cnt+1)
if cnt + 1 = POLYS / 2 : flg = 0
d3initlineto
repeat POLYS + 1
th = dh * cnt
; default value
x0 = 0 : y0 = 0 : z0 = r_lumin(th, ph0)
x1 = 0 : y1 = 0 : z1 = r_lumin(th, ph1)
; 座標を回転置換
d3rotate y0, z0, y0, z0, ph_lumin(th, ph0)
d3rotate x0, y0, x0, y0, th_lumin(th, ph0)
d3rotate y1, z1, y1, z1, ph_lumin(th, ph1)
d3rotate x1, y1, x1, y1, th_lumin(th, ph1)
gmode 5, , , ((sin(ph0*3+cb32*30)+0.4)+(sin(th*4)+0.4)) * 50
d3ribbonto x0, y0, z0, x1, y1, z1
if cnt * flg {
gmode 5, , , 192
d3particlem 1, 12
if rnd(3) = 0 {
gmode 5, , , 32
d3particlem PTC_STAR, (sin(ph0*3+cb32*30)+sin(th*4)) * 50
}
}
loop
loop
gmode 5, , , cos(cb32 * _2PI * 4) * 80 + 128
d3particle 0, 0, 0, 0, r_lumin(0.0,0.0)
; 浮遊物
repeat 300
r = rnd(60) * rnd(60)
f = rnd(32768)
x = cos(f) * r
y = sin(f) * r
z = rnd(4000) - 2000
if d3dist(x, y, z) < 1000 : continue
gmode 5, , , 128
d3particle 5, x, y, z, 15
if rnd(3) = 0 {
gmode 5, , , 32
d3particlem 5, 60
}
loop
return
;============================================================ ■
; moonlight
;----------------------------- Phase 1
*moon1
; blur
if bcnt >= 24 : useblur cb8 * 224
; カメラセッティング
r = cb32 * 2000 + 500
f = cb32 * 3
d3setcam cos(f) * r, sin(f) * r, 8000, 0, 0, 12000 - cb32s * 10000
css = -10000
goto *@f
;----------------------------- Phase 2
*moon2
if bcnt < 8 : useblur xb8 * 224
; カメラセッティング
r = 500 + xb32s * 5000
f = cb32 * 3
d3setcam cos(f) * r, sin(f) * r, 3000 + (cb8s*10000*(bcnt>=24)), 0, 0, cb32s * 10000
if bcnt >= 24 : c += cb8s * 64 ; bgc
css = -10000
goto *@f
;----------------------------- Phase 3
*moon3
; カメラセッティング
r = 700
f = cb32 + 0.3
d3setcam cos(f) * r, sin(f) * r, 10000, 0, 0, 8000
css = 4000
goto *@f
;----------------------------- Phase 4
*moon4
if bcnt >= 24 : useblur cb8 * 224
; カメラセッティング
d3setcam xb32 * 2000, 0, 4000, 0, 0, 8000 + cb32 * 10000
css = 4000 + cb32 * 15000
goto *@f
;----------------------------- main
*@
; 背景
color limit(c, 0, 255), limit(c, 0, 255), limit(1.5 * c, 0, 255)
boxf
; moon
gmode 5, , , 192
d3particle PTC_MOON, 0, 0, 50000, 1200
gmode 5, , , 48
d3particlem 0, 6000
; moonlight
repeat 10
gmode 5, , , (10-cnt) * 3
d3particle 0, 0, 0, 20000 - cnt * 1000, cnt * 70 + 1000
loop
; ground
ax = 1500, 0, 0, 1500
ay = 1500, 1500, 0, 0
az = 0, 0, 0, 0
gmode 5, , , 112
repeat 5
f = _2PI / 5 * cnt
repeat 4
d3rotate afx(cnt), afy(cnt), ax(cnt), ay(cnt), f
loop
d3texture afx, afy, az, TEX_MOON, 0, 0, 480, 480, 2
loop
; gnd softlight
gmode 5, , , 80
d3particle 0, 0,0,0, 1000
; light
gmode 5, , , 128
d3particle 0, 0, 0, 0, 300
gmode 5, , , 128
d3particlem 0, 500
repeat 30, 1
gmode 5, , , (30 - cnt) * 2
d3particle 0, 0, 0, cnt * 100, cnt * 5 + 100
loop
; snow
repeat 1500
f = rnd(32768)
r = 0.030 * rnd(1000) : r *= r + 5
z = 30000 * cnt / 1000
gmode 5, , , 224
d3particle 0, cos(f) * r, sin(f) * r, limit( (100000 + cb32 * css + z)\30000 - 10000, 0, 32768), 20
if rnd(3) = 0 {
gmode 5, , , 24
d3particlem 5, 80
}
loop
; stars
gmode 5, , , 192
repeat 200
f = rnd(32768)
z = rnd(32768)
r = 32768 - z
d3particle 0, cos(f) * r, sin(f) * r, z + 5000, rnd(100) + 10
loop
return
;============================================================ ■
; hexagon tube
;----------------------------- Phase 1
*hexa1
if bcnt / 4 = 12 / 4 : useblur cb4 * 224
if bcnt / 4 = 16 / 4 : useblur xb4 * 224
gosub *mod_xb1ss
c += xb1ss * 32
; setcam
f = cb32 * _PI - 1.57
cy = cb32 * 32000
d3setcam 0, cy, 0, cos(f) / 3, cy + sin(f), 0
goto *@f
;----------------------------- main
*@
; BG
hsvcolor 112, 128, limit(c, 0, 255)
boxf
POLYS = 6
dh = _2PI / POLYS
rr = 544
th = cb32 * 12
color 200, 200, 255
repeat 48, -8
y = cnt * 1000
d3initlineto
repeat POLYS + 1
x = cos(dh * cnt + th) * rr
z = sin(dh * cnt + th) * rr
; 表示
gmode 5, , , 112 - sin(dh * cnt + th) * 64
d3ribbonto x, y-100, z, x, y+100, z
if cnt {
gmode 5, , , 72
d3particlem 0, 50
}
loop
repeat POLYS
x = cos(dh * cnt + th) * rr
z = sin(dh * cnt + th) * rr
d3particle 0, x, y-100, z, 50
loop
loop
gmode 5, , , 120
d3particle 5, 0, 32010, 0, 2000
d3particlemr PTC_STAR, 300, cb32 * -4
d3particlemr PTC_STAR, 400, cb32 * 3
gmode 5, , , 120
d3particle 5, 0, -10, 0, 2000
d3particlemr PTC_STAR, 300, cb32 * -4
d3particlemr PTC_STAR, 400, cb32 * 3
; byu-byu-
POLYS = 12
dh = _2PI / POLYS
gmode 5, , , 64
repeat 31, 1
rr = 100
y = cnt * 1000
repeat POLYS
x = cos(dh * cnt) * rr
z = sin(dh * cnt) * rr
d3particle 5, x, y + sin(dh * cnt * 6 + cb32 * 32) * 30, z, 50
loop
loop
repeat 1000
f = rnd(32768)
r = rnd(50) + 20
r = r * r
gmode 5, , , 224
d3particle 0, cos(f)*r, 2 * (25000 - (rnd(32768) + cb32 * 32768) \ 32768), sin(f)*r, 20
if rnd(3) = 0 {
gmode 5, , , 64
d3particlem 5, 100
}
loop
return
;============================================================ ■
; pentagon tube
;----------------------------- Phase 1
*penta1
if bcnt >= 24 & (int(cb1 * 4) \ 2) = 0 {
on int(fcnt * 2)\6 goto *rappa1, *prop1, *tube2, *logotip11, *xtube2, *helic2
}
gosub *mod_xb1ss
c += xb1ss * 32
; BG
color limit(c, 0, 255), limit(c, 0, 255), limit(1.5 * c, 0, 255)
boxf
; setcam
d3setcam 0, cb32 * 32000, 0, 0, 60000, 0
; setcam
r = xb32 * 800 + xb1 * 30
f = cb32 * 1.4 * _2PI
cy = cb32 * 32000
d3setcam 0, cy, 0, cos(f) * r, cy + 1000, sin(f) * r
goto *@f
;----------------------------- main
*@
POLYS = 5
dh = _2PI / POLYS
repeat 32
rr = (35 - cnt) * 16
y = cnt * 1000
th = cb32 * 32 * _PI / POLYS * ((cnt&1)*2-1)
if cnt&1 : color 255, 192, 128 : else : color 128, 192, 255
d3initlineto
repeat POLYS + 1
x = cos(dh * cnt + th) * rr
z = sin(dh * cnt + th) * rr
gmode 5, , , 112 - sin(dh * cnt + th) * 64
d3ribbonto x, y-100, z, x, y+100, z
if cnt {
gmode 5, , , 72
d3particlem 0, 50
}
loop
repeat POLYS
x = cos(dh * cnt + th) * rr
z = sin(dh * cnt + th) * rr
d3particle 0, x, y-100, z, 50
loop
loop
; byu-byu-
POLYS = 12
dh = _2PI / POLYS
gmode 5, , , 64
repeat 31, 1
rr = 100
y = cnt * 1000
repeat POLYS
x = cos(dh * cnt) * rr
z = sin(dh * cnt) * rr
d3particle 2, x, y + sin(dh * cnt * 6 + cb32 * 32) * 30, z, 50
loop
loop
gmode 5, , , 96
d3particle 5, 0, 32010, 0, 2000
gmode 5, , , 64
d3particlem 0, 700
gmode 5, , , 120
d3particlemr PTC_STAR, 300, cb32 * -4
d3particlemr PTC_STAR, 400, cb32 * 3
repeat 1000
f = rnd(32768)
r = rnd(50) + 20
r = r * r
gmode 5, , , 224
d3particle 0, cos(f)*r, 2 * (32768 - (rnd(32768) + cb32 * 32768) \ 32768), sin(f)*r, 20
if rnd(3) = 0 {
gmode 5, , , 64
d3particlem 5, 100
}
loop
return
;============================================================ ■
; アレイ
;----------------------------- Phase 1
*arry1
if bcnt >= 24 {
cc = xb8
} else:if bcnt >= 8 {
cc = 1
} else {
cc = cb8
}
c *= cc
; カメラ座標
d3setcam cos(cb32), sin(cb32), cb32s * 5000 + cb32 * 5000, 0, 0, -10000
gosub *@f
; telop
sx = fnt_s3
sy = fnt_s3
repeat 9
wx = sin((cb32 - 0.0625 * cnt) * _2PI) * 0.5
if wx > 0.0 {
types = astr_cred(cnt)
py = 0.1 + 0.1 * cnt
gmode 5, , , wx * 500
screen_type types, wx, py, sx, sy
}
loop
return
;----------------------------- main
*@
; 背景 (c, c, c)
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
boxf
; アレイ
c += cc * 160
color limit(c, 0, 255), limit(c, 0, 255), limit(c + 32, 0, 255)
repeat 101
r = rnd(1000) + 1000
th = rnd(32768)
x0 = cos(th) * r
y0 = sin(th) * r
d3setlocal x0, y0, 0
z0 = 16000.0 * (cnt) / 100 - 1000
th = 3.395 * cnt + cb32*3
a = cnt
repeat 5
r = cnt * 150 - 600
x0 = cos(th) * r
y0 = sin(th) * r
if cnt = 4 {
d3circle x0, y0, z0, 70, 1
gmode 5, , , cc * 160
d3particlem a\4+1, 210
} else {
d3circle x0, y0, z0, 30, 1
gmode 5, , , cc * 160
d3particlem a\4+1, 90
}
loop
loop
d3setlocal
gmode 5, , , cc * 64
repeat 1000
d3particle 0, rnd(10000)-5000, rnd(10000)-5000, rnd(20000)-10000, 50
loop
return