aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-05-30 09:31:51 +0000
committerbrunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-05-30 09:31:51 +0000
commitea92932825739b6d7f5ac1434382a1a59a0371fd (patch)
tree15c0807b5fdbe064a1a9a786a12d308650aeac61
parentbb4a6304aab5a215055813617130c01d91d80a83 (diff)
downloadusdx-ea92932825739b6d7f5ac1434382a1a59a0371fd.tar.gz
usdx-ea92932825739b6d7f5ac1434382a1a59a0371fd.tar.xz
usdx-ea92932825739b6d7f5ac1434382a1a59a0371fd.zip
- new acinerella.dll (based on 1.4)
- the song does not restart if you change the video gap in the editor while playing - some corrections in Blue Sensation theme; darker sing notes graphics - some bugfixes - max fps at ~200 git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2425 b956fd51-792f-4845-bead-9b4dfca2ff2c
-rw-r--r--Game/Code/Classes/UGraphic.pas56
-rw-r--r--Game/Code/Classes/UMain.pas8
-rw-r--r--Game/Code/Classes/USongs.pas44
-rw-r--r--Game/Code/Classes/UVideo.pas12
-rw-r--r--Game/Code/Screens/UScreenEditSub.pas19
-rw-r--r--Game/Code/Screens/UScreenSong.pas31
-rw-r--r--Game/Code/UltraStar.bdsproj2
-rw-r--r--Game/Code/UltraStar.cfg2
-rw-r--r--Game/Code/UltraStar.dpr4
-rw-r--r--Game/Code/lib/acinerella/acinerella.c58
-rw-r--r--Game/Code/lib/acinerella/acinerella.h7
-rw-r--r--Game/Code/lib/acinerella/acinerella.pas13
-rw-r--r--Game/Output/Skins/Blue Sensation/[sing]notesLeft.bmpbin824 -> 822 bytes
-rw-r--r--Game/Output/Skins/Blue Sensation/[sing]notesMid.bmpbin3128 -> 3126 bytes
-rw-r--r--Game/Output/Skins/Blue Sensation/[sing]notesRight.bmpbin824 -> 822 bytes
-rw-r--r--Game/Output/Themes/Blue Sensation.ini98
-rw-r--r--Game/Output/Themes/Deluxe.ini4
-rw-r--r--Game/Output/acinerella.dllbin6077459 -> 6077459 bytes
18 files changed, 179 insertions, 179 deletions
diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas
index 4aed06f3..7604e68e 100644
--- a/Game/Code/Classes/UGraphic.pas
+++ b/Game/Code/Classes/UGraphic.pas
@@ -257,13 +257,12 @@ begin
Log.LogStatus('LoadOpenGL', 'Initialize3D');
Log.BenchmarkStart(2);
- LoadOpenGL( GLLibName );
-
+ {
Log.LogStatus('SDL_Init', 'Initialize3D');
- if ( SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO)= -1 ) then begin
+ if ( SDL_Init(SDL_INIT_VIDEO)= -1 ) then begin
Log.LogError('SDL_Init Failed', 'Initialize3D');
exit;
- end;
+ end;}
{ //Load Icon
Res := TResourceStream.CreateFromID(HInstance, 3, RT_ICON);
@@ -331,10 +330,10 @@ end;
procedure SwapBuffers;
begin
SDL_GL_SwapBuffers;
- {glMatrixMode(GL_PROJECTION);
+ glMatrixMode(GL_PROJECTION);
glLoadIdentity;
- glOrtho(0, 800, 600, 0, -1, 100);
- glMatrixMode(GL_MODELVIEW);}
+ glOrtho(0, RenderW, RenderH, 0, -1, 100);
+ glMatrixMode(GL_MODELVIEW);
end;
procedure Reinitialize3D;
@@ -395,7 +394,8 @@ begin
videoFlags := videoFlags or SDL_SWSURFACE;
if ( videoInfo.blit_hw <> 0 ) then videoFlags := videoFlags or SDL_HWACCEL;
-
+ //LoadOpenGL( GLLibName );
+
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
@@ -404,18 +404,6 @@ begin
SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 8 );
- pbo_supported := false;
- {if (Ini.EnablePBO=1) then
- begin
- try
- pbo_supported := glext_LoadExtension('GL_ARB_pixel_buffer_object') and
- glext_LoadExtension('GL_version_1_5');
- except
- pbo_supported := false;
- Log.LogError('The device does not support Pixel Buffer Object (UVideo)!');
- end;
- end;}
-
if (Ini.FullScreen = 0) and (Not Params.FullScreen) then
screen := SDL_SetVideoMode(W, H, (Depth+1) * 16, videoFlags)
else begin
@@ -427,17 +415,35 @@ begin
Log.LogError('SDL_SetVideoMode Failed', 'Initialize3D');
exit;
end;
-
- // clear screen once window is being shown
- glClearColor(1, 1, 1, 1);
- glClear(GL_COLOR_BUFFER_BIT);
- SwapBuffers;
+
+ // Load OpenGL 1.2 extensions for OpenGL 1.2 compatibility
+ if (not Load_GL_version_1_2()) then
+ begin
+ Log.LogError('Failed loading OpenGL 1.2');
+ end;
+
+ pbo_supported := false;
+ if (Ini.EnablePBO=1) then
+ begin
+ try
+ pbo_supported := glext_LoadExtension('GL_ARB_pixel_buffer_object') and
+ glext_LoadExtension('GL_version_1_5');
+ except
+ pbo_supported := false;
+ Log.LogError('The device does not support Pixel Buffer Object (UVideo)!');
+ end;
+ end;
// zmienne
RenderW := 800;
RenderH := 600;
ScreenW := W;
ScreenH := H;
+
+ // clear screen once window is being shown
+ glClearColor(1, 1, 1, 1);
+ glClear(GL_COLOR_BUFFER_BIT);
+ SwapBuffers;
end;
procedure LoadScreens( aShowLoading : boolean = true );
diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas
index a20ba30c..c56513d1 100644
--- a/Game/Code/Classes/UMain.pas
+++ b/Game/Code/Classes/UMain.pas
@@ -135,9 +135,9 @@ begin
// delay
CountMidTime;
- Delay := Floor(1000 / 100 - 1000 * TimeMid);
+ Delay := Floor(1000 / 200 - 1000 * TimeMid);
if Delay >= 1 then
- SDL_Delay(Delay); // dynamic, maximum is 100 fps
+ SDL_Delay(Delay);
CountSkipTime;
// reinitialization of graphics
@@ -163,14 +163,14 @@ Begin
SDL_SetModState(KMOD_NONE);
if (Ini.FullScreen = 1) or (Params.FullScreen) then
SDL_ShowCursor(0);
- EnableVideoDraw := true;
+ //EnableVideoDraw := true;
end;
if (Event.active.gain=0) then
begin
if (Ini.FullScreen = 1) or (Params.FullScreen) then
SDL_ShowCursor(1);
- EnableVideoDraw := false;
+ //EnableVideoDraw := false;
end;
end;
diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas
index f5b105be..3c6e147a 100644
--- a/Game/Code/Classes/USongs.pas
+++ b/Game/Code/Classes/USongs.pas
@@ -146,26 +146,22 @@ var
SR: TSearchRec; // for parsing Songs Directory
SLen: integer;
res: boolean;
+
begin
if FindFirst(Dir + '*', faDirectory, SR) = 0 then begin
repeat
if (SR.Name <> '.') and (SR.Name <> '..') then
- BrowseDir(Dir + Sr.Name + '\');
+ BrowseDir(Dir + SR.Name + '\');
until FindNext(SR) <> 0;
end; // if
FindClose(SR);
-// Log.LogStatus('Parsing directory: ' + Dir + SR.Name, 'LoadSongList');
-
- if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin
-// Log.LogStatus('Parsing file: ' + Dir + SR.Name + '\' + SRD.Name, 'LoadSongList');
+ if FindFirst(Dir + '*.txt', 0, SR) = 0 then
+ begin
repeat
//New Mod for better Memory Management
SLen := BrowsePos;
- {//Old
- SLen := Length(Song);
- SetLength(Song, SLen + 1);//}
Song[SLen].Path := Dir;
Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000);
@@ -184,34 +180,24 @@ begin
begin
Song[SLen]:=AktSong;
FindRefrainStart(Song[SLen]);
- end;
- end;
- if (not res) then Dec(BrowsePos)
- else begin
- // scanning complete, file is good
- // if there is no cover then try to find it
- if Song[SLen].Cover = '' then Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
-// if Song[SLen].Background = '' then begin
-// Song[SLen].Background := FindSongFile(Dir, '*[BG].jpg');
-// end; // no needed here}
-
- // fix by adding path. no, don't fix it.
-// if Song[SLen].Cover <> '' then
-// Song[SLen].Cover := Song[SLen].Path + Song[SLen].Cover;
+ // scanning complete, file is good
+ // if there is no cover then try to find it
+ if Song[SLen].Cover = '' then Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg');
+
+ Inc(BrowsePos);
+ end;
end;
//Change Length Only every 50 Entrys
- Inc(BrowsePos);
-
- if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then
- begin
- UpdateScreenLoading('Songs: '+IntToStr(Length(Song)));
+ if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) and res then
SetLength(Song, Length(Song) + 50);
- end;
+
+ if (BrowsePos mod 5 = 0) and res then
+ UpdateScreenLoading('Songs: '+IntToStr(BrowsePos));
until FindNext(SR) <> 0;
- end; // if FindFirst
+ end; // if FindFirst
FindClose(SR);
end;
diff --git a/Game/Code/Classes/UVideo.pas b/Game/Code/Classes/UVideo.pas
index 8d56182e..ee3d2bbd 100644
--- a/Game/Code/Classes/UVideo.pas
+++ b/Game/Code/Classes/UVideo.pas
@@ -130,10 +130,7 @@ end;
function seek_proc(sender: Pointer; pos: int64; whence: integer): int64; cdecl;
begin
- if whence in [0, 1, 2] then
- result := fs.Seek(pos, TSeekOrigin(whence))
- else
- result := -1;
+ result := fs.Seek(pos, TSeekOrigin(whence))
end;
procedure Init;
@@ -180,7 +177,7 @@ begin
inst := ac_init();
videodecoder := nil;
- ac_open(inst, nil, nil, @read_proc, @seek_proc, nil);
+ ac_open(inst, nil, nil, @read_proc, @seek_proc, nil, nil);
if not inst^.opened then
begin
@@ -251,12 +248,12 @@ begin
PIXEL_FORMAT, GL_UNSIGNED_BYTE, nil);
glBindTexture(GL_TEXTURE_2D, 0);
- if(pbo_supported) then
+ if(pbo_supported) then
begin
glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, pbo);
glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, numBytes*TexX*TexY, nil, GL_STREAM_DRAW);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
- end;
+ end;
mmfps := 50;
end;
@@ -812,7 +809,6 @@ begin
// upper-right coord
glTexCoord2f(TexRect.Right, TexRect.Upper);
glVertex2f(ScreenRect.Right, ScreenRect.Upper);
-
glEnd;
if Window.windowed then
diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas
index f0d5822c..1d8ab390 100644
--- a/Game/Code/Screens/UScreenEditSub.pas
+++ b/Game/Code/Screens/UScreenEditSub.pas
@@ -223,7 +223,8 @@ begin
AktSong.VideoGap := (round(AktSong.VideoGAP*100) + temp)/100;
if PlayVideo then
- StartVideo;
+ acSkip2(AktSong.VideoGap, Czas.Teraz);
+ //StartVideo;
end;
SDLK_7:
@@ -239,7 +240,8 @@ begin
AktSong.VideoGap := (round(AktSong.VideoGAP*100) + temp)/100;
if PlayVideo then
- StartVideo;
+ acSkip2(AktSong.VideoGap, Czas.Teraz);
+ //StartVideo;
end;
SDLK_KP_PLUS:
@@ -2228,17 +2230,6 @@ begin
Window.TargetAspect := acoCrop;
Window.windowed := true;
- {if CoverTime>=Ini.PreviewFading then
- begin
- glColor4f(0, 0, 0, 1);
-
- glbegin(gl_quads);
- glVertex2f(Window.Left, Window.Upper);
- glVertex2f(Window.Left, Window.Lower);
- glVertex2f(Window.Right, Window.Lower);
- glVertex2f(Window.Right, Window.Upper);
- glEnd;
- end; }
SetAspectCorrection(acoCrop);
Blend := (PlayTime-0.2);
if Blend<0 then
@@ -2252,8 +2243,6 @@ begin
acDrawGL(ScreenAct);
end;
- //ResetAspectCorrection;
-
if (Czas.Teraz>=Czas.Razem) then
begin
acClose;
diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas
index ababa843..43cdaba5 100644
--- a/Game/Code/Screens/UScreenSong.pas
+++ b/Game/Code/Screens/UScreenSong.pas
@@ -2392,7 +2392,7 @@ begin
try
acGetFrame(Czas.Teraz);
- Blend := (CoverTime{-1.75})/Ini.PreviewFading;
+ Blend := (CoverTime-1.75)/Ini.PreviewFading;
if Blend<0 then
Blend := 0
else if Blend>1 then
@@ -2402,7 +2402,8 @@ begin
begin
if (VidVisHandler.change_time+TimeSkip<0.4) then
begin
- VidVisHandler.change_time := VidVisHandler.change_time + TimeSkip;
+ if (Blend>0) then
+ VidVisHandler.change_time := VidVisHandler.change_time + TimeSkip;
faktor := VidVisHandler.change_time/0.4;
if (TargetVidVis = full) then
@@ -2473,9 +2474,17 @@ begin
begin
if (Blend<1) or not EnableVideoDraw or VidVisHandler.changed then
Button[Interaction].Draw;
+ end else
+ Button[Interaction].Draw;
+
+ // Statics
+ for I := 0 to Length(Static) - 1 do
+ Static[I].Draw;
+ if UVideo.VideoOpened then
+ begin
try
- if (VidVis=windowed) then
+ if (VidVis<>full) or VidVisHandler.changed then
acDrawGLi(ScreenAct, Window, Blend);
if (Czas.Teraz>=Czas.Razem) then
@@ -2487,16 +2496,11 @@ begin
Log.LogError('Corrupted File: ' + CatSongs.Song[Interaction].Video);
try
acClose;
-
except
+
end;
end;
- end else
- Button[Interaction].Draw;
-
- // Statics
- for I := 0 to Length(Static) - 1 do
- Static[I].Draw;
+ end;
// and texts
for I := 0 to Length(Text) - 1 do
@@ -2513,10 +2517,7 @@ begin
begin
try
if (VidVis=full) and not VidVisHandler.changed then
- acDrawGL(ScreenAct)
- else if VidVisHandler.changed then
- acDrawGLi(ScreenAct, Window, Blend);
-
+ acDrawGL(ScreenAct);
if (Czas.Teraz>=Czas.Razem) then
acClose;
@@ -3686,7 +3687,7 @@ begin
I := -1;
if GiveStats then
begin
- if (Pet mod 10 = 0) then
+ if (Pet mod 5 = 0) then
UpdateScreenLoading('Songs: '+IntToStr(Pet));
end;
diff --git a/Game/Code/UltraStar.bdsproj b/Game/Code/UltraStar.bdsproj
index acdabdad..25bb9169 100644
--- a/Game/Code/UltraStar.bdsproj
+++ b/Game/Code/UltraStar.bdsproj
@@ -32,7 +32,7 @@
<Compiler Name="N">1</Compiler>
<Compiler Name="O">1</Compiler>
<Compiler Name="P">1</Compiler>
- <Compiler Name="Q">0</Compiler>
+ <Compiler Name="Q">1</Compiler>
<Compiler Name="R">0</Compiler>
<Compiler Name="S">0</Compiler>
<Compiler Name="T">0</Compiler>
diff --git a/Game/Code/UltraStar.cfg b/Game/Code/UltraStar.cfg
index e156555a..04922655 100644
--- a/Game/Code/UltraStar.cfg
+++ b/Game/Code/UltraStar.cfg
@@ -14,7 +14,7 @@
-$N+
-$O+
-$P+
--$Q-
+-$Q+
-$R-
-$S-
-$T-
diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr
index 6ddbad56..fbef9c69 100644
--- a/Game/Code/UltraStar.dpr
+++ b/Game/Code/UltraStar.dpr
@@ -124,7 +124,7 @@ uses
acinerella in 'lib\acinerella\acinerella.pas';
const
- Version = 'UltraStar Deluxe v1.0.1a Challenge-Mod r7c 2010-05-01';
+ Version = 'UltraStar Deluxe v1.0.1a Challenge-Mod r7c5-10 2010-05-29';
var
WndTitle: string;
@@ -182,7 +182,7 @@ begin
// SDL
Log.BenchmarkStart(1);
Log.LogStatus('Initialize SDL', 'Initialization');
- SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO);
+ SDL_Init(SDL_INIT_VIDEO or SDL_INIT_TIMER);
Log.BenchmarkEnd(1);
Log.LogBenchmark('Initializing SDL', 1);
diff --git a/Game/Code/lib/acinerella/acinerella.c b/Game/Code/lib/acinerella/acinerella.c
index 05c52232..bae6b0e8 100644
--- a/Game/Code/lib/acinerella/acinerella.c
+++ b/Game/Code/lib/acinerella/acinerella.c
@@ -129,11 +129,7 @@ void init_info(lp_ac_file_info info)
info->bitrate = -1;
}
-lp_ac_instance CALL_CONVT ac_init(void) {
- //Initialize FFMpeg libraries
- avcodec_register_all();
- av_register_all();
-
+lp_ac_instance CALL_CONVT ac_init(void) {
//Allocate a new instance of the videoplayer data and return it
lp_ac_data ptmp;
ptmp = (lp_ac_data)mgr_malloc(sizeof(ac_data));
@@ -181,7 +177,7 @@ static int64_t io_seek(void *opaque, int64_t pos, int whence)
return -1;
}
-static AVInputFormat *av_probe_input_format2(AVProbeData *pd, int *score_max)
+static AVInputFormat *_av_probe_input_format2(AVProbeData *pd, int *score_max)
{
AVInputFormat *fmt1, *fmt;
int score;
@@ -227,7 +223,7 @@ void ac_release_buffer(struct AVCodecContext *c, AVFrame *pic){
avcodec_default_release_buffer(c, pic);
}
-AVInputFormat* ac_probe_input_buffer(
+lp_ac_proberesult CALL_CONVT ac_probe_input_buffer(
char* buf,
int bufsize,
char* filename,
@@ -235,6 +231,10 @@ AVInputFormat* ac_probe_input_buffer(
{
AVProbeData pd;
+ //Initialize FFMpeg libraries
+ avcodec_register_all();
+ av_register_all();
+
//Set the filename
pd.filename = "";
if (filename) {
@@ -246,7 +246,7 @@ AVInputFormat* ac_probe_input_buffer(
pd.buf_size = bufsize;
//Test it
- return av_probe_input_format2(&pd, score_max);
+ return (lp_ac_proberesult) _av_probe_input_format2(&pd, score_max);
}
#define PROBE_BUF_MIN 2048
@@ -291,7 +291,7 @@ AVInputFormat* ac_probe_input_stream(
}
//Probe it
- fmt = ac_probe_input_buffer(tmp_buf, probe_size, filename, &score);
+ fmt = (AVInputFormat*)ac_probe_input_buffer(tmp_buf, probe_size, filename, &score);
//Set the new buffer
*buf = tmp_buf;
@@ -308,7 +308,8 @@ int CALL_CONVT ac_open(
ac_openclose_callback open_proc,
ac_read_callback read_proc,
ac_seek_callback seek_proc,
- ac_openclose_callback close_proc)
+ ac_openclose_callback close_proc,
+ lp_ac_proberesult proberesult)
{
pacInstance->opened = 0;
@@ -327,13 +328,21 @@ int CALL_CONVT ac_open(
open_proc(sender);
}
- //Probe the input format
+ AVInputFormat* fmt = NULL;
int probe_size = 0;
- AVInputFormat* fmt = ac_probe_input_stream(sender, read_proc, "",
+
+ //Probe the input format, if no probe result is specified
+ if(proberesult == NULL)
+ {
+ fmt = ac_probe_input_stream(sender, read_proc, "",
(void*)&((lp_ac_data)pacInstance)->buffer, &probe_size);
-
- if (!fmt) return -1;
+ }
+ else
+ {
+ fmt = (AVInputFormat*)proberesult;
+ }
+ if (!fmt) return -1;
if (!seek_proc) {
init_put_byte(
@@ -428,16 +437,19 @@ void CALL_CONVT ac_get_stream_info(lp_ac_instance pacInstance, int nb, lp_ac_str
((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->codec->width;
info->additional_info.video_info.frame_height =
((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->codec->height;
- info->additional_info.video_info.pixel_aspect =
- av_q2d(((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->codec->sample_aspect_ratio);
- //Sometime "pixel aspect" may be zero. Correct this.
- if (info->additional_info.video_info.pixel_aspect == 0.0) {
+
+ double pixel_aspect_num = ((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->codec->sample_aspect_ratio.num;
+ double pixel_aspect_den = ((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->codec->sample_aspect_ratio.den;
+
+ //Sometime "pixel aspect" may be zero or have other invalid values. Correct this.
+ if (pixel_aspect_num <= 0.0 || pixel_aspect_den <= 0.0)
info->additional_info.video_info.pixel_aspect = 1.0;
- }
+ else
+ info->additional_info.video_info.pixel_aspect = pixel_aspect_num / pixel_aspect_den;
- info->additional_info.video_info.frames_per_second =
- (double)((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->r_frame_rate.num /
- (double)((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->r_frame_rate.den;
+ info->additional_info.video_info.frames_per_second =
+ (double)((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->r_frame_rate.num /
+ (double)((lp_ac_data)pacInstance)->pFormatCtx->streams[nb]->r_frame_rate.den;
break;
case CODEC_TYPE_AUDIO:
//Set stream type to "AUDIO"
@@ -689,7 +701,7 @@ int ac_decode_video_package(lp_ac_package pPackage, lp_ac_video_decoder pDecoder
sws_scale(
pDecoder->pSwsCtx,
- (uint8_t*)(pDecoder->pFrame->data),
+ (const uint8_t* const*)(pDecoder->pFrame->data),
pDecoder->pFrame->linesize,
0, //?
pDecoder->pCodecCtx->height,
diff --git a/Game/Code/lib/acinerella/acinerella.h b/Game/Code/lib/acinerella/acinerella.h
index 0fafc011..a758164d 100644
--- a/Game/Code/lib/acinerella/acinerella.h
+++ b/Game/Code/lib/acinerella/acinerella.h
@@ -184,6 +184,8 @@ typedef struct _ac_package ac_package;
/*Pointer on TAc_package*/
typedef ac_package* lp_ac_package;
+typedef void* lp_ac_proberesult;
+
/*Callback function used to ask the application to read data. Should return
the number of bytes read or an value smaller than zero if an error occured.*/
typedef int CALL_CONVT (*ac_read_callback)(void *sender, char *buf, int size);
@@ -221,7 +223,8 @@ extern int CALL_CONVT ac_open(
ac_openclose_callback open_proc,
ac_read_callback read_proc,
ac_seek_callback seek_proc,
- ac_openclose_callback close_proc);
+ ac_openclose_callback close_proc,
+ lp_ac_proberesult proberesult);
/*Closes an opened media file.*/
extern void CALL_CONVT ac_close(lp_ac_instance pacInstance);
@@ -248,4 +251,6 @@ The parameter "dir" specifies the seek direction: 0 for forward, -1 for backward
The target_pos paremeter is in milliseconds. Returns 1 if the functions succeded.*/
extern int CALL_CONVT ac_seek(lp_ac_decoder pDecoder, int dir, int64_t target_pos);
+extern lp_ac_proberesult CALL_CONVT ac_probe_input_buffer(char* buf, int bufsize, char* filename, int* score_max);
+
#endif /*VIDEOPLAY_H*/
diff --git a/Game/Code/lib/acinerella/acinerella.pas b/Game/Code/lib/acinerella/acinerella.pas
index 06d8db41..c806cc8f 100644
--- a/Game/Code/lib/acinerella/acinerella.pas
+++ b/Game/Code/lib/acinerella/acinerella.pas
@@ -73,8 +73,8 @@ type
AC_OUTPUT_BGRA32 = 3
);
- TAc_infostr = array[0..511] of Char;
- TAc_infostr2 = array[0..31] of Char;
+ TAc_infostr = array[0..511] of AnsiChar;
+ TAc_infostr2 = array[0..31] of AnsiChar;
{Contains information about the whole file/stream that has been opened. Default
values are "" for strings and -1 for integer values.}
@@ -180,6 +180,8 @@ type
end;
{Pointer on TAc_package}
PAc_package = ^TAc_package;
+
+ PAc_proberesult = Pointer;
{Callback function used to ask the application to read data. Should return
the number of bytes read or an value smaller than zero if an error occured.}
@@ -212,7 +214,8 @@ function ac_open(
open_proc: TAc_openclose_callback;
read_proc: TAc_read_callback;
seek_proc: TAc_seek_callback;
- close_proc: TAc_openclose_callback): integer; cdecl; external ac_dll;
+ close_proc: TAc_openclose_callback;
+ proberesult: PAc_proberesult): integer; cdecl; external ac_dll;
{Closes an opened media file.}
procedure ac_close(inst: PAc_instance);cdecl; external ac_dll;
@@ -241,7 +244,9 @@ The parameter "dir" specifies the seek direction: 0 for forward, -1 for backward
The target_pos paremeter is in milliseconds. Returns 1 if the functions succeded.}
function ac_seek(pDecoder: PAc_decoder; dir: integer; target_pos: int64): integer; cdecl; external ac_dll;
-
+function ac_probe_input_buffer(buf: PChar; bufsize: Integer; filename: PChar;
+ var score_max: Integer): PAc_proberesult; cdecl; external ac_dll;
+
implementation
{Connect the library memory management to the host application. This happens
diff --git a/Game/Output/Skins/Blue Sensation/[sing]notesLeft.bmp b/Game/Output/Skins/Blue Sensation/[sing]notesLeft.bmp
index 3d22e5fc..c819849b 100644
--- a/Game/Output/Skins/Blue Sensation/[sing]notesLeft.bmp
+++ b/Game/Output/Skins/Blue Sensation/[sing]notesLeft.bmp
Binary files differ
diff --git a/Game/Output/Skins/Blue Sensation/[sing]notesMid.bmp b/Game/Output/Skins/Blue Sensation/[sing]notesMid.bmp
index 2daa66b8..2fdce32d 100644
--- a/Game/Output/Skins/Blue Sensation/[sing]notesMid.bmp
+++ b/Game/Output/Skins/Blue Sensation/[sing]notesMid.bmp
Binary files differ
diff --git a/Game/Output/Skins/Blue Sensation/[sing]notesRight.bmp b/Game/Output/Skins/Blue Sensation/[sing]notesRight.bmp
index cd936129..3241beeb 100644
--- a/Game/Output/Skins/Blue Sensation/[sing]notesRight.bmp
+++ b/Game/Output/Skins/Blue Sensation/[sing]notesRight.bmp
Binary files differ
diff --git a/Game/Output/Themes/Blue Sensation.ini b/Game/Output/Themes/Blue Sensation.ini
index d43c8a26..577267ce 100644
--- a/Game/Output/Themes/Blue Sensation.ini
+++ b/Game/Output/Themes/Blue Sensation.ini
@@ -41,11 +41,11 @@ Tex=LoadingBG
[LoadingText1]
X =5
-Y =544
+Y =545
Color =White
Font =0
Align =0
-Size =9
+Size =8
Text =SING_LOADING
[LoadingText2]
@@ -589,12 +589,12 @@ Text=SING_SONG_SELECTION
Align=0
[SongTextNonParty2]
-X =130
+X =85
Y =545
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_SONG_SELECTION_WHEREAMI
[SongTextNonParty3]
@@ -695,12 +695,12 @@ Color =White
Text=PARTY_MODE
[SongTextParty2]
-X =140
+X =85
Y =545
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=PARTY_SONG_WHEREAMI
[SongTextParty3]
@@ -1443,7 +1443,7 @@ Color =White
Text=PARTY_MODE_M2
[SongTextM2Party2]
-X =90
+X =85
Y =545
Color=White
Font =0
@@ -1572,12 +1572,12 @@ Reflection=1
ReflectionSpacing=1
[ScoreText2]
-X =100
+X =85
Y =545
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SONG_SCORE_WHEREAMI
[ScoreStatic4]
@@ -2920,12 +2920,12 @@ Text=SING_OPTIONS
Align=0
[OptionsText2]
-X =100
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_WHEREAMI
[OptionsText3]
@@ -3237,12 +3237,12 @@ Text=SING_OPTIONS
Align=0
[OptionsGameText2]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_GAME_WHEREAMI
[OptionsGameText3]
@@ -3489,12 +3489,12 @@ Text=SING_OPTIONS
Align=0
[OptionsGraphicsText2]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_GRAPHICS_WHEREAMI
[OptionsGraphicsText3]
@@ -3720,12 +3720,12 @@ Text=SING_OPTIONS
Align=0
[OptionsSoundText2]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_SOUND_WHEREAMI
[OptionsSoundText3]
@@ -3971,12 +3971,12 @@ Text=SING_OPTIONS
Align=0
[OptionsLyricsText2]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_LYRICS_WHEREAMI
[OptionsLyricsText3]
@@ -4142,12 +4142,12 @@ Text=SING_OPTIONS
Align=0
[OptionsThemesText2]
-X =140
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_THEMES_WHEREAMI
[OptionsThemesText3]
@@ -4313,12 +4313,12 @@ Text=SING_OPTIONS
Align=0
[OptionsRecordText2]
-X =138
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_RECORD_WHEREAMI
[OptionsRecordText3]
@@ -4508,12 +4508,12 @@ Text=SING_OPTIONS
Align=0
[OptionsAdvancedText2]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_OPTIONS_ADVANCED_WHEREAMI
[OptionsAdvancedText3]
@@ -4790,12 +4790,12 @@ Reflection=1
ReflectionSpacing=1
[TopText2]
-X =100
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_TOP_CHARTS_WHEREAMI
[TopStatic4]
@@ -5254,12 +5254,12 @@ Align =0
Text=SING_DIFFICULTY_DESC
[LevelText3]
-X =150
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_DIFFICULTY_WHEREAMI
[LevelText4]
@@ -5415,12 +5415,12 @@ Align =0
Text=SING_PLAYER_DESC
[NameText3]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=SING_PLAYER_WHEREAMI
[NameStatic4]
@@ -5670,12 +5670,12 @@ Align =0
Text=PARTY_ROUND_DESC
[PartyNewRoundText3]
-X =138
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=PARTY_ROUND_WHEREAMI
[PartyNewRoundText4]
@@ -6325,12 +6325,12 @@ Align =0
Text = PARTY_ROUNDM2_DESC
[PartyNewRoundM2Text3]
-X =145
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text = PARTY_ROUNDM2_WHEREAMI
[PartyNewRoundM2Text4]
@@ -7399,12 +7399,12 @@ Align =0
Text=PARTY_SCORE_DESC
[PartyScoreText3]
-X =135
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=PARTY_SCORE_WHEREAMI
[PartyScoreText4]
@@ -7680,12 +7680,12 @@ Align =0
Text=PARTY_WIN_DESC
[PartyWinText3]
-X =138
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=PARTY_WIN_WHEREAMI
[PartyWinText4]
@@ -8160,12 +8160,12 @@ Align =0
Text=PARTY_OPTIONS_DESC
[PartyOptionsText3]
-X =3
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=0
+Align=1
Text=PARTY_OPTIONS_WHEREAMI
[PartyOptionsText4]
@@ -8433,12 +8433,12 @@ Align = 0
Text = PARTY_OPTIONS_M2_DESC
[PartyOptionsM2Text3]
-X =3
+X =85
Y =546
Color =White
Font = 0
Size = 7
-Align =0
+Align =1
Text = PARTY_OPTIONS_M2_WHEREAMI
[PartyOptionsM2Text4]
@@ -8694,7 +8694,7 @@ Align =0
Text=PARTY_PLAYER_DESC
[PartyPlayerText3]
-X =80
+X =85
Y =545
Color=White
Font =0
@@ -9144,7 +9144,7 @@ Align =0
Text=PARTY_PLAYERM2_DESC
[PartyPlayerM2Text3]
-X =80
+X =85
Y =545
Color=White
Font =0
@@ -9813,12 +9813,12 @@ Text=STAT_MAIN
Align=0
[StatMainText2]
-X =115
+X =85
Y =546
Color=White
Font =0
Size =7
-Align=2
+Align=1
Text=STAT_MAIN_WHEREAMI
[StatMainText3]
@@ -10125,12 +10125,12 @@ Text=STAT_DETAIL
Align=0
[StatDetailText2]
-X =157
+X =85
Y =550
Color=White
Font =0
Size =6
-Align=2
+Align=1
Text=STAT_DETAIL_WHEREAMI
[StatDetailText3]
diff --git a/Game/Output/Themes/Deluxe.ini b/Game/Output/Themes/Deluxe.ini
index 14995bc8..82b2c235 100644
--- a/Game/Output/Themes/Deluxe.ini
+++ b/Game/Output/Themes/Deluxe.ini
@@ -148,7 +148,7 @@ Text=SING_SONG_SELECTION_DESC
[SongTextArtist]
X =400
-Y =320
+Y =335
W = 190
Color=White
Font =1
@@ -158,7 +158,7 @@ Text=
[SongTextTitle]
X =400
-Y =395
+Y =410
W = 190
Color=White
Font =0
diff --git a/Game/Output/acinerella.dll b/Game/Output/acinerella.dll
index 077ff08f..884cee92 100644
--- a/Game/Output/acinerella.dll
+++ b/Game/Output/acinerella.dll
Binary files differ