Initial commit.
@@ -1 +1 @@
|
||||
Place announcer folders in this directory.
|
||||
Place announcer folders in this directory.
|
||||
@@ -1 +1 @@
|
||||
Place BGAnimation folders in here.
|
||||
Place BGAnimation folders in here.
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
return Def.Quad
|
||||
{
|
||||
return Def.Quad{
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT);
|
||||
GainFocusCommand=cmd(diffusealpha,1.0;accelerate,0.6;diffusealpha,0);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
return Def.Quad
|
||||
{
|
||||
return Def.Quad{
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT);
|
||||
GainFocusCommand=cmd(diffuse,color("#FFFFA0");accelerate,0.6;diffusealpha,0);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
local Color = color(Var "Color1");
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
local Color = color(Var "Color1");
|
||||
local a = LoadActor(Var "File2") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
local Color = color(Var "Color1");
|
||||
local a = LoadActor(Var "File2") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local a = LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;diffuse,Color;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
a .. { OnCommand=cmd(x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM)); };
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
local Color1 = color(Var "Color1");
|
||||
local Color2 = color(Var "Color2");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
Def.Sprite {
|
||||
OnCommand=cmd(x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT;diffuse,Color1;effectclock,"music");
|
||||
};
|
||||
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(blend,"BlendMode_Add";x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomtowidth,SCREEN_WIDTH;zoomtoheight,SCREEN_HEIGHT;diffuse,Color2;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
@@ -1,10 +1,10 @@
|
||||
local Color = color(Var "Color1");
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;loop,false;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;loop,false;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
-- Align left when cropping to 4:3.
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(Color);effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
-- Align left when cropping to 4:3.
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(Color);effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;pause;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;pause;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;position,0;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(scale_or_crop_background;diffuse,Color;position,0;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
-- upper left corner
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
-- upper left corner
|
||||
local Color = color(Var "Color1");
|
||||
|
||||
local t = Def.ActorFrame {
|
||||
LoadActor(Var "File1") .. {
|
||||
OnCommand=cmd(diffuse,Color;effectclock,"music");
|
||||
GainFocusCommand=cmd(play);
|
||||
LoseFocusCommand=cmd(pause);
|
||||
};
|
||||
};
|
||||
|
||||
return t;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="stoptweening;linear,1.0;diffusealpha,0"
|
||||
RootCommand=""
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="stoptweening;linear,1.0;diffusealpha,0"
|
||||
RootCommand=""
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="croptop,-0.3;fadetop,0.3;linear,1.0;croptop,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="croptop,-0.3;fadetop,0.3;linear,1.0;croptop,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropright,-0.3;faderight,0.3;linear,1.0;cropright,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropright,-0.3;faderight,0.3;linear,1.0;cropright,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropleft,-0.3;fadeleft,0.3;linear,1.0;cropleft,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropleft,-0.3;fadeleft,0.3;linear,1.0;cropleft,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropbottom,-0.3;fadebottom,0.3;linear,1.0;cropbottom,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="cropbottom,-0.3;fadebottom,0.3;linear,1.0;cropbottom,1.3"
|
||||
RootCommand=""
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addy,SCREEN_HEIGHT"
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addy,SCREEN_HEIGHT"
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addx,-SCREEN_WIDTH"
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addx,-SCREEN_WIDTH"
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addx,SCREEN_WIDTH"
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addx,SCREEN_WIDTH"
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addy,-SCREEN_HEIGHT"
|
||||
/>
|
||||
<BackgroundTransition
|
||||
LeavesCommand="linear,1.0;diffusealpha,0"
|
||||
RootCommand="stoptweening;linear,1.0;addy,-SCREEN_HEIGHT"
|
||||
/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
DWI-style CDTiltes can be placed here.
|
||||
|
||||
However, you are highly encouraged to place the CDTitle graphics
|
||||
inside the song folder since the package manager cannot use the
|
||||
DWI-style CDTitles or Music folders.
|
||||
DWI-style CDTitles can be placed here.
|
||||
|
||||
However, you are highly encouraged to place the CDTitle graphics
|
||||
inside the song folder since the package manager cannot use the
|
||||
DWI-style CDTitles or Music folders.
|
||||
@@ -0,0 +1,21 @@
|
||||
IF YOU DO NOT HAVE THE BONE FILES, 3D DANCING CHARACTERS WILL NOT WORK.
|
||||
THE BONE FILES ARE NOT DISTRIBUTED WITH ANY VERSION OF STEPMANIA/sm-ssc SINCE
|
||||
THEY CONTAIN COPYRIGHTED MATERIAL NOT MADE BY US. IF WE COME UP WITH DATA LATER,
|
||||
COOL. IF NOT, SO BE IT.
|
||||
|
||||
http://stepmaniathings.com/downloads/characters/-required-bones-and-helper-files.html
|
||||
EXTRACT THE FILES IN THIS FOLDER SO THAT YOU SEE tons of _DDRPC_*.bones.txt files.
|
||||
|
||||
THEN 3D CHARACTERS WILL WORK.
|
||||
JUST DON'T SPAM THE FORUMS AND BUGTRACKER ABOUT IT.
|
||||
THE INSTRUCTIONS COME WITH THE PROGRAM. YOU'RE READING THEM RIGHT NOW!!!
|
||||
|
||||
oh and for compatibility, you will want to perform the following renames:
|
||||
|
||||
old name | new name
|
||||
------------------+--------------
|
||||
DancePad-DDR.txt | DancePad.txt
|
||||
DancePads-DDR.txt | DancePads.txt
|
||||
|
||||
a bit presumptious, but anything in the name of keeping it safe in regards to
|
||||
copyright, yeah?
|
||||
@@ -1,10 +1,10 @@
|
||||
[Character]
|
||||
Level1Attack1=1.5x
|
||||
Level1Attack2=hidden
|
||||
Level1Attack3=reverse
|
||||
Level2Attack1=2x
|
||||
Level2Attack2=sudden
|
||||
Level2Attack3=expand
|
||||
Level3Attack1=3x
|
||||
Level3Attack2=boost
|
||||
Level3Attack3=brake
|
||||
[Character]
|
||||
Level1Attack1=1.5x
|
||||
Level1Attack2=hidden
|
||||
Level1Attack3=reverse
|
||||
Level2Attack1=dizzy
|
||||
Level2Attack2=sudden
|
||||
Level2Attack3=expand
|
||||
Level3Attack1=0.5x
|
||||
Level3Attack2=drunk
|
||||
Level3Attack3=brake
|
||||
|
After Width: | Height: | Size: 107 B |
@@ -1,6 +1,5 @@
|
||||
#COURSE:Players Best 1-4;
|
||||
#SONG:BEST1:Medium;
|
||||
#SONG:BEST2:Medium;
|
||||
#SONG:BEST3:Medium;
|
||||
#SONG:BEST4:Medium;
|
||||
|
||||
#COURSE:Most Played 01-04;
|
||||
#SONG:BEST1:Medium;
|
||||
#SONG:BEST2:Medium;
|
||||
#SONG:BEST3:Medium;
|
||||
#SONG:BEST4:Medium;
|
||||
|
After Width: | Height: | Size: 35 KiB |
@@ -1,5 +1,5 @@
|
||||
#COURSE:Players Best 5-8;
|
||||
#SONG:BEST5:Medium;
|
||||
#SONG:BEST6:Medium;
|
||||
#SONG:BEST7:Medium;
|
||||
#SONG:BEST8:Medium;
|
||||
#COURSE:Most Played 05-08;
|
||||
#SONG:BEST5:Medium;
|
||||
#SONG:BEST6:Medium;
|
||||
#SONG:BEST7:Medium;
|
||||
#SONG:BEST8:Medium;
|
||||
|
After Width: | Height: | Size: 36 KiB |
@@ -1,5 +1,5 @@
|
||||
#COURSE:Players Best 9-12;
|
||||
#SONG:BEST9:Medium;
|
||||
#SONG:BEST10:Medium;
|
||||
#SONG:BEST11:Medium;
|
||||
#SONG:BEST12:Medium;
|
||||
#COURSE:Most Played 09-12;
|
||||
#SONG:BEST9:Medium;
|
||||
#SONG:BEST10:Medium;
|
||||
#SONG:BEST11:Medium;
|
||||
#SONG:BEST12:Medium;
|
||||
|
After Width: | Height: | Size: 35 KiB |
@@ -1,5 +1,5 @@
|
||||
#COURSE:Players Best 13-16;
|
||||
#SONG:BEST13:Medium;
|
||||
#SONG:BEST14:Medium;
|
||||
#SONG:BEST15:Medium;
|
||||
#SONG:BEST16:Medium;
|
||||
#COURSE:Most Played 13-16;
|
||||
#SONG:BEST13:Medium;
|
||||
#SONG:BEST14:Medium;
|
||||
#SONG:BEST15:Medium;
|
||||
#SONG:BEST16:Medium;
|
||||
|
After Width: | Height: | Size: 35 KiB |
@@ -1,7 +0,0 @@
|
||||
#COURSE:All Challenge;
|
||||
#LIVES:4;
|
||||
#SONG:*:CHALLENGE;
|
||||
#SONG:*:CHALLENGE;
|
||||
#SONG:*:CHALLENGE;
|
||||
#SONG:*:CHALLENGE;
|
||||
#SONG:*:CHALLENGE;
|
||||
@@ -1,5 +0,0 @@
|
||||
#COURSE:All Music Random;
|
||||
#SONG:*:Medium:;
|
||||
#SONG:*:Medium:;
|
||||
#SONG:*:Medium:;
|
||||
#SONG:*:Medium:;
|
||||
@@ -1,10 +0,0 @@
|
||||
#COURSE:End of the Road;
|
||||
#LIVES:4;
|
||||
#SONG:*:7..7:1.5x,reverse;
|
||||
#SONG:*:7..7:expand;
|
||||
#SONG:*:8..8:0.25x;
|
||||
#SONG:*:8..8:hidden,boost;
|
||||
#SONG:*:9..9:3.0x,dark,reverse;
|
||||
#SONG:*:9..9:land,big,supershuffle;
|
||||
#SONG:*:10..10:1.2xmusic,dizzy,drunk;
|
||||
#SONG:*:10..10:tornado,shuffle,dark;
|
||||
@@ -1,5 +0,0 @@
|
||||
#COURSE:Players Worst;
|
||||
#SONG:WORST1:Medium;
|
||||
#SONG:WORST2:Medium;
|
||||
#SONG:WORST3:Medium;
|
||||
#SONG:WORST4:Medium;
|
||||
@@ -1,6 +0,0 @@
|
||||
#COURSE:Random Caprice;
|
||||
|
||||
#SONG:*:ANOTHER:showcourse;
|
||||
#SONG:*:ANOTHER:showcourse;
|
||||
#SONG:*:ANOTHER:showcourse;
|
||||
#SONG:*:ANOTHER:showcourse;
|
||||
@@ -1,7 +0,0 @@
|
||||
#COURSE:Stamina Tester Random;
|
||||
#LIVES:4;
|
||||
#SONG:*:9..10;
|
||||
#SONG:*:9..10;
|
||||
#SONG:*:9..10;
|
||||
#SONG:*:9..10;
|
||||
#SONG:*:9..10;
|
||||
@@ -1,66 +0,0 @@
|
||||
#COURSE:StepMix Survival;
|
||||
#METER:Regular:13;
|
||||
#GAINSECONDS:90;
|
||||
#MODS:
|
||||
TIME=0.008:END=30.865:MODS=3.3x,Hidden,50% HiddenOffset,50% Sudden:
|
||||
TIME=30.865:END=37.722:MODS=1.1x,*1.1 Brake:
|
||||
TIME=37.722:END=91.3:MODS=*1.1 2.2x:
|
||||
TIME=37.722:END=56.586:MODS=*.2 20% Expand:
|
||||
TIME=56.586:END=75.443:MODS=*.2 40% Expand:
|
||||
TIME=75.443:END=91.3:MODS=*.2 80% Expand:
|
||||
TIME=91.3:END=120.5:MODS=*3.3 3.3x,*3.3 Hidden,50% HiddenOffset,*3.3 50% Sudden,*3.3 -60% Expand;
|
||||
#SONG:*:HARD:;
|
||||
#GAINSECONDS:50;
|
||||
#MODS:
|
||||
TIME=0:END=118.5:MODS=2x:
|
||||
TIME=12.986:END=35.980:MODS=Hallway,Boomerang:
|
||||
TIME=35.980:END=47.477:MODS=*5 120% Wave:
|
||||
TIME=47.477:END=58.974:MODS=*5 5% Flip,*5 -50% Tiny,*5 1.75x,*5 no Wave:
|
||||
TIME=58.974:END=70.471:MODS=*5 10% Flip,*5 -100% Tiny,*5 1.5x:
|
||||
TIME=70.471:END=81.968:MODS=*5 15% Flip,*5 -150% Tiny,*5 1.25x:
|
||||
TIME=81.968:END=93.465:MODS=*5 20% Flip,*5 -200% Tiny,*5 1x:
|
||||
TIME=93.465:END=96:MODS=*5 no Flip,*5 no Tiny,*5 2x:
|
||||
TIME=93.465:END=104.962:MODS=*5 120% Wave:
|
||||
TIME=104.962:END=118.5:MODS=*0.15 Distant, *0.15 200% Tiny,*5 no Wave;
|
||||
#SONG:*:HARD:;
|
||||
#GAINSECONDS:50;
|
||||
#MODS:
|
||||
TIME=0.420:END=103.576:MODS=2x:
|
||||
TIME=0.420:END=6.325:MODS=*5 10% Beat:
|
||||
TIME=6.325:END=12.23:MODS=*5 20% Beat:
|
||||
TIME=12.13:END=18.135:MODS=*5 30% Beat:
|
||||
TIME=18.135:END=32.899:MODS=*5 40% Beat:
|
||||
TIME=32.899:END=38.804:MODS=*5 50% Beat:
|
||||
TIME=38.804:END=44.709:MODS=*5 60% Beat:
|
||||
TIME=44.709:END=50.614:MODS=*5 70% Beat:
|
||||
TIME=50.614:END=56.519:MODS=*5 80% Beat:
|
||||
TIME=56.519:END=62.425:MODS=*5 90% Beat:
|
||||
TIME=62.425:END=68.330:MODS=*5 Beat:
|
||||
TIME=68.330:END=74.235:MODS=*5 120% Beat:
|
||||
TIME=74.235:END=80.140:MODS=*5 140% Beat:
|
||||
TIME=80.140:END=86.045:MODS=*5 160% Beat:
|
||||
TIME=86.045:END=91.950:MODS=*5 180% Beat:
|
||||
TIME=91.950:END=97.855:MODS=*5 200% Beat:
|
||||
TIME=97.855:END=103.576:MODS=*.25 no Beat:;
|
||||
#SONG:*:HARD:;
|
||||
#GAINSECONDS:70;
|
||||
#MODS:
|
||||
TIME=0:END=109.399:MODS=2.25x:
|
||||
TIME=4.462:END=71.262:MODS=25% Flip,-25% Invert:
|
||||
TIME=31.262:LEN=1.6:MODS=nojumps:
|
||||
TIME=32.862:END=39.262:MODS=noholds:
|
||||
TIME=58.862:END=71.262:MODS=noholds,nojumps:
|
||||
TIME=71.262:END=82.464:MODS=*1.25 Flip:
|
||||
TIME=82.464:END=109.399:MODS=25% Flip,25% Invert:
|
||||
TIME=96.599:LEN=12.8:MODS=nojumps;
|
||||
#SONG:*:HARD:;
|
||||
#GAINSECONDS:70;
|
||||
#MODS:
|
||||
TIME=0:END=118.366:MODS=2.5x,Blind:
|
||||
TIME=5.122:END=35.545:MODS=*5 Alternate:
|
||||
TIME=35.545:END=49.066:MODS=*5 no Alternate,*5 Split:
|
||||
TIME=49.066:END=76.108:MODS=*5 no Split,*5 Alternate,*5 Reverse:
|
||||
TIME=76.108:END=89.629:MODS=*5 no Alternate,*5 Split,*5 Reverse:
|
||||
TIME=89.629:LEN=1:MODS=*5 no Split,*5 no Reverse:
|
||||
TIME=103.152:END=118.366:MODS=*.125 125% Centered,*.125 1x,*.075 Stealth,*.075 Dark:;
|
||||
#SONG:*:EXPERT:;
|
||||
@@ -1,5 +0,0 @@
|
||||
#COURSE:Tortoise and the Hare;
|
||||
#SONG:*:Medium:0.8xmusic;
|
||||
#SONG:*:Medium:1.1xmusic;
|
||||
#SONG:*:Medium:1.3xmusic;
|
||||
#SONG:*:Medium:1.5xmusic;
|
||||
@@ -1,5 +0,0 @@
|
||||
#COURSE:Tricky Random;
|
||||
#SONG:*:Medium:1.5x,reverse;
|
||||
#SONG:*:Medium:expand;
|
||||
#SONG:*:Medium:0.25x,dark;
|
||||
#SONG:*:Medium:sudden,land;
|
||||
@@ -1 +1,3 @@
|
||||
Place CRS and course banner files here.
|
||||
Course files (.crs) typically go in folders, though they aren't shown like that
|
||||
on the wheel... yet. (Coming soon: a metric that allows a theme to do that, once
|
||||
we get the wheel to treat course directories like song directories)
|
||||
@@ -1,55 +1,55 @@
|
||||
[Skill0]
|
||||
WeightMiss=8
|
||||
WeightW5=8
|
||||
WeightW4=8
|
||||
WeightW3=30
|
||||
WeightW2=30
|
||||
WeightW1=30
|
||||
|
||||
[Skill1]
|
||||
WeightMiss=5
|
||||
WeightW5=5
|
||||
WeightW4=5
|
||||
WeightW3=25
|
||||
WeightW2=30
|
||||
WeightW1=35
|
||||
|
||||
[Skill2]
|
||||
WeightMiss=3
|
||||
WeightW5=3
|
||||
WeightW4=3
|
||||
WeightW3=20
|
||||
WeightW2=30
|
||||
WeightW1=40
|
||||
|
||||
[Skill3]
|
||||
WeightMiss=2
|
||||
WeightW5=2
|
||||
WeightW4=2
|
||||
WeightW3=15
|
||||
WeightW2=30
|
||||
WeightW1=45
|
||||
|
||||
[Skill4]
|
||||
WeightMiss=1
|
||||
WeightW5=1
|
||||
WeightW4=1
|
||||
WeightW3=10
|
||||
WeightW2=30
|
||||
WeightW1=50
|
||||
|
||||
[Skill5]
|
||||
WeightMiss=
|
||||
WeightW5=1
|
||||
WeightW4=1
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=55
|
||||
|
||||
[Skill6]
|
||||
WeightMiss=
|
||||
WeightW5=
|
||||
WeightW4=
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=70
|
||||
[Skill0]
|
||||
WeightMiss=8
|
||||
WeightW5=8
|
||||
WeightW4=8
|
||||
WeightW3=30
|
||||
WeightW2=30
|
||||
WeightW1=30
|
||||
|
||||
[Skill1]
|
||||
WeightMiss=5
|
||||
WeightW5=5
|
||||
WeightW4=5
|
||||
WeightW3=25
|
||||
WeightW2=30
|
||||
WeightW1=35
|
||||
|
||||
[Skill2]
|
||||
WeightMiss=3
|
||||
WeightW5=3
|
||||
WeightW4=3
|
||||
WeightW3=20
|
||||
WeightW2=30
|
||||
WeightW1=40
|
||||
|
||||
[Skill3]
|
||||
WeightMiss=2
|
||||
WeightW5=2
|
||||
WeightW4=2
|
||||
WeightW3=15
|
||||
WeightW2=30
|
||||
WeightW1=45
|
||||
|
||||
[Skill4]
|
||||
WeightMiss=1
|
||||
WeightW5=1
|
||||
WeightW4=1
|
||||
WeightW3=10
|
||||
WeightW2=30
|
||||
WeightW1=50
|
||||
|
||||
[Skill5]
|
||||
WeightMiss=
|
||||
WeightW5=1
|
||||
WeightW4=1
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=55
|
||||
|
||||
[Skill6]
|
||||
WeightMiss=
|
||||
WeightW5=
|
||||
WeightW4=
|
||||
WeightW3=5
|
||||
WeightW2=30
|
||||
WeightW1=70
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#P1#
|
||||
#P2#
|
||||
#P1#
|
||||
#P2#
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
varying vec2 texCoords;
|
||||
varying vec3 normal, viewVector;
|
||||
varying vec4 lightVector, lightColor;
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
float intensity = dot(normal, lightVector.xyz);
|
||||
float fresnel = pow(1.0 - dot(viewVector, normal), 5.0);
|
||||
fresnel = fresnel < 0.5 ? 0.0 : 0.4;
|
||||
|
||||
float shade = 1.0;
|
||||
if( intensity > 0.35 )
|
||||
shade = clamp(1.0 * intensity + 0.4, 0.0, 1.0);
|
||||
else
|
||||
shade = clamp(0.85 * intensity + 0.25, 0.4, 0.6);
|
||||
shade = clamp(shade - fresnel, 0.3, 1.0);
|
||||
|
||||
vec4 vcol = gl_FrontMaterial.diffuse;
|
||||
vec4 tex = texture2D(Texture1, texCoords);
|
||||
|
||||
gl_FragColor = lightColor * vec4(tex.rgb * shade, 1.0);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
varying vec3 normal, viewVector;
|
||||
varying vec4 lightVector, lightColor;
|
||||
varying vec2 texCoords;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
texCoords = gl_MultiTexCoord0.st;
|
||||
|
||||
vec4 objectPos = gl_ModelViewMatrix * gl_Vertex;
|
||||
|
||||
normal = gl_NormalMatrix * gl_Normal;
|
||||
lightVector = normalize(gl_LightSource[0].position);
|
||||
lightColor = gl_LightSource[0].diffuse;
|
||||
viewVector = normalize(vec3(0) - objectPos.xyz);
|
||||
gl_Position = ftransform();
|
||||
}
|
||||
@@ -1,65 +1,65 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyBurn( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(1,1,1);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = (over.rgb + under.rgb - 1.0);
|
||||
|
||||
ret.rgb /= max(over.rgb, 0.000001);
|
||||
ret.rgb *= over.a*under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyBurn( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyBurn( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(1,1,1);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = (over.rgb + under.rgb - 1.0);
|
||||
|
||||
ret.rgb /= max(over.rgb, 0.000001);
|
||||
ret.rgb *= over.a*under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyBurn( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,66 +1,66 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyDodge( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(0,0,0);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
|
||||
ret.rgb /= max(1.0-over.rgb, 0.000001);
|
||||
ret.rgb = min(ret.rgb, 1.0);
|
||||
ret.rgb *= over.a*under.a;
|
||||
// ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyDodge( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyDodge( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(0,0,0);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
|
||||
ret.rgb /= max(1.0-over.rgb, 0.000001);
|
||||
ret.rgb = min(ret.rgb, 1.0);
|
||||
ret.rgb *= over.a*under.a;
|
||||
// ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyDodge( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,92 +1,92 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyVividLight( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(.5,.5,.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
over.rgb -= 0.5;
|
||||
over.rgb *= 2.0;
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
ret.rgb += min(over.rgb, 0.0);
|
||||
ret.rgb /= max(1.0-abs(over.rgb), 0.000001);
|
||||
ret.rgb *= under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
ret.rgb *= over.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
vec4 ApplyHardMix( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec4 ret = ApplyVividLight( over, under, gl_Color.a );
|
||||
|
||||
/* ret is premultiplied. Undo this, so we have a
|
||||
* 0..1 range for color. */
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
fill *= fill;
|
||||
|
||||
/* Posterize, with a threshold based on fill. This is a rough
|
||||
* approximation. */
|
||||
float low = 0.5-(1.0-fill)*0.5;
|
||||
float high = 0.5+(1.0-fill)*0.5+0.00001;
|
||||
ret.rgb = (ret.rgb - low) / (high - low);
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
/* Premultiply it, for the rest of the calculation. */
|
||||
ret.rgb *= ret.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyHardMix( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyVividLight( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(.5,.5,.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
over.rgb -= 0.5;
|
||||
over.rgb *= 2.0;
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
ret.rgb += min(over.rgb, 0.0);
|
||||
ret.rgb /= max(1.0-abs(over.rgb), 0.000001);
|
||||
ret.rgb *= under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
ret.rgb *= over.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
vec4 ApplyHardMix( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec4 ret = ApplyVividLight( over, under, gl_Color.a );
|
||||
|
||||
/* ret is premultiplied. Undo this, so we have a
|
||||
* 0..1 range for color. */
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
fill *= fill;
|
||||
|
||||
/* Posterize, with a threshold based on fill. This is a rough
|
||||
* approximation. */
|
||||
float low = 0.5-(1.0-fill)*0.5;
|
||||
float high = 0.5+(1.0-fill)*0.5+0.00001;
|
||||
ret.rgb = (ret.rgb - low) / (high - low);
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
|
||||
/* Premultiply it, for the rest of the calculation. */
|
||||
ret.rgb *= ret.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyHardMix( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyOverlay( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
// we want to compare against black for the alpha pass, I think...
|
||||
vec3 NeutralColor = vec3(0.5,0.5,0.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb * over.rgb * 2.0;
|
||||
|
||||
ret.rgb = min(ret.rgb, 1.0);
|
||||
ret.rgb *= over.a * under.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
// creates two vec4s that represent the two textures.
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
// the return value is also a vec4.
|
||||
vec4 ret = ApplyOverlay( over, under, gl_Color.a );
|
||||
|
||||
// glenn does some math here that I don't understand just yet.
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
// this is unpremultiply though:
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 AJ Kelly
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
@@ -0,0 +1,66 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyScreen( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(0.5,0.5,0.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = (1.0 - ((1.0 - under.rgb) * (1.0 - over.rgb)));
|
||||
|
||||
ret.rgb = min(ret.rgb, 1.0);
|
||||
ret.rgb *= over.a * under.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
// creates two vec4s that represent the two textures.
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
// the return value is also a vec4.
|
||||
vec4 ret = ApplyScreen( over, under, gl_Color.a );
|
||||
|
||||
// glenn does some math here that I haven't put the time in to understand yet.
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
// this is unpremultiply though:
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 AJ Kelly
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
@@ -1,11 +1,11 @@
|
||||
attribute vec4 TextureMatrixScale;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||||
vec4 multiplied_tex_coord = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
||||
gl_TexCoord[0] = (multiplied_tex_coord * TextureMatrixScale) +
|
||||
(gl_MultiTexCoord0 * (vec4(1)-TextureMatrixScale));
|
||||
gl_FrontColor = gl_Color;
|
||||
}
|
||||
|
||||
attribute vec4 TextureMatrixScale;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||||
vec4 multiplied_tex_coord = gl_TextureMatrix[0] * gl_MultiTexCoord0;
|
||||
gl_TexCoord[0] = (multiplied_tex_coord * TextureMatrixScale) +
|
||||
(gl_MultiTexCoord0 * (vec4(1)-TextureMatrixScale));
|
||||
gl_FrontColor = gl_Color;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
uniform sampler2D Texture1;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 ret = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
if( ret.a != 0.0 )
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 ret = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
if( ret.a != 0.0 )
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,69 +1,69 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyVividLight( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(.5,.5,.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
over.rgb -= 0.5;
|
||||
over.rgb *= 2.0;
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
ret.rgb += min(over.rgb, 0.0);
|
||||
ret.rgb /= max(1.0-abs(over.rgb), 0.000001);
|
||||
ret.rgb *= under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
ret.rgb *= over.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyVividLight( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
|
||||
vec4 ApplyVividLight( vec4 over, vec4 under, float fill )
|
||||
{
|
||||
vec3 NeutralColor = vec3(.5,.5,.5);
|
||||
over.rgb = mix( NeutralColor, over.rgb, fill );
|
||||
|
||||
over.rgb -= 0.5;
|
||||
over.rgb *= 2.0;
|
||||
|
||||
vec4 ret;
|
||||
ret.rgb = under.rgb;
|
||||
ret.rgb += min(over.rgb, 0.0);
|
||||
ret.rgb /= max(1.0-abs(over.rgb), 0.000001);
|
||||
ret.rgb *= under.a;
|
||||
ret = clamp( ret, 0.0, 1.0 );
|
||||
ret.rgb *= over.a;
|
||||
|
||||
ret.a = over.a * under.a;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec4 under = texture2DProj( Texture1, gl_TexCoord[0] );
|
||||
vec4 over = texture2DProj( Texture2, gl_TexCoord[0] );
|
||||
|
||||
vec4 ret = ApplyVividLight( over, under, gl_Color.a );
|
||||
|
||||
ret.rgb += (1.0 - over.a) * under.rgb * under.a;
|
||||
ret.a += (1.0 - over.a) * under.a;
|
||||
|
||||
over.a *= gl_Color.a;
|
||||
ret.rgb += (1.0 - under.a) * over.rgb * over.a;
|
||||
ret.a += (1.0 - under.a) * over.a;
|
||||
|
||||
ret.rgb /= ret.a;
|
||||
|
||||
gl_FragColor = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,94 +1,94 @@
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
uniform int TextureWidth;
|
||||
|
||||
/*
|
||||
* Convert from YUYV422 to RGB.
|
||||
*
|
||||
* This is used by MovieTexture_Generic. The input texture is TextureWidth
|
||||
* texels wide, the output texture is TextureWidth*2 texels wide, and texels
|
||||
* are aligned. We can use this to determine if the fragment we're generating
|
||||
* is even or odd.
|
||||
*/
|
||||
void main(void)
|
||||
{
|
||||
vec4 tex = gl_TexCoord[0];
|
||||
|
||||
float fRealWidth = float(TextureWidth);
|
||||
float fU = tex.x;
|
||||
|
||||
/* Scale U to [0.25,fRealWidth+0.25]. */
|
||||
fU *= fRealWidth;
|
||||
|
||||
/* Scale the U texture coordinate to the size of the destination texture,
|
||||
* [0.5,fDestWidth+0.5]. */
|
||||
fU *= 2.0;
|
||||
|
||||
/* Texture coordinates are center-aligned; an exact sample lies at 0.5,
|
||||
* not 0. Shift U from [0.5,fDestWidth+0.5] to [0,fDestWidth]. */
|
||||
fU -= 0.5;
|
||||
|
||||
/* If this is an odd fragment, fOdd is 1. */
|
||||
float fOdd = mod(fU+0.0001, 2.0);
|
||||
|
||||
/* Align fU to an even coordinate. */
|
||||
fU -= fOdd;
|
||||
|
||||
/* Scale U back. Because fU is aligned to an even coordinate, this
|
||||
* will always be an exact sample. */
|
||||
fU += 0.5;
|
||||
fU /= 2.0;
|
||||
fU /= fRealWidth;
|
||||
|
||||
tex.x = fU;
|
||||
|
||||
vec4 yuyv = texture2D( Texture1, tex.xy );
|
||||
|
||||
vec3 yuv;
|
||||
if( fOdd <= 0.5 )
|
||||
yuv = yuyv.rga;
|
||||
else
|
||||
yuv = yuyv.bga;
|
||||
yuv -= vec3(16.0/255.0, 128.0/255.0, 128.0/255.0);
|
||||
|
||||
mat3 conv = mat3(
|
||||
// Y U (Cb) V (Cr)
|
||||
1.1643, 0.000, 1.5958, // R
|
||||
1.1643, -0.39173, -0.81290, // G
|
||||
1.1643, 2.017, 0.000); // B
|
||||
|
||||
gl_FragColor.r=dot(yuv,conv[0]);
|
||||
gl_FragColor.g=dot(yuv,conv[1]);
|
||||
gl_FragColor.b=dot(yuv,conv[2]);
|
||||
gl_FragColor.a = 1.0;
|
||||
|
||||
/* Why doesn't this work? */
|
||||
// gl_FragColor.rgb = yuv * conv;
|
||||
// gl_FragColor.a = 1.0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
uniform sampler2D Texture1;
|
||||
uniform sampler2D Texture2;
|
||||
uniform int TextureWidth;
|
||||
|
||||
/*
|
||||
* Convert from YUYV422 to RGB.
|
||||
*
|
||||
* This is used by MovieTexture_Generic. The input texture is TextureWidth
|
||||
* texels wide, the output texture is TextureWidth*2 texels wide, and texels
|
||||
* are aligned. We can use this to determine if the fragment we're generating
|
||||
* is even or odd.
|
||||
*/
|
||||
void main(void)
|
||||
{
|
||||
vec4 tex = gl_TexCoord[0];
|
||||
|
||||
float fRealWidth = float(TextureWidth);
|
||||
float fU = tex.x;
|
||||
|
||||
/* Scale U to [0.25,fRealWidth+0.25]. */
|
||||
fU *= fRealWidth;
|
||||
|
||||
/* Scale the U texture coordinate to the size of the destination texture,
|
||||
* [0.5,fDestWidth+0.5]. */
|
||||
fU *= 2.0;
|
||||
|
||||
/* Texture coordinates are center-aligned; an exact sample lies at 0.5,
|
||||
* not 0. Shift U from [0.5,fDestWidth+0.5] to [0,fDestWidth]. */
|
||||
fU -= 0.5;
|
||||
|
||||
/* If this is an odd fragment, fOdd is 1. */
|
||||
float fOdd = mod(fU+0.0001, 2.0);
|
||||
|
||||
/* Align fU to an even coordinate. */
|
||||
fU -= fOdd;
|
||||
|
||||
/* Scale U back. Because fU is aligned to an even coordinate, this
|
||||
* will always be an exact sample. */
|
||||
fU += 0.5;
|
||||
fU /= 2.0;
|
||||
fU /= fRealWidth;
|
||||
|
||||
tex.x = fU;
|
||||
|
||||
vec4 yuyv = texture2D( Texture1, tex.xy );
|
||||
|
||||
vec3 yuv;
|
||||
if( fOdd <= 0.5 )
|
||||
yuv = yuyv.rga;
|
||||
else
|
||||
yuv = yuyv.bga;
|
||||
yuv -= vec3(16.0/255.0, 128.0/255.0, 128.0/255.0);
|
||||
|
||||
mat3 conv = mat3(
|
||||
// Y U (Cb) V (Cr)
|
||||
1.1643, 0.000, 1.5958, // R
|
||||
1.1643, -0.39173, -0.81290, // G
|
||||
1.1643, 2.017, 0.000); // B
|
||||
|
||||
gl_FragColor.r=dot(yuv,conv[0]);
|
||||
gl_FragColor.g=dot(yuv,conv[1]);
|
||||
gl_FragColor.b=dot(yuv,conv[2]);
|
||||
gl_FragColor.a = 1.0;
|
||||
|
||||
/* Why doesn't this work? */
|
||||
// gl_FragColor.rgb = yuv * conv;
|
||||
// gl_FragColor.a = 1.0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Glenn Maynard
|
||||
* All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, and/or sell copies of the Software, and to permit persons to
|
||||
* whom the Software is furnished to do so, provided that the above
|
||||
* copyright notice(s) and this permission notice appear in all copies of
|
||||
* the Software and that both the above copyright notice(s) and this
|
||||
* permission notice appear in supporting documentation.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,421 +1,439 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
# This file is UTF-8; to be readable, edit it in an editor capable
|
||||
# of UTF-8, such as Notepad in Windows 2000 and later.
|
||||
#
|
||||
# Six keywords: TitleFrom, ArtistFrom, SubtitleFrom, TitleTo,
|
||||
# ArtistTo, SubtitleTo.
|
||||
#
|
||||
# From lines are regular expressions. If all From lines for a set
|
||||
# are matched, all To lines are replaced.
|
||||
#
|
||||
# All lines, by default, must match the entire line; for example,
|
||||
# "Foo" matches only "Foo", not "Foobar". Matches are case-insensitive.
|
||||
#
|
||||
# Matches are checked in the order given in this file; more than one
|
||||
# set may match a single song.
|
||||
#
|
||||
# Courses are matched by title only.
|
||||
#
|
||||
# Note that changes to this file are only applied to songs when they are
|
||||
# first loaded. Delete the files in the "Cache" directory after making
|
||||
# changes.
|
||||
-->
|
||||
<Translations>
|
||||
<Songs>
|
||||
<Translation TitleFrom="17 ?(Sai|Ages)?" TitleTo="17才" />
|
||||
<Translation TitleFrom="Hypnotic Crisis" TitleTo="HYPNØTIC CRISIS" />
|
||||
<Translation TitleFrom="((Matsuri )|(\{ ))Japan" TitleTo="祭 JAPAN" />
|
||||
<!-- Matsuri Japan is often just "Japan". There may be other songs by -->
|
||||
<!-- that name, too, so match the artist, too. -->
|
||||
<Translation TitleFrom="Japan" ArtistFrom=".*(Re-Venge)|(RevenG).*" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="(Dancing|Odoru) Po[mn]pokolin" TitleTo="おどるポンポコリン" />
|
||||
<Translation TitleFrom="(God of Romance)|(Roman(su|ce) no Kamisama)" TitleTo="ロマンスの神様" />
|
||||
<!-- People can't decide how they want to spell this, so cope with both l or r, and one or two l/r and t. -->
|
||||
<Translation TitleFrom="Sana Mo((ll?)|(rr?))et(t?)e Ne Ente" TitleTo="サナ・モレッテ・ネ・エンテ" />
|
||||
<!-- "Candy", "Candy star", or "Candy #". -->
|
||||
<Translation TitleFrom="Candy(( star)?|#)" ArtistFrom="Luv.*" TitleTo="CANDY☆" />
|
||||
<Translation TitleFrom="Freckles( ?-? ?Sobakasu)?" TitleTo="そばかす" />
|
||||
<Translation TitleFrom="Sobakasu( ?-? ?Freckles)?" TitleTo="そばかす" />
|
||||
<Translation TitleFrom="Yozora no Muko" TitleTo="夜空ノムコウ" />
|
||||
<Translation TitleFrom="Bre[a=]k ?Down!?" TitleTo="BRE∀K DOWN!" />
|
||||
<!-- "Candy", "Candy heart", or "Candy $". -->
|
||||
<Translation TitleFrom="Candy(( heart)?|\$)" ArtistFrom=".*(Riyu|りゆ).*" TitleTo="CANDY♡" />
|
||||
<Translation TitleFrom="(Kakumei)|(\+\{)" TitleTo="革命" />
|
||||
<!-- Matsuri Japan is often just "Japan". There may be other songs by that name, too, so match the artist, too. -->
|
||||
<Translation TitleFrom="Japan" ArtistFrom=".*(Re-Venge)|(RevenG).*" TitleTo="祭 JAPAN" />
|
||||
<!-- Fix up hacked titles: -->
|
||||
<Translation TitleFrom="} JAPAN" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="\+\{" TitleTo="革命" />
|
||||
<Translation TitleFrom="Sweet Sweet (Love |\$ )?Magic" TitleTo="Sweet Sweet ♡ Magic" />
|
||||
<!-- Special stuff is done. Titles: -->
|
||||
<Translation TitleFrom="Matsuri Japan" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="Kakumei" TitleTo="革命" />
|
||||
<Translation TitleFrom="Bre[a=]k ?Down!?" TitleTo="BRE∀K DOWN!" />
|
||||
<!-- People can't decide how they want to spell this, so cope with both l or r, and one or two l/r and t. -->
|
||||
<Translation TitleFrom="Sana Mo((ll?)|(rr?))et(t?)e Ne Ente" TitleTo="サナ・モレッテ・ネ・エンテ" />
|
||||
<Translation TitleFrom="Hypnotic Crisis" TitleTo="HYPNØTIC CRISIS" />
|
||||
<Translation TitleFrom="Yozora no Muko" TitleTo="夜空ノムコウ" />
|
||||
<!-- Handle a typo: -->
|
||||
<Translation TitleFrom="(A(oi|io) Shoudou|Blue Impulse)" TitleTo="蒼い衝動" />
|
||||
<Translation TitleFrom="Daikenkai" TitleTo="大見解" />
|
||||
<Translation TitleFrom="Love (Love )?Shine" TitleTo="LOVE ♡ SHINE" />
|
||||
<Translation TitleFrom="(God of Romance)|(Romansu no Kamisama)" TitleTo="ロマンスの神様" />
|
||||
<Translation TitleFrom="(Dancing Pompokolin)|(Odoru Pompokolin)" TitleTo="おどるポンポコリン" />
|
||||
<Translation TitleFrom="Aoi Shoudou\(for EXTREME\)" TitleTo="蒼い衝動(for EXTREME)" />
|
||||
<Translation TitleFrom="Love Love Sugar" TitleTo="♡LOVE²シュガ→♡" />
|
||||
<!-- Handle Door and Doors -->
|
||||
<Translation TitleFrom="(Doors? of Magic)|(Mahou no Tobira)" TitleTo="魔法の扉" SubtitleTo="(スペース&planet;マコのテーマ)" />
|
||||
<Translation TitleFrom="Mikeneko Rock" TitleTo="三毛猫ロック" />
|
||||
<!-- Handle "Mobo Moga:Mobo * Moga"; spaces optional. -->
|
||||
<Translation TitleFrom="Mobo ?\*? ?Moga" TitleTo="MOBO★MOGA" />
|
||||
<Translation TitleFrom="Sakura" TitleTo="桜" />
|
||||
<Translation TitleFrom="Waltz of the Flowers" TitleTo="花のワルツ" />
|
||||
<Translation TitleFrom="Chotto Kiitena" TitleTo="ちょっときいてな" />
|
||||
<!-- No need to write transliterations for these. -->
|
||||
<Translation TitleFrom="L'amour et la liberte" TitleTo="L'amour et la liberté" DontTransliterate />
|
||||
<Translation TitleFrom="La Senorita" TitleTo="La Señorita" DontTransliterate />
|
||||
<Translation TitleFrom="La Senorita Virtual" TitleTo="La Señorita Virtual" DontTransliterate />
|
||||
<Translation TitleFrom="Senorita" TitleTo="SEÑORITA" DontTransliterate />
|
||||
<Translation TitleFrom="Senorita\(Speedy Mix\)" TitleTo="SEÑORITA" SubtitleTo="Speedy Mix" DontTransliterate />
|
||||
<Translation TitleFrom="Chotto Kiitena" TitleTo="ちょっときいてな" />
|
||||
<Translation TitleFrom="The Strong Jaeger" TitleTo="合体せよ!ストロングイェーガー!!" />
|
||||
<!-- Subtitles: -->
|
||||
<!-- (Title is Graduation.) -->
|
||||
<Translation SubtitleFrom=".*(Each Tomorrow|sorezore no ashita).*" SubtitleTo="~それぞれの明日~" />
|
||||
<!-- Some files are missing the space, so the subtitle isn't parsed. -->
|
||||
<Translation TitleFrom="GRADUATION~(Each Tomorrow|sorezore no ashita)~" TitleTo="GRADUATION"
|
||||
SubtitleTo="~それぞれの明日~" SubtitleTransTo="sorezore no ashita" DontTransliterate />
|
||||
<!-- Artists: -->
|
||||
<Translation TitleFrom="Max 300" ArtistFrom="%" ArtistTo="Ω" />
|
||||
<Translation ArtistFrom="Omega" ArtistTo="Ω" />
|
||||
<!-- I've seen both "Kosaku" and "Kosaka"; Kosaka is correct, but handle both. -->
|
||||
<Translation ArtistFrom="(Riyu Kosak[au])|(Kosak[au] Riyu)" ArtistTo="小坂りゆ" />
|
||||
<Translation ArtistFrom="ZZ" ArtistTo="&doublezeta;" />
|
||||
<!-- Serious tropical ska bomb? ruh roh -->
|
||||
<Translation ArtistFrom="Anettai Maji.*Ska (Bakudan|Bukuden)" ArtistTo="亜熱帯マジ-SKA爆弾" />
|
||||
<Translation ArtistFrom="(Spanish Folk Music|Mexican Folk Song)" ArtistTo="メキシコ民謡" />
|
||||
<Translation ArtistFrom="Sanae? Shintani" ArtistTo="新谷さなえ" />
|
||||
<Translation TitleFrom="White Lovers" ArtistFrom="Sana" ArtistTo="新谷さなえ" />
|
||||
<Translation ArtistFrom="YOMA KOMATSU" ArtistTo="ΨΦMA KΦMATSU" />
|
||||
<Translation ArtistFrom="Bus Stop featuring Carl Douglas" ArtistTo="BUS★STOP featuring CARL DOUGLAS" />
|
||||
<Translation TitleFrom="(Kick the Can|One Two|Na-Na|Swing It)" ArtistFrom="BUS STOP" ArtistTo="BUS★STOP" />
|
||||
<Translation ArtistFrom="dj TAKA feat. ?Noria" ArtistTo="dj TAKA feat. のりあ" />
|
||||
<Translation ArtistFrom="(Miyuki Kunitake)|(Kunitake Miyuki)" ArtistTo="くにたけみゆき" />
|
||||
<!-- TM: -->
|
||||
<Translation ArtistFrom="(Masahiro Andoh)|(Andoh Masahiro)" ArtistTo="安藤まさひろ" />
|
||||
<Translation TitleFrom="Sakura Saku" TitleTo="桜咲く" />
|
||||
<!-- Theme from Excel Saga: 愛(忠誠心) -->
|
||||
<!-- http://www.jvcmusic.co.jp/m-serve/tv/excel/index.html -->
|
||||
<Translation ArtistFrom="(Toshio Masuda)|(Masuda Toshio)" ArtistTo="舛田利雄" />
|
||||
<!-- Theme from Trigun -->
|
||||
<Translation ArtistFrom="(Tsuneo Imahori)|(Imahori Tsuneo)" ArtistTo="今堀恒雄" />
|
||||
<!-- TM2: -->
|
||||
<!-- http://www.web-konami.com/products/ps2/castlevania/ -->
|
||||
<Translation ArtistFrom="(Michuri Yamane)|(Yamane Michuri)" ArtistTransTo="Michiru Yamane" ArtistTo="山根ミチル" />
|
||||
<!-- TM3: -->
|
||||
<Translation TitleFrom="Tsugaru Kaikyou no Onna" TitleTo="津軽海峡の女" ArtistTo="ソニン" />
|
||||
<Translation TitleFrom="Kaniyuuutsu" TitleTo="甘いユウウツ" />
|
||||
<Translation TitleFrom="Negai" TitleTo="願い" />
|
||||
<!-- http://www.avexnet.or.jp/avexdb/morinaga/ -->
|
||||
<Translation ArtistFrom="(Hatsumi Morinaga)|(Morinaga Hatsumi)" ArtistTo="守永初美" />
|
||||
<!-- TM4: -->
|
||||
<Translation TitleFrom="Akumajo Dracula MEDLEY" TitleTo="悪魔城ドラキュラMEDLEY" />
|
||||
<Translation ArtistFrom="Kukeihakurabu" ArtistTo="矩形波倶楽部" />
|
||||
<Translation ArtistFrom="Yuji Ueda & Yui Horie" ArtistTo="上田祐司&堀江由衣" />
|
||||
<Translation ArtistFrom="Atsuko Enomoto" ArtistTo="榎本温子" />
|
||||
<Translation TitleFrom="Hareta Hi no Marine" TitleTo="晴れた日のマリーン" />
|
||||
<Translation ArtistFrom="Gotou? Maki" ArtistTo="後藤真希" />
|
||||
<Translation TitleFrom="La Duena del Swing" TitleTo="La Dueña del Swing" />
|
||||
<Translation TitleFrom="Pokemon Trainer Theme" TitleTo="Pokémon Trainer Theme" />
|
||||
<Translation ArtistFrom="Pokemon Jhoto" ArtistTo="Pokémon Jhoto" />
|
||||
<Translation TitleFrom="Watashi No Tamagoyaki" TitleTo="私の卵焼き" />
|
||||
<Translation TitleFrom="sora *mimi keek[ei]" TitleTo="空耳ケーキ" />
|
||||
<Translation TitleFrom="The Peace!" TitleTo="The☆Peace!" />
|
||||
<Translation TitleFrom="tentaikansoku" TitleTo="天体観測" ArtistTo="入尾信充" />
|
||||
<Translation SubtitleFrom="\(e=mc2 mix\)" SubtitleTo="(e=mc² mix)" />
|
||||
<Translation ArtistFrom="Taku Iwa[sz]aki" ArtistTransTo="Taku Iwasaki" ArtistTo="岩崎琢" />
|
||||
<Translation ArtistFrom="Hideki Naganuma" ArtistTo="長沼英樹" />
|
||||
<!-- Note that these are double-width parentheses. -->
|
||||
<Translation TitleFrom="Under Star\(Hajime no Ippo Opening 2\)" TitleTo="Under Star" SubtitleTo="(はじめの一歩 Opening 2)"
|
||||
SubtitleTransTo="(Hajime no Ippo Opening 2)" />
|
||||
<!-- This song had the game title in the artist field, instead of the actual artist. -->
|
||||
<Translation ArtistFrom="Seiken Densetsu 2 OST" TitleTo="Meridian Dance" SubtitleTo="聖剣伝説2OST"
|
||||
SubtitleTransTo="Seiken Densetsu 2 OST" ArtistTo="菊田裕樹" ArtistTransTo="Hiroki Kikuta" />
|
||||
<Translation ArtistFrom="Ayumi and Vincent de Moor" ArtistTo="あゆみ and Vincent de Moor" />
|
||||
<Translation ArtistFrom="Toshio Sakurai" ArtistTo="桜井敏郎" />
|
||||
<Translation ArtistFrom="Yasunori Mitsuda" ArtistTo="光田康典" />
|
||||
<Translation ArtistFrom="Lee Jung Hyun" ArtistTo="이정현" />
|
||||
<Translation ArtistFrom="Tamaki Nami" ArtistTo="玉置成実" />
|
||||
<Translation ArtistFrom="Tomoe Shinohara" ArtistTo="篠原ともえ" />
|
||||
<Translation ArtistFrom="Maaya Sakamoto" ArtistTo="坂本真綾" />
|
||||
<Translation TitleFrom="Black Cat" TitleTo="검은고양이" />
|
||||
<Translation TitleFrom="Dream Possession" TitleTo="夢有" TitleTransTo="Yume Ari" ArtistTo="Des-ROW·組"
|
||||
ArtistTransTo="Des-ROW and KUMI" />
|
||||
<Translation ArtistFrom="Aaron Kwok" ArtistTo="郭富城" />
|
||||
<!-- LIGHTNING STAR (Sonic the Hedgehog) -->
|
||||
<Translation ArtistFrom="(Yuzo Koshiro)|(Koshiro Yuzo)" ArtistTo="古代祐三" />
|
||||
<!-- VLAD -->
|
||||
<Translation ArtistFrom="Jaurim" ArtistTo="자우림" />
|
||||
<!-- TM4+: -->
|
||||
<Translation ArtistFrom="Gwashi" ArtistTo="グワシ" />
|
||||
<Translation TitleFrom="Kuru Kuru Mirakuru" TitleTo="くるくるミラクル" />
|
||||
<Translation TitleFrom="Nuh" TitleTo="너" />
|
||||
<!-- Error fix: make sure we don't change the artist like this for the wrong song. -->
|
||||
<Translation TitleFrom="PARTY☆NIGHT" SubtitleFrom="\(Hyper Para Para Version\)" ArtistFrom="林原めぐみ&奥井雅美"
|
||||
ArtistTo="真田アサミ&沢城みゆき&氷上恭子" ArtistTransTo="Sanada Asami, Sawashiro Miyuki and Hikami Kyouko" />
|
||||
<Translation TitleFrom="Sakura Saku Mirai Koi Yume" TitleTo="サクラサクミライコイユメ" />
|
||||
<Translation TitleFrom="Salariman Aboeji" TitleTo="샐러리맨 아버지" />
|
||||
<Translation TitleFrom="This is Unmei" TitleTo="This is 運命" ArtistTo="メロン記念日" />
|
||||
<Translation TitleFrom="Torinouta" TitleTo="鳥の歌" />
|
||||
<Translation TitleFrom="Wonder Woman" TitleTo="神奇女侠" />
|
||||
<Translation TitleFrom="Honeymoon" TitleTo="허니문" />
|
||||
<Translation TitleFrom="Michyo" TitleTo="미쳐" />
|
||||
<Translation TitleFrom="(Tell Me)|(Mal Hae)" TitleTo="마해" />
|
||||
<Translation TitleFrom="Dal Ah Dal Ah" TitleTo="달아달아" />
|
||||
<Translation TitleFrom="Hanabi" TitleTo="花火" />
|
||||
<Translation TitleFrom="Hanabi\(Lange Remix\)" TitleTo="花火" TitleTransTo="Hanabi" SubtitleTo="Lange Remix" />
|
||||
<Translation TitleFrom="Heaven of Hoodlums" TitleTo="깡패천국" />
|
||||
<Translation TitleFrom="Haruka Kanata" TitleTo="遥か彼方" />
|
||||
<Translation TitleFrom="hyakugojyuuichi" TitleTo="百五十一" />
|
||||
<Translation TitleFrom="Midsummers Night Midsummers Dream" TitleTo="真夏の花・真夏の夢" TitleTransTo="Midsummer's Night Midsummer's Dream" />
|
||||
<Translation TitleFrom="Deluxe" ArtistFrom="Key-a-Kiss" TitleTo="デラックス" />
|
||||
<Translation ArtistFrom="Melon Kinenbi" ArtistTo="メロン記念日" />
|
||||
<Translation ArtistFrom="(Sammi Cheng)|(Cheng Sammy)" ArtistTo="郑秀文" />
|
||||
<Translation ArtistFrom="(Wong Faye)|(Faye Wong)" ArtistTo="王菲" />
|
||||
<Translation ArtistFrom="(Namie Amuro)|(Amuro Namie)" ArtistTo="あむろなみえ" />
|
||||
<Translation TitleFrom="This Is Unmei" TitleTo="This is 運命" />
|
||||
<Translation TitleFrom="Michyo" TitleTo="미쳐" />
|
||||
<Translation TitleFrom="Smile" ArtistFrom="Myco" SubtitleTo="(満月をさがして)" />
|
||||
<Translation TitleFrom="Journey to the West" TitleTo="西遊記" />
|
||||
<Translation ArtistFrom="Dicky Cheung" ArtistTo="張衛健" />
|
||||
<Translation ArtistFrom="Yoo Seung Jun" ArtistTo="유승준" />
|
||||
<Translation ArtistFrom="Leon Lai" ArtistTo="黎明" />
|
||||
<Translation ArtistFrom="KOTOKO & Hiromi Sato" ArtistTo="KOTOKO&佐藤裕美" />
|
||||
<Translation ArtistFrom="M-FLO loves Crystal Kay" ArtistTo="M-FLO l♡ves Crystal Kay" />
|
||||
<Translation TitleFrom="Syunikiss" ArtistFrom="Malice Mizer" SubtitleTo="~二度目の哀悼~" />
|
||||
<Translation TitleFrom="kono omoi o tsutaetai" ArtistFrom="sakura" TitleTo="この思いを伝えたい" ArtistTo="さくら" />
|
||||
<!-- TM5: -->
|
||||
<Translation TitleFrom="OMEGA" ArtistFrom="MAX DRAGON" TitleTo="Ω" />
|
||||
<Translation TitleFrom="Haruka Kanata" TitleTo="遥か彼方" />
|
||||
<Translation TitleFrom="Honjitsu wa Seiten Nari" TitleTo="本日は晴天なり" />
|
||||
<Translation TitleFrom="Strong Star Soldier" TitleTo="強いぞ星の戦士" />
|
||||
<Translation TitleFrom="O M E G A" TitleTo="Ω" />
|
||||
<!-- http://www.makusonia.com/discography/album/album_2.html -->
|
||||
<Translation TitleFrom="(Majimena|Urajimena) *Kikkake" TitleTo="真面目なキッカケ" />
|
||||
<Translation TitleFrom="Guri Guri" TitleTo="グリグリ" />
|
||||
<!-- Don't translit all songs named "Sigma" to Σ; only the ones that are actually -->
|
||||
<!-- intended to be written that way. -->
|
||||
<Translation TitleFrom="Sigma" ArtistFrom="(Shiina Ringo|椎名林檎)" TitleTo="Σ" />
|
||||
<!-- Gimmick for this artist only: -->
|
||||
<Translation TitleFrom="Motto" ArtistFrom="(Ishisaka Kumiko)|(Kumiko Ishisaka)|(石坂久美子)" TitleTo="Mottö" />
|
||||
<!-- http://www.hotei.com/ -->
|
||||
<Translation ArtistFrom="(Hotei Tomoyasu)|(Tomoyasu Hotei)" ArtistTo="布袋寅泰" />
|
||||
<!-- http://www.uyax.com/whats/index.html -->
|
||||
<Translation ArtistFrom="(Yuuya Asaoka)|(Yuuya Asaoka)" ArtistTo="浅岡雄也" />
|
||||
<!-- http://www5a.biglobe.ne.jp/~iwadare/main_fl_j.html -->
|
||||
<Translation ArtistFrom="(Noriyuki Iwadare)|(Iwadare Noriyuki)" ArtistTo="岩垂徳行" />
|
||||
<!-- http://www.avexnet.or.jp/shimatani/ -->
|
||||
<Translation ArtistFrom="(Hitomi Shimatani)|(Shimatani Hitomi)" ArtistTo="島谷ひとみ" />
|
||||
<!-- http://www.pokemon.co.jp/videodvdcd/others/01.html -->
|
||||
<!-- http://www.amazon.co.jp/exec/obidos/ASIN/B00005F3KX/qid=1085712723/br=1-10/ref=br_lf_m_9/249-1818804-8449929 -->
|
||||
<Translation TitleFrom="POKEMON ieru ka NEO" ArtistFrom="Imakuni" TitleTo="ポケモン言えるかneo?" ArtistTo="イマクニ?" />
|
||||
<!-- http://www.toshiba-emi.co.jp/domestic/artists/ringo/ -->
|
||||
<Translation ArtistFrom="(Shiina Ringo)|(Shiina Ringo)" ArtistTo="椎名林檎" />
|
||||
<!-- http://sdb.noppo.com/kumiko_w.htm -->
|
||||
<Translation ArtistFrom="KLONOA *\(kumiko watanabe\)" ArtistTo="KLONOA (渡辺久美子)" />
|
||||
<Translation SubtitleFrom="- HOSHI NO UMI KAZE NO YUME -" SubtitleTo="-星の海風の夢-" />
|
||||
<!-- http://www.geneon-ent.co.jp/rondorobe/music/parapara/meca-max.html -->
|
||||
<!-- http://system.emedia.co.jp/details/NMC-1070912-9976204.html -->
|
||||
<Translation ArtistFrom="(Shinichi Ish?ihara)|(Ish?ihara Shinichi)" ArtistTo="石原慎一" />
|
||||
<!-- http://www.geneon-ent.co.jp/rondorobe/music/parapara/meca-max.html -->
|
||||
<!-- http://system.emedia.co.jp/details/NMC-1070912-9976204.html -->
|
||||
<Translation ArtistFrom="(Norifumi Ono)|(Ono Norifumi)" ArtistTo="小野訓史" />
|
||||
<!-- http://www.konamistyle.com/product/product_detail.aspx?pfid=KOLA-51 -->
|
||||
<Translation ArtistFrom="(Kumiko Ishisaka)|(Ishisaka Kumiko)" ArtistTo="石坂久美子" />
|
||||
<!-- http://www.smtown.com/smtown/shin/ -->
|
||||
<Translation ArtistFrom="Shinhwa" ArtistTo="신화" />
|
||||
<Translation ArtistFrom="(Hong Seok)|(Seok Hong)" ArtistTo="홍석" />
|
||||
<!-- http://www.ampcast.com/music/14706/artist.php -->
|
||||
<Translation ArtistFrom="KaW vs. Smiley vs. Inspector K" ArtistTo="KaW vs. ☺ vs. Inspector K" />
|
||||
<!-- http://www.hicbc.com/tv/kirby/staff/ -->
|
||||
<Translation ArtistFrom="Miyagawa Akira" ArtistTo="宮川彬良" />
|
||||
<!-- OSC: -->
|
||||
<Translation TitleFrom="Love Hina" SubtitleFrom="- main theme" ArtistFrom="Hayashibra Megumi\(Haruka Urashima\)"
|
||||
TitleTo="桜咲く" TitleTransTo="Sakura Saku" SubtitleTo="-erase-" SubtitleTransTo="-erase-" ArtistTo="林原めぐみ"
|
||||
ArtistTransTo="Hayashibara Megumi (Haruka Urashima)" />
|
||||
<!-- OSC2: -->
|
||||
<Translation TitleFrom="Dejiko to Gema" SubtitleFrom="no RAP DE DATE" TitleTo="でじことゲマの" SubtitleTo="ラップDEデート"
|
||||
ArtistFrom="Assami Sanada \+ Yoshiko Kamei" ArtistTo="真田アサミ&亀井芳子" ArtistTransTo="Asami Sanada + Yoshiko Kamei" />
|
||||
<!-- OSC3: -->
|
||||
<Translation ArtistFrom="E-Paksa" ArtistTo="이박사" />
|
||||
<!-- http://www.sonicteam.com/sonicadv/snd/cd_1.html -->
|
||||
<Translation ArtistFrom="(Naofumi Hataya)|(Hataya Naofumi)" ArtistTo="幡谷尚史" />
|
||||
<!--
|
||||
# Note: while this name is Chinese, we're displaying it with a Japanese
|
||||
# font page. We don't have any way to tag text language. This isn't
|
||||
# really a problem: I think Japanese and Chinese people prefer seeing
|
||||
# characters in their own language's font, anyway, so let's just leave
|
||||
# it up to the theme to pick which font style to use.
|
||||
-->
|
||||
<Translation TitleFrom="Red Sun" ArtistFrom="Alan Tam / Hacken Lee" TitleTo="紅日" ArtistTo="譚詠麟/李克勤" />
|
||||
<Translation TitleFrom="Sabishii Kute Loneliness" ArtistFrom="wandasu" TitleTo="淋しくてLoneliness"
|
||||
ArtistTo="ワンダース" />
|
||||
<!-- Foonmix: "Yubikiri" has the artist translit in the subtitle translit; move it. -->
|
||||
<Translation ArtistFrom="ねこみみ魔法使い feat.都築きせの" SubtitleTransTo="-erase-" ArtistTransTo="NekomimiMahouTsukai feat.KisenoTsuduki" />
|
||||
<!-- DREAMS COME TRUE: -->
|
||||
<Translation TitleFrom="Asa ga Mata Kuru" TitleTo="朝がまた来る" />
|
||||
<Translation TitleFrom="Haretara Line" TitleTo="晴れたらいいね" />
|
||||
<Translation TitleFrom="Kessenwa Kinyoubi" TitleTo="決戦は金曜日" />
|
||||
<Translation TitleFrom="Nante Koi Shitandaro" TitleTo="なんて恋したんだろ" />
|
||||
<Translation TitleFrom="Ureshii! Tanoshii! Daisuki!" TitleTo="うれしい! たのしい! 大好き!" />
|
||||
<Translation TitleFrom="Mirai Yosouzu II" TitleTo="未来予想図II" />
|
||||
<!-- OHA: -->
|
||||
<Translation ArtistFrom="War[ui]jiennu" ArtistTo="わるじぇんぬ" />
|
||||
<Translation ArtistFrom="Yama-?chan with Jimusasu ?Hikaru" ArtistTo="やまちゃん with ジムナスひかる" />
|
||||
<Translation TitleFrom="OHA OHA Sutaataa" TitleTo="OHA OHA スターター" />
|
||||
<Translation ArtistFrom="Yama-?chan (&|with) (Reimondo|Raymond)" ArtistTo="やまちゃん&レイモンド" />
|
||||
<Translation ArtistFrom="Oha Kids with Imakuni(\??)" ArtistTo="おはおはキッズ with イマクニ?" />
|
||||
<Translation TitleFrom="Sayonara no Kawari Ni" TitleTo="サヨナラのかわりに" />
|
||||
<Translation ArtistFrom="(Ohhagumi|Oha Gumi)" ArtistTo="おはぐみ" />
|
||||
<Translation ArtistFrom="Morikubo Shoutarou" ArtistTo="怪人ゾナー" />
|
||||
<Translation TitleFrom="Zonapara" TitleTo="ゾナパラ" />
|
||||
<Translation SubtitleFrom=".*WHY! Parapara Remix.*" SubtitleTo="WHY! パラパラ・リミックス" />
|
||||
<Translation ArtistFrom="Zobekka" ArtistTo="ゾベッカ" />
|
||||
<Translation ArtistFrom="Omega Versus KTz" ArtistTo="Ω Versus KTz" />
|
||||
<Translation ArtistFrom="DJ Demon Versus Omega" ArtistTo="DJ 鬼 Versus 鬼" />
|
||||
<Translation ArtistFrom="NW 260, ZZ, and 290" ArtistTo="NW 260, &doublezeta;, and 290" />
|
||||
<!-- Tokimeki Memorial Dancing Summer Vacation -->
|
||||
<Translation TitleFrom="Anata ni Aete" TitleTo="あなたに会えて" />
|
||||
<Translation ArtistFrom="Junko Noda" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Futari no Toki" TitleTo="二人の時" />
|
||||
<Translation TitleFrom="Haru-iro no Kaze no Naka de" TitleTo="春色の風の中で" />
|
||||
<Translation ArtistFrom="Mami Kingetsu" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Motto! Motto! Tokimeki" TitleTo="もっと! モット! TOKIMEKI" />
|
||||
<Translation TitleFrom="Tokimeki no Organ" TitleTo="ときめきのオルゴール" />
|
||||
<Translation TitleFrom="Yuuki no Kamisama" TitleTo="勇気の神様" />
|
||||
<Translation ArtistFrom="Yuuko Asahina" ArtistTo="朝比奈 夕子" />
|
||||
<!-- Handle some broken data. -->
|
||||
<Translation TitleFrom="Kamisama" ArtistFrom="Unknown" TitleTo="勇気の神様" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Haru" ArtistFrom="Unknown" TitleTo="春色の風の中で" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Hero Club-MIX" ArtistFrom="Unknown" ArtistTo="朝比奈 夕子" />
|
||||
<Translation TitleFrom="Olgore" ArtistFrom="Unkown" TitleTo="ときめきのオルゴール" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Anata" ArtistFrom="Unknown" TitleTo="あなたに会えて" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Futari" ArtistFrom="Unknown" TitleTo="二人の時" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Mot! Mot! Tokimeki" ArtistFrom="Unknown" TitleTo="もっと! モット! TOKIMEKI"
|
||||
ArtistTo="金月 真美" />
|
||||
<!-- Disney Dancing Museum: -->
|
||||
<Translation TitleFrom="Chip 'N' Dale's Vacation" TitleTo="チップとデールのバケーション" ArtistTo="チップ&デール" />
|
||||
<Translation TitleFrom="Disco Magic" ArtistFrom="Minnie" TitleTo="ディスコマジック" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Electrical Parade" ArtistFrom="Minnie" TitleTo="エレクトリカル・パレード" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Go Go Go" ArtistFrom="Donald" TitleTo="ゴー・ゴー・ゴー" ArtistTo="ドナルド" />
|
||||
<Translation TitleFrom="Goofy's Rock 'N' Roll Show" TitleTo="グーフィーのロックンロールショー" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="Irish River" ArtistFrom="Goofy" TitleTo="アイリッシュリバー" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="It's A Small World" ArtistFrom="Huey, Dewey & Louie" TitleTo="イッツ・ア・スモール・ワールド"
|
||||
ArtistTo="ヒューイ/デューイ/ルーイ" />
|
||||
<Translation TitleFrom="Mickey Fever" TitleTo="ミッキー・フィーバー" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Mickey Motion" TitleTo="ミッキー・モーション" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Mickey Mouse March" ArtistFrom="Mickey" TitleTo="ミッキーマウス・マーチ" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Mickey Mouse Ondo" TitleTo="ミッキーマウス音頭" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Minnie's Yoo Hoo!" TitleTo="ミニーのユーフー!" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Miwaku no Tango" ArtistFrom="Clarabell" TitleTo="魅惑のタンゴ" ArtistTo="クララベル" />
|
||||
<Translation TitleFrom="Morty and Ferdy's Carnival" TitleTo="モーティとフェルディのカーニバル" ArtistTo="モーティ&フェルディ" />
|
||||
<Translation TitleFrom="Para-Para Venus" ArtistFrom="Daisy" TitleTo="パラパラヴィーナス" ArtistTo="デイジー" />
|
||||
<Translation TitleFrom="Russian Dance" ArtistFrom="Scrooge" TitleTo="ロシアの踊り" ArtistTo="スクルーヅ" />
|
||||
<Translation TitleFrom="Savanna No Mukou" ArtistFrom="Donald" TitleTo="サバンナのむこう" ArtistTo="ドナルド" />
|
||||
<Translation TitleFrom="Taiyo No Rakuen" ArtistFrom="Horace" TitleTo="太陽の楽園" ArtistTo="ホーレス" />
|
||||
<Translation TitleFrom="Tap! Tap! Tap!" ArtistFrom="Grandma Duck" TitleTo="タップ!タップ!タップ!" ArtistTo="グランアダックタ" />
|
||||
<Translation TitleFrom="The Tiki Tiki Tiki Room" ArtistFrom="Goofy" TitleTo="魅惑のチキルーム" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="Turkey In The Straw" ArtistFrom="Pluto" TitleTo="藁の中の七面鳥" ArtistTo="プルート" />
|
||||
<Translation TitleFrom="Waltz of the Flowers" ArtistFrom="Daisy" TitleTo="花のワルツ" ArtistTo="デイジー" />
|
||||
<Translation TitleFrom="Pokemon" TitleTo="Pokémon" />
|
||||
<!-- Korean: -->
|
||||
<Translation TitleFrom="Ba Kkwo" TitleTo="바꿔" />
|
||||
<Translation TitleFrom="Wa" TitleTo="와" />
|
||||
<Translation TitleFrom="Bu Dam" TitleTo="부담" />
|
||||
<Translation TitleFrom="Byul" TitleTo="별" />
|
||||
<Translation ArtistFrom="(Gunchuri Kko Kko)|(Country Kko Kko)" ArtistTo="컨츄리꼬꼬" />
|
||||
<Translation ArtistFrom="Back Ji Young" ArtistTo="백지영" />
|
||||
<Translation ArtistFrom="Lee Jung Hyun" ArtistTo="이정현" />
|
||||
<Translation TitleFrom="Hogisim" TitleTo="호기심" />
|
||||
<Translation TitleFrom="Aromdaon 21C" TitleTo="아름다운21C" ArtistTo="2000 대한민국" />
|
||||
<Translation TitleFrom="Gyoung Go" TitleTo="경고" />
|
||||
<Translation TitleFrom="Sung Suk" TitleTo="성숙" />
|
||||
<Translation TitleFrom="Gamyunwi Shigan" TitleTo="가면의 시간" />
|
||||
<Translation TitleFrom="(Gaggai)|(Gagaai)" TitleTo="가까이" />
|
||||
<Translation ArtistFrom="Tashannie" ArtistTo=" 타샤니" />
|
||||
<Translation ArtistFrom="Hans Band" ArtistTo="한스밴드" />
|
||||
<!-- In the Groove: -->
|
||||
<Translation ArtistFrom="Smiley" ArtistTo="☺" />
|
||||
<Translation ArtistFrom="KaW feat. Smiley" ArtistTo="KaW feat. ☺" />
|
||||
<!-- Misc: -->
|
||||
<Translation TitleFrom="Pokemon" TitleTo="Pokémon" DontTransliterate />
|
||||
<Translation ArtistFrom="Omega Versus KTz" ArtistTo="Ω Versus KTz" />
|
||||
<Translation ArtistFrom="DJ Demon Versus Omega" ArtistTo="DJ 鬼 Versus Ω" />
|
||||
<Translation ArtistFrom="NW 260, ZZ, and 290" ArtistTo="NW 260, &doublezeta;, and 290" />
|
||||
<!-- http://bemanistyle.com/sims/viewsim.php?id=1161 -->
|
||||
<Translation TitleFrom="Renai Revolution 21" TitleTo="恋愛レボリューション21" />
|
||||
<!-- http://bemanistyle.com/sims/viewsim.php?id=1160 -->
|
||||
<Translation SubtitleFrom="~Ai no Big Band~" SubtitleTo="~愛のビッグバンドー~" />
|
||||
<!-- CHOP CHOP, MASTER ONION'S RAP (PaRappa the Rapper) -->
|
||||
<Translation ArtistFrom="(Masaya Matsuura)|(Matsuura Masaya)" ArtistTo="松浦雅也" />
|
||||
<!-- Fanboy bonus: -->
|
||||
<Translation ArtistFrom="(Megumi Hayashibara)|(Hayashibara Megumi)" ArtistTo="林原めぐみ" />
|
||||
<Translation ArtistFrom="(Ayumi Hamasaki)|(Hamasaki Ayumi)" ArtistTo="浜崎あゆみ" />
|
||||
<Translation ArtistFrom="(Hiroko Kasahara)|(Kasahara Hiroko)" ArtistTo="笠原弘子" />
|
||||
<Translation ArtistFrom="(Mai Kuraki)|(Kuraki Mai)" ArtistTo="倉木麻衣" />
|
||||
<Translation ArtistFrom="Miryokuteki" ArtistTo="魅力的" />
|
||||
<Translation ArtistFrom="(Yuki Kimura)|(Kimura Yuki)" ArtistTo="木村由姫" />
|
||||
<Translation ArtistFrom="(Takako Matsu)|(Matsu Takako)" ArtistTo="松たか子" />
|
||||
<Translation ArtistFrom="(Suzuki Ami)|(Ami Suzuki)" ArtistTo="鈴木あみ" />
|
||||
<Translation ArtistFrom="(Sakura Tange)|(Tange Sakura)" ArtistTo="丹下桜" />
|
||||
<Translation ArtistFrom="(Hikaru Utada)|(Utada Hikaru)" ArtistTo="宇多田ひかる" />
|
||||
<Translation ArtistFrom="(Masami Okui)|(Okui Masami)" ArtistTo="奥井雅美" />
|
||||
<Translation ArtistFrom="Morning Musume" ArtistTo="Morning娘" />
|
||||
<Translation ArtistFrom="(You?ko Ishida)|(Ishida You?ko)" ArtistTo="石田燿子" />
|
||||
<Translation ArtistFrom="(You?ko Kanno)|(Kanno You?ko)" ArtistTo="菅野よう子" />
|
||||
<Translation ArtistFrom="You?ko Kanno (and|&) the Seatbelts" ArtistTo="菅野よう子 and the Seatbelts" />
|
||||
<Translation ArtistFrom="(Megumi Ogata)|(Ogata Megumi)" ArtistTo="緒方恵美" />
|
||||
<Translation ArtistFrom="(You?ko Takahashi)|(Takahashi You?ko)" ArtistTo="高橋洋子" />
|
||||
<Translation ArtistFrom="(Daichi Akitaroh)|(Akitaroh Daichi)" ArtistTo="大地丙太郎" />
|
||||
<Translation ArtistFrom="(Yui Horie)|(Horie Yui)" ArtistTo="堀江由衣" />
|
||||
<Translation ArtistFrom="(Nobuo Uematsu)|(Uematsu Nobuo)" ArtistTo="植松伸夫" />
|
||||
<Translation ArtistFrom="Mitsuishi Kotono" ArtistTo="三石琴乃" />
|
||||
<Translation ArtistFrom="(Kou?ji Kondou?|Kondou? Kou?ji)" ArtistTo="近藤浩治" />
|
||||
<Translation ArtistFrom="(Yuki Matsuoka)|(Matsuoka Yuki)" ArtistTo="松岡由貴" />
|
||||
<Translation ArtistFrom="Blue?mchen" ArtistTo="Blümchen" DontTransliterate />
|
||||
</Songs>
|
||||
<Courses>
|
||||
<Translation TitleFrom="(Kidou)|(Demon Road)|(Road of Oni)|(Oni Michi)|(Kidou/Onimichi \(Demon Road\))"
|
||||
TitleTo="鬼道" />
|
||||
<Translation TitleFrom="(Kidou 2)|(Demon Road 2)|(Road of Oni 2)|(Oni Michi 2)|(Kidou 2/Onimichi 2 \(Demon Road 2\))"
|
||||
TitleTo="鬼道 弐" />
|
||||
<Translation TitleFrom="Love" TitleTo="Love ♡" />
|
||||
<Translation TitleFrom="Love Love" TitleTo="Love ♡" />
|
||||
<Translation TitleFrom="(2 ?MB)|(Road of 2 ?MB)" TitleTo="2MB道" />
|
||||
<Translation TitleFrom="Dancemania( Oni)?" TitleTo="Dancemania 鬼" />
|
||||
<Translation TitleFrom="(TaQ( Oni)?)|(Road of TaQ)" TitleTo="TaQ道" />
|
||||
<Translation TitleFrom="(Legend(ary)? Road)|(Road of Legend)" TitleTo="伝説道" />
|
||||
<Translation TitleFrom="(Slow Demon Road)|(Road of Slow)|(Demon's Slow Road)" TitleTo="鬼の遅道" />
|
||||
<!-- "Road of True"? Maybe "Truth"? -->
|
||||
<Translation TitleFrom="(True Demon Road)|(Road of Tru.*)" TitleTo="真鬼道" />
|
||||
<Translation TitleFrom="(DDR HOME VERSION)" TitleTo="家庭用DDRコース" />
|
||||
<Translation TitleFrom="Four Seasons" TitleTo="春夏秋冬" />
|
||||
<Translation TitleFrom="DanceMania Nonstop" TitleTo="DanceMania 連" />
|
||||
<Translation TitleFrom="(Otome no Michi|Maiden Star Road)" TitleTo="乙女☆道" />
|
||||
<Translation TitleFrom="(Oni no Ran)|(Rebellion of Demons)" TitleTo="鬼の乱" />
|
||||
</Courses>
|
||||
<Groups>
|
||||
<Translation TitleFrom="((Dance Dance Revolution)|(dance dance revolution)|(DANCE DANCE REVOLUTION))(.*)"
|
||||
TitleTo="DDR\${5}" />
|
||||
<Translation TitleFrom="((Pump It Up)|(pump it up)|(PUMP IT UP))(.*)" TitleTo="PIU\${5}" />
|
||||
<Translation TitleFrom="((ParaParaParadise)|(paraparaparadise)|(PARAPARAPARADISE)|(Para Para Paradise)|(para para paradise)|(PARA PARA PARADISE))(.*)"
|
||||
TitleTo="PPP\${8}" />
|
||||
<Translation TitleFrom="((Dancing Stage)|(dancing stage)|(DANCING STAGE))(.*)" TitleTo="DS\${5}" />
|
||||
<Translation TitleFrom="((Ez2dancer)|(Ez 2 Dancer))(.*)" TitleTo="EZ2\${4}" />
|
||||
<Translation TitleFrom="((Technomotion)|(Techno Motion))(.*)" TitleTo="TM\${4}" />
|
||||
<Translation TitleFrom="((Dance Station 3DDX)|(DS3DDX))(.*)" TitleTo="3DDX\${4}" />
|
||||
<Translation TitleFrom="((BeatMania)|(Beatmania)|(BEATMANIA)|(beatmania))(.*)" TitleTo="BM\${6}" />
|
||||
<Translation TitleFrom="((In The Groove)|(In the Groove))(.*)" TitleTo="ITG\${4}" />
|
||||
</Groups>
|
||||
</Translations>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!--
|
||||
# This file is UTF-8; to be readable, edit it in an editor capable
|
||||
# of UTF-8, such as Notepad in Windows 2000 and later.
|
||||
# Also it's best to view this with a font that supports various UTF-8
|
||||
# characters, as opposed to monospaced fonts.
|
||||
#
|
||||
# Six keywords: TitleFrom, ArtistFrom, SubtitleFrom, TitleTo,
|
||||
# ArtistTo, SubtitleTo.
|
||||
#
|
||||
# From lines are regular expressions. If all From lines for a set
|
||||
# are matched, all To lines are replaced.
|
||||
#
|
||||
# All lines, by default, must match the entire line; for example,
|
||||
# "Foo" matches only "Foo", not "Foobar". Matches are case-insensitive.
|
||||
#
|
||||
# Matches are checked in the order given in this file; more than one
|
||||
# set may match a single song.
|
||||
#
|
||||
# Courses are matched by title only.
|
||||
#
|
||||
# Note that changes to this file are only applied to songs when they are
|
||||
# first loaded. Delete the files in the "Cache" directory after making
|
||||
# changes.
|
||||
-->
|
||||
<Translations>
|
||||
<Songs>
|
||||
<Translation TitleFrom="17 ?(Sai|Ages)?" TitleTo="17才" />
|
||||
<Translation TitleFrom="Hypnotic Crisis" TitleTo="HYPNØTIC CRISIS" />
|
||||
<Translation TitleFrom="((Matsuri )|(\{ ))Japan" TitleTo="祭 JAPAN" />
|
||||
<!-- Matsuri Japan is often just "Japan". There may be other songs by -->
|
||||
<!-- that name, too, so match the artist, too. -->
|
||||
<Translation TitleFrom="Japan" ArtistFrom=".*(Re-Venge)|(RevenG).*" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="(Dancing|Odoru) Po[mn]pokolin" TitleTo="おどるポンポコリン" />
|
||||
<Translation TitleFrom="(God of Romance)|(Roman(su|ce) no Kamisama)" TitleTo="ロマンスの神様" />
|
||||
<!-- People can't decide how they want to spell this, so cope with both l or r, and one or two l/r and t. -->
|
||||
<Translation TitleFrom="Sana Mo((ll?)|(rr?))et(t?)e Ne Ente" TitleTo="サナ・モレッテ・ネ・エンテ" />
|
||||
<!-- "Candy", "Candy star", or "Candy #". -->
|
||||
<Translation TitleFrom="Candy(( star)?|#)" ArtistFrom="Luv.*" TitleTo="CANDY☆" />
|
||||
<Translation TitleFrom="Freckles( ?-? ?Sobakasu)?" TitleTo="そばかす" />
|
||||
<Translation TitleFrom="Sobakasu( ?-? ?Freckles)?" TitleTo="そばかす" />
|
||||
<Translation TitleFrom="Yozora no Muko" TitleTo="夜空ノムコウ" />
|
||||
<Translation TitleFrom="Bre[a=]k ?Down!?" TitleTo="BRE∀K DOWN!" />
|
||||
<!-- "Candy", "Candy heart", or "Candy $". -->
|
||||
<Translation TitleFrom="Candy(( heart)?|\$)" ArtistFrom=".*(Riyu|りゆ).*" TitleTo="CANDY♡" />
|
||||
<Translation TitleFrom="(Kakumei)|(\+\{)" TitleTo="革命" />
|
||||
<!-- Fix up hacked titles from 3.0 spigumus hacks: -->
|
||||
<Translation TitleFrom="} JAPAN" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="\+\{" TitleTo="革命" />
|
||||
<Translation TitleFrom="Sweet Sweet (Love |\$ )?Magic" TitleTo="Sweet Sweet ♡ Magic" />
|
||||
<!-- Special stuff is done. Titles: -->
|
||||
<Translation TitleFrom="Matsuri Japan" TitleTo="祭 JAPAN" />
|
||||
<Translation TitleFrom="Kakumei" TitleTo="革命" />
|
||||
<Translation TitleFrom="Bre[a=]k ?Down!?" TitleTo="BRE∀K DOWN!" />
|
||||
<!-- People can't decide how they want to spell this, so cope with both l or r, and one or two l/r and t. -->
|
||||
<Translation TitleFrom="Sana Mo((ll?)|(rr?))et(t?)e Ne Ente" TitleTo="サナ・モレッテ・ネ・エンテ" />
|
||||
<Translation TitleFrom="Hypnotic Crisis" TitleTo="HYPNØTIC CRISIS" />
|
||||
<Translation TitleFrom="Yozora no Muko" TitleTo="夜空ノムコウ" />
|
||||
<!-- Handle a typo: -->
|
||||
<Translation TitleFrom="(A(oi|io) Shoudou|Blue Impulse)" TitleTo="蒼い衝動" />
|
||||
<Translation TitleFrom="Daikenkai" TitleTo="大見解" />
|
||||
<Translation TitleFrom="Love (Love )?Shine" TitleTo="LOVE ♡ SHINE" />
|
||||
<Translation TitleFrom="(God of Romance)|(Romansu no Kamisama)" TitleTo="ロマンスの神様" />
|
||||
<Translation TitleFrom="(Dancing Pompokolin)|(Odoru Pompokolin)" TitleTo="おどるポンポコリン" />
|
||||
<Translation TitleFrom="Aoi Shoudou\(for EXTREME\)" TitleTo="蒼い衝動(for EXTREME)" />
|
||||
<Translation TitleFrom="Love Love Sugar" TitleTo="♡LOVE²シュガ→♡" />
|
||||
<!-- Handle Door and Doors -->
|
||||
<Translation TitleFrom="(Doors? of Magic)|(Mahou no Tobira)" TitleTo="魔法の扉" SubtitleTo="(スペース&planet;マコのテーマ)" />
|
||||
<Translation TitleFrom="Mikeneko Rock" TitleTo="三毛猫ロック" />
|
||||
<!-- Handle "Mobo Moga:Mobo * Moga"; spaces optional. -->
|
||||
<Translation TitleFrom="Mobo ?\*? ?Moga" TitleTo="MOBO★MOGA" />
|
||||
<Translation TitleFrom="Sakura" TitleTo="桜" />
|
||||
<Translation TitleFrom="Waltz of the Flowers" TitleTo="花のワルツ" />
|
||||
<Translation TitleFrom="Chotto Kiitena" TitleTo="ちょっときいてな" />
|
||||
<!-- No need to write transliterations for these. -->
|
||||
<Translation TitleFrom="L'amour et la liberte" TitleTo="L'amour et la liberté" DontTransliterate />
|
||||
<Translation TitleFrom="La Senorita" TitleTo="La Señorita" DontTransliterate />
|
||||
<Translation TitleFrom="La Senorita Virtual" TitleTo="La Señorita Virtual" DontTransliterate />
|
||||
<Translation TitleFrom="Senorita" TitleTo="SEÑORITA" DontTransliterate />
|
||||
<Translation TitleFrom="Senorita\(Speedy Mix\)" TitleTo="SEÑORITA" SubtitleTo="Speedy Mix" DontTransliterate />
|
||||
<Translation TitleFrom="Chotto Kiitena" TitleTo="ちょっときいてな" />
|
||||
<Translation TitleFrom="The Strong Jaeger" TitleTo="合体せよ!ストロングイェーガー!!" />
|
||||
<!-- Subtitles: -->
|
||||
<!-- (Title is Graduation.) -->
|
||||
<Translation SubtitleFrom=".*(Each Tomorrow|sorezore no ashita).*" SubtitleTo="~それぞれの明日~" />
|
||||
<!-- Some files are missing the space, so the subtitle isn't parsed. -->
|
||||
<Translation TitleFrom="GRADUATION~(Each Tomorrow|sorezore no ashita)~" TitleTo="GRADUATION"
|
||||
SubtitleTo="~それぞれの明日~" SubtitleTransTo="sorezore no ashita" DontTransliterate />
|
||||
<!-- Artists: -->
|
||||
<Translation TitleFrom="Max 300" ArtistFrom="%" ArtistTo="Ω" />
|
||||
<Translation ArtistFrom="Omega" ArtistTo="Ω" />
|
||||
<!-- I've seen both "Kosaku" and "Kosaka"; Kosaka is correct, but handle both. -->
|
||||
<Translation ArtistFrom="(Riyu Kosak[au])|(Kosak[au] Riyu)" ArtistTo="小坂りゆ" />
|
||||
<Translation ArtistFrom="ZZ" ArtistTo="&doublezeta;" />
|
||||
<!-- Serious tropical ska bomb? ruh roh -->
|
||||
<Translation ArtistFrom="Anettai Maji.*Ska (Bakudan|Bukuden)" ArtistTo="亜熱帯マジ-SKA爆弾" />
|
||||
<Translation ArtistFrom="(Spanish Folk Music|Mexican Folk Song)" ArtistTo="メキシコ民謡" />
|
||||
<Translation ArtistFrom="Sanae? Shintani" ArtistTo="新谷さなえ" />
|
||||
<Translation TitleFrom="White Lovers" ArtistFrom="Sana" ArtistTo="新谷さなえ" />
|
||||
<Translation ArtistFrom="YOMA KOMATSU" ArtistTo="ΨΦMA KΦMATSU" />
|
||||
<Translation ArtistFrom="Bus Stop featuring Carl Douglas" ArtistTo="BUS★STOP featuring CARL DOUGLAS" />
|
||||
<Translation TitleFrom="(Kick the Can|One Two|Na-Na|Swing It)" ArtistFrom="BUS STOP" ArtistTo="BUS★STOP" />
|
||||
<Translation ArtistFrom="dj TAKA feat. ?Noria" ArtistTo="dj TAKA feat. のりあ" />
|
||||
<Translation ArtistFrom="(Miyuki Kunitake)|(Kunitake Miyuki)" ArtistTo="くにたけみゆき" />
|
||||
<!-- Tournamix: -->
|
||||
<Translation ArtistFrom="(Masahiro Andoh)|(Andoh Masahiro)" ArtistTo="安藤まさひろ" />
|
||||
<Translation TitleFrom="Sakura Saku" TitleTo="桜咲く" />
|
||||
<!-- Theme from Excel Saga: 愛(忠誠心) -->
|
||||
<!-- http://www.jvcmusic.co.jp/m-serve/tv/excel/index.html -->
|
||||
<Translation ArtistFrom="(Toshio Masuda)|(Masuda Toshio)" ArtistTo="舛田利雄" />
|
||||
<!-- Theme from Trigun -->
|
||||
<Translation ArtistFrom="(Tsuneo Imahori)|(Imahori Tsuneo)" ArtistTo="今堀恒雄" />
|
||||
<!-- Tournamix 2: -->
|
||||
<!-- http://www.web-konami.com/products/ps2/castlevania/ -->
|
||||
<Translation ArtistFrom="(Michuri Yamane)|(Yamane Michuri)" ArtistTransTo="Michiru Yamane" ArtistTo="山根ミチル" />
|
||||
<!-- Tournamix 3: -->
|
||||
<Translation TitleFrom="Tsugaru Kaikyou no Onna" TitleTo="津軽海峡の女" ArtistTo="ソニン" />
|
||||
<Translation TitleFrom="Kaniyuuutsu" TitleTo="甘いユウウツ" />
|
||||
<Translation TitleFrom="Negai" TitleTo="願い" />
|
||||
<!-- http://www.avexnet.or.jp/avexdb/morinaga/ -->
|
||||
<Translation ArtistFrom="(Hatsumi Morinaga)|(Morinaga Hatsumi)" ArtistTo="守永初美" />
|
||||
<!-- Tournamix 4: -->
|
||||
<Translation TitleFrom="Akumajo Dracula MEDLEY" TitleTo="悪魔城ドラキュラMEDLEY" />
|
||||
<Translation ArtistFrom="Kukeihakurabu" ArtistTo="矩形波倶楽部" />
|
||||
<Translation ArtistFrom="Yuji Ueda & Yui Horie" ArtistTo="上田祐司&堀江由衣" />
|
||||
<Translation ArtistFrom="Atsuko Enomoto" ArtistTo="榎本温子" />
|
||||
<Translation TitleFrom="Hareta Hi no Marine" TitleTo="晴れた日のマリーン" />
|
||||
<Translation ArtistFrom="Gotou? Maki" ArtistTo="後藤真希" />
|
||||
<Translation TitleFrom="La Duena del Swing" TitleTo="La Dueña del Swing" />
|
||||
<Translation TitleFrom="Pokemon Trainer Theme" TitleTo="Pokémon Trainer Theme" />
|
||||
<Translation ArtistFrom="Pokemon Jhoto" ArtistTo="Pokémon Jhoto" />
|
||||
<Translation TitleFrom="Watashi No Tamagoyaki" TitleTo="私の卵焼き" />
|
||||
<Translation TitleFrom="sora *mimi keek[ei]" TitleTo="空耳ケーキ" />
|
||||
<Translation TitleFrom="The Peace!" TitleTo="The☆Peace!" />
|
||||
<Translation TitleFrom="tentaikansoku" TitleTo="天体観測" ArtistTo="入尾信充" />
|
||||
<Translation SubtitleFrom="\(e=mc2 mix\)" SubtitleTo="(e=mc² mix)" />
|
||||
<Translation ArtistFrom="Taku Iwa[sz]aki" ArtistTransTo="Taku Iwasaki" ArtistTo="岩崎琢" />
|
||||
<Translation ArtistFrom="Hideki Naganuma" ArtistTo="長沼英樹" />
|
||||
<!-- Note that these are double-width parentheses. -->
|
||||
<Translation TitleFrom="Under Star\(Hajime no Ippo Opening 2\)" TitleTo="Under Star" SubtitleTo="(はじめの一歩 Opening 2)"
|
||||
SubtitleTransTo="(Hajime no Ippo Opening 2)" />
|
||||
<!-- This song had the game title in the artist field, instead of the actual artist. -->
|
||||
<Translation ArtistFrom="Seiken Densetsu 2 OST" TitleTo="Meridian Dance" SubtitleTo="聖剣伝説2OST"
|
||||
SubtitleTransTo="Seiken Densetsu 2 OST" ArtistTo="菊田裕樹" ArtistTransTo="Hiroki Kikuta" />
|
||||
<Translation ArtistFrom="Ayumi and Vincent de Moor" ArtistTo="あゆみ and Vincent de Moor" />
|
||||
<Translation ArtistFrom="Toshio Sakurai" ArtistTo="桜井敏郎" />
|
||||
<Translation ArtistFrom="Yasunori Mitsuda" ArtistTo="光田康典" />
|
||||
<Translation ArtistFrom="Lee Jung Hyun" ArtistTo="이정현" />
|
||||
<Translation ArtistFrom="Tamaki Nami" ArtistTo="玉置成実" />
|
||||
<Translation ArtistFrom="Tomoe Shinohara" ArtistTo="篠原ともえ" />
|
||||
<Translation ArtistFrom="Maaya Sakamoto" ArtistTo="坂本真綾" />
|
||||
<Translation TitleFrom="Black Cat" TitleTo="검은고양이" />
|
||||
<Translation TitleFrom="Dream Possession" TitleTo="夢有" TitleTransTo="Yume Ari" ArtistTo="Des-ROW·組"
|
||||
ArtistTransTo="Des-ROW and KUMI" />
|
||||
<Translation ArtistFrom="Aaron Kwok" ArtistTo="郭富城" />
|
||||
<!-- LIGHTNING STAR (Sonic the Hedgehog) -->
|
||||
<Translation ArtistFrom="(Yuzo Koshiro)|(Koshiro Yuzo)" ArtistTo="古代祐三" />
|
||||
<!-- VLAD -->
|
||||
<Translation ArtistFrom="Jaurim" ArtistTo="자우림" />
|
||||
<!-- Tournamix 4+: -->
|
||||
<Translation ArtistFrom="Gwashi" ArtistTo="グワシ" />
|
||||
<Translation TitleFrom="Kuru Kuru Mirakuru" TitleTo="くるくるミラクル" />
|
||||
<Translation TitleFrom="Nuh" TitleTo="너" />
|
||||
<!-- Error fix: make sure we don't change the artist like this for the wrong song. -->
|
||||
<Translation TitleFrom="PARTY☆NIGHT" SubtitleFrom="\(Hyper Para Para Version\)" ArtistFrom="林原めぐみ&奥井雅美"
|
||||
ArtistTo="真田アサミ&沢城みゆき&氷上恭子" ArtistTransTo="Sanada Asami, Sawashiro Miyuki and Hikami Kyouko" />
|
||||
<Translation TitleFrom="Sakura Saku Mirai Koi Yume" TitleTo="サクラサクミライコイユメ" />
|
||||
<Translation TitleFrom="Salariman Aboeji" TitleTo="샐러리맨 아버지" />
|
||||
<Translation TitleFrom="This is Unmei" TitleTo="This is 運命" ArtistTo="メロン記念日" />
|
||||
<Translation TitleFrom="Torinouta" TitleTo="鳥の歌" />
|
||||
<Translation TitleFrom="Wonder Woman" TitleTo="神奇女侠" />
|
||||
<Translation TitleFrom="Honeymoon" TitleTo="허니문" />
|
||||
<Translation TitleFrom="Michyo" TitleTo="미쳐" />
|
||||
<Translation TitleFrom="(Tell Me)|(Mal Hae)" TitleTo="마해" />
|
||||
<Translation TitleFrom="Dal Ah Dal Ah" TitleTo="달아달아" />
|
||||
<Translation TitleFrom="Hanabi" TitleTo="花火" />
|
||||
<Translation TitleFrom="Hanabi\(Lange Remix\)" TitleTo="花火" TitleTransTo="Hanabi" SubtitleTo="Lange Remix" />
|
||||
<Translation TitleFrom="Heaven of Hoodlums" TitleTo="깡패천국" />
|
||||
<Translation TitleFrom="Haruka Kanata" TitleTo="遥か彼方" />
|
||||
<Translation TitleFrom="hyakugojyuuichi" TitleTo="百五十一" />
|
||||
<Translation TitleFrom="Midsummers Night Midsummers Dream" TitleTo="真夏の花・真夏の夢" TitleTransTo="Midsummer's Night Midsummer's Dream" />
|
||||
<Translation TitleFrom="Deluxe" ArtistFrom="Key-a-Kiss" TitleTo="デラックス" />
|
||||
<Translation ArtistFrom="Melon Kinenbi" ArtistTo="メロン記念日" />
|
||||
<Translation ArtistFrom="(Sammi Cheng)|(Cheng Sammy)" ArtistTo="郑秀文" />
|
||||
<Translation ArtistFrom="(Wong Faye)|(Faye Wong)" ArtistTo="王菲" />
|
||||
<Translation ArtistFrom="(Namie Amuro)|(Amuro Namie)" ArtistTo="あむろなみえ" />
|
||||
<Translation TitleFrom="This Is Unmei" TitleTo="This is 運命" />
|
||||
<Translation TitleFrom="Michyo" TitleTo="미쳐" />
|
||||
<Translation TitleFrom="Smile" ArtistFrom="Myco" SubtitleTo="(満月をさがして)" />
|
||||
<Translation TitleFrom="Journey to the West" TitleTo="西遊記" />
|
||||
<Translation ArtistFrom="Dicky Cheung" ArtistTo="張衛健" />
|
||||
<Translation ArtistFrom="Yoo Seung Jun" ArtistTo="유승준" />
|
||||
<Translation ArtistFrom="Leon Lai" ArtistTo="黎明" />
|
||||
<Translation ArtistFrom="KOTOKO & Hiromi Sato" ArtistTo="KOTOKO&佐藤裕美" />
|
||||
<Translation ArtistFrom="M-FLO loves Crystal Kay" ArtistTo="M-FLO l♡ves Crystal Kay" />
|
||||
<Translation TitleFrom="Syunikiss" ArtistFrom="Malice Mizer" SubtitleTo="~二度目の哀悼~" />
|
||||
<Translation TitleFrom="kono omoi o tsutaetai" ArtistFrom="sakura" TitleTo="この思いを伝えたい" ArtistTo="さくら" />
|
||||
<!-- Tournamix 5: -->
|
||||
<Translation TitleFrom="OMEGA" ArtistFrom="MAX DRAGON" TitleTo="Ω" />
|
||||
<Translation TitleFrom="Haruka Kanata" TitleTo="遥か彼方" />
|
||||
<Translation TitleFrom="Honjitsu wa Seiten Nari" TitleTo="本日は晴天なり" />
|
||||
<Translation TitleFrom="Strong Star Soldier" TitleTo="強いぞ星の戦士" />
|
||||
<Translation TitleFrom="O M E G A" TitleTo="Ω" />
|
||||
<!-- http://www.makusonia.com/discography/album/album_2.html -->
|
||||
<Translation TitleFrom="(Majimena|Urajimena) *Kikkake" TitleTo="真面目なキッカケ" />
|
||||
<Translation TitleFrom="Guri Guri" TitleTo="グリグリ" />
|
||||
<!-- Don't translit all songs named "Sigma" to Σ; only the ones that are actually -->
|
||||
<!-- intended to be written that way. -->
|
||||
<Translation TitleFrom="Sigma" ArtistFrom="(Shiina Ringo|椎名林檎)" TitleTo="Σ" />
|
||||
<!-- Gimmick for this artist only: -->
|
||||
<Translation TitleFrom="Motto" ArtistFrom="(Ishisaka Kumiko)|(Kumiko Ishisaka)|(石坂久美子)" TitleTo="Mottö" />
|
||||
<!-- http://www.hotei.com/ -->
|
||||
<Translation ArtistFrom="(Hotei Tomoyasu)|(Tomoyasu Hotei)" ArtistTo="布袋寅泰" />
|
||||
<!-- http://www.uyax.com/whats/index.html -->
|
||||
<Translation ArtistFrom="(Yuuya Asaoka)|(Yuuya Asaoka)" ArtistTo="浅岡雄也" />
|
||||
<!-- http://www5a.biglobe.ne.jp/~iwadare/main_fl_j.html -->
|
||||
<Translation ArtistFrom="(Noriyuki Iwadare)|(Iwadare Noriyuki)" ArtistTo="岩垂徳行" />
|
||||
<!-- http://www.avexnet.or.jp/shimatani/ -->
|
||||
<Translation ArtistFrom="(Hitomi Shimatani)|(Shimatani Hitomi)" ArtistTo="島谷ひとみ" />
|
||||
<!-- http://www.pokemon.co.jp/videodvdcd/others/01.html -->
|
||||
<!-- http://www.amazon.co.jp/exec/obidos/ASIN/B00005F3KX/qid=1085712723/br=1-10/ref=br_lf_m_9/249-1818804-8449929 -->
|
||||
<Translation TitleFrom="POKEMON ieru ka NEO" ArtistFrom="Imakuni" TitleTo="ポケモン言えるかneo?" ArtistTo="イマクニ?" />
|
||||
<!-- http://www.toshiba-emi.co.jp/domestic/artists/ringo/ -->
|
||||
<Translation ArtistFrom="(Shiina Ringo)|(Shiina Ringo)" ArtistTo="椎名林檎" />
|
||||
<!-- http://sdb.noppo.com/kumiko_w.htm -->
|
||||
<Translation ArtistFrom="KLONOA *\(kumiko watanabe\)" ArtistTo="KLONOA (渡辺久美子)" />
|
||||
<Translation SubtitleFrom="- HOSHI NO UMI KAZE NO YUME -" SubtitleTo="-星の海風の夢-" />
|
||||
<!-- http://www.geneon-ent.co.jp/rondorobe/music/parapara/meca-max.html -->
|
||||
<!-- http://system.emedia.co.jp/details/NMC-1070912-9976204.html -->
|
||||
<Translation ArtistFrom="(Shinichi Ish?ihara)|(Ish?ihara Shinichi)" ArtistTo="石原慎一" />
|
||||
<!-- http://www.geneon-ent.co.jp/rondorobe/music/parapara/meca-max.html -->
|
||||
<!-- http://system.emedia.co.jp/details/NMC-1070912-9976204.html -->
|
||||
<Translation ArtistFrom="(Norifumi Ono)|(Ono Norifumi)" ArtistTo="小野訓史" />
|
||||
<!-- http://www.konamistyle.com/product/product_detail.aspx?pfid=KOLA-51 -->
|
||||
<Translation ArtistFrom="(Kumiko Ishisaka)|(Ishisaka Kumiko)" ArtistTo="石坂久美子" />
|
||||
<!-- http://www.smtown.com/smtown/shin/ -->
|
||||
<Translation ArtistFrom="Shinhwa" ArtistTo="신화" />
|
||||
<Translation ArtistFrom="(Hong Seok)|(Seok Hong)" ArtistTo="홍석" />
|
||||
<!-- http://www.ampcast.com/music/14706/artist.php -->
|
||||
<Translation ArtistFrom="KaW vs. Smiley vs. Inspector K" ArtistTo="KaW vs. ☺ vs. Inspector K" />
|
||||
<!-- http://www.hicbc.com/tv/kirby/staff/ -->
|
||||
<Translation ArtistFrom="Miyagawa Akira" ArtistTo="宮川彬良" />
|
||||
<!-- OSC (Original Step Contest; http://ddrosc.bemanistyle.com/osc3/): -->
|
||||
<Translation TitleFrom="Love Hina" SubtitleFrom="- main theme" ArtistFrom="Hayashibra Megumi\(Haruka Urashima\)"
|
||||
TitleTo="桜咲く" TitleTransTo="Sakura Saku" SubtitleTo="-erase-" SubtitleTransTo="-erase-" ArtistTo="林原めぐみ"
|
||||
ArtistTransTo="Hayashibara Megumi (Haruka Urashima)" />
|
||||
<!-- OSC2: -->
|
||||
<Translation TitleFrom="Dejiko to Gema" SubtitleFrom="no RAP DE DATE" TitleTo="でじことゲマの" SubtitleTo="ラップDEデート"
|
||||
ArtistFrom="Assami Sanada \+ Yoshiko Kamei" ArtistTo="真田アサミ&亀井芳子" ArtistTransTo="Asami Sanada + Yoshiko Kamei" />
|
||||
<!-- OSC3: -->
|
||||
<Translation ArtistFrom="E-Paksa" ArtistTo="이박사" />
|
||||
<!-- http://www.sonicteam.com/sonicadv/snd/cd_1.html -->
|
||||
<Translation ArtistFrom="(Naofumi Hataya)|(Hataya Naofumi)" ArtistTo="幡谷尚史" />
|
||||
<!--
|
||||
# Note: while this name is Chinese, we're displaying it with a Japanese
|
||||
# font page. We don't have any way to tag text language. This isn't
|
||||
# really a problem: I think Japanese and Chinese people prefer seeing
|
||||
# characters in their own language's font, anyway, so let's just leave
|
||||
# it up to the theme to pick which font style to use.
|
||||
-->
|
||||
<Translation TitleFrom="Red Sun" ArtistFrom="Alan Tam / Hacken Lee" TitleTo="紅日" ArtistTo="譚詠麟/李克勤" />
|
||||
<Translation TitleFrom="Sabishii Kute Loneliness" ArtistFrom="wandasu" TitleTo="淋しくてLoneliness"
|
||||
ArtistTo="ワンダース" />
|
||||
<!-- Foonmix: "Yubikiri" has the artist translit in the subtitle translit; move it. -->
|
||||
<Translation ArtistFrom="ねこみみ魔法使い feat.都築きせの" SubtitleTransTo="-erase-" ArtistTransTo="NekomimiMahouTsukai feat.KisenoTsuduki" />
|
||||
<!-- DREAMS COME TRUE: -->
|
||||
<Translation TitleFrom="Asa ga Mata Kuru" TitleTo="朝がまた来る" />
|
||||
<Translation TitleFrom="Haretara Line" TitleTo="晴れたらいいね" />
|
||||
<Translation TitleFrom="Kessenwa Kinyoubi" TitleTo="決戦は金曜日" />
|
||||
<Translation TitleFrom="Nante Koi Shitandaro" TitleTo="なんて恋したんだろ" />
|
||||
<Translation TitleFrom="Ureshii! Tanoshii! Daisuki!" TitleTo="うれしい! たのしい! 大好き!" />
|
||||
<Translation TitleFrom="Mirai Yosouzu II" TitleTo="未来予想図II" />
|
||||
<!-- OHA: -->
|
||||
<Translation ArtistFrom="War[ui]jiennu" ArtistTo="わるじぇんぬ" />
|
||||
<Translation ArtistFrom="Yama-?chan with Jimusasu ?Hikaru" ArtistTo="やまちゃん with ジムナスひかる" />
|
||||
<Translation TitleFrom="OHA OHA Sutaataa" TitleTo="OHA OHA スターター" />
|
||||
<Translation ArtistFrom="Yama-?chan (&|with) (Reimondo|Raymond)" ArtistTo="やまちゃん&レイモンド" />
|
||||
<Translation ArtistFrom="Oha Kids with Imakuni(\??)" ArtistTo="おはおはキッズ with イマクニ?" />
|
||||
<Translation TitleFrom="Sayonara no Kawari Ni" TitleTo="サヨナラのかわりに" />
|
||||
<Translation ArtistFrom="(Ohhagumi|Oha Gumi)" ArtistTo="おはぐみ" />
|
||||
<Translation ArtistFrom="Morikubo Shoutarou" ArtistTo="怪人ゾナー" />
|
||||
<Translation TitleFrom="Zonapara" TitleTo="ゾナパラ" />
|
||||
<Translation SubtitleFrom=".*WHY! Parapara Remix.*" SubtitleTo="WHY! パラパラ・リミックス" />
|
||||
<Translation ArtistFrom="Zobekka" ArtistTo="ゾベッカ" />
|
||||
<!-- (not oha sta, hurr) -->
|
||||
<Translation ArtistFrom="Omega Versus KTz" ArtistTo="Ω Versus KTz" />
|
||||
<Translation ArtistFrom="DJ Demon Versus Omega" ArtistTo="DJ 鬼 Versus 鬼" />
|
||||
<Translation ArtistFrom="NW 260, ZZ, and 290" ArtistTo="NW 260, &doublezeta;, and 290" />
|
||||
<!-- Tokimeki Memorial Dancing Summer Vacation -->
|
||||
<Translation TitleFrom="Anata ni Aete" TitleTo="あなたに会えて" />
|
||||
<Translation ArtistFrom="Junko Noda" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Futari no Toki" TitleTo="二人の時" />
|
||||
<Translation TitleFrom="Haru-iro no Kaze no Naka de" TitleTo="春色の風の中で" />
|
||||
<Translation ArtistFrom="Mami Kingetsu" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Motto! Motto! Tokimeki" TitleTo="もっと! モット! TOKIMEKI" />
|
||||
<Translation TitleFrom="Tokimeki no Organ" TitleTo="ときめきのオルゴール" />
|
||||
<Translation TitleFrom="Yuuki no Kamisama" TitleTo="勇気の神様" />
|
||||
<Translation ArtistFrom="Yuuko Asahina" ArtistTo="朝比奈 夕子" />
|
||||
<!-- Handle some broken data. -->
|
||||
<Translation TitleFrom="Kamisama" ArtistFrom="Unknown" TitleTo="勇気の神様" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Haru" ArtistFrom="Unknown" TitleTo="春色の風の中で" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Hero Club-MIX" ArtistFrom="Unknown" ArtistTo="朝比奈 夕子" />
|
||||
<Translation TitleFrom="Olgore" ArtistFrom="Unkown" TitleTo="ときめきのオルゴール" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Anata" ArtistFrom="Unknown" TitleTo="あなたに会えて" ArtistTo="野田 順子" />
|
||||
<Translation TitleFrom="Futari" ArtistFrom="Unknown" TitleTo="二人の時" ArtistTo="金月 真美" />
|
||||
<Translation TitleFrom="Mot! Mot! Tokimeki" ArtistFrom="Unknown" TitleTo="もっと! モット! TOKIMEKI"
|
||||
ArtistTo="金月 真美" />
|
||||
<!-- Disney Dancing Museum: -->
|
||||
<Translation TitleFrom="Chip 'N' Dale's Vacation" TitleTo="チップとデールのバケーション" ArtistTo="チップ&デール" />
|
||||
<Translation TitleFrom="Disco Magic" ArtistFrom="Minnie" TitleTo="ディスコマジック" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Electrical Parade" ArtistFrom="Minnie" TitleTo="エレクトリカル・パレード" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Go Go Go" ArtistFrom="Donald" TitleTo="ゴー・ゴー・ゴー" ArtistTo="ドナルド" />
|
||||
<Translation TitleFrom="Goofy's Rock 'N' Roll Show" TitleTo="グーフィーのロックンロールショー" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="Irish River" ArtistFrom="Goofy" TitleTo="アイリッシュリバー" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="It's A Small World" ArtistFrom="Huey, Dewey & Louie" TitleTo="イッツ・ア・スモール・ワールド"
|
||||
ArtistTo="ヒューイ/デューイ/ルーイ" />
|
||||
<Translation TitleFrom="Mickey Fever" TitleTo="ミッキー・フィーバー" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Mickey Motion" TitleTo="ミッキー・モーション" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Mickey Mouse March" ArtistFrom="Mickey" TitleTo="ミッキーマウス・マーチ" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Mickey Mouse Ondo" TitleTo="ミッキーマウス音頭" ArtistTo="ミッキー" />
|
||||
<Translation TitleFrom="Minnie's Yoo Hoo!" TitleTo="ミニーのユーフー!" ArtistTo="ミニー" />
|
||||
<Translation TitleFrom="Miwaku no Tango" ArtistFrom="Clarabell" TitleTo="魅惑のタンゴ" ArtistTo="クララベル" />
|
||||
<Translation TitleFrom="Morty and Ferdy's Carnival" TitleTo="モーティとフェルディのカーニバル" ArtistTo="モーティ&フェルディ" />
|
||||
<Translation TitleFrom="Para-Para Venus" ArtistFrom="Daisy" TitleTo="パラパラヴィーナス" ArtistTo="デイジー" />
|
||||
<Translation TitleFrom="Russian Dance" ArtistFrom="Scrooge" TitleTo="ロシアの踊り" ArtistTo="スクルーヅ" />
|
||||
<Translation TitleFrom="Savanna No Mukou" ArtistFrom="Donald" TitleTo="サバンナのむこう" ArtistTo="ドナルド" />
|
||||
<Translation TitleFrom="Taiyo No Rakuen" ArtistFrom="Horace" TitleTo="太陽の楽園" ArtistTo="ホーレス" />
|
||||
<Translation TitleFrom="Tap! Tap! Tap!" ArtistFrom="Grandma Duck" TitleTo="タップ!タップ!タップ!" ArtistTo="グランアダックタ" />
|
||||
<Translation TitleFrom="The Tiki Tiki Tiki Room" ArtistFrom="Goofy" TitleTo="魅惑のチキルーム" ArtistTo="グーフィー" />
|
||||
<Translation TitleFrom="Turkey In The Straw" ArtistFrom="Pluto" TitleTo="藁の中の七面鳥" ArtistTo="プルート" />
|
||||
<Translation TitleFrom="Waltz of the Flowers" ArtistFrom="Daisy" TitleTo="花のワルツ" ArtistTo="デイジー" />
|
||||
<Translation TitleFrom="Pokemon" TitleTo="Pokémon" />
|
||||
<!-- Korean: -->
|
||||
<Translation TitleFrom="Ba Kkwo" TitleTo="바꿔" />
|
||||
<Translation TitleFrom="Wa" TitleTo="와" />
|
||||
<Translation TitleFrom="Bu Dam" TitleTo="부담" />
|
||||
<Translation TitleFrom="Byul" TitleTo="별" />
|
||||
<Translation ArtistFrom="(Gunchuri Kko Kko)|(Country Kko Kko)" ArtistTo="컨츄리꼬꼬" />
|
||||
<Translation ArtistFrom="Back Ji Young" ArtistTo="백지영" />
|
||||
<Translation ArtistFrom="Lee Jung Hyun" ArtistTo="이정현" />
|
||||
<Translation TitleFrom="Hogisim" TitleTo="호기심" />
|
||||
<Translation TitleFrom="Aromdaon 21C" TitleTo="아름다운21C" ArtistTo="2000 대한민국" />
|
||||
<Translation TitleFrom="Gyoung Go" TitleTo="경고" />
|
||||
<Translation TitleFrom="Sung Suk" TitleTo="성숙" />
|
||||
<Translation TitleFrom="Gamyunwi Shigan" TitleTo="가면의 시간" />
|
||||
<Translation TitleFrom="(Gaggai)|(Gagaai)" TitleTo="가까이" />
|
||||
<Translation ArtistFrom="Tashannie" ArtistTo=" 타샤니" />
|
||||
<Translation ArtistFrom="Hans Band" ArtistTo="한스밴드" />
|
||||
<!-- In the Groove: -->
|
||||
<Translation ArtistFrom="Smiley" ArtistTo="☺" />
|
||||
<Translation ArtistFrom="KaW feat. Smiley" ArtistTo="KaW feat. ☺" />
|
||||
<!-- Mungyodance -->
|
||||
<Translation TitleFrom="Hardcore Disco (Kitsune\? Remix)" TitleTo="Hardcore Disco (Kitsune² Remix)" />
|
||||
<Translation TitleFrom="Micro N\?" TitleTo="Micro N²" />
|
||||
<Translation TitleFrom="Caramelldansen (Ryu\* Remix)" TitleTo="Caramelldansen (Ryu☆ Remix)" />
|
||||
<Translation ArtistFrom="Kitsune\?" ArtistTo="Kitsune²" />
|
||||
<Translation ArtistFrom="Bl\?mchen" ArtistTo="Blümchen" />
|
||||
<Translation ArtistFrom="Kitsune\? and Emoticon" ArtistTo="Kitsune² and Emoticon" />
|
||||
<Translation ArtistFrom="Emoticon & Kitsune\?" ArtistTo="Emoticon & Kitsune²" />
|
||||
<Translation ArtistFrom="D-Mode-D feat. Kitsune\?" ArtistTo="D-Mode-D feat. Kitsune²" />
|
||||
<Translation ArtistFrom="Kitsune\? and D-Mode-D" ArtistTo="Kitsune² and D-Mode-D" />
|
||||
<Translation ArtistFrom="Hecate and Kitsune\?" ArtistTo="Hecate and Kitsune²" />
|
||||
<Translation ArtistFrom="Renard vs Kitsune\?" ArtistTo="Renard vs Kitsune²" />
|
||||
<Translation ArtistFrom="MGD-Crew feat. Kitsune\?" ArtistTo="MGD-Crew feat. Kitsune²" />
|
||||
<Translation ArtistFrom="Sonitus Vir x Kitsune\?" ArtistTo="Sonitus Vir x Kitsune²" />
|
||||
<!-- Misc: -->
|
||||
<Translation TitleFrom="Pokemon" TitleTo="Pokémon" DontTransliterate />
|
||||
<Translation ArtistFrom="Omega Versus KTz" ArtistTo="Ω Versus KTz" />
|
||||
<Translation ArtistFrom="DJ Demon Versus Omega" ArtistTo="DJ 鬼 Versus Ω" />
|
||||
<Translation ArtistFrom="NW 260, ZZ, and 290" ArtistTo="NW 260, &doublezeta;, and 290" />
|
||||
<!-- http://bemanistyle.com/sims/viewsim.php?id=1161 -->
|
||||
<Translation TitleFrom="Renai Revolution 21" TitleTo="恋愛レボリューション21" />
|
||||
<!-- http://bemanistyle.com/sims/viewsim.php?id=1160 -->
|
||||
<Translation SubtitleFrom="~Ai no Big Band~" SubtitleTo="~愛のビッグバンドー~" />
|
||||
<!-- CHOP CHOP, MASTER ONION'S RAP (PaRappa the Rapper) -->
|
||||
<Translation ArtistFrom="(Masaya Matsuura)|(Matsuura Masaya)" ArtistTo="松浦雅也" />
|
||||
<!-- Fanboy bonus: -->
|
||||
<Translation ArtistFrom="(Megumi Hayashibara)|(Hayashibara Megumi)" ArtistTo="林原めぐみ" />
|
||||
<Translation ArtistFrom="(Ayumi Hamasaki)|(Hamasaki Ayumi)" ArtistTo="浜崎あゆみ" />
|
||||
<Translation ArtistFrom="(Hiroko Kasahara)|(Kasahara Hiroko)" ArtistTo="笠原弘子" />
|
||||
<Translation ArtistFrom="(Mai Kuraki)|(Kuraki Mai)" ArtistTo="倉木麻衣" />
|
||||
<Translation ArtistFrom="Miryokuteki" ArtistTo="魅力的" />
|
||||
<Translation ArtistFrom="(Yuki Kimura)|(Kimura Yuki)" ArtistTo="木村由姫" />
|
||||
<Translation ArtistFrom="(Takako Matsu)|(Matsu Takako)" ArtistTo="松たか子" />
|
||||
<Translation ArtistFrom="(Suzuki Ami)|(Ami Suzuki)" ArtistTo="鈴木あみ" />
|
||||
<Translation ArtistFrom="(Sakura Tange)|(Tange Sakura)" ArtistTo="丹下桜" />
|
||||
<Translation ArtistFrom="(Hikaru Utada)|(Utada Hikaru)" ArtistTo="宇多田ひかる" />
|
||||
<Translation ArtistFrom="(Masami Okui)|(Okui Masami)" ArtistTo="奥井雅美" />
|
||||
<Translation ArtistFrom="Morning Musume" ArtistTo="Morning娘" />
|
||||
<Translation ArtistFrom="(You?ko Ishida)|(Ishida You?ko)" ArtistTo="石田燿子" />
|
||||
<Translation ArtistFrom="(You?ko Kanno)|(Kanno You?ko)" ArtistTo="菅野よう子" />
|
||||
<Translation ArtistFrom="You?ko Kanno (and|&) the Seatbelts" ArtistTo="菅野よう子 and the Seatbelts" />
|
||||
<Translation ArtistFrom="(Megumi Ogata)|(Ogata Megumi)" ArtistTo="緒方恵美" />
|
||||
<Translation ArtistFrom="(You?ko Takahashi)|(Takahashi You?ko)" ArtistTo="高橋洋子" />
|
||||
<Translation ArtistFrom="(Daichi Akitaroh)|(Akitaroh Daichi)" ArtistTo="大地丙太郎" />
|
||||
<Translation ArtistFrom="(Yui Horie)|(Horie Yui)" ArtistTo="堀江由衣" />
|
||||
<Translation ArtistFrom="(Nobuo Uematsu)|(Uematsu Nobuo)" ArtistTo="植松伸夫" />
|
||||
<Translation ArtistFrom="Mitsuishi Kotono" ArtistTo="三石琴乃" />
|
||||
<Translation ArtistFrom="(Kou?ji Kondou?|Kondou? Kou?ji)" ArtistTo="近藤浩治" />
|
||||
<Translation ArtistFrom="(Yuki Matsuoka)|(Matsuoka Yuki)" ArtistTo="松岡由貴" />
|
||||
<Translation ArtistFrom="Blue?mchen" ArtistTo="Blümchen" DontTransliterate />
|
||||
</Songs>
|
||||
<Courses>
|
||||
<Translation TitleFrom="(Kidou)|(Demon Road)|(Road of Oni)|(Oni Michi)|(Kidou/Onimichi \(Demon Road\))"
|
||||
TitleTo="鬼道" />
|
||||
<Translation TitleFrom="(Kidou 2)|(Demon Road 2)|(Road of Oni 2)|(Oni Michi 2)|(Kidou 2/Onimichi 2 \(Demon Road 2\))"
|
||||
TitleTo="鬼道 弐" />
|
||||
<Translation TitleFrom="Love" TitleTo="Love ♡" />
|
||||
<Translation TitleFrom="Love Love" TitleTo="Love ♡" />
|
||||
<Translation TitleFrom="(2 ?MB)|(Road of 2 ?MB)" TitleTo="2MB道" />
|
||||
<Translation TitleFrom="Dancemania( Oni)?" TitleTo="Dancemania 鬼" />
|
||||
<Translation TitleFrom="(TaQ( Oni)?)|(Road of TaQ)" TitleTo="TaQ道" />
|
||||
<Translation TitleFrom="(Legend(ary)? Road)|(Road of Legend)" TitleTo="伝説道" />
|
||||
<Translation TitleFrom="(Slow Demon Road)|(Road of Slow)|(Demon's Slow Road)" TitleTo="鬼の遅道" />
|
||||
<!-- "Road of True"? Maybe "Truth"? -->
|
||||
<Translation TitleFrom="(True Demon Road)|(Road of Tru.*)" TitleTo="真鬼道" />
|
||||
<Translation TitleFrom="(DDR HOME VERSION)" TitleTo="家庭用DDRコース" />
|
||||
<Translation TitleFrom="Four Seasons" TitleTo="春夏秋冬" />
|
||||
<Translation TitleFrom="DanceMania Nonstop" TitleTo="DanceMania 連" />
|
||||
<Translation TitleFrom="(Otome no Michi|Maiden Star Road)" TitleTo="乙女☆道" />
|
||||
<Translation TitleFrom="(Oni no Ran)|(Rebellion of Demons)" TitleTo="鬼の乱" />
|
||||
</Courses>
|
||||
<Groups>
|
||||
<Translation TitleFrom="((Dance Dance Revolution)|(dance dance revolution)|(DANCE DANCE REVOLUTION))(.*)"
|
||||
TitleTo="DDR\${5}" />
|
||||
<Translation TitleFrom="((Pump It Up)|(pump it up)|(PUMP IT UP))(.*)" TitleTo="PIU\${5}" />
|
||||
<Translation TitleFrom="((ParaParaParadise)|(paraparaparadise)|(PARAPARAPARADISE)|(Para Para Paradise)|(para para paradise)|(PARA PARA PARADISE))(.*)"
|
||||
TitleTo="PPP\${8}" />
|
||||
<Translation TitleFrom="((Dancing Stage)|(dancing stage)|(DANCING STAGE))(.*)" TitleTo="DS\${5}" />
|
||||
<Translation TitleFrom="((Ez2dancer)|(Ez 2 Dancer))(.*)" TitleTo="EZ2\${4}" />
|
||||
<Translation TitleFrom="((Technomotion)|(Techno Motion))(.*)" TitleTo="TM\${4}" />
|
||||
<Translation TitleFrom="((Dance Station 3DDX)|(DS3DDX))(.*)" TitleTo="3DDX\${4}" />
|
||||
<Translation TitleFrom="((BeatMania)|(Beatmania)|(BEATMANIA)|(beatmania))(.*)" TitleTo="BM\${6}" />
|
||||
<Translation TitleFrom="((In The Groove)|(In the Groove))(.*)" TitleTo="ITG\${4}" />
|
||||
<!-- <Translation TitleFrom="((Mungyodance)|(Mungyodance))(.*)" TitleTo="MGD\${4}" /> -->
|
||||
<!-- <Translation TitleFrom="((Flightmix)|(Flightmix))(.*)" TitleTo="FMX\${4}" /> -->
|
||||
<!-- <Translation TitleFrom="((Kurimix)|(Kurimix))(.*)" TitleTo="KMX\${4}" /> -->
|
||||
</Groups>
|
||||
</Translations>
|
||||
|
||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 20 KiB |
@@ -1,90 +0,0 @@
|
||||
[this is an alternate, separate system from "ConditionalBGA"]
|
||||
|
||||
Conditionals allow enabling BGAs or portions of BGAs based on a boolean
|
||||
expression.
|
||||
|
||||
* Quick start
|
||||
|
||||
To only show a BGA on Wednesday:
|
||||
|
||||
[BGAnimation]
|
||||
Condition=Weekday() == 3
|
||||
|
||||
[Layer1]
|
||||
File=star
|
||||
Command=x,100;y,200
|
||||
...
|
||||
|
||||
|
||||
To only between 10pm and 3am, use this Condition= line:
|
||||
Condition=Hour() > 22 or Hour() < 3
|
||||
|
||||
Only if there are at least 2 stages left:
|
||||
Condition=NumStagesLeft() >= 2
|
||||
|
||||
Don't show in demo or jukebox mode:
|
||||
Condition=not IsDemonstration()
|
||||
|
||||
Only show if the current song is "Happy Birthday":
|
||||
Condition=CurSong() == Song("Happy Birthday")
|
||||
|
||||
Only display the layer on even days:
|
||||
math.mod(DayOfMonth(), 2) == 0
|
||||
|
||||
Only display the layer on odd days:
|
||||
math.mod(DayOfMonth(), 2) == 0
|
||||
|
||||
Only display on April Fools:
|
||||
Condition=MonthOfYear() == 4 and DayOfMonth() == 1
|
||||
|
||||
Only display on the final stage:
|
||||
Condition=IsFinalStage()
|
||||
|
||||
Only if the "reverse" modifier is in use by player 1:
|
||||
Condition=UsingModifier(1, "reverse")
|
||||
|
||||
Only if the "reverse" modifier is in use by player 1 or 2:
|
||||
Condition=UsingModifier(1, "reverse") or UsingModifier(2, "reverse")
|
||||
|
||||
Only if either player got an AAA or better:
|
||||
GetBestGrade() <= Grade("AAA")
|
||||
|
||||
* Advanced use
|
||||
|
||||
This can be applied to a single layer of a BGAnimation, by putting
|
||||
the conditional in the appropriate [Layer] section.
|
||||
|
||||
[Layer1]
|
||||
File=stage1
|
||||
Condition=StageIndex() == 0
|
||||
|
||||
[Layer2]
|
||||
File=stage2
|
||||
Condition=StageIndex() == 1
|
||||
|
||||
[Layer3]
|
||||
File=extra_stage
|
||||
Condition=IsExtraStage()
|
||||
|
||||
* Complete function list:
|
||||
|
||||
MonthOfYear() month of year (1..12)
|
||||
DayOfMonth() day of the month (1..31)
|
||||
Hour() hours past midnight (0..23)
|
||||
Minute() minutes after the hour (0..59)
|
||||
Second() seconds after the minute (0..59)
|
||||
Year() year (eg. 2004)
|
||||
Weekday() days since Sunday (0..6)
|
||||
DayOfYear() the number of days since January 1 (0..365)
|
||||
|
||||
StageStats info:
|
||||
|
||||
GetBestGrade() best grade of any active player (AAAA is 0, AAA is 1, etc)
|
||||
GetWorstGrade() worst grade of any active player
|
||||
OnePassed() returns true if either player passed
|
||||
FullCombo(pn) returns true if player "pn" (0 or 1) got a full combo
|
||||
MaxCombo(pn) returns the given player's max combo
|
||||
GetGrade(pn) returns the given player's grade
|
||||
Grade(grade) returns the grade number for a given string
|
||||
OneGotGrade(pn,n)
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
*** EXPLANATION ***
|
||||
|
||||
BMA is merely a container. It is very expandable, though the
|
||||
file table could definately use a facelift. Have fun.
|
||||
|
||||
Anything not specified in the file is considered null, and can
|
||||
be used for any purpose (considering those area are not read,
|
||||
so custom tags could be added after the main header but before
|
||||
the file table.)
|
||||
|
||||
|
||||
|
||||
*** SOURCE HEADERS AND DEFINITIONS ***
|
||||
|
||||
Make sure you use these typedefs:
|
||||
TypeDef Unsigned Char Int8;
|
||||
TypeDef Signed Short Int16;
|
||||
TypeDef Signed Int Int32;
|
||||
|
||||
And constants:
|
||||
Const BlockSize = 4096;
|
||||
|
||||
And these libraries:
|
||||
ZLib
|
||||
|
||||
|
||||
|
||||
*** HEADER ***
|
||||
|
||||
(hex)
|
||||
Location Type Desc
|
||||
---------------------------------------------------------------
|
||||
00 String(6) "BAMarc"
|
||||
06 Int16 0xFFFF, identifier
|
||||
08 Int16 Version #, always 1 for now
|
||||
0A Int16 Entry count
|
||||
0C Int8 Entry Table Block
|
||||
0D Int8 First File Block
|
||||
0E Int16 Reserved
|
||||
10 Int8 Creator's name length
|
||||
11 String(31) Creator's name
|
||||
30 Int8 Description length
|
||||
31 String(63) Description
|
||||
|
||||
|
||||
*** FILE TABLE ***
|
||||
(at file offset: EntryTableBlock*BlockSize)
|
||||
|
||||
(hex)
|
||||
Location Type Desc
|
||||
---------------------------------------------------------------
|
||||
00 Int32 File length, in bytes
|
||||
04 Int16 File offset, in blocks
|
||||
06 Int8 Filename length
|
||||
07 Int8 File flags:
|
||||
& 0x01 = unused
|
||||
& 0x02 = unused
|
||||
& 0x04 = unused
|
||||
& 0x08 = unused
|
||||
& 0x10 = unused
|
||||
& 0x20 = ZLib compressed
|
||||
& 0x40 = unused
|
||||
& 0x80 = unused
|
||||
08 String(24) Filename
|
||||
|
||||
|
||||
*** FILE ***
|
||||
|
||||
The file's true offset is at (FileOffsetBlock*BlockSize) in the
|
||||
file. If a file is ZLIB compressed, there will be an extra
|
||||
string at the end of the chunk, in ASCII, that contains the
|
||||
uncompressed file size in bytes.
|
||||
|
||||
OGG audio is not compressed in these files because they can be
|
||||
loaded directly into memory and played by a sound library.
|
||||
|
||||
|
||||
|
||||
-=- Created by SaxxonPike, 2004-2005 -=-
|
||||
@@ -0,0 +1,839 @@
|
||||
sm-ssc Changelog
|
||||
________________________________________________________________________________
|
||||
The sm-ssc changelog mainly deals with source code-related changes, as theme
|
||||
changes happen at a rapid pace.
|
||||
|
||||
Changes are grouped by date.
|
||||
Not all changes are documented, for various reasons.
|
||||
(Some changes were later reverted, other changes relate to things that aren't
|
||||
supported but exist anyways.)
|
||||
_____________________________________________________________________________
|
||||
|
||||
sm-ssc Private Beta Wave 1.4 | 20100125
|
||||
---------------------------------------
|
||||
|
||||
20100125
|
||||
--------
|
||||
* Catching up with StepMania 4 SVN. All code by Glenn Maynard.
|
||||
* r28254 (GameConstantsAndTypes.h GameManager.cpp): routine style for pump
|
||||
* r28255 Steps.cpp: fix routine special case so it works in all styles
|
||||
* r28256 ScoreKeeper.cpp: support ScoreKeeperShared in
|
||||
ScoreKeeper::MakeScoreKeeper
|
||||
* r28257 ScreenGameplayShared.cpp: update old ScreenGameplayShared code
|
||||
to mostly use PlayerInfo::Load; fixes some stuff but still not right
|
||||
|
||||
20100124
|
||||
--------
|
||||
* [Player] new ScoreMissedHoldsAndRolls metric (FSX)
|
||||
* [Song] add GetFirstBeat and GetLastBeat Lua bindings
|
||||
* Make RandomBackgroundMode use BGMODE_RANDOMMOVIES by default
|
||||
|
||||
20100122
|
||||
--------
|
||||
* Add support for Pump It Up delays with #DELAYS tag in .sm files & treating all
|
||||
stops in .KSF files as delays.
|
||||
* Use RollingNumbers methods in ScreenNetEvaluation now that ScreenEvaluation
|
||||
uses them, as opposed to settext (which caused a few visual issues).
|
||||
* [ScreenEvaluation] add SongOptions as a metric-able item.
|
||||
|
||||
20100119
|
||||
--------
|
||||
* Make FGAnimations (#FGCHANGES:) work again. (hopefully; it semeed to work
|
||||
using a test file.)
|
||||
|
||||
20100118
|
||||
--------
|
||||
mostly [ScreenNetSelectBase] related changes:
|
||||
* remove some now-unused metrics (namely ChatInputBoxWidth/Height and
|
||||
ChatOutputBoxWidth/Height).
|
||||
* Rename "Meter" to "StepsDisplay"
|
||||
* RoomWheel now uses a MusicWheel-like setup for items (NormalPart/ColorPart)
|
||||
instead of a single bar graphic.
|
||||
|
||||
20100117
|
||||
--------
|
||||
* [ScreenNetSelectBase] Sprite -> AutoActor for chat boxes, un-hardcode some
|
||||
commands on items to allow for better theming.
|
||||
* Disable Control+Letter "sort by title" shortcut in course mode.
|
||||
|
||||
20100116
|
||||
--------
|
||||
* Pump-Doubles has better (more accurate?) spacing between the two sides
|
||||
* Enable saving replays. The replay data format will likely change over time,
|
||||
and there is currently no mechanism to replay the data back as another player.
|
||||
|
||||
20100114
|
||||
--------
|
||||
* add GAMESTATE:GetHardestStepsDifficulty() Lua binding
|
||||
* Don't complain about #SELECTABLE:Roulette; even though it's not implemented
|
||||
for some reason.
|
||||
|
||||
20100112
|
||||
--------
|
||||
* Added more milestones (25, 50, 250)
|
||||
* {issue 73} If the wheel is locked, don't accept Ctrl+Letter to sort
|
||||
* [NotesLoaderKSF] implement DirectMove |E| type (DelayBeat)
|
||||
|
||||
20100111
|
||||
--------
|
||||
* [CourseLoaderCRS.cpp] add GRADEBEST and GRADEWORST to possible values.
|
||||
|
||||
20100107
|
||||
--------
|
||||
* [GameConstantsAndTypes.h] bump MAX_METER from 13 to 20.
|
||||
* [MemoryCardManager] add GetName(pn) Lua binding. Returns the name of the device.
|
||||
|
||||
sm-ssc Private Beta Wave 1.3 | 20100106
|
||||
---------------------------------------
|
||||
|
||||
20100105
|
||||
--------
|
||||
* [LifeMeterBattery] Instead of using various hardcoded values, make them metrics.
|
||||
BatteryBlinkTime (float), BatteryP*X/Y and NumLivesP*X/Y metrics added.
|
||||
* [GameSoundManager] use the sound's fade in and out times instead of the
|
||||
hardcoded fade in (1.5sec) and out (0.3sec) times.
|
||||
|
||||
20100101
|
||||
--------
|
||||
* [GrooveRadar] run commands on RadarValueMapP* so we can color it again
|
||||
* [Song.cpp] Make AutoGen on Pump a bit more bearable by only AutoGenerating
|
||||
Medium difficulty for HalfDoubles steps.
|
||||
|
||||
20091229
|
||||
--------
|
||||
* [GameState] new Lua bindings: JoinPlayer(pn), UnjoinPlayer(pn), and
|
||||
GetSongPercent(fBeat)
|
||||
|
||||
20091227
|
||||
--------
|
||||
* [ScreenSelectMusic] Allow un-selecting the song if two part selection is
|
||||
enabled (press back). Only works if all human players have not chosen steps
|
||||
yet. (If a player has chosen steps and the other wants to change the song,
|
||||
the other player has to cancel his step selection.)
|
||||
* [NoteSkinManager] New Lua binding NOTESKIN:DoesNoteSkinExist(sName) for
|
||||
finding if the specified noteskin exists in the current gametype.
|
||||
|
||||
20091226
|
||||
--------
|
||||
* New Lua binding: NOTESKIN:GetNoteSkinNames(), which returns a table of all
|
||||
noteskins for the current gametype.
|
||||
|
||||
20091225
|
||||
--------
|
||||
* New Lua bindings for Profile: GetTotalSessions(), GetTotalSessionSeconds(),
|
||||
GetTotalGameplaySeconds()
|
||||
|
||||
20091221
|
||||
--------
|
||||
* Support "converge" as an alias for "centered" since some courses use it.
|
||||
|
||||
20091220
|
||||
--------
|
||||
* [EditMenu] new metric TextBannerType
|
||||
* Fixed issue 38 (Servers line in ScreenNetworkOptions)
|
||||
|
||||
20091219
|
||||
--------
|
||||
* Make it possible to change the alpha of the center of the groove radar [shakesoda]
|
||||
* [ScreenSelectMusic] make profile load with late join on. [AJ]
|
||||
* Fix OS hotkey issues by invalidating input on ScreenEdit while meta keys
|
||||
(cmd or winkey) are being held. [shakesoda]
|
||||
|
||||
sm-ssc Private Beta Wave 1.2 | 20091219
|
||||
---------------------------------------
|
||||
Theme-related additions/bugfixes aren't listed here, usually.
|
||||
|
||||
20091218
|
||||
--------
|
||||
* Fix bug in GAMESTATE:GetCurrentSteps(pn) where it didn't bother trying to
|
||||
return the player's actual steps before trying to do:
|
||||
(1) SongUtil::GetOneSteps( p->m_pCurSong.Get(), GAMESTATE->GetCurrentStyle()->m_StepsType, GAMESTATE->m_PreferredDifficulty[pn] );
|
||||
(2) SongUtil::GetOneSteps( p->m_pCurSong.Get(), GAMESTATE->GetCurrentStyle()->m_StepsType, GAMESTATE->GetClosestShownDifficulty(pn) );
|
||||
And with AutoSetStyle on, how the hell is it going to know the style with
|
||||
those two SongUtil things in the way? By moving the player's steps to the
|
||||
top, that fixes the problem. -aj
|
||||
|
||||
20091217
|
||||
--------
|
||||
* Make DeviceList on ScreenTestInput metricable
|
||||
(commands only, X and Y are elusive for some reason.)
|
||||
|
||||
20091215
|
||||
--------
|
||||
* Fix option underlines diffusing color when they should just be diffusing alpha.
|
||||
* [ScreenOptions] new Lua binding: AllAreOnLastRow()
|
||||
* [ScreenSelectMaster] add DoSwitchAnyways [shakesoda]
|
||||
|
||||
20091214
|
||||
--------
|
||||
* new Course Lua bindings: IsNonstop(), IsOni(), HasBanner()
|
||||
|
||||
20091213
|
||||
--------
|
||||
* Support Pump it Up Exceed PS2 USB mat [galopin]
|
||||
(see stepmania-devs mailing list 20091213 11:27 -0800 [Pacific Standard Time])
|
||||
|
||||
20091212
|
||||
--------
|
||||
* (smpackage) sm4svn r28243: "fix for FlushDirCache" [Chris Danford]
|
||||
* Fix Beginner Helper rest location [sy567]
|
||||
(see http://www.stepmania.com/forums/showpost.php?p=158721&postcount=12)
|
||||
|
||||
20091211
|
||||
--------
|
||||
Cel shader update [shakesoda]
|
||||
|
||||
20091209
|
||||
--------
|
||||
[StepsDisplay] StepsType is an AutoActor now (was Sprite)
|
||||
|
||||
================================================================================
|
||||
sm-ssc Private Beta Wave 1.1 | 20091208
|
||||
--------------------------------------------------------------------------------
|
||||
Theme-related bugfixes aren't listed here, usually.
|
||||
See the sm-ssc bugtracker at http://ssc.ajworld.net/sm-ssc/bugtracker/ for more
|
||||
information on bugs, feature requests, and the status of both.
|
||||
|
||||
In addition to the bugfixes, the following changes have been made:
|
||||
|
||||
20091208
|
||||
--------
|
||||
Refresh the metrics when changing the gametype. Fixes an issue where changing
|
||||
the gametype causes the DifficultyList/StepsDisplayList to not show anything.
|
||||
|
||||
20091207
|
||||
--------
|
||||
* [Character.cpp] fix GetModelPath() Lua binding.
|
||||
* [Sprite.cpp] add GetState() and GetNumStates() Lua bindings.
|
||||
|
||||
20091206
|
||||
--------
|
||||
Implement a patch to support modern versions of ffmpeg.
|
||||
(See http://www.stepmania.com/forums/showthread.php?t=21434 for more info.)
|
||||
|
||||
Petr Baudis (3):
|
||||
video.m4: Add libswscale checks.
|
||||
MovieTexture_FFMpeg: Port img_convert to libswscale method.
|
||||
MovieTexture_Theora: Port img_convert to libswscale method.
|
||||
|
||||
David Santamaría Rogado (howl) (12):
|
||||
video.m4: Simplify FFMpeg checks.
|
||||
ArchHooks_Unix: Correct ffmpeg include.
|
||||
MovieTexture_FFMpeg: Add and correct ffmpeg necessary includes.
|
||||
MovieTexture_FFMpeg: Replace avcodec_build() with avcodec_version(), avcodec_build() now doesn't exists and avcodec_version() has always return the same value of avcodec_build().
|
||||
MovieTexture_FFMpeg: Replace avcodec::offset_t type with int64_t type to complain the new FFMpeg API .
|
||||
MovieTexture_FFMpeg: Corrected seek component of RageProtocol to complain the new FFMpeg, if not videos with malformed headers fails to play.
|
||||
MovieTexture_FFMpeg: Fix compilation warning of RageProtocol.
|
||||
MovieTexture_FFMpeg: Add destruction conditions for swscale context to avoid possible crashes.
|
||||
MovieTexture_FFMpeg: Add initialization conditions for swscale context to avoid possible unused memory if there is no garbage collector and improve performance.
|
||||
MovieTexture_Theora: Add and correct ffmpeg necessary includes.
|
||||
MovieTexture_Theora: Add destruction conditions for swscale context to avoid possible crashes.
|
||||
MovieTexture_Theora: Add initialization conditions for swscale context to avoid possible unused memory if there is no garbage collector and improve performance.
|
||||
|
||||
20091205
|
||||
--------
|
||||
* [Player.cpp/.h] new metric: ComboUnderField. It should be true by default if
|
||||
you want to match how StepMania 4 does it. [AJ]
|
||||
|
||||
20091204
|
||||
--------
|
||||
* Fix a sm-ssc bug where you couldn't change course difficulties.
|
||||
|
||||
20091203
|
||||
--------
|
||||
* Two new GameCommands:
|
||||
* fademusic,fVolume,fDuration (though I wish fDuration was how long to fade the
|
||||
music for; instead the fade lengths are consts in GameSoundManager.)
|
||||
* pushscreen,sScreenName (though it doesn't push screens like I had thought it
|
||||
would. maybe I'm doing it wrong.) [AJ]
|
||||
|
||||
20091202
|
||||
--------
|
||||
* Profile name max length changed from 12 to 32 characters. [AJ]
|
||||
* Modified character camera values. [shakesoda]
|
||||
|
||||
20091201
|
||||
--------
|
||||
* [ScreenSelectMusic] new metric SamplePreviewMusicMode, which has one of two
|
||||
possible values as of r127. 'SamplePreviewMusicMode_Normal' is business as
|
||||
usual (sample music plays), while 'SampleMusicPreviewMode_ScreenMusic'
|
||||
disables song samples, using /{theme}/Sounds/ScreenSelectMusic loop music.*
|
||||
as the file to play. No, this doesn't support Lua music yet. [AJ]
|
||||
|
||||
================================================================================
|
||||
sm-ssc Private Beta Wave 1 | 20091201
|
||||
--------------------------------------------------------------------------------
|
||||
The list below comprises sm-ssc Private Beta Wave 1's changes. Some of the
|
||||
changes are from baseline StepMania 4 SVN, in order to keep compatibility.
|
||||
|
||||
20091130
|
||||
--------
|
||||
* [StepMania.cpp] (any)Shift+F2 = reload metrics only.
|
||||
F2 = reload metrics and textures.
|
||||
* [Course.cpp] GetPlayMode() and GetCourseType() return actual enums now,
|
||||
instead of numbers.
|
||||
* Add improved cel shading for people with GLSL support. [shakesoda]
|
||||
|
||||
20091129
|
||||
--------
|
||||
* [TimingData] add GetActualBPM() Lua binding that returns a table holding the
|
||||
min and max BPMs, in that order.
|
||||
|
||||
20091127
|
||||
--------
|
||||
* Disable color keying banners (it's 2009, I don't think anyone is using the
|
||||
old rotated banners anymore. -aj) [shakesoda]
|
||||
* Add OptionsListTimeout metric. [shakesoda]
|
||||
|
||||
20091126 (SSC turkey day)
|
||||
-------------------------
|
||||
* [Song] new Lua bindings: NormallyDisplayed(), GetStepsSeconds()
|
||||
* Themes will load Lua scripts from subdirectories first now.
|
||||
|
||||
20091122
|
||||
--------
|
||||
* [ArchHooks_Unix] Follow user's system language as default.
|
||||
[David Santamaría Rogado (howl)]
|
||||
See http://www.stepmania.com/forums/showthread.php?t=21471 for more info.
|
||||
|
||||
20091120
|
||||
--------
|
||||
* Fixed a crash with lifemultipliers > 1.0 in debug builds
|
||||
|
||||
20091117
|
||||
--------
|
||||
* F2 reloads metrics again, just like in StepMania 3.9. (This is probably one
|
||||
of those changes that won't get backported to baseline StepMania...)
|
||||
* [ScoreKeeperNormal] version 0.5 of ToastyTriggersAt added; only allows for
|
||||
one value, unlike 3.9+ (which used a String with multiple values). The final
|
||||
version will use a Lua table, similar to [MusicWheel] SortOrders.
|
||||
|
||||
20091116
|
||||
--------
|
||||
* [Character] new Lua bindings: GetModelPath(), GetRestAnimationPath(),
|
||||
GetWarmUpAnimationPath(), GetDanceAnimationPath()
|
||||
* [CharacterManager] GetRandomCharacter() Lua binding added
|
||||
* [RageFileManager] GetDirListing(sPath,bOnlyDirs,bPathToo) Lua binding added
|
||||
* [CharacterManager] GetAllCharacters() Lua binding added.
|
||||
|
||||
20091115
|
||||
--------
|
||||
* Prevent focus lost at Fullscreen on X11, fix windowed->fullscreen resolution
|
||||
changes so that they save [David Santamaría Rogado (howl)]
|
||||
(http://www.stepmania.com/forums/showthread.php?t=21430)
|
||||
|
||||
20091114
|
||||
--------
|
||||
* Add support for .oga and .ogv files. [David Santamaría Rogado (howl)]
|
||||
(http://pastie.org/698741)
|
||||
|
||||
20091113
|
||||
--------
|
||||
* sm4svn r28233 [Glenn Maynard]:
|
||||
"Fix ThemeMetric<EnumType> gives the first value of the enum when the theme
|
||||
metric is nil, instead of EnumType_INVALID.
|
||||
This happened because ThemeMetric was setting the value to its default,
|
||||
eg. EnumType(), when LuaHelpers::FromStack returned false.
|
||||
This behavior doesn't make sense in the general case, since EnumType() results
|
||||
in an arbitrary value (the first one) rather than Invalid. Every FromStack
|
||||
function sets a reasonable default on invalid data, anyway, and only RageColor
|
||||
and enums can return false in any case.
|
||||
This fixes CustomDifficulty when CourseType = nil."
|
||||
|
||||
* Fix a crash in StepsDisplay that allows Course mode to at least run.
|
||||
|
||||
20091111
|
||||
--------
|
||||
* MusicWheelItem SetMessage has a new param, Type (string that returns the
|
||||
item type).
|
||||
* Add sort songs by most recently played. (not feature-complete yet.)
|
||||
|
||||
20091103 to 20091109
|
||||
--------------------
|
||||
* Changes from SM4SVN:
|
||||
* r28211: [HighScore.cpp] "logic fixup" [Glenn Maynard]
|
||||
* r28215: "default to showing backgrounds in editor" [Chris Danford]
|
||||
* r28217: "Fix crash on reload metrics due to faulty FlushDirCache logic."
|
||||
[Steve Checkoway], implemented along with code that was originally submitted
|
||||
as r076 but removed. See this fix log to figure out why we'd bother. :)
|
||||
* r28218: "crash handler is crashing in 2.6.31 in GetBacktrace, causing a
|
||||
recursive crash handler crash that we aren't handling, leading to recursion"
|
||||
[Glenn Maynard]
|
||||
* r28219: "add 'DIRRO' driver for read-only access" [Glenn Maynard]
|
||||
* r28220: "fix confusing comment. Escaping doesn't affect this; commas aren't
|
||||
escaped, since they're split from the value itself, long after MsdFile is
|
||||
loaded." [Glenn Maynard] (We'll be keeping the 1,1,1,1 colors in sm-ssc, and
|
||||
may provide a compatibility script for SM4SVN, so be on the lookout.)
|
||||
* r28221: "allow overriding, like PRODUCT_ID" [Glenn Maynard]
|
||||
* r28222-28223: "adding support for pms files" [GRIM657]
|
||||
* The pulseaudio patch [David Santamaría Rogado (howl), OndÅ™ej HoÅ¡ek, Damien Thébault]
|
||||
(see http://www.stepmania.com/forums/showthread.php?t=21348)
|
||||
* Greg Nadja's OpenGL/Windows patch
|
||||
* Load Splash.png instead of an .xpm [David Santamaría Rogado (howl)]
|
||||
(http://www.stepmania.com/forums/showpost.php?p=157340&postcount=3)
|
||||
|
||||
* sm-ssc Changes:
|
||||
* [ScreenSelectMusic.cpp] Add SelectMenuInputMessage, has params Player and
|
||||
Button. Broadcast messages when holding select and a button other than Select
|
||||
is pushed.
|
||||
* Windowed mode is now the default display mode.
|
||||
* [HighScore.cpp] new Lua bindings:
|
||||
* GetModifiers()
|
||||
* GetTapNoteScore(TapNoteScore)
|
||||
* GetHoldNoteScore(HoldNoteScore)
|
||||
* GetRadarValues()
|
||||
* [ProfileManager.cpp] added IsSongNew(Song) Lua binding
|
||||
|
||||
r088 | 20091101 12:19:47
|
||||
------------------------
|
||||
* SM4SVN r28203-28208, all by Glenn Maynard.
|
||||
* r28203: "skip exporting round data when nothing was played (no taps, no holds)"
|
||||
* r28204: "fix signatures not being written" (we had this already)
|
||||
* r28205: "don't fail if there's no course; just hide"
|
||||
* r28206: "move course rename and delete into Overview"
|
||||
* r28208: "disable rename and delete for courses that havn't been saved yet"
|
||||
r28207 was a theme edit.
|
||||
|
||||
20091029
|
||||
--------
|
||||
sm4svn r28202: helper for cycling through an enum [Glenn Maynard]
|
||||
|
||||
20091028
|
||||
--------
|
||||
sm4svn r28201: "refactor RageInput to not call GetDevicesAndDescriptions
|
||||
constantly; it can be slightly complex and get called thousands of
|
||||
times a second" [Glenn Maynard]
|
||||
|
||||
20091027
|
||||
--------
|
||||
* SM4SVN r28198-28200
|
||||
* r28198: Fix GetFileSizeInBytes to return an int instead of unsigned.
|
||||
"this returns -1 on error (this should actually be 64-bit,
|
||||
but that's a bigger change)" [Glenn Maynard]
|
||||
* r28199: The official log is as follows:
|
||||
"Hack to get the decorations to be deleted. Fixes crashes,
|
||||
but probably not the best way to go about this."
|
||||
In addition to doing this, it adds GetChildren() to ActorFrame in the
|
||||
code itself. (It already existed in Lua, I just felt like pointing
|
||||
this out. :D) [Steve Checkoway]
|
||||
* r28200: The official log is as follows:
|
||||
"Do not use an AutoActor to keep track of the children."
|
||||
However, this also fixes the hack in r28200. [Steve Checkoway]
|
||||
|
||||
* Allow for Codes on ScreenGameplay. [shakesoda]
|
||||
|
||||
* New Lua bindings for ScreenGameplay:
|
||||
* PauseGame(bool) - Pauses/unpauses the game.
|
||||
* IsPaused() - returns true or false depending on if the game is paused or not.
|
||||
|
||||
20091015
|
||||
--------
|
||||
* Support loading Lua scripts from subdirectories of the Scripts folder,
|
||||
to allow for better organization. The scripts in the root Scripts folder
|
||||
will run first, then any Lua scripts in subdirectories of the Scripts folder
|
||||
will be run. It currently only works with one folder depth, for example:
|
||||
Scripts/subfolder/script.lua.
|
||||
|
||||
This is not likely to be changed. If you can see a possible need for paths
|
||||
like Scripts/subfolder/subfolder2/script.lua, please make a Feature Request
|
||||
ticket on the bugtracker at http://ssc.ajworld.net/sm-ssc/bugtracker/ with
|
||||
an explanation of what you have in mind.
|
||||
|
||||
20091012
|
||||
--------
|
||||
* Change BitmapText defaults to no stroke + no shadow.
|
||||
* Added DefaultTheme preference in order to fix crashes.
|
||||
(sm-ssc's fallback theme is _fallback [and therefore normally unselectable].)
|
||||
|
||||
20091005
|
||||
--------
|
||||
* [NotesLoaderSM.cpp] Changes based on SM4SVN r28197 [Archer]
|
||||
|
||||
20091002
|
||||
--------
|
||||
* Event Mode turned on by default, as it should be. :)
|
||||
(sm-ssc is a home mode-based version of StepMania.)
|
||||
|
||||
20090925
|
||||
--------
|
||||
* SM4SVN r28192-28196.
|
||||
* r28192: HexToBinary for RString -> RString. [Glenn Maynard]
|
||||
* r28193: show all songs in EditCourse, not just preferred songs [Chris Danford]
|
||||
* r28194: [ScreenDebugOverlay] Glenn made this themeable in SM4SVN, finally
|
||||
catching up. This means we've had to rename a few things:
|
||||
* DebugMenuHeader -> HeaderText
|
||||
* PageName -> PageText
|
||||
ButtonText and FunctionText were added, as well.
|
||||
The font names remain the same, only the metrics change.
|
||||
(Can you believe they're still using Common normal as the font?)
|
||||
* r28195,28196: fix ComboChanged message sent when m_bSendJudgmentAndComboMessages
|
||||
is false, fix doing unnecessary work in multiplayer [Glenn Maynard]
|
||||
|
||||
20090920
|
||||
--------
|
||||
* [StepsDisplay] Fixed it so it actually shows up again.
|
||||
|
||||
20090919
|
||||
--------
|
||||
Happy talk like k//eternal day!
|
||||
* [Font.cpp] Don't show strokes by default.
|
||||
* [NoteDisplay] fRotation -> fRotationZ in anticipation of multiple rotation mods.
|
||||
* [PaneDisplay] changed one thing that used a goto; doesn't use it anymore. seems to work for me, though I'm not 100% sure.
|
||||
* [ThemeManager] don't reload Lua scripts when you reload the metrics.
|
||||
This is a temporary fix, and may be deemed safe at some point in the future.
|
||||
|
||||
20090914
|
||||
--------
|
||||
(SM4SVN r28189)
|
||||
|
||||
* SM4SVN r28190,28191 (25 files worth). This was later reverted, as it caused
|
||||
reloading the metrics to crash. Since sm-ssc is primarily for themers, this is a
|
||||
dealbreaker. A lot of things were unofficially added to sm-ssc at this point:
|
||||
|
||||
* [ActorFrame] Added RemoveAllChildren() and RemoveChild(sName) bindings.
|
||||
These are not guaranteed to work. Don't use them. They are very dangerous.
|
||||
* [IniFile] added Lua's '--' syntax for commenting (along with '//' and '#',
|
||||
which were already supported).
|
||||
* New blend modes Modulate (subject to renaming later) and AlphaMultiply.
|
||||
* [RageUtil] Added various bindings for formatting time that were already built
|
||||
into StepMania: SecondsToHHMMSS, SecondsToMMSSMsMs, SecondsToMMSSMsMsMs,
|
||||
SecondsToMSS, SecondsToMMSS. All bindings take in a float (number of seconds).
|
||||
* [RageUtil] Added IsHexVal(string) binding.
|
||||
* Added groups to sort length (based on BPM ranges), so the songs no longer
|
||||
show up without groups.
|
||||
|
||||
20090913
|
||||
--------
|
||||
(SM4SVN r28180-28185)
|
||||
|
||||
20090913
|
||||
--------
|
||||
* Added WeightedMultiply and InvertDest blend modes to Direct3D.
|
||||
|
||||
20090912
|
||||
--------
|
||||
* Change decorations draw order so it breaks things less.
|
||||
|
||||
20090911
|
||||
--------
|
||||
* "hidden" removed from Actor commands. It was deprecated.
|
||||
A compatibility alias was added to replicate its functionality. However, this
|
||||
will not work with NoteSkins, so be sure to make sure to check them for the
|
||||
use of hidden.
|
||||
|
||||
Handy replacement guide:
|
||||
hidden,true / hidden,1 = visible,false
|
||||
hidden,false / hidden,0 = visible,true
|
||||
|
||||
20090907
|
||||
--------
|
||||
* Add Sprite:CropTo() function + Lua binding.
|
||||
|
||||
20090906
|
||||
--------
|
||||
* Base theme changed from "default" to "_fallback".
|
||||
As a result, all themes will fallback on _fallback instead of default.
|
||||
|
||||
20090905
|
||||
--------
|
||||
* add URLEncode Lua binding to RageUtil.
|
||||
* [ScreenWithMenuElements.cpp, ThemeManager.cpp] Load and parse Lua as music.
|
||||
This makes conditional music possible.
|
||||
|
||||
20090904
|
||||
--------
|
||||
* Change many things on ScreenEdit to go 5 decimal places instead of 3.
|
||||
* Beginnings of Xbox controller mappings for edit mode (currently untested)
|
||||
|
||||
20090903
|
||||
--------
|
||||
* Binding naming format changed for BPM bindings. Always uses all caps BPM.
|
||||
Changes in the codebase due to this:
|
||||
* [Song] HasSignificantBpmChangesOrStops -> HasSignificantBPMChangesOrStops
|
||||
* [TimingData] HasBpmChanges -> HasBPMChanges
|
||||
* [TimingData] New bindings. (GetStops, GetBPMsAndTimes)
|
||||
* [ScreenPackages] attempt to not call MoveLeft by duplicating code.
|
||||
Seemed to work okay.
|
||||
|
||||
20090831
|
||||
--------
|
||||
* ScreenPackages changes:
|
||||
* Backgrounds from Sprites to AutoActors (Lua can be used now).
|
||||
* DefaultUrl metric added.
|
||||
* [ActorScroller] Make naming of commands consistent (some were all lowercase,
|
||||
some were CamelCase), all are now CamelCase.
|
||||
|
||||
20090828
|
||||
--------
|
||||
* Added ScreenGameplay:GetPlayerInfo(PlayerNumber) Lua binding
|
||||
|
||||
20090827
|
||||
--------
|
||||
* Added LifeChanged message to LifeMeterBattery, meaning certain hackily-coded
|
||||
custom life meters by a certain SSC member can work in Oni mode again. ;)
|
||||
* MAX_EDIT_STEPS_SIZE_BYTES changed from 30KB to 60KB.
|
||||
* Added --theme= and --language= command line options.
|
||||
|
||||
20090826
|
||||
--------
|
||||
* SSE2 build configuration added to Visual Studio 2008 project file.
|
||||
* new Lua bindings for WheelBase: IsSettled(), IsLocked()
|
||||
|
||||
20090822
|
||||
--------
|
||||
* Add Beginner meter sort.
|
||||
* [CommandLineActions] Implement --version command line argument.
|
||||
Prints out the version of sm-ssc. Please build sm-ssc with HAVE_VERSION_TIME
|
||||
if possible for compatibility with all possible sm-ssc themes.
|
||||
|
||||
20090821
|
||||
--------
|
||||
(SM4SVN r28172-28174)
|
||||
|
||||
20090810
|
||||
--------
|
||||
* [GameCommand.cpp] add GetUrl() Lua binding.
|
||||
* [GameManager.cpp] add IsGameEnabled(Game) Lua binding.
|
||||
* [GrooveRadar] name m_GrooveRadarValueMap "RadarValueMap(P1/P2)"
|
||||
(commands untested); new todo note in header file
|
||||
* [ScoreDisplayOni.cpp] give it a name ("ScoreDisplayOni Numbers") and run
|
||||
commands. (untested)
|
||||
* removing player color diffuse commands, in the hopes this can be replicated
|
||||
using Lua commands.
|
||||
[GrooveRadar.cpp, ScoreDisplayLifeTime.cpp, ScreenSelectMusic.cpp]
|
||||
|
||||
20090810
|
||||
--------
|
||||
(SM4SVN r28170: vdl's fixes for Xbox building; he says they should be tested.)
|
||||
|
||||
20090815
|
||||
--------
|
||||
* add THEME:GetPathO() Lua binding
|
||||
|
||||
20090810
|
||||
--------
|
||||
(SM4SVN r28140-r28166; code changes only)
|
||||
|
||||
20090808
|
||||
--------
|
||||
(SM4SVN r28135, r28137, r28138)
|
||||
* Lossless screenshots now save as PNG.
|
||||
* Conversion of decorations to not be children of the screen; they load in
|
||||
a similar fashion to overlay/underlay, but still using LoadB so everything
|
||||
works correctly. (Tested against SM4 default theme for compatibility.)
|
||||
|
||||
20090729
|
||||
--------
|
||||
* add GetRotationX, GetRotationZ commands to Actor
|
||||
* add urlnoexit game command, which won't exit upon loading the browser.
|
||||
* add OldHealthState to HealthStateChanged message on ScreenGameplay
|
||||
|
||||
20090726
|
||||
--------
|
||||
* (untested) GrooveRadar plays commands on the frame now, allowing for
|
||||
customized in and out transitions, using TweenOnScreen/TweenOffScreen Commands.
|
||||
* add PlayerController enum binding
|
||||
* add PlayerState:GetPlayerController() [untested]
|
||||
|
||||
20090725
|
||||
--------
|
||||
ScreenDebugOverlay changes:
|
||||
* add OnCommand, X, Y to Debug Header
|
||||
* add GainFocus/LoseFocus commands to page names
|
||||
* add LineOnColor/LineOffColor
|
||||
|
||||
20090724
|
||||
--------
|
||||
* Add StartRoulette and StartRandom messages to MusicWheel.
|
||||
* Fix default stroke color and shadow length. (BitmapText)
|
||||
|
||||
20090719
|
||||
--------
|
||||
* patch by theDtTvB: http://share11.appspot.com/20421
|
||||
(some parts relating to Player.cpp were later reverted; will be reimplemented)
|
||||
* Add SetPref to GameCommands.
|
||||
|
||||
20090718
|
||||
--------
|
||||
* New ThemeManager Lua bindings:
|
||||
* GetCurrentThemeDirectory
|
||||
* ReloadMetrics
|
||||
* Added more internal font mappings: auxc, auxd, auxz, auxwhite, auxblack,
|
||||
auxlb, auxrb, auxlt, auxrt
|
||||
* Add conf,PercentageScoring.
|
||||
|
||||
20090712
|
||||
--------
|
||||
* ActorScroller: add GetNumItems binding.
|
||||
* ThemeManager: add bindings for GetThemeDisplayName() and
|
||||
GetThemeDisplayAuthor() (for the current theme only).
|
||||
|
||||
20090711
|
||||
--------
|
||||
* Fixes songs with only Edit steps from crashing.
|
||||
* Lights fix from ???
|
||||
* Add GAMESTATE:IsBattleMode() binding.
|
||||
|
||||
20090708
|
||||
--------
|
||||
* (sync with SM4SVN: LightsManager.cpp, ScreenGameplay.cpp)
|
||||
|
||||
20090707
|
||||
--------
|
||||
* Add GetProfileDir() binding to ProfileManager.
|
||||
* Added ProfileSlotNames enum.
|
||||
* Add broadcasted message "SongChosen" on ScreenSelectMusic.
|
||||
|
||||
20090626
|
||||
--------
|
||||
* Allow meters to go up to 20 in Edit Mode.
|
||||
|
||||
20090623
|
||||
--------
|
||||
* Added io, os, and packages to Lua bindings. They are disabled for now.
|
||||
* Fix instance in ScreenSelectMaster where hitting Up wouldn't count as going
|
||||
backwards.
|
||||
|
||||
20090617
|
||||
--------
|
||||
* Add Overlay shader. [AJ]
|
||||
|
||||
20090615
|
||||
--------
|
||||
(sync with SM4SVN)
|
||||
|
||||
More Lua bindings:
|
||||
* PlayerStageStats:FullComboOfScore(tns)
|
||||
|
||||
* RageFileManager is now accessible through FILEMAN with these bindings:
|
||||
* FILEMAN:DoesFileExist(path)
|
||||
* FILEMAN:GetHashForFile(path)
|
||||
|
||||
* Add bindings to Song:
|
||||
* GetSongFilePath
|
||||
* GetMusicPath
|
||||
* GetCDTitlePath
|
||||
* GetLyricsPath
|
||||
* IsEnabled
|
||||
* HasStepsType
|
||||
* HasMusic
|
||||
* HasBanner
|
||||
* HasBackground
|
||||
* HasCDTitle
|
||||
* HasBGChanges
|
||||
* HasLyrics
|
||||
* GetBPMAtBeat
|
||||
* GetBeatFromElapsedTime
|
||||
* GetElapsedTimeFromBeat
|
||||
* HasSignificantBpmChangesOrStops
|
||||
* HasEdits
|
||||
* IsEasy
|
||||
|
||||
* Add bindings to Steps:
|
||||
* IsAnEdit
|
||||
* IsAPlayerEdit
|
||||
* GetHash
|
||||
* disabled stub for GetSMNoteData (untested)
|
||||
|
||||
20090612
|
||||
--------
|
||||
* Work-in-progress bindings for ActorSound:
|
||||
* pause
|
||||
* stop
|
||||
* Work-in-progress bindings for RageSound:
|
||||
* volume
|
||||
* SetStopMode
|
||||
|
||||
20090529
|
||||
--------
|
||||
(sync with SM4SVN: Archer adding 5:4 support)
|
||||
|
||||
20090527
|
||||
--------
|
||||
Add three new Lua bindings to RageFile:
|
||||
* GetError
|
||||
* ClearError
|
||||
* AtEOF
|
||||
|
||||
20090525
|
||||
--------
|
||||
(sync with SM4SVN)
|
||||
* [Actor.cpp] add GetDiffuse() Lua binding
|
||||
|
||||
20090523
|
||||
--------
|
||||
* Add glowramp to Actor
|
||||
|
||||
20090518
|
||||
--------
|
||||
* (changes from SM4SVN: Frieza and Wolfman [OnlyPreferredDifficulties])
|
||||
|
||||
20090517
|
||||
--------
|
||||
* New RageFile bindings: Seek, Tell
|
||||
* Added more internal font mappings: auxa, auxb, auxy, auxl, auxr
|
||||
|
||||
20090513
|
||||
--------
|
||||
ActorScroller changes:
|
||||
* Can now actually set size of the mask with SetMask
|
||||
* Add more Lua bindings:
|
||||
* SetNumItemsToDraw
|
||||
* GetFullScrollLengthSeconds
|
||||
* GetCurrentItem
|
||||
* GetDestinationItem
|
||||
|
||||
20090509
|
||||
--------
|
||||
* Add skewy to valid Actor commands.
|
||||
|
||||
20090505
|
||||
--------
|
||||
(SM4SVN: ComboMultiplier by Frieza in ScoreKeeperNormal + r28060, r28061)
|
||||
|
||||
20090502
|
||||
--------
|
||||
(changes from SM4SVN: ScreenSelect* changes by Frieza)
|
||||
* Make ScreenDebugOverlay use its own fonts, namely:
|
||||
* ScreenDebugOverlay header
|
||||
* ScreenDebugOverlay page
|
||||
* ScreenDebugOverlay line
|
||||
* Add GetServerName() binding to NetworkSyncManager.
|
||||
* Add GetText() binding to BPMDisplay.
|
||||
* add MD5 String/File and SHA1 String hashing via Lua:
|
||||
* CRYPTMAN:MD5String(str)
|
||||
* CRYPTMAN:MD5File(path)
|
||||
* CRYPTMAN:SHA1String(str)
|
||||
* Add more Lua bindings to PlayerStageStats:
|
||||
* GetCurrentMissCombo
|
||||
* GetCurrentPossibleDancePoints
|
||||
* GetAliveSeconds
|
||||
* Add GetThemeAuthor() to ThemeManager.
|
||||
* Add bindings to Song:
|
||||
* GetDisplaySubTitle
|
||||
* GetTranslitSubTitle
|
||||
|
||||
20090501
|
||||
--------
|
||||
(changes from SM4SVN: tons of changes by Frieza)
|
||||
|
||||
20090425
|
||||
--------
|
||||
(changes from SM4SVN: GameManager.cpp, RollingNumbers.cpp)
|
||||
|
||||
20090419
|
||||
--------
|
||||
* Make some crash explanations more detailed. Changed files include:
|
||||
* Actor.cpp - PercentThroughEffect, PercentBetweenColors, DeltaTime
|
||||
* Attack.cpp
|
||||
* GameManager.cpp
|
||||
* GameState.cpp
|
||||
* InputFilter.cpp
|
||||
* NoteData.cpp
|
||||
* Add new Lua bindings to TimingData: HasBpmChanges, GetBpms, GetStops.
|
||||
|
||||
20090418
|
||||
--------
|
||||
* Project begins.
|
||||
* Remove ScreenEz2SelectPlayer, which only the Xbox project still referenced.
|
||||
_____________________________________________________________________________
|
||||
@@ -0,0 +1,47 @@
|
||||
sm-ssc Code Style Guidelines
|
||||
--------------------------------------------------------------------------------
|
||||
AJ is biased, but prefers to edit text in SciTE and just uses Visual Studio when
|
||||
necessary. "It's really slow!"
|
||||
|
||||
That being said, the sm-ssc code style guidelines are as follows:
|
||||
|
||||
1) Follow the current coding conventions set forth in the source code.
|
||||
This means use tabs. AJ prefers tabs have a width of 4. Visual Studio and web
|
||||
browsers assume tabs to be 8 by default. :/
|
||||
Use of the tab character means you can define however the fuck wide you want it
|
||||
to be.
|
||||
|
||||
Use of the space character is allowed for complex alignment. There are many
|
||||
examples of this in the code.
|
||||
|
||||
If it can be done in one line, do so:
|
||||
int xTwenty(int factor){ return factor*20; }
|
||||
|
||||
Otherwise, follow what's in the code, namely...
|
||||
|
||||
for single line ifs :
|
||||
if( somecrap )
|
||||
dosomethingelse();
|
||||
|
||||
for multi-lines:
|
||||
if( anothercrap )
|
||||
{
|
||||
omg();
|
||||
lotsofstuff();
|
||||
}
|
||||
|
||||
Naming conventions seem to be Hungarian (of Apps or System, I do not know).
|
||||
|
||||
2) Remove any unnecessary whitespace. "Unnecessary" whitespace includes tabs
|
||||
at the end of } characters, tabs that lead nowhere, like this one:
|
||||
|
||||
and keep in mind that this can be done with spaces too:
|
||||
|
||||
so watch yourself. Remove 'em all.
|
||||
|
||||
3) When making LOG->Trace()s in code, it's best to include the name of the Class
|
||||
and Function in [], like so:
|
||||
LOG->Info( "[NetworkSyncManager::Listen] Initializing socket..." );
|
||||
You may not always need to do this, but it helps for clarity and sanity.
|
||||
|
||||
4) There are no other rules (yet).
|
||||
@@ -0,0 +1,61 @@
|
||||
sm-ssc Command Line Arguments
|
||||
================================================================================
|
||||
Pass all arguments with --. For example, version would be entered as --version.
|
||||
stepmania --version
|
||||
|
||||
Passing package files to StepMania on the command line will install them:
|
||||
stepmania moonlight.smzip
|
||||
================================================================================
|
||||
[GameState]
|
||||
* player
|
||||
usage: --player=1
|
||||
Joins in the specified player. Can also pass --player=2 at the same time,
|
||||
if desired. However, sm-ssc does not support more than two players, so don't
|
||||
go past 2.
|
||||
|
||||
* mode
|
||||
usage: --mode=
|
||||
Applys a GameCommand to all players if valid.
|
||||
--------------------------------------------------------------------------------
|
||||
[NetworkSyncManager]
|
||||
* netip
|
||||
usage: --netip=localhost
|
||||
Connects to a server for online play.
|
||||
|
||||
* listen
|
||||
usage: --listen
|
||||
Sets up a server, waiting for someone to connect. StepMania cannot connect to
|
||||
itself, so it's unknown what this option is really for. This option may be
|
||||
removed in future sm-ssc releases if it is deemed pointless.
|
||||
--------------------------------------------------------------------------------
|
||||
[PrefsManager]
|
||||
* Type
|
||||
usage: --Type=arcade
|
||||
Reads preferences from [Preferences-{Type}], usually from the metrics.
|
||||
--------------------------------------------------------------------------------
|
||||
[StepMania]
|
||||
* ExportNsisStrings
|
||||
usage: --ExportNsisStrings
|
||||
Exports strings for the installer.
|
||||
|
||||
* ExportLuaInformation
|
||||
usage: --ExportLuaInformation
|
||||
Exports Lua.xml using the default theme (and anything it falls back on)
|
||||
for reference.
|
||||
|
||||
* theme
|
||||
usage: --theme=default | --theme="theme with spaces"
|
||||
Sets the current theme.
|
||||
|
||||
* language
|
||||
usage: --language=en
|
||||
Sets the current language.
|
||||
|
||||
* version
|
||||
usage: --version
|
||||
Displays version information.
|
||||
--------------------------------------------------------------------------------
|
||||
[ThemeManager]
|
||||
* metric
|
||||
usage: --metric=(element)::(metric)=(value)
|
||||
Sets [Element] Metric=Value in the metrics. Can be used multiple times.
|
||||
@@ -0,0 +1,17 @@
|
||||
sm-ssc has a few compile flags that are helpful to know, as well as ones
|
||||
inherited from StepMania.
|
||||
================================================================================
|
||||
stepmania:
|
||||
================================================================================
|
||||
WITHOUT_NETWORKING
|
||||
Disables all networking stuff (SMO).
|
||||
================================================================================
|
||||
sm-ssc:
|
||||
================================================================================
|
||||
SSC_FUTURES
|
||||
{todo}
|
||||
--------------------------------------------------------------------------------
|
||||
HAVE_VERSION_INFO
|
||||
If this isn't defined, passing in --version will only show the name of the
|
||||
current sm-ssc version, no build number or date.
|
||||
Please define HAVE_VERSION_INFO if you can when building sm-ssc.
|
||||
@@ -1,194 +0,0 @@
|
||||
********************************
|
||||
Conditional BGA System.
|
||||
********************************
|
||||
|
||||
--------------
|
||||
Description
|
||||
--------------
|
||||
The conditional bga system will search for a .ini file in a theme
|
||||
folder which will contain a series of BGA names and conditions upon
|
||||
which they may be shown.
|
||||
|
||||
--------------
|
||||
Filenames
|
||||
--------------
|
||||
Currently the following .ini names possible are:
|
||||
|
||||
ScreenEvaluation* ConditionalBGA.ini (will appear on the evaluation screen backgrounds)
|
||||
|
||||
|
||||
--------------
|
||||
Structure
|
||||
--------------
|
||||
[BGAName To Load]
|
||||
Conditiontype:Condition
|
||||
|
||||
--------------
|
||||
Conditions
|
||||
--------------
|
||||
|
||||
SongTitle:
|
||||
enter the name of a song title. be aware -- if you have multiples of a song with the
|
||||
same name then you may want to enter more information like the artist and even song
|
||||
foot ratings.
|
||||
|
||||
Example-
|
||||
SongTitle:Paranoia Survivor Max
|
||||
this will show the BGA only if PSM is available.
|
||||
|
||||
|
||||
|
||||
SongArtist:
|
||||
enter the name of an artist, any song which matches the artist name will display the bga.
|
||||
|
||||
Example-
|
||||
SongArtist:Naoki
|
||||
all songs where the artist is Naoki will show the BGA
|
||||
|
||||
|
||||
|
||||
Clear:
|
||||
clear will show the bga under one of four conditions:
|
||||
* true - this will show if the song was cleared
|
||||
* false - this will show if the song was failed
|
||||
* fullcombo - this will show if the song was full comboed
|
||||
* brokencombo - this will show if the song was cleared but not fullcomboed
|
||||
|
||||
Example-
|
||||
Clear:fullcombo
|
||||
this will only show if one of the players fullcomboed the song.
|
||||
|
||||
|
||||
|
||||
ModDisallow:
|
||||
moddisallow will ensure that the bga is NOT displayed if any of the players
|
||||
have the option. At the time of writing (11/feb/2004) not all mods have been
|
||||
supported, but certainly things like little are not available (ideal if you
|
||||
want somebody to get a rewarding bga for clearing a hard song in heavy, but dont
|
||||
want them getting it via using a mod like little).
|
||||
You may specify multiple mods by seperating them with commas (,)
|
||||
|
||||
Example-
|
||||
ModDisallow:little,nojumps,noholds
|
||||
the bga will only show provided little, nojumps and noholds are not selected by any
|
||||
player.
|
||||
|
||||
|
||||
|
||||
Grade:
|
||||
grade will compare a players grade with their current grade if they have one
|
||||
so you could have it display a BGA if a player AAA'd a track. You may seperate
|
||||
grades via commas (,) which will indicate a grade history with the latest stage
|
||||
being at the end of the list.
|
||||
|
||||
Example-
|
||||
Grade:AAA,AAA,AAA
|
||||
the above will show the bga only if the player has passed at least 3 stages and
|
||||
one of the players got a AAA on each stage.
|
||||
|
||||
|
||||
|
||||
|
||||
SongMonth:
|
||||
the bga will only display if the current month matches. Months range from 0-11 with
|
||||
0 being janurary and 11 being december.
|
||||
|
||||
Example-
|
||||
SongMonth:2
|
||||
the bga will only appear if its march.
|
||||
|
||||
|
||||
|
||||
|
||||
SongDay:
|
||||
the bga will only appear on a day in the month
|
||||
|
||||
Example-
|
||||
SongDay:10
|
||||
the bga only appears if it is the 10th day in the month.
|
||||
|
||||
|
||||
|
||||
Style:
|
||||
the bga will only appear if the specified style is available. you can specify multiple
|
||||
style by seperating them with commas (,)
|
||||
|
||||
Example-
|
||||
Style:double,single
|
||||
this will display the BGA only if the style is in double or single.
|
||||
|
||||
|
||||
|
||||
|
||||
SongRating:
|
||||
the bga will only show if one of the players is in a difficulty matching that specified
|
||||
you may specify multiple ratings by seperating them with a comma (,)
|
||||
|
||||
Example-
|
||||
SongRating:heavy,light
|
||||
this will show the bga only if a player played heavy or light notes.
|
||||
|
||||
|
||||
|
||||
SongDifficulty:
|
||||
if a player was playing a song with a footrating specified then the bg will display
|
||||
you can seperate difficulties with commas (,) you can specify ranges like the following:
|
||||
1-3 this is the same as writing 1,2,3 also you may check for ratings and greater for
|
||||
example: 9+ will check for all catastrophic songs.
|
||||
|
||||
Example-
|
||||
SongDifficulty:SongDifficulty:1-3,5,9+
|
||||
this will show the bga if the songs difficulty is 1,2,3,5,9(and onwards)
|
||||
|
||||
|
||||
------------------
|
||||
Overriding
|
||||
------------------
|
||||
If there are several bga's listed in a file, and the conditons specified are met
|
||||
for more than one bga, the one listed nearest to the end of the file will have priority.
|
||||
|
||||
------------------
|
||||
Mixing Conditions
|
||||
------------------
|
||||
All conditions are mixable, for instance you may check if a song is in Expert AND if its
|
||||
title is G2.
|
||||
|
||||
-----------------
|
||||
Examples
|
||||
-----------------
|
||||
|
||||
//AAA three tracks in a row (your 3rd evaluation screen will have this)
|
||||
[ScreenEvaluationStage AAA3]
|
||||
Grade:AAA,AAA,AAA
|
||||
|
||||
// clear G2 in maniac
|
||||
[ScreenEvaluationStage G2]
|
||||
SongTitle:g2
|
||||
SongRating:Heavy
|
||||
Clear:true
|
||||
ModDisallow:little,nojumps,noholds
|
||||
|
||||
// full combo sweet in heavy on the 15th march
|
||||
[ScreenEvaluationStage 1503]
|
||||
SongTitle:sweet
|
||||
SongArtist:dj evil
|
||||
SongRating:Heavy
|
||||
SongDay:15
|
||||
SongMonth:2 // months range from 0 - 11
|
||||
Clear:maxcombo
|
||||
|
||||
-----------------
|
||||
Version History
|
||||
-----------------
|
||||
11/feb/2004
|
||||
Initial Version, Support for SongTitle,SongArtist,SongRating,
|
||||
SongDay,SongMonth,Clear,Grade,ModDisallow,Style and SongDifficulty.
|
||||
|
||||
------------
|
||||
Contact
|
||||
------------
|
||||
This feature was initially created by:
|
||||
frieza [letters_q (at) hotmail.com]
|
||||
|
||||
and is maintained by:
|
||||
frieza [letters_q (at) hotmail.com]
|
||||
@@ -1,340 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
Mission Mode Specifications/Draft
|
||||
|
||||
-- #TITLE:; self explanitory
|
||||
#TITLE:;
|
||||
-- #METER:; defines the meter that shows up in StepsDisplay's.
|
||||
#METER:;
|
||||
-- #BANNER:; is a great thing to add because it makes sense in the long run.
|
||||
#BANNER:;
|
||||
-- #STYLE:; restricts playmodes ala Pump Pro.
|
||||
#STYLE:;
|
||||
-- #MISSIONREF:; is a complete LuaReference that has a params table passed
|
||||
-- into the function, and is required to pass either:
|
||||
-- A: A true / false parameter for MISSION CLEARED / FAILED
|
||||
-- B: A seperate grade tier for missions, complimenting the default grade
|
||||
score.
|
||||
-- C: A replacement grade tier for missions, requesting an enum for
|
||||
the grade to be set.
|
||||
#MISSIONREF:;
|
||||
|
||||
#SONG:;
|
||||
|
||||
--[[ Example ]]
|
||||
#TITLE:Test Mission;
|
||||
#METER:9;
|
||||
#BANNER:TestMission.png;
|
||||
#STYLE:Single,Versus;
|
||||
#MISSIONREF:function(self,params)
|
||||
local tPlayerStats = params.PlayerStageStats;
|
||||
|
||||
if tPlayerStats.GetTapNoteScores('TapNoteScore_W2') > 0 then
|
||||
return 'Grade_Failed'
|
||||
else
|
||||
return 'Grade_Tier01'
|
||||
end
|
||||
end;
|
||||
#SONG:In The Groove 2/Determinator:Medium:2x,Hidden;
|
||||
@@ -0,0 +1,23 @@
|
||||
The Golden Rules of sm-ssc Development
|
||||
--------------------------------------------------------------------------------
|
||||
In addition to CodingStyle.txt, this is the doctrine for operation of sm-ssc.
|
||||
|
||||
1) Always remember that the original branch of StepMania exists, and that we need
|
||||
to give back to it in order for sm-ssc to survive.
|
||||
(Literal: Be sure to commit useful changes/fixes to the mainline StepMania branch
|
||||
every so often.)
|
||||
|
||||
2) If you want something done, you should probably work on it yourself. However,
|
||||
SSC members should be willing to help if their area of expertise and the problem
|
||||
domain overlap (life permitting).
|
||||
|
||||
3) Always know your priorities. sm-ssc is important, but it's not life itself.
|
||||
Take breaks every once in a while. Work on other things. Don't get burned out
|
||||
from nonstop sm-ssc development.
|
||||
|
||||
4) Patches should be checked for compatibility/compilability before being
|
||||
accepted and integrated. Common sense, but a golden rule nevertheless.
|
||||
|
||||
5) Anyone who decides to theme for sm-ssc during development is willing to
|
||||
accept that occasionally, changes to the default and/or fallback theme will
|
||||
break things.
|
||||
@@ -1,142 +1,170 @@
|
||||
The following license applies to most of the StepMania codebase:
|
||||
|
||||
******************************************************************************
|
||||
|
||||
StepMania is (c) Chris Danford, the StepMania development team, et al.
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, and/or sell copies of the Software, and to permit persons to
|
||||
whom the Software is furnished to do so, provided that the above
|
||||
copyright notice(s) and this permission notice appear in all copies of
|
||||
the Software and that both the above copyright notice(s) and this
|
||||
permission notice appear in supporting documentation.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
RageSurface_Load_GIF contains code from Xpaint under the following license:
|
||||
|
||||
Copyright 1990, 1991, 1993 David Koblas.
|
||||
Copyright 1996 Torsten Martinsen.
|
||||
Permission to use, copy, modify, and distribute this software
|
||||
and its documentation for any purpose and without fee is hereby
|
||||
granted, provided that the above copyright notice appear in all
|
||||
copies and that both that copyright notice and this permission
|
||||
notice appear in supporting documentation. This software is
|
||||
provided "as is" without express or implied warranty.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Code in src/crypto/ is under the following permissive license:
|
||||
|
||||
PuTTY is copyright 1997-2001 Simon Tatham.
|
||||
|
||||
Portions copyright Robert de Bath, Joris van Rantwijk, Delian
|
||||
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,
|
||||
Justin Bradford, and CORE SDI S.A.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation files
|
||||
(the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Code in RageSurfaceUtilsPalettize.cpp is under the following permissive
|
||||
license:
|
||||
|
||||
Copyright (C) 1989, 1991 by Jef Poskanzer.
|
||||
Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by
|
||||
Stefan Schneider.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted, provided
|
||||
that the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation. This software is provided "as is" without express or
|
||||
implied warranty.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
PCRE is distributed under the 3-clause BSD license:
|
||||
|
||||
Written by: Philip Hazel <ph10@cam.ac.uk>
|
||||
|
||||
Copyright (c) 1997-2003 University of Cambridge
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the University of Cambridge nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
The MAD library (included with most Windows binary distributions), and
|
||||
interface code in RageSoundReader_MP3, is under the GPL, available in
|
||||
Copying.MAD. Support for this library can be disabled at compile-time.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
NotesLoaderMidi contains code from STK under the following license:
|
||||
|
||||
Copyright 2003 Gary P. Scavone
|
||||
|
||||
LEGAL AND ETHICAL:
|
||||
|
||||
This software was designed and created to be made publicly available for
|
||||
free, primarily for academic purposes, so if you use it, pass it on with
|
||||
this documentation, and for free.
|
||||
|
||||
On April 19 2007, StepMania was granted an MIT license by Gary Scavone
|
||||
for any STK code on the condition that all of the the STK
|
||||
credits/disclaimers/copyrights from the README are retained in the
|
||||
source code and in the project documentation.
|
||||
The following license applies to most of the sm-ssc additions:
|
||||
|
||||
sm-ssc is copyright © AJ Kelly, Midiman, shakesoda (referred to as
|
||||
"the spinal shark collective" hereafter), and other contributors.
|
||||
All rights reserved.
|
||||
|
||||
"sm-ssc" is defined as the changes made to StepMania that do not make their
|
||||
way back into the main StepMania repository for various reasons.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, and/or sell copies of the Software, and to permit persons to
|
||||
whom the Software is furnished to do so, provided that the above
|
||||
copyright notice(s) and this permission notice appear in all copies of
|
||||
the Software and that both the above copyright notice(s) and this
|
||||
permission notice appear in supporting documentation.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
The rest of the codebase is then licensed as follows:
|
||||
******************************************************************************
|
||||
|
||||
StepMania is (c) Chris Danford, the StepMania development team, et al.
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, and/or sell copies of the Software, and to permit persons to
|
||||
whom the Software is furnished to do so, provided that the above
|
||||
copyright notice(s) and this permission notice appear in all copies of
|
||||
the Software and that both the above copyright notice(s) and this
|
||||
permission notice appear in supporting documentation.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
|
||||
INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
|
||||
OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
RageSurface_Load_GIF contains code from Xpaint under the following license:
|
||||
|
||||
Copyright 1990, 1991, 1993 David Koblas.
|
||||
Copyright 1996 Torsten Martinsen.
|
||||
Permission to use, copy, modify, and distribute this software
|
||||
and its documentation for any purpose and without fee is hereby
|
||||
granted, provided that the above copyright notice appear in all
|
||||
copies and that both that copyright notice and this permission
|
||||
notice appear in supporting documentation. This software is
|
||||
provided "as is" without express or implied warranty.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Code in src/crypto/ is under the following permissive license:
|
||||
|
||||
PuTTY is copyright 1997-2001 Simon Tatham.
|
||||
|
||||
Portions copyright Robert de Bath, Joris van Rantwijk, Delian
|
||||
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,
|
||||
Justin Bradford, and CORE SDI S.A.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation files
|
||||
(the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Code in RageSurfaceUtilsPalettize.cpp is under the following permissive
|
||||
license:
|
||||
|
||||
Copyright (C) 1989, 1991 by Jef Poskanzer.
|
||||
Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by
|
||||
Stefan Schneider.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted, provided
|
||||
that the above copyright notice appear in all copies and that both that
|
||||
copyright notice and this permission notice appear in supporting
|
||||
documentation. This software is provided "as is" without express or
|
||||
implied warranty.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
PCRE is distributed under the 3-clause BSD license:
|
||||
|
||||
Written by: Philip Hazel <ph10@cam.ac.uk>
|
||||
|
||||
Copyright (c) 1997-2003 University of Cambridge
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the University of Cambridge nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
The MAD library (included with most Windows binary distributions), and
|
||||
interface code in RageSoundReader_MP3, is under the GPL, available in
|
||||
Copying.MAD. Support for this library can be disabled at compile-time.
|
||||
|
||||
******************************************************************************
|
||||
|
||||
NotesLoaderMidi contains code from STK under the following license:
|
||||
|
||||
Copyright 2003 Gary P. Scavone
|
||||
|
||||
LEGAL AND ETHICAL:
|
||||
|
||||
This software was designed and created to be made publicly available for
|
||||
free, primarily for academic purposes, so if you use it, pass it on with
|
||||
this documentation, and for free.
|
||||
|
||||
On April 19 2007, StepMania was granted an MIT license by Gary Scavone
|
||||
for any STK code on the condition that all of the the STK
|
||||
credits/disclaimers/copyrights from the README are retained in the
|
||||
source code and in the project documentation.
|
||||
|
||||
@@ -1,185 +1,188 @@
|
||||
<?xml version="1.0"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.stepmania.com"
|
||||
xmlns="http://www.stepmania.com"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<xs:element name="Lua">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Singletons" type="Singletons" />
|
||||
<xs:element name="Classes" type="Classes" />
|
||||
<xs:element name="Namespaces" type="Namespaces" />
|
||||
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
|
||||
<xs:element name="Enums" type="Enums" />
|
||||
<xs:element name="Constants" type="Constants" />
|
||||
<xs:element name="Date" type="xs:date" />
|
||||
<xs:element name="Version" type="xs:string" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="Documentation">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Classes" type="Classes" />
|
||||
<xs:element name="Namespaces" type="Namespaces" />
|
||||
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
|
||||
<xs:element name="Enums" type="Enums" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name="Identifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- Not totally valid since the following are not valid
|
||||
identifiers in Lua.
|
||||
and break do else elseif
|
||||
end false for function if
|
||||
in local nil not or
|
||||
repeat return then true until
|
||||
while
|
||||
-->
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierOrTable">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierOrNonemptyString">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- XXX: Doesn't support double quoted strings. -->
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierStringOrNumber">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'|[0-9]+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ArgumentList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:whiteSpace value="collapse" />
|
||||
<!-- ((IdentifierOrTable Identifier(, IdentifierOrTable Identifier)*(, ...)?)|...)? -->
|
||||
<xs:pattern value="((([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*( ?, ?([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*)*)( ?, ?\.\.\.)?|\.\.\.)?" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="Singletons">
|
||||
<xs:sequence>
|
||||
<xs:element name="Singleton" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="class" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:group name="DocumentationGroup">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Link" type="Link" />
|
||||
<!-- HTML elements we want to let through. -->
|
||||
<xs:element name="code" />
|
||||
<xs:element name="br" />
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="Description" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Classes">
|
||||
<xs:sequence>
|
||||
<xs:element name="Class" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="base" type="Identifier" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Namespaces">
|
||||
<xs:sequence>
|
||||
<xs:element name="Namespace" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="GlobalFunctions">
|
||||
<xs:sequence>
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Function" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="return" type="IdentifierOrTable" use="optional" />
|
||||
<xs:attribute name="arguments" type="ArgumentList" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Link" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:attribute name="function" type="Identifier" use="optional" />
|
||||
<xs:attribute name="class" type="Identifier" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Enums">
|
||||
<xs:sequence>
|
||||
<xs:element name="Enum" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="EnumValue" type="Constant"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="Constants">
|
||||
<xs:sequence>
|
||||
<xs:element name="Constant" type="Constant"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="Constant">
|
||||
<xs:attribute name="name" type="IdentifierOrNonemptyString" use="required" />
|
||||
<xs:attribute name="value" type="IdentifierStringOrNumber" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<!-- vim: set tw=0: -->
|
||||
<?xml version="1.0"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.stepmania.com"
|
||||
xmlns="http://www.stepmania.com"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<xs:element name="Lua">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Singletons" type="Singletons" />
|
||||
<xs:element name="Classes" type="Classes" />
|
||||
<xs:element name="Namespaces" type="Namespaces" />
|
||||
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
|
||||
<xs:element name="Enums" type="Enums" />
|
||||
<xs:element name="Constants" type="Constants" />
|
||||
<xs:element name="Date" type="xs:date" />
|
||||
<xs:element name="Version" type="xs:string" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="Documentation">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Classes" type="Classes" />
|
||||
<xs:element name="Namespaces" type="Namespaces" />
|
||||
<xs:element name="GlobalFunctions" type="GlobalFunctions" />
|
||||
<xs:element name="Enums" type="Enums" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name="Identifier">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- Not totally valid since the following are not valid
|
||||
identifiers in Lua.
|
||||
and break do else elseif
|
||||
end false for function if
|
||||
in local nil not or
|
||||
repeat return then true until
|
||||
while
|
||||
-->
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierOrTable">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierOrNonemptyString">
|
||||
<xs:restriction base="xs:string">
|
||||
<!-- XXX: Doesn't support double quoted strings. -->
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="IdentifierStringOrNumber">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*|'[^']+'|[0-9]+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="ArgumentList">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:whiteSpace value="collapse" />
|
||||
<!-- ((IdentifierOrTable Identifier(, IdentifierOrTable Identifier)*(, ...)?)|...)? -->
|
||||
<xs:pattern value="((([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*( ?, ?([a-zA-Z_][a-zA-Z0-9_]*|\{[a-zA-Z_][a-zA-Z0-9_]*\}) [a-zA-Z_][a-zA-Z0-9_]*)*)( ?, ?\.\.\.)?|\.\.\.)?" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="Singletons">
|
||||
<xs:sequence>
|
||||
<xs:element name="Singleton" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="class" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:group name="DocumentationGroup">
|
||||
<xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="Link" type="Link" />
|
||||
<!-- HTML elements we want to let through. -->
|
||||
<xs:element name="code" />
|
||||
<xs:element name="br" />
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
|
||||
<xs:complexType name="Description" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Classes">
|
||||
<xs:sequence>
|
||||
<xs:element name="Class" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="base" type="Identifier" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Namespaces">
|
||||
<xs:sequence>
|
||||
<xs:element name="Namespace" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="GlobalFunctions">
|
||||
<xs:sequence>
|
||||
<xs:element name="Function" type="Function"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Function" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
<xs:attribute name="renamed" type="Identifier" use="optional" />
|
||||
<xs:attribute name="sm-ssc" type="Identifier" use="optional" />
|
||||
<xs:attribute name="theme" type="Identifier" use="optional" />
|
||||
<xs:attribute name="return" type="IdentifierOrTable" use="optional" />
|
||||
<xs:attribute name="arguments" type="ArgumentList" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Link" mixed="true">
|
||||
<xs:group ref="DocumentationGroup" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:attribute name="function" type="Identifier" use="optional" />
|
||||
<xs:attribute name="class" type="Identifier" use="optional" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Enums">
|
||||
<xs:sequence>
|
||||
<xs:element name="Enum" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Description" type="Description"
|
||||
minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="EnumValue" type="Constant"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="Identifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="Constants">
|
||||
<xs:sequence>
|
||||
<xs:element name="Constant" type="Constant"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="Constant">
|
||||
<xs:attribute name="name" type="IdentifierOrNonemptyString" use="required" />
|
||||
<xs:attribute name="value" type="IdentifierStringOrNumber" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
<!-- vim: set tw=0: -->
|
||||
|
After Width: | Height: | Size: 124 B |
|
After Width: | Height: | Size: 118 B |
@@ -1,30 +1,30 @@
|
||||
Bits of possibly less-than-obvious advice:
|
||||
|
||||
archutils/ contains arch-specific code. This should contain code
|
||||
shared by more than one arch/ driver.
|
||||
|
||||
arch/ contains drivers for specific features that can be better
|
||||
implemented nonportably. Most drivers (all except sound) contain
|
||||
default, portable implementations, so StepMania should work mostly
|
||||
out-of-the-box on platforms that are supported by the supporting
|
||||
libraries (particularly SDL); only a sound driver needs to be
|
||||
written.
|
||||
|
||||
|
||||
Avoid accessing other singleton classes from singleton destructors. That
|
||||
introduces dependencies on the order of destruction, and can cause problems
|
||||
if one of the singletons throws an exception.
|
||||
|
||||
|
||||
This kills VC:
|
||||
|
||||
template<class T> static void YY( T opt ) { }
|
||||
enum { A } a;
|
||||
enum { A1 } b;
|
||||
void XX() { YY(a); YY(b); }
|
||||
|
||||
foo.obj : fatal error LNK1179: invalid or corrupt file: duplicate COMDAT '?YY@@YAXW4__unnamed@@@Z'
|
||||
|
||||
It mangles the template incorrectly. Solution: don't use anonymous
|
||||
enums as template parameters; give them a name.
|
||||
|
||||
Bits of possibly less-than-obvious advice:
|
||||
|
||||
archutils/ contains arch-specific code. This should contain code
|
||||
shared by more than one arch/ driver.
|
||||
|
||||
arch/ contains drivers for specific features that can be better
|
||||
implemented nonportably. Most drivers (all except sound) contain
|
||||
default, portable implementations, so StepMania should work mostly
|
||||
out-of-the-box on platforms that are supported by the supporting
|
||||
libraries (particularly SDL); only a sound driver needs to be
|
||||
written.
|
||||
|
||||
|
||||
Avoid accessing other singleton classes from singleton destructors. That
|
||||
introduces dependencies on the order of destruction, and can cause problems
|
||||
if one of the singletons throws an exception.
|
||||
|
||||
|
||||
This kills VC:
|
||||
|
||||
template<class T> static void YY( T opt ) { }
|
||||
enum { A } a;
|
||||
enum { A1 } b;
|
||||
void XX() { YY(a); YY(b); }
|
||||
|
||||
foo.obj : fatal error LNK1179: invalid or corrupt file: duplicate COMDAT '?YY@@YAXW4__unnamed@@@Z'
|
||||
|
||||
It mangles the template incorrectly. Solution: don't use anonymous
|
||||
enums as template parameters; give them a name.
|
||||
|
||||
|
||||
@@ -1,455 +1,455 @@
|
||||
|
||||
PRELIMINARY - - - - - - - - 05/03/2004
|
||||
Protocol version 4
|
||||
But 0x04 will be its version for inter-protocol purposes.
|
||||
|
||||
This protocol is only intended to replace current protocol. Because current protocol
|
||||
not expanable
|
||||
|
||||
SMLAN PROTCOL TCP/8765
|
||||
|
||||
Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet)
|
||||
|
||||
This will prevent any out-of-sync errors with future or past versions.
|
||||
|
||||
The protocol is impervious to fragmented, or bonded TCP packets.
|
||||
|
||||
Basic Representation:
|
||||
|
||||
Octet 0123 4 5
|
||||
+----+-+---//--+
|
||||
|ssss|C|Payload|
|
||||
+----+-+---//--+
|
||||
|
||||
ssss - size of packet, handled by ezsockets (if you're using C++)
|
||||
C - Command.
|
||||
Payload - variable size based on command
|
||||
|
||||
The payload may contain more data than expected, i.e. new protocol version.
|
||||
|
||||
|
||||
In the following protocol, the term size means the size of the chunk of data.
|
||||
If the "size" is "NT" then that means it's a null-terminating string.
|
||||
"MSN" most significant 4 bits (byte/16)
|
||||
"LSN" least significant 4 bits (byte%16)
|
||||
|
||||
|
||||
Note: Primary player is 0x0, secondary player is 0x1
|
||||
|
||||
CLIENT to SERVER protocol:
|
||||
|
||||
000: No Operation
|
||||
Desc: This command will cause server to respond with a no op response.
|
||||
Payload: None
|
||||
Response: Server 001
|
||||
|
||||
001: No Operation Response
|
||||
Desc: This command is used to respond to a no operation.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
002: Hello
|
||||
Desc: This is the first packet from a client to server, stating below
|
||||
information (NOTE: Names are no longer sent in this packet)
|
||||
Payload:
|
||||
Size Description:
|
||||
1 Client protocol version
|
||||
NT Name of build of StepMania
|
||||
Response: Server 002
|
||||
|
||||
|
||||
|
||||
003: Game Start Request
|
||||
Desc: This command is called once after most loading is done, and
|
||||
again immediately before the sound starts.
|
||||
Payload:
|
||||
Size Description
|
||||
MSN Primary player difficulty (feet) (0 for no player)
|
||||
LSN Secondary player difficulty (feet) (0 for no player)
|
||||
MSN Primary player difficulty (0=Beginner, 1=easy, etc.)
|
||||
LSN Second player difficulty (0=Beginner, 1=easy, etc.)
|
||||
MSN Start Position (0 is pre-sync, 1 is for sync)
|
||||
LSN Reserved
|
||||
NT Song Title
|
||||
NT Song Subtitle
|
||||
NT Song Artist
|
||||
NT Course Title (If none exists; make it just a null)
|
||||
NT Song Options (in string-format)
|
||||
NT Primary Player's options (Null if non-existant)
|
||||
NT Secondary Player's Options (Null if non-existant)
|
||||
|
||||
Response: Server 003
|
||||
|
||||
|
||||
004: Game Over Notice
|
||||
Desc: This command is sent when end of game is encounterd
|
||||
Payload: None.
|
||||
Response: None.
|
||||
|
||||
005: Game Status update
|
||||
Desc: Updates game info for each step
|
||||
Payload:
|
||||
Size Description
|
||||
MSN Player #
|
||||
Protocol <= 2
|
||||
LSN StepID
|
||||
1: Miss
|
||||
2: W5
|
||||
3: W4
|
||||
4: W3
|
||||
5: W2
|
||||
6: W1
|
||||
7: LetGo
|
||||
8: Held
|
||||
Protocol >= 3
|
||||
LSN StepID
|
||||
1: HitMine
|
||||
2: AvoidMine
|
||||
3: Miss
|
||||
4: W5
|
||||
5: W4
|
||||
6: W3
|
||||
7: W2
|
||||
8: W1
|
||||
9: LetGo
|
||||
10: Held
|
||||
|
||||
MSN Projected Grade (StepMania enum int)
|
||||
LSN Reserved
|
||||
4 Net-order long containing score.
|
||||
2 Net-order int containing combo.
|
||||
2 Net-order int containing health.
|
||||
2 Net-order # containing offset
|
||||
32767 would be DEAD on the note
|
||||
If the user is hitting late, the # will be higher
|
||||
It if the user is exactly 0.25 seconds off, the
|
||||
number will be different by 500, if 0.5, it will be
|
||||
different by 1000.
|
||||
Response: None.
|
||||
|
||||
006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6)
|
||||
Desc: This is sent when a style is chosen.
|
||||
Size:
|
||||
1 # of enabled players (1 means 1, 2 means 2)
|
||||
1 Player # (0 means 1st, 1 means 2nd)
|
||||
NT Player Name for #
|
||||
(Additional player's and #'s) (enabled players ONLY)
|
||||
|
||||
Response: None
|
||||
|
||||
007: Chat message
|
||||
Desc: The user typed a message for general chat.
|
||||
Size:
|
||||
NT Message
|
||||
|
||||
008: Request Start Game and Tell server existance/non existance of song.
|
||||
Desc: The user selected a song on a Net-enabled selection
|
||||
Size:
|
||||
1 Usage of message
|
||||
0: (in response to server 8) User has specified song
|
||||
1: (in response to server 8) User does NOT have specified song
|
||||
2: User requested a start game on given song
|
||||
NT Song Title (As gotten by GetTranslitMainTitle)
|
||||
NT Song Artist (As Gotten by GetTranslitArtist)
|
||||
NT Song Subtitle (As gotten by GetTranslitSubTitle)
|
||||
|
||||
009: //Reserved
|
||||
|
||||
010: User entered/exited Network Music Selection Screen
|
||||
Size:
|
||||
1
|
||||
0: exited ScreenNetSelectMusic
|
||||
1: entered ScreenNetSelectMusic
|
||||
2: **Not Sent**
|
||||
3: entered options screen
|
||||
4: exited the evaluation screen
|
||||
5: entered evaluation screen
|
||||
6: exited ScreenNetRoom
|
||||
7: entered ScreenNetRoom
|
||||
|
||||
011: User has changed player options
|
||||
Size:
|
||||
NT Player 0's options
|
||||
NT Player 1's options
|
||||
|
||||
|
||||
012: SMOnline Packet. //SPECIAL CASE!!!
|
||||
NOTE: The smonline packet is not defined here.
|
||||
The SMLan packet 12 is a wrapper for the SMOnline packet.
|
||||
This is so that we can have "protection" of sorts when
|
||||
it comes to the coding of SMOnline, so we don't have to
|
||||
use the lower level commands when dealing with SMOnline.
|
||||
Size:
|
||||
1 SMOnline command //This used to say 2, but it looks like 1 in all cases
|
||||
<VARIABLE> SMOnline data
|
||||
|
||||
|
||||
013: Reserved
|
||||
|
||||
SERVER to CLIENT protocol: (begins at 128)
|
||||
|
||||
NOTE: Server responses always add 128, thus a server response for no operation
|
||||
is 128, not 000
|
||||
|
||||
000(128):No Operation
|
||||
Desc: This command will cause server to respond with a no op response.
|
||||
Payload: None
|
||||
Response: Server 001
|
||||
|
||||
001(129):No Operation Response
|
||||
Desc: This command is used to respond to a no operation.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
002(130):Server Hello Response
|
||||
Desc: This introduces the server.
|
||||
Payload:
|
||||
Size Description
|
||||
1 Server protocol version //NOTE: if protocol version is 128+, then this
|
||||
server is an SMOnline server
|
||||
NT Server Name
|
||||
4 Random key ( at the moment only used for an alternate login method )
|
||||
|
||||
003(131):Allow Start
|
||||
Desc: This will cause the client to start the game.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
004(132):Game over stats
|
||||
Desc: this packet is send in response to the game over packet
|
||||
it contains information regarding how well each player did.
|
||||
Payload:
|
||||
1 # of players sent in this packet (active players)
|
||||
The way this works is to send every player's info for a given
|
||||
field. Like every player's score will be sent first, then every
|
||||
player's grade.
|
||||
1 First player's player ID
|
||||
<Other player's IDs>
|
||||
4 Score
|
||||
<Other player's scores>
|
||||
1 Grade
|
||||
<Other player's Grades>
|
||||
1 Difficulty (0=beginner, 1=light, etc.)
|
||||
<Other player's difficulties>
|
||||
|
||||
#this next chunk of step types is actually reversed
|
||||
2 miss
|
||||
<Other player's misses>
|
||||
2 boo
|
||||
<Other player's boos>
|
||||
2 good (All players)
|
||||
2 great (All players)
|
||||
2 perfect (All players)
|
||||
2 marvelous (All players)
|
||||
|
||||
2 ok (All players)
|
||||
2 max_combo (All players)
|
||||
NT Player's options
|
||||
<Other player's options>
|
||||
|
||||
|
||||
005:(133)Scoreboard update
|
||||
Desc: This will update the client's scoreboard.
|
||||
Payload:
|
||||
Size
|
||||
1 Which section
|
||||
0: Names
|
||||
1: Combos
|
||||
2: Projected Grades
|
||||
1 # of players to display
|
||||
|
||||
If Names, then:
|
||||
1 Player in first place's index
|
||||
1 Player in second place's index
|
||||
...
|
||||
1 Last player's index
|
||||
If Combos, then:
|
||||
2 First player's combo
|
||||
2 Second Player's combo
|
||||
...
|
||||
2 Last player's combo
|
||||
If Project grades
|
||||
1 Player 1's grade (in the same format used when reporting projected grades)
|
||||
1 Player 2's grade
|
||||
...
|
||||
1 Last player's projected grade
|
||||
|
||||
|
||||
006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6)
|
||||
Desc: Send system message to user
|
||||
Payload:
|
||||
Size Description
|
||||
NT Message
|
||||
|
||||
007:(135)Chat Message
|
||||
Desc: Add a chat message to the chat window on some StepMania screens.
|
||||
Payload:
|
||||
Size Description
|
||||
NT Message
|
||||
|
||||
008:(136)Tell client to start song/ask if client has song
|
||||
Desc: The user selected a song on a Net-enabled selection
|
||||
Size:
|
||||
1 Usage of message
|
||||
0: See if client has song
|
||||
1: See if client has song, if so, scroll to song
|
||||
2: See if client has song, if so, scroll to song, and play that song
|
||||
3: Blindly start song
|
||||
NT Song Title (As gotten by GetTranslitMainTitle)
|
||||
NT Song Artist (As Gotten by GetTranslitArtist)
|
||||
NT Song Subtitle (As gotten by GetTranslitSubTitle)
|
||||
|
||||
009:(137)Update user list
|
||||
Desc: This sends all the users currently connected
|
||||
Size:
|
||||
1 Max # of players
|
||||
1 # of players in this packet
|
||||
1 Player 0's status
|
||||
NT Player 0's name (if there is no player here... make it a null (""))
|
||||
1 Player 1's status
|
||||
NT Player 1's name
|
||||
...
|
||||
1 Last player's status
|
||||
NT Last player's name
|
||||
Status:
|
||||
0 Inative (no info on this user yet)
|
||||
1 Active (you know who it is)
|
||||
2 In Selection Screen
|
||||
3 In Options
|
||||
4 In Evaluation
|
||||
|
||||
010:(138)Force change to Networking select music screen.
|
||||
Size:
|
||||
NT Set Specified gametype
|
||||
NT Set Specified style
|
||||
|
||||
011:(139)Reserved
|
||||
|
||||
|
||||
012:(140)SMOnline Packet. //SPECIAL CASE!!!
|
||||
NOTE: The smonline packet is not defined here.
|
||||
The SMLan packet 12 is a wrapper for the SMOnline packet.
|
||||
This is so that we can have "protection" of sorts when
|
||||
it comes to the coding of SMOnline, so we don't have to
|
||||
use the lower level commands when dealing with SMOnline.
|
||||
Size:
|
||||
1 SMOnline command
|
||||
<VARIABLE> SMOnline data
|
||||
|
||||
|
||||
013:(141)Formatted information packet
|
||||
Desc: Send formatted information regarding the server back to the player.
|
||||
NOTE: The purpose of this function is alternatively to be a broadcast
|
||||
packet. (You can expect it via UDP broadcast)
|
||||
Size:
|
||||
NT Server Name
|
||||
2 Port the server is listening on
|
||||
2 Number of players connected
|
||||
|
||||
014:(142)Attack Client
|
||||
Size:
|
||||
1 Player Number
|
||||
4 Time to Last (in MS)
|
||||
NT Text describing modifiers.
|
||||
|
||||
----------------------------------------------------------------
|
||||
Client SMOnline packets:
|
||||
000: Send Login Information
|
||||
Size:
|
||||
1 Player Number
|
||||
1 Encryption text
|
||||
0: MD5 hash
|
||||
1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string )
|
||||
NT Username
|
||||
NT Password
|
||||
|
||||
Note: The client is not permitted to use method (1) for authentication
|
||||
if the salt it received from the server is 0
|
||||
|
||||
001: User asks to enter room
|
||||
Size:
|
||||
1 Enter/Exit?
|
||||
0: User wishes to exit room
|
||||
1: User wishes to enter room
|
||||
NT Room Name (Used when entering rooms)
|
||||
NT Password (Empty if password not used)
|
||||
|
||||
002: Create a new Room
|
||||
Size:
|
||||
1 Room Type
|
||||
0: Normal room (has sub rooms)
|
||||
1: Game room (no sub rooms)
|
||||
NT Room Title
|
||||
NT Room Description
|
||||
NT Room Password (blank if no password)
|
||||
|
||||
003: Requests Room Info
|
||||
Size:
|
||||
NT Room Name
|
||||
|
||||
|
||||
Server SMOnline packets:
|
||||
000: Login Response
|
||||
1 Approval Status
|
||||
0: Approved
|
||||
1: Approval Failed
|
||||
NT Login response (plain text)
|
||||
|
||||
001: Room Update (Changing rooms)
|
||||
Size:
|
||||
1 Type of update
|
||||
0: Change Room Title
|
||||
1: Update List of other rooms (or games)
|
||||
|
||||
If Room Title Update:
|
||||
NT Room Title
|
||||
NT Room Description
|
||||
1 Type of room:
|
||||
0: Chat room
|
||||
1: Game room
|
||||
1 Allows creation of sub room.
|
||||
0: Does not allow creation of subrooms
|
||||
1: Allows creation of subrooms
|
||||
|
||||
If Room List Update:
|
||||
1 Number of rooms
|
||||
NT Room1 Title
|
||||
NT Room1 Description
|
||||
NT Room2 Title
|
||||
NT Room2 Description
|
||||
...
|
||||
NT RoomN Title
|
||||
NT RoomN Description
|
||||
|
||||
Room Status appended for reverse compatibility
|
||||
1 Room1 Status
|
||||
0: Normal Room
|
||||
1: Unused
|
||||
2: Room in game
|
||||
3: First stage of song selection has been done
|
||||
4: Second stage of song selection has been done
|
||||
1 Room2 Status
|
||||
...
|
||||
1 RoomN Status
|
||||
|
||||
Room Flags appended for reverse compatibility
|
||||
1 Room1 Flags
|
||||
bit 0: Passworded if true
|
||||
1 Room2 Status
|
||||
...
|
||||
1 RoomN Status
|
||||
|
||||
002: Request general information from server.
|
||||
1 Format for stats
|
||||
0: Normal unformatted stats
|
||||
|
||||
003: Room Info
|
||||
Size:
|
||||
NT Last Song Title
|
||||
NT Last Song Subtitle
|
||||
NT Last Song Artist
|
||||
1 Num Players
|
||||
1 Max Players
|
||||
NT Player1 Name
|
||||
...
|
||||
NT PlayerN Name
|
||||
|
||||
PRELIMINARY - - - - - - - - 05/03/2004
|
||||
Protocol version 4
|
||||
But 0x04 will be its version for inter-protocol purposes.
|
||||
|
||||
This protocol is only intended to replace current protocol. Because current protocol
|
||||
not expanable
|
||||
|
||||
SMLAN PROTCOL TCP/8765
|
||||
|
||||
Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet)
|
||||
|
||||
This will prevent any out-of-sync errors with future or past versions.
|
||||
|
||||
The protocol is impervious to fragmented, or bonded TCP packets.
|
||||
|
||||
Basic Representation:
|
||||
|
||||
Octet 0123 4 5
|
||||
+----+-+---//--+
|
||||
|ssss|C|Payload|
|
||||
+----+-+---//--+
|
||||
|
||||
ssss - size of packet, handled by ezsockets (if you're using C++)
|
||||
C - Command.
|
||||
Payload - variable size based on command
|
||||
|
||||
The payload may contain more data than expected, i.e. new protocol version.
|
||||
|
||||
|
||||
In the following protocol, the term size means the size of the chunk of data.
|
||||
If the "size" is "NT" then that means it's a null-terminating string.
|
||||
"MSN" most significant 4 bits (byte/16)
|
||||
"LSN" least significant 4 bits (byte%16)
|
||||
|
||||
|
||||
Note: Primary player is 0x0, secondary player is 0x1
|
||||
|
||||
CLIENT to SERVER protocol:
|
||||
|
||||
000: No Operation
|
||||
Desc: This command will cause server to respond with a no op response.
|
||||
Payload: None
|
||||
Response: Server 001
|
||||
|
||||
001: No Operation Response
|
||||
Desc: This command is used to respond to a no operation.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
002: Hello
|
||||
Desc: This is the first packet from a client to server, stating below
|
||||
information (NOTE: Names are no longer sent in this packet)
|
||||
Payload:
|
||||
Size Description:
|
||||
1 Client protocol version
|
||||
NT Name of build of StepMania
|
||||
Response: Server 002
|
||||
|
||||
|
||||
|
||||
003: Game Start Request
|
||||
Desc: This command is called once after most loading is done, and
|
||||
again immediately before the sound starts.
|
||||
Payload:
|
||||
Size Description
|
||||
MSN Primary player difficulty (feet) (0 for no player)
|
||||
LSN Secondary player difficulty (feet) (0 for no player)
|
||||
MSN Primary player difficulty (0=Beginner, 1=easy, etc.)
|
||||
LSN Second player difficulty (0=Beginner, 1=easy, etc.)
|
||||
MSN Start Position (0 is pre-sync, 1 is for sync)
|
||||
LSN Reserved
|
||||
NT Song Title
|
||||
NT Song Subtitle
|
||||
NT Song Artist
|
||||
NT Course Title (If none exists; make it just a null)
|
||||
NT Song Options (in string-format)
|
||||
NT Primary Player's options (Null if non-existant)
|
||||
NT Secondary Player's Options (Null if non-existant)
|
||||
|
||||
Response: Server 003
|
||||
|
||||
|
||||
004: Game Over Notice
|
||||
Desc: This command is sent when end of game is encounterd
|
||||
Payload: None.
|
||||
Response: None.
|
||||
|
||||
005: Game Status update
|
||||
Desc: Updates game info for each step
|
||||
Payload:
|
||||
Size Description
|
||||
MSN Player #
|
||||
Protocol <= 2
|
||||
LSN StepID
|
||||
1: Miss
|
||||
2: W5
|
||||
3: W4
|
||||
4: W3
|
||||
5: W2
|
||||
6: W1
|
||||
7: LetGo
|
||||
8: Held
|
||||
Protocol >= 3
|
||||
LSN StepID
|
||||
1: HitMine
|
||||
2: AvoidMine
|
||||
3: Miss
|
||||
4: W5
|
||||
5: W4
|
||||
6: W3
|
||||
7: W2
|
||||
8: W1
|
||||
9: LetGo
|
||||
10: Held
|
||||
|
||||
MSN Projected Grade (StepMania enum int)
|
||||
LSN Reserved
|
||||
4 Net-order long containing score.
|
||||
2 Net-order int containing combo.
|
||||
2 Net-order int containing health.
|
||||
2 Net-order # containing offset
|
||||
32767 would be DEAD on the note
|
||||
If the user is hitting late, the # will be higher
|
||||
It if the user is exactly 0.25 seconds off, the
|
||||
number will be different by 500, if 0.5, it will be
|
||||
different by 1000.
|
||||
Response: None.
|
||||
|
||||
006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6)
|
||||
Desc: This is sent when a style is chosen.
|
||||
Size:
|
||||
1 # of enabled players (1 means 1, 2 means 2)
|
||||
1 Player # (0 means 1st, 1 means 2nd)
|
||||
NT Player Name for #
|
||||
(Additional player's and #'s) (enabled players ONLY)
|
||||
|
||||
Response: None
|
||||
|
||||
007: Chat message
|
||||
Desc: The user typed a message for general chat.
|
||||
Size:
|
||||
NT Message
|
||||
|
||||
008: Request Start Game and Tell server existance/non existance of song.
|
||||
Desc: The user selected a song on a Net-enabled selection
|
||||
Size:
|
||||
1 Usage of message
|
||||
0: (in response to server 8) User has specified song
|
||||
1: (in response to server 8) User does NOT have specified song
|
||||
2: User requested a start game on given song
|
||||
NT Song Title (As gotten by GetTranslitMainTitle)
|
||||
NT Song Artist (As Gotten by GetTranslitArtist)
|
||||
NT Song Subtitle (As gotten by GetTranslitSubTitle)
|
||||
|
||||
009: //Reserved
|
||||
|
||||
010: User entered/exited Network Music Selection Screen
|
||||
Size:
|
||||
1
|
||||
0: exited ScreenNetSelectMusic
|
||||
1: entered ScreenNetSelectMusic
|
||||
2: **Not Sent**
|
||||
3: entered options screen
|
||||
4: exited the evaluation screen
|
||||
5: entered evaluation screen
|
||||
6: exited ScreenNetRoom
|
||||
7: entered ScreenNetRoom
|
||||
|
||||
011: User has changed player options
|
||||
Size:
|
||||
NT Player 0's options
|
||||
NT Player 1's options
|
||||
|
||||
|
||||
012: SMOnline Packet. //SPECIAL CASE!!!
|
||||
NOTE: The smonline packet is not defined here.
|
||||
The SMLan packet 12 is a wrapper for the SMOnline packet.
|
||||
This is so that we can have "protection" of sorts when
|
||||
it comes to the coding of SMOnline, so we don't have to
|
||||
use the lower level commands when dealing with SMOnline.
|
||||
Size:
|
||||
1 SMOnline command //This used to say 2, but it looks like 1 in all cases
|
||||
<VARIABLE> SMOnline data
|
||||
|
||||
|
||||
013: Reserved
|
||||
|
||||
SERVER to CLIENT protocol: (begins at 128)
|
||||
|
||||
NOTE: Server responses always add 128, thus a server response for no operation
|
||||
is 128, not 000
|
||||
|
||||
000(128):No Operation
|
||||
Desc: This command will cause server to respond with a no op response.
|
||||
Payload: None
|
||||
Response: Server 001
|
||||
|
||||
001(129):No Operation Response
|
||||
Desc: This command is used to respond to a no operation.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
002(130):Server Hello Response
|
||||
Desc: This introduces the server.
|
||||
Payload:
|
||||
Size Description
|
||||
1 Server protocol version //NOTE: if protocol version is 128+, then this
|
||||
server is an SMOnline server
|
||||
NT Server Name
|
||||
4 Random key ( at the moment only used for an alternate login method )
|
||||
|
||||
003(131):Allow Start
|
||||
Desc: This will cause the client to start the game.
|
||||
Payload: None
|
||||
Response: None
|
||||
|
||||
004(132):Game over stats
|
||||
Desc: this packet is send in response to the game over packet
|
||||
it contains information regarding how well each player did.
|
||||
Payload:
|
||||
1 # of players sent in this packet (active players)
|
||||
The way this works is to send every player's info for a given
|
||||
field. Like every player's score will be sent first, then every
|
||||
player's grade.
|
||||
1 First player's player ID
|
||||
<Other player's IDs>
|
||||
4 Score
|
||||
<Other player's scores>
|
||||
1 Grade
|
||||
<Other player's Grades>
|
||||
1 Difficulty (0=beginner, 1=light, etc.)
|
||||
<Other player's difficulties>
|
||||
|
||||
#this next chunk of step types is actually reversed
|
||||
2 miss
|
||||
<Other player's misses>
|
||||
2 boo
|
||||
<Other player's boos>
|
||||
2 good (All players)
|
||||
2 great (All players)
|
||||
2 perfect (All players)
|
||||
2 marvelous (All players)
|
||||
|
||||
2 ok (All players)
|
||||
2 max_combo (All players)
|
||||
NT Player's options
|
||||
<Other player's options>
|
||||
|
||||
|
||||
005:(133)Scoreboard update
|
||||
Desc: This will update the client's scoreboard.
|
||||
Payload:
|
||||
Size
|
||||
1 Which section
|
||||
0: Names
|
||||
1: Combos
|
||||
2: Projected Grades
|
||||
1 # of players to display
|
||||
|
||||
If Names, then:
|
||||
1 Player in first place's index
|
||||
1 Player in second place's index
|
||||
...
|
||||
1 Last player's index
|
||||
If Combos, then:
|
||||
2 First player's combo
|
||||
2 Second Player's combo
|
||||
...
|
||||
2 Last player's combo
|
||||
If Project grades
|
||||
1 Player 1's grade (in the same format used when reporting projected grades)
|
||||
1 Player 2's grade
|
||||
...
|
||||
1 Last player's projected grade
|
||||
|
||||
|
||||
006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6)
|
||||
Desc: Send system message to user
|
||||
Payload:
|
||||
Size Description
|
||||
NT Message
|
||||
|
||||
007:(135)Chat Message
|
||||
Desc: Add a chat message to the chat window on some StepMania screens.
|
||||
Payload:
|
||||
Size Description
|
||||
NT Message
|
||||
|
||||
008:(136)Tell client to start song/ask if client has song
|
||||
Desc: The user selected a song on a Net-enabled selection
|
||||
Size:
|
||||
1 Usage of message
|
||||
0: See if client has song
|
||||
1: See if client has song, if so, scroll to song
|
||||
2: See if client has song, if so, scroll to song, and play that song
|
||||
3: Blindly start song
|
||||
NT Song Title (As gotten by GetTranslitMainTitle)
|
||||
NT Song Artist (As Gotten by GetTranslitArtist)
|
||||
NT Song Subtitle (As gotten by GetTranslitSubTitle)
|
||||
|
||||
009:(137)Update user list
|
||||
Desc: This sends all the users currently connected
|
||||
Size:
|
||||
1 Max # of players
|
||||
1 # of players in this packet
|
||||
1 Player 0's status
|
||||
NT Player 0's name (if there is no player here... make it a null (""))
|
||||
1 Player 1's status
|
||||
NT Player 1's name
|
||||
...
|
||||
1 Last player's status
|
||||
NT Last player's name
|
||||
Status:
|
||||
0 Inative (no info on this user yet)
|
||||
1 Active (you know who it is)
|
||||
2 In Selection Screen
|
||||
3 In Options
|
||||
4 In Evaluation
|
||||
|
||||
010:(138)Force change to Networking select music screen.
|
||||
Size:
|
||||
NT Set Specified gametype
|
||||
NT Set Specified style
|
||||
|
||||
011:(139)Reserved
|
||||
|
||||
|
||||
012:(140)SMOnline Packet. //SPECIAL CASE!!!
|
||||
NOTE: The smonline packet is not defined here.
|
||||
The SMLan packet 12 is a wrapper for the SMOnline packet.
|
||||
This is so that we can have "protection" of sorts when
|
||||
it comes to the coding of SMOnline, so we don't have to
|
||||
use the lower level commands when dealing with SMOnline.
|
||||
Size:
|
||||
1 SMOnline command
|
||||
<VARIABLE> SMOnline data
|
||||
|
||||
|
||||
013:(141)Formatted information packet
|
||||
Desc: Send formatted information regarding the server back to the player.
|
||||
NOTE: The purpose of this function is alternatively to be a broadcast
|
||||
packet. (You can expect it via UDP broadcast)
|
||||
Size:
|
||||
NT Server Name
|
||||
2 Port the server is listening on
|
||||
2 Number of players connected
|
||||
|
||||
014:(142)Attack Client
|
||||
Size:
|
||||
1 Player Number
|
||||
4 Time to Last (in MS)
|
||||
NT Text describing modifiers.
|
||||
|
||||
----------------------------------------------------------------
|
||||
Client SMOnline packets:
|
||||
000: Send Login Information
|
||||
Size:
|
||||
1 Player Number
|
||||
1 Encryption text
|
||||
0: MD5 hash
|
||||
1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string )
|
||||
NT Username
|
||||
NT Password
|
||||
|
||||
Note: The client is not permitted to use method (1) for authentication
|
||||
if the salt it received from the server is 0
|
||||
|
||||
001: User asks to enter room
|
||||
Size:
|
||||
1 Enter/Exit?
|
||||
0: User wishes to exit room
|
||||
1: User wishes to enter room
|
||||
NT Room Name (Used when entering rooms)
|
||||
NT Password (Empty if password not used)
|
||||
|
||||
002: Create a new Room
|
||||
Size:
|
||||
1 Room Type
|
||||
0: Normal room (has sub rooms)
|
||||
1: Game room (no sub rooms)
|
||||
NT Room Title
|
||||
NT Room Description
|
||||
NT Room Password (blank if no password)
|
||||
|
||||
003: Requests Room Info
|
||||
Size:
|
||||
NT Room Name
|
||||
|
||||
|
||||
Server SMOnline packets:
|
||||
000: Login Response
|
||||
1 Approval Status
|
||||
0: Approved
|
||||
1: Approval Failed
|
||||
NT Login response (plain text)
|
||||
|
||||
001: Room Update (Changing rooms)
|
||||
Size:
|
||||
1 Type of update
|
||||
0: Change Room Title
|
||||
1: Update List of other rooms (or games)
|
||||
|
||||
If Room Title Update:
|
||||
NT Room Title
|
||||
NT Room Description
|
||||
1 Type of room:
|
||||
0: Chat room
|
||||
1: Game room
|
||||
1 Allows creation of sub room.
|
||||
0: Does not allow creation of subrooms
|
||||
1: Allows creation of subrooms
|
||||
|
||||
If Room List Update:
|
||||
1 Number of rooms
|
||||
NT Room1 Title
|
||||
NT Room1 Description
|
||||
NT Room2 Title
|
||||
NT Room2 Description
|
||||
...
|
||||
NT RoomN Title
|
||||
NT RoomN Description
|
||||
|
||||
Room Status appended for reverse compatibility
|
||||
1 Room1 Status
|
||||
0: Normal Room
|
||||
1: Unused
|
||||
2: Room in game
|
||||
3: First stage of song selection has been done
|
||||
4: Second stage of song selection has been done
|
||||
1 Room2 Status
|
||||
...
|
||||
1 RoomN Status
|
||||
|
||||
Room Flags appended for reverse compatibility
|
||||
1 Room1 Flags
|
||||
bit 0: Passworded if true
|
||||
1 Room2 Status
|
||||
...
|
||||
1 RoomN Status
|
||||
|
||||
002: Request general information from server.
|
||||
1 Format for stats
|
||||
0: Normal unformatted stats
|
||||
|
||||
003: Room Info
|
||||
Size:
|
||||
NT Last Song Title
|
||||
NT Last Song Subtitle
|
||||
NT Last Song Artist
|
||||
1 Num Players
|
||||
1 Max Players
|
||||
NT Player1 Name
|
||||
...
|
||||
NT PlayerN Name
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=x-sjis">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||||
<title>BM98Data_format_specification</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#F1DBC0">
|
||||
|
||||
<p><font color="#008080" size="3" face="MS Sans Serif"><strong>BMS
|
||||
Format Specification</strong></font></p>
|
||||
|
||||
<p align="right">written by Urao Yane(yaneurao@sun-inet.or.jp)</p>
|
||||
|
||||
<p>"BMS" means a Be-Music Source file. A file which has
|
||||
BMS suffix is regarded as the BMS file. This file format was
|
||||
produced by Urao Yane and NBK in 1998. And I adopted this file
|
||||
format to BM98. Now,anyone can use this format freely.</p>
|
||||
|
||||
<p>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</p>
|
||||
|
||||
<p><font color="#008080"><Command Line></font></p>
|
||||
|
||||
<p>The line begining at '#' is the command line. All the rest are
|
||||
ignored (use for comments). And this BMS file is compiled at
|
||||
runtime , so you can order any lines freely. And there is no
|
||||
difference in the command line between using a capital letter or
|
||||
not.</p>
|
||||
|
||||
<p>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</p>
|
||||
|
||||
<p><font color="#008080"><Header></font></p>
|
||||
|
||||
<p>#PLAYER 1<br>
|
||||
This data is for Single Play.</p>
|
||||
|
||||
<p>#PLAYER 2<br>
|
||||
This data is for Two Play.</p>
|
||||
|
||||
<p>#PLAYER 3<br>
|
||||
This data is for Double Play.</p>
|
||||
|
||||
<p>#GENRE xxxxxxxx<br>
|
||||
Definition of Genre.</p>
|
||||
|
||||
<p>#TITLE xxxxxxxx<br>
|
||||
Definition of Title.</p>
|
||||
|
||||
<p>#ARTIST xxxxxxxx<br>
|
||||
Definition of Artist.</p>
|
||||
|
||||
<p>#BPM xxx<br>
|
||||
Definition of BPM.(Beat Per Minite) at the top of music. default
|
||||
: 130</p>
|
||||
|
||||
<p>#MIDIFILE xxxxxxx.mid<br>
|
||||
Background music by MIDI.</p>
|
||||
|
||||
<p>#PLAYLEVEL x<br>
|
||||
Information of Game Level for player.</p>
|
||||
|
||||
<p>#RANK x<br>
|
||||
judgement level.<br>
|
||||
x = 0 :very hard, 1: hard, 2: normal, 3: easy</p>
|
||||
|
||||
<p>�@</p>
|
||||
|
||||
<p>#VOLWAV xxx<br>
|
||||
relative volume control (percentage)</p>
|
||||
|
||||
<p>#WAVxx yyyyyyyy.wav<br>
|
||||
definition of Wave Data. xx : 01 to FF (Hex) , yyyyyyyy.wav :
|
||||
wave file name</p>
|
||||
|
||||
<p>e.g.<br>
|
||||
#WAV01 HOUSE01.WAV // assign HOUSE01.WAV to 01 wav<br>
|
||||
#WAV02 HOUSE02.WAV // assign HOUSE02.WAV to 02 wav<br>
|
||||
#WAVFF HOUSE03.WAV // assign HOUSE03.WAV to FF wav</p>
|
||||
|
||||
<p>#BMPxx yyyyyyyy.bmp<br>
|
||||
definition of Bitmap file. xx : 01 to FF(Hex) , yyyyyyyy.bmp :
|
||||
bitmap file name<br>
|
||||
Bitmap size must be 256 * 256.(max color 65536)</p>
|
||||
|
||||
<p>e.g.<br>
|
||||
#BMP01 HOUSE01.BMP // assign HOUSE01.BMP to 01 bitmap<br>
|
||||
#BMP02 HOUSE02.BMP // assign HOUSE02.BMP to 02 bitmap<br>
|
||||
#BMPEE HOUSE03.BMP // assign HOUSE03.BMP to EE bitmap<br>
|
||||
</p>
|
||||
|
||||
<p>But ,the bitmap defined by #BMP00 is something special.<br>
|
||||
This bitmap shows when a player do a poor play.</p>
|
||||
|
||||
<p>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</p>
|
||||
|
||||
<p>// a sample of random loading function</p>
|
||||
|
||||
<p>#random 2 // create a random number (1 or 2)</p>
|
||||
|
||||
<p>#if 1 // if the number was equal to 1 then...<br>
|
||||
#00111:31313131 // this is effective...<br>
|
||||
#endif</p>
|
||||
|
||||
<p>#if 2 // if the number was equal to 2 then...<br>
|
||||
#00113:32003232 // this is effective<br>
|
||||
#endif</p>
|
||||
|
||||
<p>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</p>
|
||||
|
||||
<p><font color="#008080"><Channel Messages></font></p>
|
||||
|
||||
<p>#aaabb:cccccccc</p>
|
||||
|
||||
<p>aaa: track number (from 000 to 999)<br>
|
||||
bb : channel number where you want to send message.(from 00 to
|
||||
FF)<br>
|
||||
cccccccc : <message></p>
|
||||
|
||||
<p><font color="#008080"><a brief Channel Number></font></p>
|
||||
|
||||
<p>01 : BGM(background music by WAVE)<br>
|
||||
03 : changing a Tempo<br>
|
||||
04 : BGA(background animation)<br>
|
||||
06 : changing Poor-bitmap<br>
|
||||
11 to 17 : Object Channel of 1 player side<br>
|
||||
21 to 27 : Object Channel of 2 player side<br>
|
||||
</p>
|
||||
|
||||
<p><font color="#008080"><Example></font></p>
|
||||
|
||||
<p>#00211:03030303<br>
|
||||
This means 4 objects at the left of 1 player side in 002 track.
|
||||
This object is assigned to wave No.03 which was defined by #WAV03
|
||||
xxxx.wav. And this 4 objects are arranged <font color="#FF0000"><em>evenly</em></font>
|
||||
in this track.</p>
|
||||
|
||||
<p>Please try the following patterns.</p>
|
||||
|
||||
<p>#00211:0303030303</p>
|
||||
|
||||
<p>#00211:0303000303</p>
|
||||
|
||||
<p>#00211:010101<br>
|
||||
#00211:00020202</p>
|
||||
|
||||
<p>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-</p>
|
||||
|
||||
<p>This document and this format is <font color="#FF0000">free</font>!<br>
|
||||
I hope the day will come when my BMS format will use all over the
|
||||
world.</p>
|
||||
|
||||
<p align="right">Urao Yane</p>
|
||||
|
||||
<p><a href="http://www.sun-inet.or.jp/~yaneurao/">back to my
|
||||
homepage</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,564 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=x-sjis">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||||
<title>BM98FinalSecret</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#F1DBC0">
|
||||
|
||||
<p><font color="#008080" size="4" face="DFPPOP体"><strong>BM98FinalSecret</strong></font></p>
|
||||
|
||||
<p>BM98最後の秘密とは、Extended
|
||||
Character機能、すなわち、ゲーム中のキャラクターすべてをBMSファイル側で変更する機能である。</p>
|
||||
|
||||
<p>ただし、この機能は、拡張し納得のいくものになり次第、公開しようと思っていたのだが、いろいろ事情があって、BM98そのものの開発をうち切ることになり、日の目を見ることのなくなった機能である。</p>
|
||||
|
||||
<p>そこで、この機能を使った曲の、BMRの方での動作は保証できない。あくまでBM98ver3.18用として認識していただきたい。また、それ以降のバージョンで、きくちゃんによるものは、ビットマップファイルが書き換えられているので、このテキストの内容の限りではない。</p>
|
||||
|
||||
<p>また、基本的にBM98について、やねうらおは一切サポートしないと言っているの同様、ここの内容についても、一切サポートしないので、質問メールは勘弁してほしい。</p>
|
||||
|
||||
<p>それから、スプライトナンバー等、BM98固有の定数が出てくるが、これらは、BMRとは一切無縁である。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>まず、この機能のことをヘルプでも少し触れているので、それを抜粋する。</p>
|
||||
|
||||
<p>--------------------------------------------------</p>
|
||||
|
||||
<p>Extended Character (BM98 v3.18以降) <非公開機能></p>
|
||||
|
||||
<p>以下は、やねうらおのメモだとお考えください(笑)</p>
|
||||
|
||||
<p>・ゲーム中の任意のスプライトをユーザー定義する機能。</p>
|
||||
|
||||
<p>#ExtChr <SpriteNo.> <BMPNo.></p>
|
||||
|
||||
<p><start_x> <start_y> <end_x> <end_y></p>
|
||||
|
||||
<p>{ <offset_x> <offset_y> { <x> <y> } } </p>
|
||||
|
||||
<p>通例、これとExtended Object機能とを併用して使う。</p>
|
||||
|
||||
<p>スプライトNo.とキャラクタNo.とは意味が違う。--------------------------------------------------</p>
|
||||
|
||||
<p>また、Extended Object機能と併用して使うと書いてあるが、そいつは、どこにあるかというと、チャンネルナンバー05番のところにちゃっかり書いてある。</p>
|
||||
|
||||
<p>--------------------------------------------------</p>
|
||||
|
||||
<p>05 [Extended Object] <非公開機能></p>
|
||||
|
||||
<p> 落下してくるオブジェを別のキャラクターナンバーのものにすり替える機能。この行の下にある行のオブジェに順番に割り振られる。</p>
|
||||
|
||||
<p>--------------------------------------------------</p>
|
||||
|
||||
<p>このチャンネルナンバーの次の行に書いてあるオブジェ配置データに対して、こいつが有効であることはわかるが、キャラクターとして何をどう書けば良いのか、それがまったくもって不明確である。</p>
|
||||
|
||||
<p>実を言うと、やねうらおもよくは覚えていない(笑)</p>
|
||||
|
||||
<p>なんか、あのときは、坂本龍一の曲をモチーフに、自分なりに編曲を行なっていて、そのとき1オクターブのピアノ鍵盤が出てるBMSファイルを作るつもりで、こんな機能をつけた覚えだけはある。</p>
|
||||
|
||||
<p>そんなわけで、ちょっとソーステキストを覗いてみよう。</p>
|
||||
|
||||
<p><font face="MS ゴシック">int ExtChr[] = {<br>
|
||||
0,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,<br>
|
||||
// 0x ユーザー定義可能部分<br>
|
||||
976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,<br>
|
||||
// 1x ユーザー定義可能部分<br>
|
||||
992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,<br>
|
||||
// 2x ユーザー定義可能部分<br>
|
||||
1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,<br>
|
||||
// 3x<br>
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br>
|
||||
// 4x<br>
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br>
|
||||
// 5x<br>
|
||||
941,942,943,944,945,946,947,948,949,950,951, 0, 0, 0, 0, 0,<br>
|
||||
// 6x 金色オブジェ5パターン 赤 緑 灰 黒BM98金色(新オブジェ)<br>
|
||||
730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,<br>
|
||||
// 7x 金A B C D E F G H I J K L M N O P <br>
|
||||
746,747,748,749,750,751,752,753,754,755,760,761,762,763,764,765,<br>
|
||||
// 8x Q R S T U V W X Y Z a b c d e f<br>
|
||||
766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,<br>
|
||||
// 9x g h i j k l m n o p q r s t u v<br>
|
||||
782,783,784,785,790,791,792,793,794,795, 0, 0, 0, 0, 0, 0,<br>
|
||||
// ax w x y z - " ! ? & .<br>
|
||||
800,801,805,806,807,808,810,811,812,910,911,912,913,940, 0, 0,<br>
|
||||
// bx BM レコードSong SP DP BPM ヒト ★ ☆ 1P 2P 1Pd
|
||||
2Pd 坂田<br>
|
||||
850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,<br>
|
||||
// cx 白A B C D E F G H I J K L M N O P <br>
|
||||
866,867,868,869,870,871,872,873,874,875,876,877,878,879,890,891,<br>
|
||||
// dx Q R S T U V W X Y Z / . ! % @ ?<br>
|
||||
720,721,722,723,724,725,726,727,728,729, 0, 0, 0, 0, 0, 0,<br>
|
||||
// ex 金0 1 2 3 4 5 6 7 8 9<br>
|
||||
880,881,882,883,884,885,886,887,888,889, 0, 0, 0, 0, 0, 0<br>
|
||||
// fx 白0 1 2 3 4 5 6 7 8 9<br>
|
||||
};<br>
|
||||
</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">ちゅーことで、05チャンネルにデータを送信することで、01~FFまで、255種類のキャラクタを表示させるができるわけだが、それが何番のスプライトに対応するものであるかは、この表を見れば一目瞭然だ。(ただし、やねうらおにのみ:笑)</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">たとえば、キャラクタナンバー01は、スプライトナンバー961である。(ユーザー定義可能部分)<br>
|
||||
また、キャラクターナンバー50は、スプライトナンバー941であり、それは金色オブジェである。<br>
|
||||
はたまた、キャラクターナンバーD2は、スプライトナンバー867であり、それは、Rという白い文字である。</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">というようになっている。ということで、実は、第5チャンネルだけで、拡張キャラクタとして、文字などをオブジェとして落下させることができる。</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">さらに、ここで、問題となるのは、スプライトナンバー961~1023がユーザー定義可能部分として解放されていることである。ここに来て、さきほどの</font></p>
|
||||
|
||||
<p>#ExtChr <SpriteNo.> <BMPNo.> <start_x>
|
||||
<start_y> <end_x> <end_y> { <offset_x>
|
||||
<offset_y> { <x> <y> } } </p>
|
||||
|
||||
<p><font face="MS ゴシック">が初めて意味を持つ。{
|
||||
}の部分は省略可能ということ。</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">#ExtChr 961 1 0 0 99 99</font></p>
|
||||
|
||||
<p><font face="MS ゴシック">などとすれば、スプライトナンバー961を、ビットマップナンバー1(これは、#bmpで定義したときのビットマップナンバー)の(0,0)から(99,99)の100×100ドットの部分として定義するという意味である。これにより、ユーザーで用意した任意のビットマップの特定の部分をユーザースプライトとして定義することが可能となり、それをさきほどのExtended
|
||||
Objectで表示することが可能だというわけだ。(といま思い出した:笑)</font></p>
|
||||
|
||||
<p>そして、<offset_x> <offset_y>をオプションで指定できるが、これは、オブジェ位置を調整するためにある。</p>
|
||||
|
||||
<p>たとえば、オブジェを表示するとき、オブジェ高さを表示段階で参照して、そのオブジェの下面にプレイポイントが来るようにするのは、あまり洗練されたプログラムではないとやねうらおは考えたわけだ。このころ、ぽっぷんの移植のことが少し頭にあったので、オブジェクトの下面がプレイポイントでないこともありうることを多少意識もしていたのだ。</p>
|
||||
|
||||
<p>そこで、オフセットを持たせることにした。たとえば、(-5,-10)のオフセットを持つスプライトに対しては、(100,120)の座標に表示しなさい、と命令しても(95,110)の座標に表示されるわけである。このようにすることによって、内部的には、(100,120)の座標で管理できる。すなわち、プレイポイントに表示するように指示しておけば、それのスプライト表示の段階で、適切なオフセットを得て、適切な位置に表示されるという仕組みである。</p>
|
||||
|
||||
<p>ただ、そのことに気づいたのは、ver3.16あたりなので、スクラッチは実はオフセットを持っていなかった。(と思う) それの調整を行なうためにも、このオフセット値は重要である。</p>
|
||||
|
||||
<p>最後のオプションのX,Yだが、この指定があると、画面上の、その座標位置にそのスプライトを配置するのである。鍵盤のデザインを変更したり、DanceDanceRevolutionのようにぺたんと大きな矢印を用意したりすることの可能だ。また、いま定義されているスプライトを上から定義して、画面外に追い出し、表示されないようにすることもできる。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>わくわくしてきたところで、どのスプライトナンバーが何であるのか、その割付を完全に知りたいと思う人もいるだろう。そうでなければ、いまある鍵盤を別のキャラクタに再定義してしまうというようなことができないからである。</p>
|
||||
|
||||
<p>そこで、以下には、スプライト定義のためのルーチンをそのまま抜粋する。メモのようにして、何番が何であるか記されている。ただし、dynamicと書いてある部分は、動的に変更されるから、こいつを変えても無駄である。また、スプライトは、原則的に0~511までが表示されるもので、あと512~1023は、非表示であって、実行段階で、10番のスプライトは513番のスプライトをコピーせよ!などとして、10番にスプライト特性情報を持ってきて、10番のスプライトを画面表示することにより、513番のスプライトを画面表示することにしてある。このようにすることにより、一種類のスプライトを複数個表示したりすることが簡単になるし、何より管理の手間が楽になる。</p>
|
||||
|
||||
<p>しかし、増やしすぎて、512個では足りなくなったため、ネオン表示用に1024~1087を使っていたような気もする。(なんかダサイなあ...)</p>
|
||||
|
||||
<p>まあ、このへんは突貫工事なので深くはつっこまないように(笑)</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>void DefSpriteGames(void) //
|
||||
ゲーム画面のためのスプライト初期化<br>
|
||||
{<br>
|
||||
int i;<br>
|
||||
for(i=0;i<512*2+64;i++) {<br>
|
||||
ySpriteMove(i,-10000,-10000); // 全クリア<br>
|
||||
ySpriteVisible(i,true);<br>
|
||||
} <br>
|
||||
<br>
|
||||
// 00 - 11 : (dynamic sprite) Greatの爆発アニメ用<br>
|
||||
// 12-75 : Score表示用 (61-76 : AutoPlay表示用)<br>
|
||||
// 71-75 : (dup.) CPU % 負荷率表示用<br>
|
||||
<br>
|
||||
// 77-79 : 空きのはず..<br>
|
||||
<br>
|
||||
// 80,81,82,83,84,85,86,87,88 : 1P側の鍵盤フラッシュ&スクラッチ<br>
|
||||
// 89,90,91,92,93,94,95,96,97 : 2P側の鍵盤フラッシュ&スクラッチ<br>
|
||||
<br>
|
||||
// kazu:光っているキーボードの個別パーツ。<br>
|
||||
yDefSprite(80,112,1,123,25); // 1(上部)<br>
|
||||
ySpriteMove(80,SCR1P1+1,SCRDWN3-1);<br>
|
||||
yDefSprite(81,112,26,133,46); // 1(下部)<br>
|
||||
ySpriteMove(81,SCR1P1+1,SCRDWN3+25-1);<br>
|
||||
<br>
|
||||
yDefSprite(82,124,1,140,25); // 2<br>
|
||||
ySpriteMove(82,SCR1P2+2,SCRDWN3);<br>
|
||||
<br>
|
||||
yDefSprite(83,141,1,146,25); // 3(上部)<br>
|
||||
ySpriteMove(83,SCR1P3+8,SCRDWN3-1);<br>
|
||||
yDefSprite(84,133,26,154,46); // 3(下部)<br>
|
||||
ySpriteMove(84,SCR1P3+1,SCRDWN3+25-1);<br>
|
||||
<br>
|
||||
yDefSprite(85,147,1,163-1,25); // 4<br>
|
||||
ySpriteMove(85,SCR1P4+4,SCRDWN3);<br>
|
||||
<br>
|
||||
yDefSprite(86,164-2,1,175,25); // 5(上部)<br>
|
||||
ySpriteMove(86,SCR1P5+9,SCRDWN3-1);<br>
|
||||
yDefSprite(87,154,26,175,46); // 5(下部)<br>
|
||||
ySpriteMove(87,SCR1P5+1,SCRDWN3+25-1);<br>
|
||||
<br>
|
||||
yDefSprite(88,177,2,210,46); // スクラッチ<br>
|
||||
ySpriteMove(88,SCR1P6+2,SCRDWN3);<br>
|
||||
<br>
|
||||
for(i=80;i<=88;i++){<br>
|
||||
ySpriteCopy(i+9,i); // かしこいなー俺:p<br>
|
||||
ySpriteAdd(i+9,SCROFS,0); // スプライト相対移動<br>
|
||||
}<br>
|
||||
<br>
|
||||
// 98,99 : 画面下のキーボード(赤ライン除く)<br>
|
||||
yDefSprite(98,1,1+5,100,89); // for 1P
|
||||
ノーマルキーボード(全体。スクラッチ含む)<br>
|
||||
ySpriteCopy(99,98); // for 2P<br>
|
||||
<br>
|
||||
// 100-309 : (dynamic sprite) ノート。1画面同時数200という制限はここから来る<br>
|
||||
<br>
|
||||
// 310,311 : 1P & 2P "Great / Good / Bad / Poor "<br>
|
||||
// NoteSprite.h
|
||||
あっちゃで使うから、これ、使っちゃダメよん。<br>
|
||||
<br>
|
||||
// 312-315 : "1P","2P"<br>
|
||||
<br>
|
||||
// 316 - 325 : 縦小節線 (こっちの方が優先か...)<br>
|
||||
for(i=0;i<10;i++){<br>
|
||||
yDefSprite(316+i,64,91,64,91+(SCRDWN>>1)-1);<br>
|
||||
}<br>
|
||||
ySpriteMove(316,SCR1P3,0); // もう移動しといちゃえ!<br>
|
||||
ySpriteMove(317,SCR1P5,0); // もう移動しといちゃえ!<br>
|
||||
ySpriteMove(318,SCR1P6,0); // もう移動しといちゃえ!<br>
|
||||
ySpriteMove(319,SCR1P3,SCRDWN>>1); //
|
||||
もう移動しといちゃえ!<br>
|
||||
ySpriteMove(320,SCR1P5,SCRDWN>>1); //
|
||||
もう移動しといちゃえ!<br>
|
||||
ySpriteMove(321,SCR1P6,SCRDWN>>1); //
|
||||
もう移動しといちゃえ!<br>
|
||||
<br>
|
||||
// 322-7 : 2P用縦小節線<br>
|
||||
<br>
|
||||
// 328-330 : CPU負荷率<br>
|
||||
<br>
|
||||
// 331-430 : (dynamic sprite) Voltage Meter<br>
|
||||
<br>
|
||||
// 431,432,433,434,435,436 : 1P
|
||||
キーを叩いたときの赤の縦ライン<br>
|
||||
// 437,438,439,440,441,442 : 2P
|
||||
キーを叩いたときの赤の縦ライン<br>
|
||||
for(i=431;i<=442;i++){<br>
|
||||
if (i==436 || i==442) {<br>
|
||||
yDefSprite(i,65,91,99,91+160-1); // スクラッチライン<br>
|
||||
} else {<br>
|
||||
yDefSprite(i,65,91,84,91+160-1); // <br>
|
||||
}<br>
|
||||
ySpriteVisible(i,false); //
|
||||
ディフォルトでは不可視やろ?<br>
|
||||
}<br>
|
||||
ySpriteMove(431,SCR1P1+1,0);<br>
|
||||
ySpriteMove(432,SCR1P2+1,0);<br>
|
||||
ySpriteMove(433,SCR1P3+1,0);<br>
|
||||
ySpriteMove(434,SCR1P4+1,0);<br>
|
||||
ySpriteMove(435,SCR1P5+1,0);<br>
|
||||
ySpriteMove(436,SCR1P6+1,0);<br>
|
||||
for(i=0;i<6;i++){<br>
|
||||
ySpriteCopy(437+i,431+i);<br>
|
||||
ySpriteAdd(437+i,SCROFS,0);<br>
|
||||
} <br>
|
||||
<br>
|
||||
for(i=0;i<12;i++){<br>
|
||||
ySpriteCopy(443+i,431+i);<br>
|
||||
ySpriteAdd(443+i,0,SCRDWN>>1);<br>
|
||||
}<br>
|
||||
<br>
|
||||
// 455-497 : for displaying debug message(dup.)<br>
|
||||
// (455-486) : 画面フレーム他(定義は、BGScr.cpp)<br>
|
||||
// (487-497) : INSERT COIN & CREDITS 0/2<br>
|
||||
<br>
|
||||
// 498-499 : 1P/2Pの下の赤ライン<br>
|
||||
yDefSprite(498,1,1,100,5); // for 1P
|
||||
ノーマルキーボード(全体。スクラッチ含む)<br>
|
||||
// defined BGScr.cpp<br>
|
||||
<br>
|
||||
// 500-506 : FPSの表示用<br>
|
||||
<br>
|
||||
// 507 BM<br>
|
||||
yDefSprite(507,340,345,426,374); //
|
||||
BM98タイトルロゴ・小<br>
|
||||
<br>
|
||||
// 508-511<br>
|
||||
yDefSprite(508,174,48,176,52); // 右向き三角マーク<br>
|
||||
yDefSprite(509,178,48,180,52); // 左向き三角マーク<br>
|
||||
ySpriteCopy(510,509);<br>
|
||||
ySpriteCopy(511,510);<br>
|
||||
<br>
|
||||
/* <br>
|
||||
(117,1,121,73) // 小節左サイドの線<br>
|
||||
(239,1,247,73) // 小節右サイドの線<br>
|
||||
*/<br>
|
||||
<br>
|
||||
// 513-1023 : free セコイことを言わずに豪快に使おう!<br>
|
||||
for(i=0;i<4;i++){<br>
|
||||
yDefSprite(513+i,112,48+i*6,131,52+i*6); // 白オブジェ<br>
|
||||
yDefSprite(523+i,133,48+i*6,152,52+i*6); // 黒オブジェ <br>
|
||||
yDefSprite(533+i,147,147+i*6,180,151+i*6); // スクラッチ<br>
|
||||
}<br>
|
||||
yDefSprite(513+4,208,48,230,53); //
|
||||
白オブジェのびよーん<br>
|
||||
ySpriteOffset(513+4,-1,-1); // センタリング!<br>
|
||||
yDefSprite(513+5,207,48,231,54); //
|
||||
白オブジェのびよーん<br>
|
||||
ySpriteOffset(513+5,-2,-2);<br>
|
||||
<br>
|
||||
yDefSprite(523+4,208,56,230,61); //
|
||||
黒オブジェのびよーん <br>
|
||||
ySpriteOffset(523+4,-1,-1);<br>
|
||||
yDefSprite(523+5,207,56,231,62); //
|
||||
黒オブジェのびよーん <br>
|
||||
ySpriteOffset(523+5,-2,-2);<br>
|
||||
<br>
|
||||
yDefSprite(533+4,147,171,180,179); //
|
||||
スクラッチのびよーん(1)<br>
|
||||
yDefSprite(533+5,147,181,180,190); //
|
||||
スクラッチのびよーん(2)<br>
|
||||
<br>
|
||||
// フリーゾーン(1拍分)<br>
|
||||
yDefSprite(543,112,102,145,145-4);<br>
|
||||
yDefSprite(544,147,102,180,145-4);<br>
|
||||
yDefSprite(545,182,102,215,145-4);<br>
|
||||
yDefSprite(546,112,147,145,190-4);<br>
|
||||
yDefSprite(547,182,147,219,190); // びよーん BM98v3.16<br>
|
||||
// ySpriteOffset(547,-2,0);<br>
|
||||
yDefSprite(548,182,147,219,190); // びよーん BM98v3.16<br>
|
||||
// ySpriteOffset(548,-2,0);<br>
|
||||
<br>
|
||||
yDefSprite(553,245,108,307,121); // GREAT<br>
|
||||
yDefSprite(554,245,123,307,136); // GOOD<br>
|
||||
yDefSprite(555,245,138,307,151); // BAD<br>
|
||||
yDefSprite(556,245,153,307,166); // POOR<br>
|
||||
<br>
|
||||
yDefSprite(557,1,267,100,267); // 横小節線<br>
|
||||
// ySetSpriteSize(557,120,1);<br>
|
||||
<br>
|
||||
// 赤文字<br>
|
||||
for(i=0;i<=9;i++){<br>
|
||||
yDefSprite(560+i,245+i*12,168,255+i*12,183); // 0-9<br>
|
||||
}<br>
|
||||
<br>
|
||||
yDefSprite(581,154,48,157,64); // ゲージ・緑(暗)<br>
|
||||
yDefSprite(582,159,48,162,64); // ゲージ・緑(明)<br>
|
||||
yDefSprite(583,164,48,167,64); // ゲージ・赤(暗)<br>
|
||||
yDefSprite(584,169,48,172,64); // ゲージ・赤(明)<br>
|
||||
<br>
|
||||
for(i=0;i<4;i++){<br>
|
||||
yDefSprite(700+i,112+i*30,72,140+i*30,100); // GREAT爆発アニメ<br>
|
||||
}<br>
|
||||
<br>
|
||||
// 0-9 , A-Z , a-z ...<br>
|
||||
// 金色の文字<br>
|
||||
yDefSprite(720,245,89,257,106); // 0<br>
|
||||
yDefSprite(721,259,89,265,106); // 1<br>
|
||||
yDefSprite(722,267,89,279,106); // 2<br>
|
||||
yDefSprite(723,281,89,293,106); // 3<br>
|
||||
yDefSprite(724,295,89,309,106); // 4<br>
|
||||
yDefSprite(725,311,89,323,106); // 5<br>
|
||||
yDefSprite(726,325,89,337,106); // 6<br>
|
||||
yDefSprite(727,339,89,351,106); // 7<br>
|
||||
yDefSprite(728,353,89,365,106); // 8<br>
|
||||
yDefSprite(729,367,89,379,106); // 9<br>
|
||||
<br>
|
||||
yDefSprite(730,245,1,257,18); // A<br>
|
||||
yDefSprite(731,259,1,271,18); // B<br>
|
||||
yDefSprite(732,273,1,285,18); // C<br>
|
||||
yDefSprite(733,287,1,299,18); // D<br>
|
||||
yDefSprite(734,301,1,311,18); // E<br>
|
||||
yDefSprite(735,313,1,323,18); // F<br>
|
||||
yDefSprite(736,325,1,337,18); // G<br>
|
||||
yDefSprite(737,339,1,351,18); // H<br>
|
||||
yDefSprite(738,353,1,357,18); // I<br>
|
||||
yDefSprite(739,359,1,371,18); // J<br>
|
||||
yDefSprite(740,373,1,387,18); // K<br>
|
||||
yDefSprite(741,389,1,399,18); // L<br>
|
||||
yDefSprite(742,401,1,421,18); // M<br>
|
||||
yDefSprite(743,245,20,259,37); // N<br>
|
||||
yDefSprite(744,261,20,273,37); // O<br>
|
||||
yDefSprite(745,275,20,287,37); // P<br>
|
||||
yDefSprite(746,289,20,301,39); // Q<br>
|
||||
yDefSprite(747,303,20,315,37); // R<br>
|
||||
yDefSprite(748,317,20,327,37); // S<br>
|
||||
yDefSprite(749,329,20,341,37); // T<br>
|
||||
yDefSprite(750,343,20,355,37); // U<br>
|
||||
yDefSprite(751,357,20,369,37); // V<br>
|
||||
yDefSprite(752,371,20,391,37); // W<br>
|
||||
yDefSprite(753,393,20,405,37); // X<br>
|
||||
yDefSprite(754,407,20,419,37); // Y<br>
|
||||
yDefSprite(755,245,41,257,58); // Z<br>
|
||||
<br>
|
||||
yDefSprite(760,259,41,271,58); // a<br>
|
||||
yDefSprite(761,273,41,285,58); // b<br>
|
||||
yDefSprite(762,287,41,297,58); // c<br>
|
||||
yDefSprite(763,299,41,311,58); // d<br>
|
||||
yDefSprite(764,313,41,325,58); // e<br>
|
||||
yDefSprite(765,327,41,337,58); // f<br>
|
||||
yDefSprite(766,339,41,351,62); // g<br>
|
||||
yDefSprite(767,353,41,365,58); // h<br>
|
||||
yDefSprite(768,367,41,371,58); // i<br>
|
||||
yDefSprite(769,373,41,383,62); // j<br>
|
||||
yDefSprite(770,385,41,398,58); // k<br>
|
||||
yDefSprite(771,400,41,404,58); // l<br>
|
||||
yDefSprite(772,406,41,426,58); // m<br>
|
||||
yDefSprite(773,245,64,257,81); // n<br>
|
||||
yDefSprite(774,259,64,271,81); // o<br>
|
||||
yDefSprite(775,273,64,285,85); // p<br>
|
||||
yDefSprite(776,287,64,299,85); // q<br>
|
||||
yDefSprite(777,301,64,311,81); // r<br>
|
||||
yDefSprite(778,313,64,323,81); // s<br>
|
||||
yDefSprite(779,325,64,333,81); // t<br>
|
||||
yDefSprite(780,335,64,347,81); // u<br>
|
||||
yDefSprite(781,349,64,361,81); // v<br>
|
||||
yDefSprite(782,363,64,383,81); // w<br>
|
||||
yDefSprite(783,385,64,397,81); // x<br>
|
||||
yDefSprite(784,399,64,411,87); // y<br>
|
||||
yDefSprite(785,413,64,425,81); // z<br>
|
||||
<br>
|
||||
yDefSprite(790,381,89,391,106); // -<br>
|
||||
yDefSprite(791,393,89,399,106); // "<br>
|
||||
yDefSprite(792,401,89,405,106); // !<br>
|
||||
yDefSprite(793,407,89,419,106); // ?<br>
|
||||
yDefSprite(794,309,108,325,125); // &<br>
|
||||
yDefSprite(795,327,108,331,125); // .<br>
|
||||
<br>
|
||||
yDefSprite(800,201,229,426,314); //
|
||||
BM98タイトルロゴ・大<br>
|
||||
yDefSprite(801,1,269,181,385); // レコード盤<br>
|
||||
<br>
|
||||
yDefSprite(805,183,316,426,343); // 「SONG SELECT」タイトル<br>
|
||||
yDefSprite(806,183,345,338,364); // for Single Play<br>
|
||||
yDefSprite(807,183,366,338,385); // for Double Play<br>
|
||||
yDefSprite(808,309,127,385,156); // Auto BMP counter!<br>
|
||||
<br>
|
||||
yDefSprite(810,112,192,164,244); // ヒト<br>
|
||||
yDefSprite(811,166+23,192+9,192+23,218+9); //
|
||||
★(中身塗りつぶし)<br>
|
||||
yDefSprite(812,194+23,192+9,220+23,218+9); //
|
||||
☆(中身空洞)<br>
|
||||
<br>
|
||||
yDefSprite(820,182,48,185,51); //
|
||||
リザルト表示用・赤い四角<br>
|
||||
yDefSprite(821,187,48,190,51); //
|
||||
リザルト表示用・緑色四角<br>
|
||||
yDefSprite(822,182,102,186,105); //
|
||||
リザルト表示用・ボーダ<br>
|
||||
// スクラッチオブジェから借用:p<br>
|
||||
<br>
|
||||
yDefSprite(830,102,1,105,89); // 左側用・小<br>
|
||||
yDefSprite(831,107,1,110,89); // 右側用・小<br>
|
||||
yDefSprite(832,102,91,105,266); // 左側用・大(1)<br>
|
||||
yDefSprite(833,107,91,110,266); // 右側用・大(1)<br>
|
||||
// yDefSprite(834,245,203,420,206); // 上側用・大<br>
|
||||
// yDefSprite(835,245,208,420,211); // 下側用・大<br>
|
||||
yDefSprite(834,245,203,245+120-1,206); // 上側用・大<br>
|
||||
yDefSprite(835,245,208,245+120-1,211); // 下側用・大<br>
|
||||
yDefSprite(836,387,135,402,150); // 左上コーナー<br>
|
||||
yDefSprite(837,387,152,402,167); // 右上コーナー<br>
|
||||
yDefSprite(838,387,169,402,184); // 左下コーナー<br>
|
||||
yDefSprite(839,387,186,402,201); // 右下コーナー<br>
|
||||
yDefSprite(840,102,91,105,91+140-1); // 左側用・大(2)<br>
|
||||
yDefSprite(841,107,91,110,91+140-1); // 右側用・大(2)<br>
|
||||
<br>
|
||||
yDefSprite(842,102,91,105,266-10); // 左側用・大(3) for
|
||||
result<br>
|
||||
yDefSprite(843,107,91,110,266-10); // 右側用・大(3)<br>
|
||||
<br>
|
||||
// 白いアルファベット<br>
|
||||
yDefSprite(850,1,91,9,108); // A<br>
|
||||
yDefSprite(851,11,91,19,108); // B<br>
|
||||
yDefSprite(852,21,91,29,108); // C<br>
|
||||
yDefSprite(853,31,91,39,108); // D<br>
|
||||
yDefSprite(854,41,91,48,108); // E<br>
|
||||
yDefSprite(855,1,110,9,127); // F<br>
|
||||
yDefSprite(856,11,110,19,127); // G<br>
|
||||
yDefSprite(857,21,110,29,127); // H<br>
|
||||
yDefSprite(858,31,110,33,127); // I<br>
|
||||
yDefSprite(859,35,110,43,127); // J<br>
|
||||
yDefSprite(860,45,110,53,127); // K<br>
|
||||
yDefSprite(861,1,129,9,146); // L<br>
|
||||
yDefSprite(862,11,129,21,146); // M<br>
|
||||
yDefSprite(863,23,129,31,146); // N<br>
|
||||
yDefSprite(864,33,129,41,146); // O<br>
|
||||
yDefSprite(865,43,129,51,146); // P<br>
|
||||
yDefSprite(866,1,148,9,165); // Q<br>
|
||||
yDefSprite(867,11,148,19,165); // R<br>
|
||||
yDefSprite(868,21,148,29,165); // S<br>
|
||||
yDefSprite(869,31,148,39,165); // T<br>
|
||||
yDefSprite(870,41,148,49,165); // U<br>
|
||||
yDefSprite(871,1,167,9,184); // V<br>
|
||||
yDefSprite(872,11,167,21,184); // W<br>
|
||||
yDefSprite(873,23,167,31,184); // X<br>
|
||||
yDefSprite(874,33,167,41,184); // Y<br>
|
||||
yDefSprite(875,43,167,51,184); // Z<br>
|
||||
yDefSprite(876,1,186,9,203); // "/"<br>
|
||||
yDefSprite(877,11,186,13,203); // "."<br>
|
||||
yDefSprite(878,15,186,17,203); // "!"<br>
|
||||
yDefSprite(879,19,186,27,203); // "%"<br>
|
||||
yDefSprite(880,1,205,8,222); // 0<br>
|
||||
yDefSprite(881,10,205,14,222); // 1<br>
|
||||
yDefSprite(882,16,205,23,222); // 2<br>
|
||||
yDefSprite(883,25,205,32,222); // 3<br>
|
||||
yDefSprite(884,34,205,41,222); // 4<br>
|
||||
yDefSprite(885,43,205,50,222); // 5<br>
|
||||
yDefSprite(886,1,224,8,241); // 6<br>
|
||||
yDefSprite(887,10,224,17,241); // 7<br>
|
||||
yDefSprite(888,19,224,26,241); // 8<br>
|
||||
yDefSprite(889,28,224,35,241); // 9<br>
|
||||
<br>
|
||||
// added by BM98v3.16<br>
|
||||
yDefSprite(890,53,167,061,184); // @<br>
|
||||
yDefSprite(891,29,186,37,203); // ?<br>
|
||||
yDefSprite(892,39,186,41,203); // :<br>
|
||||
yDefSprite(893,43,186,45,203); // ;<br>
|
||||
yDefSprite(894,47,186,51,203); // [<br>
|
||||
yDefSprite(895,53,186,57,203); // ]<br>
|
||||
yDefSprite(896,52,205,60,222); // ^<br>
|
||||
yDefSprite(897,37,224,40,241); // (<br>
|
||||
yDefSprite(898,42,224,45,241); // )<br>
|
||||
yDefSprite(899,47,224,51,241); // "<br>
|
||||
yDefSprite(900,53,224,54,241); // '<br>
|
||||
yDefSprite(901,56,224,57,241); // |<br>
|
||||
yDefSprite(902,59,224,61,243); // ,<br>
|
||||
yDefSprite(903,1 ,243, 9,260); // _<br>
|
||||
yDefSprite(904,11,243,19,260); // ~<br>
|
||||
yDefSprite(905,21,243,28,260); // =<br>
|
||||
yDefSprite(906,30,243,37,260); // -<br>
|
||||
yDefSprite(907,39,243,47,260); // +<br>
|
||||
yDefSprite(908,49,243,56,260); // *<br>
|
||||
<br>
|
||||
yDefSprite(910,245,185,270,201); // 1P<br>
|
||||
yDefSprite(911,272,185,297,201); // 2P<br>
|
||||
yDefSprite(912,299,185,324,201); // 暗い表示の「1P」<br>
|
||||
yDefSprite(913,326,185,351,201); // 暗い表示の「2P」<br>
|
||||
<br>
|
||||
// ネオン系 B:Blue R:Red D:Dark T:Top C:Center B:Bottom<br>
|
||||
for(i=0;i<9;i++){<br>
|
||||
yDefSprite(920+i,428,1+i*41,458,40+i*41);<br>
|
||||
// RT,RC,RB,BT,BC,BB,DT,DC,DB<br>
|
||||
}<br>
|
||||
<br>
|
||||
// 赤文字の小さいの(BPM用)<br>
|
||||
yDefSprite(930,317,213,323,227); // 0<br>
|
||||
for(i=931;i<=939;i++){<br>
|
||||
yDefSprite(i,245+(i-931)*8,213,251+(i-931)*8,227);<br>
|
||||
}<br>
|
||||
<br>
|
||||
yDefSprite(940,112,246,157,267); // sakata<br>
|
||||
<br>
|
||||
for(i=0;i<3;i++){<br>
|
||||
yDefSprite(941+i,175,54+i*6,194,58+i*6); // 金色オブジェ<br>
|
||||
}<br>
|
||||
yDefSprite(944,154,66,173,70);<br>
|
||||
yDefSprite(945,207,64,231,70);<br>
|
||||
<br>
|
||||
for(i=0;i<6;i++){<br>
|
||||
yDefSprite(946+i,166,192+i*6,185,196+i*6);<br>
|
||||
// 946 赤・947 緑・948 灰・949 くろ・950 bm98・ 951金色<br>
|
||||
}<br>
|
||||
<br>
|
||||
}</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>基本的に、BMRでも、Extended Object/Chracterの機能は持たせるつもりではいるが、もうちょっと洗練されたものにする予定でいる。</p>
|
||||
|
||||
<p>なお、ここにある機能を使うと、曲データとして、BM98曲データフォーマットに準拠したものではなくなるため、他のBM98用のビュアー等で見ることができなくなることを、あらかじめお断りしておく。</p>
|
||||
|
||||
<p>以上。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><a href="http://www.sun-inet.or.jp/~yaneurao/">戻る</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,326 @@
|
||||
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fmodern\fprq1\fcharset0 Lucida Console;}}
|
||||
{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\f0\fs20 ..: HOW TO READ A .BMS/.BME WITH A NOTEPAD AND A BRAIN :..\par
|
||||
..: Tutorial v1.1 by Jack A. Trades :..\par
|
||||
\par
|
||||
~ v1.1 differences\par
|
||||
~1 Updated BPM Change method for over 255 and/or decimal BPM usage.\par
|
||||
~2 Spelling/word errors fixed.\par
|
||||
~3 Added a new KEYLOCATION variable, to go with the ~1 update.\par
|
||||
\par
|
||||
!TIP!\par
|
||||
This tutorial is best viewed in fixed-width fonts, like Lucida Console or Courier New. It's also best viewed when Word Wrap feature is enabled, so if you need to copy and paste the entire tutorial to a temporary Notepad, then you may do so. You can always get the .rtf version if that's a hassle.\par
|
||||
\par
|
||||
!NOTE!\par
|
||||
This tutorial is intended for the creation/viewing/translation (what the hell?) of a .bms/.bme for any beatmania game. I will not include any other function that might also function in other BEMANI games such as DDR arrows or whatever else that a . bms/.bme can do. BEATMANIA ONLY PLZTHXBYE.\par
|
||||
\par
|
||||
!!DISCLAIMER!!\par
|
||||
This tutorial is created entirely from my knowledge and experience of .bms/.bme. I am not responsible for any loss of work, destruction of property, or loss of sanity when you are deciphering your own .bms/.bme and using this tutorial as your guide. Do not bug me if you somehow burned your computer or threw your cat out of the balcony. I don't want to hear it, except the cat part. I'll be sure to call Humane Society on that one.\par
|
||||
\par
|
||||
\par
|
||||
So you want to read a BMS, eh? Well then, read on and I'll show what little bits of pieces of a .bms/.bme stand for, for I had no life, and I deciphered almost each of the mechanics a BMS/BME can have.\par
|
||||
\par
|
||||
\par
|
||||
A BMS have two parts: HEADER and MAIN DATA FIELD. Without each other, they're useless, basically.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
*----------HEADER\par
|
||||
\par
|
||||
There are three sections of the header: BASIC, EXTENSION, and the third section that I like to call ASSIGNMENT. \par
|
||||
\par
|
||||
\bullet BASIC is the heart and soul of the .bms/.bme, where it tells the simulator (and you) what the hell is the song about. Title of the song, artist name, genre, BPM, play mode, and play level is specified here.\par
|
||||
\bullet EXTENSION is the optional header that can contain tags you can put as cosmetics, basically.\par
|
||||
\bullet ASSIGNMENT is the last, but not least, section of the header. This is where the life of keysounds and background animations (hereon called as "bga") begin. You can specify as many as 255 keysound tags and 255 bga tags so the simulator knows what file to play at where and when.\par
|
||||
\par
|
||||
We will begin by explaining each available tags for BASIC header. Notice that lines that begin with *--- are my comments in the header section, as to not confuse you in an actual .bms/.bme.\par
|
||||
\par
|
||||
*---BASIC HEADER\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
#PLAYER #\par
|
||||
*---specifies player amount (options are 1 or 2). Use your logic; if it's 5/7-keys, use #PLAYER 1. If it's 10/14-keys, use #PLAYER 2.\par
|
||||
\par
|
||||
#GENRE [x]\par
|
||||
*---specifies the genre [x] when the song is currently highlighted.\par
|
||||
\par
|
||||
#TITLE [x]\par
|
||||
*---specifies the title [x] when the song is currently highlighted.\par
|
||||
\par
|
||||
#ARTIST [x]\par
|
||||
*---specifies the artist [x] when the song is currently highlighted.\par
|
||||
\par
|
||||
#BPM ###\par
|
||||
*---specifies ### ( 0 to 999 ) as the first (or only) BPM value of the song.\par
|
||||
\par
|
||||
#PLAYLEVEL ##\par
|
||||
*---specifies # ( 0 to 9 ) as the amount of difficulty (stars) of the song. Some simulators, from my experience, can support values above 9, but let's not be that stupid, shall we?\par
|
||||
\par
|
||||
#MIDIFILE xxx.mid\par
|
||||
*---This tag is optional if a bgm .wav/.mp3 already exists. Specifies the MIDI file to be played at the beginning of the song. MIDI file must be in the same directory where your .bms/.bme exists.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
*---EXTENSION HEADER\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
#RANK #\par
|
||||
*---specifies # ( 0 to 3, where 0 is Very Hard, 1 is Hard, 2 is Normal, and 3 is Easy) as the "rank" of the song. I don't know the exact function, but I don't think it'll tell the simulator to change the judge setting.\par
|
||||
\par
|
||||
#TOTAL ###\par
|
||||
*---I'm not quite sure about this, but I think this specifies the maximum notes you can get in this song. So values from 0 to 9999 works, I guess.\par
|
||||
\par
|
||||
#VOLWAV ???\par
|
||||
*---I don't know the actual specifier, but I have a hunch this tells the simulator to decrease or increase the volume of the bgm with/out keysounds.\par
|
||||
\par
|
||||
#STAGEFILE xxx.yyy\par
|
||||
*---specifies the "preview" graphic of the song. Think backgrounds in DDR. This will be shown after you choose the song, during the loading of keysounds and bganimations, if available, and will disappear when the song starts. xxx.yyy specifies the filename and filetype respectively. I think you can also use directory command (Using ..\\..\\hi.jpg may tell the simulator to use the file hi.jpg two directories above the directory where this .bms/.bme exist) but I haven't tested it.\par
|
||||
\par
|
||||
%EMAIL [x]\par
|
||||
*---a comment header; you can enter your e-mail address, if desired.\par
|
||||
\par
|
||||
%URL [x]\par
|
||||
*---a comment header; you can enter your website url address, if desired.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
*---ASSIGNMENT HEADER\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
#WAV** xxx.yyy\par
|
||||
\par
|
||||
*---this is where you specify the keysound file to be stored into a local variable by the simulator, where it will be able to be called upon during the gameplay of the song, and where ** is a two-digit hex value, xxx is the filename, and yyy is the filetype (commonly used are either WAV or MP3 files). \par
|
||||
*---In Layman's terms, this is where you'll give the simulator a cardboard sign that says a two-digit number (or letter. explanation later...) and tell it to play SUCH AND SUCH file whenever you tell it to. So, an example would be:\par
|
||||
\par
|
||||
*---#WAV01 kickdrum.wav\par
|
||||
\par
|
||||
*---This means that whenever there's a section in the .bms/.bme that asks for a 01 in the keysound section, the simulator will then play the file kickdrum.wav, under two conditions: (1) IF AND ONLY IF the player actually presses the key, or (2) IF AND ONLY IF the digit called is in the Always-autoplay section.\par
|
||||
\par
|
||||
*---Confused with those new vocabularies? Read on and you'll understand what the hell I'm babbling.\par
|
||||
\par
|
||||
*---The **, or the two-digit number (or letter), ranges from 00 to FF. If you haven't noticed, it's the range of a 2-byte hex value. This means that you can specify up to 255 _different_ keysound files for the simulator to memorize. To assign more variables, just make a new line with changed variable number and filename. Example:\par
|
||||
\par
|
||||
*---#WAV01 kickdrum.wav\par
|
||||
*---#WAV02 hi-hats.wav\par
|
||||
\par
|
||||
#BMP** xxx.yyy\par
|
||||
\par
|
||||
*---The #BMP tag has the same idea as the #WAV tag, and also the same usage. The only difference is that the variables will be called in different sections. See the Main Data Field for further explanation.\par
|
||||
\par
|
||||
*---HUGE NOTE, AS IN READ THE BELOW COMMENT BEFORE YOU GO ON\par
|
||||
*---HUGE NOTE, AS IN READ THE BELOW COMMENT BEFORE YOU GO ON\par
|
||||
*---HUGE NOTE, AS IN READ THE BELOW COMMENT BEFORE YOU GO ON\par
|
||||
\par
|
||||
*---You do NOT need to specify every single variable. That means stop typing 500 lines of specifying nothing. Any unspecified variables will be assumed as "blanks" by the simulator, and when it is called, the simulator will do nothing, if it's a keysound, or the simulator will stop any animation previously and display nothing, if it's a bga.\par
|
||||
\par
|
||||
\par
|
||||
*----------MAIN DATA FIELD\par
|
||||
\par
|
||||
_THIS_ is the fun part. This section is where all of the keysounds are specified in bits and pieces of measures of the music, and _THIS_ is where you must act like a detective and decipher what the hell each line stands for. Thankfully, I have come with aid. And chips. And guacamole dip.\par
|
||||
\par
|
||||
BACK TO THE POINT\par
|
||||
\par
|
||||
Many of you will see jumbles of nothing but digits in a normal .bms/.bme file, but do you ever wonder how does it work? I'm sure you do, because if you've never wondered so, you won't be reading through here. Or to here, even.\par
|
||||
\par
|
||||
So we will begin, with the explanation. I'll have fun 'splaining as I will 'yping.\par
|
||||
'ey! 'ccent 're 'ool! 'nd 'nintelligible 'oo!!! 'o 'ffense.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
So here you are, wandering around the main data field, and you see numbers like this.\par
|
||||
\par
|
||||
#00412:00000000000000005F0000001A000000E3\par
|
||||
\par
|
||||
and something like that repeated differently about 3000 times.\par
|
||||
\par
|
||||
Let's begin understanding each section by breaking down the given example line. Obviously you should already understand the #. All codes begin with #. Duh.\par
|
||||
\par
|
||||
# 004 12 :00000000000000005F0000001A000000E3\par
|
||||
^\par
|
||||
|\par
|
||||
|\par
|
||||
\par
|
||||
This is your _Measure #_ . Obviously it ranges from Measure 1 (000) to Measure 1000 (999), but what song have 1000 measures? Hopefully you're not making a .bms/.bme to a nonstop megamix. Anyway, this tells the simulator what's going on in such measure. In this example, there are...12...thing...with a colon and many zeroes and 5F and 1A and E3 here and there in measure 5....interesting. Don't worry; you'll understand those things soon.\par
|
||||
\par
|
||||
Speaking of soon, we're moving right along to the next part. Boy was that quick or what?\par
|
||||
\par
|
||||
\par
|
||||
# 004 12 :00000000000000005F0000001A000000E3\par
|
||||
^\par
|
||||
|\par
|
||||
|\par
|
||||
\par
|
||||
This is what I like to call KEY LOCATION variable, where it tells the simulator to put those...zeroes...and 5F...and the rest of the garbage into a variable of digit "12."\par
|
||||
That didn't make a lot of sense, did it? Of course not. It didn't to me at first, until I deciphered the possible variables of key locations. Below is the list of the KEY LOCATION and its variable two-digit number.\par
|
||||
\par
|
||||
\par
|
||||
KEYLOCATION - ACTUAL LOCATION/FUNCTION\par
|
||||
======================================\par
|
||||
11 - White key 1 (Most left)\par
|
||||
12 - Blue key 1 (Most left)\par
|
||||
13 - White key 2 (Second from the left)\par
|
||||
14 - Blue key 2 (Center)\par
|
||||
15 - White key 3 (Second from the right)\par
|
||||
18 - Blue key 3 (Most right)\par
|
||||
19 - White key 4 (Most right)\par
|
||||
16 - Scratch (The big circle thing that makes wiki wiki wiki wik wik sound)\par
|
||||
17 - \bullet unknown function currently\bullet\par
|
||||
04 - BGA\par
|
||||
07 - \bullet unknown function currently\bullet\par
|
||||
06 - MISS BGA\par
|
||||
01 - Always Autoplay\par
|
||||
03 - BPM Change\par
|
||||
08 - "Advanced" BPM Change\par
|
||||
\par
|
||||
\par
|
||||
So in the above example, the code 00000000000000005F0000001A000000E3 will all be executed solely for the Blue key 1.\par
|
||||
\par
|
||||
\par
|
||||
"BUT JACK A. TRADES, I WANNA KNOW HOW THOSE NUMBERS WORK AND WHAT ARE THEY ACTUALLY!?!??!?!/1/1/131'31'3nklnalndkland"\par
|
||||
\par
|
||||
Let's stop the question and start looking at the example below.\par
|
||||
\par
|
||||
# 004 12 :00000000000000005F0000001A000000E3\par
|
||||
^ ^\par
|
||||
--------------------------------\par
|
||||
|\par
|
||||
|\par
|
||||
\par
|
||||
_NOT_ simply put, they are the codes that tell the simulator to call up all of the specified variables in a single measure. I lost you, didn't I?\par
|
||||
Simply put, in this example, the simulator is told to call the following variables: 00 (8 times), 5F, 00 (3 times), 1A, 00 (3 times), and E3. That means the simulator will first find what you have specified earlier in the ASSIGNMENT HEADER, follow your command, and open/play that file for you at that point of time.\par
|
||||
But how should this help you in terms of music? How can you specify exact call locations for the simulator, like a kick drum every beat in a measure, or a hi-hats for every-other-eighth-beat in a measure? This is where the (other) fun part comes in.\par
|
||||
\par
|
||||
The amount of digits available will determine what kind of a note each double-digit is. I lost you again, didn't I?\par
|
||||
\par
|
||||
For (another?) example, if you put a line of code such as this instead of the given example above:\par
|
||||
\par
|
||||
#00412:5F\par
|
||||
\par
|
||||
You're telling the simulator to play the 5F keysound whenever the player presses the blue key 1 at the first beat of measure 5.\par
|
||||
\par
|
||||
HOLY CRAP HOW DID I KNOW THAT!?\par
|
||||
Well, if you've studied music, and understand what the hell I was saying earlier, then you must know you only specified one digit for the measure, and that means the simulator will assume that double-digit as a whole note. Remember: 4 beats equal a measure, and a whole note = 4 beats.\par
|
||||
\par
|
||||
So if you specify this instead:\par
|
||||
\par
|
||||
#00412:5F005F00\par
|
||||
\par
|
||||
The simulator will assume each double-digit as _quarter note_ and do the polka. I mean, do its thing. Play 5F in the first beat of the measure, play 00 in the second beat, play 5F in the third and finally play 00 in the fourth.\par
|
||||
\par
|
||||
If I specify:\par
|
||||
\par
|
||||
#00412:001A001A001A001A\par
|
||||
\par
|
||||
I'm telling the simulator to play the 1A in every other sixteenth notes. Get the picture?\par
|
||||
\par
|
||||
\'a4 THE AMOUNT OF DOUBLE DIGITS AvAILABLE IN THE LINE OF CODE SPECIFIES THE TYPE OF NOTE EACH ARE \'a4\par
|
||||
\par
|
||||
If there is one double-digit, it is a whole note.\par
|
||||
If there are two double-digits, each double-digit is a half note.\par
|
||||
If there are four double-digits, each double-digit is a quarter note.\par
|
||||
If there are eight double-digits, each double-digit is a eighth note.\par
|
||||
If there are sixteen double-digits, each double-digit is a sixteenth note.\par
|
||||
If there are twelve double-digits, each double-digit is a twelveth note.\par
|
||||
If there are thirty two double-digits, each double-digit is a thirty-second note.\par
|
||||
ET CETERA\par
|
||||
\par
|
||||
The highest note type a simulator can take, usually, is a 192nd note. If you go beyond that, something is wrong with you or the song. Probably you, but you never know.\par
|
||||
\par
|
||||
\par
|
||||
So let's recap! What does this code actually tell you?\par
|
||||
\par
|
||||
#00412:00000000000000005F0000001A000000E3\par
|
||||
\par
|
||||
\bullet At measure 5 ( #004 = MEASURE #5 ),\par
|
||||
\bullet The following variables are to be called in the Blue Key 1 section ( #xxx12 = Blue Key 1 ):\par
|
||||
\bullet 00,00,00,00,00,00,00,00,5F,00,00,00,1A,00,00,00,E3\par
|
||||
\bullet Where each note is assumed as (in this strange case) a seventeenth note.\par
|
||||
\bullet Therefore, the simulator must play the keysound of variable 00 in the first seventeenth note, then another 00 in the second seventeenth note, etc.\par
|
||||
\par
|
||||
\par
|
||||
And you're done! See, that wasn't so hard, was it? But you think I'm forgetting something. Actually, two things. Well, I'm not, so shut up. That code always apply to everything you see in the KEYLOCATION table, including BGA and Always Autoplay.\par
|
||||
The difference in the BGA, however, is that the simulator will load the graphics of the specified variables. So, if you've specified #BMP01 neh.bmp, and you want to call the graphic in a note, then the simulator will _NOT_ play the keysound for 01, but it will instead load the neh.bmp file.\par
|
||||
The other and my last point that you think I've forgotten is the actual explanation of the other KEYLOCATION functions. I'll put the table below again for your convenience.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
KEYLOCATION - ACTUAL LOCATION/FUNCTION\par
|
||||
======================================\par
|
||||
11 - White key 1 (Most left)\par
|
||||
12 - Blue key 1 (Most left)\par
|
||||
13 - White key 2 (Second from the left)\par
|
||||
14 - Blue key 2 (Center)\par
|
||||
15 - White key 3 (Second from the right)\par
|
||||
18 - Blue key 3 (Most right)\par
|
||||
19 - White key 4 (Most right)\par
|
||||
16 - Scratch (The big circle thing that makes wiki wiki wiki wik wik sound)\par
|
||||
17 - \bullet unknown function currently\bullet\par
|
||||
04 - BGA\par
|
||||
07 - \bullet unknown function currently\bullet\par
|
||||
06 - MISS BGA\par
|
||||
01 - Always Autoplay\par
|
||||
03 - BPM Change\par
|
||||
08 - "Extended" BPM Change\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
So what's 17 and 07 all about? I sure as hell don't know. Perhaps if you know, you would help me out with this tutorial. C'mon; I typed everything you see here, from my brain, in one single session.\par
|
||||
\par
|
||||
Never mind that for now. What's MISS BGA, Always Autoplay, and BPM, you ask?\par
|
||||
\par
|
||||
MISS BGA is where you can specify any custom animations you have when the player is currently missing the notes he's playing. If you want an absolute, easy example, find and download onoken - P8107 bms file with the background, and just miss a couple of notes (or the whole song and failing it, like I did!). You'll see that onoken has incorporated a custom MISS animation.\par
|
||||
Of course, if you don't have the patience to make one, you can always specify a single image that has the word MISS in bold, or something. Preferably red, you know.\par
|
||||
But nevertheless, to specify them is the exact same as how you would specify BGA or keysounds, but the only hassle is you have to copy and paste the same exact line for each measure you have.\par
|
||||
\par
|
||||
This is also true for my next topic: Always Autoplay. Mostly used in [L7] and usually in [7] keysound files, this baby will make sure any sound (or annoying noises) will always be played even if the player just sits there and watches himself plummet to a Game Over screen. Or something. The usage is a bit different, however. Remember that \'a4 THE AMOUNT OF DOUBLE DIGITS AvAILABLE IN THE LINE OF CODE SPECIFIES THE TYPE OF NOTE EACH ARE \'a4 rule? Well, it applies to every code you can see, even those beyond the horizon.\par
|
||||
\par
|
||||
So what do you have to do when you want to have two, three, or even four or more keysounds to play at the same exact time? Specify a new line, with different codes! Example is below:\par
|
||||
\par
|
||||
#00001:01\par
|
||||
#00001:02\par
|
||||
#00001:03\par
|
||||
\par
|
||||
This tells the simulator to play keysounds 01, 02, and 03 at the first note in measure 1. Simple, no?\par
|
||||
\par
|
||||
But when you blame me for forgetting things, you are right for one thing, but ONLY one thing. I forgot to mention the BPM. That lil' bugger is used when you want to suddenly change the BPM value of the song. The usage is still the same, with a little variation.\par
|
||||
\par
|
||||
#01103:96\par
|
||||
\par
|
||||
The lil' code above this paragraph tells the simulator to change the BPm at measure 12 to 150 BPM. So how did I get 150 from 96? Some weird formula like standard deviation of the population mean in a binomial distribution?\par
|
||||
\par
|
||||
Heck no, I got 150 because 96 is the hex value of 150. Let me remind you that 2-byte hex value only goes up to 255 in decimal, so in short, if you're trying to create a .bms/.bme for MaxX Unlimited, where the BPM changes from 300 to 280 to 300 to 150 to 320, we might have a problem. How would you specify a BPM value over 255?\par
|
||||
\par
|
||||
[credit goes to pukpuk/2220 for finding the method originally and jammitch for pointing me to the solution]\par
|
||||
\par
|
||||
You can specify your BPM in the ASSIGNMENT header, as you may recall. The process is the same; the code tag is the only one different. So if you want to specify a BPM of 320, put:\par
|
||||
\par
|
||||
#BPM01 320\par
|
||||
\par
|
||||
And call it in the main data field like:\par
|
||||
\par
|
||||
#00408:01\par
|
||||
\par
|
||||
This will call the BPM Change of 01 in measure 5, and thus changing the song's BPM to 320.\par
|
||||
\par
|
||||
\par
|
||||
So if you want multiple BPM changes:\par
|
||||
\par
|
||||
#01103:96AFC8E1\par
|
||||
\par
|
||||
This tells the simulator to change the BPM to 150 at the first quarter note of Measure 12, to 175 at second quarter note, 200 at third, and 225 and fourth.\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
\par
|
||||
And with that, I conclude this tutorial. Hopefully I have made a tutorial that can actually help you read .bms/.bme more intelligently, and not think of egyptian inscriptions when you see those codes. Until next time, I am Jack A. Trades.\par
|
||||
\par
|
||||
~ let empathy fill the void ~\par
|
||||
}
|
||||
| ||||