A sequel to Sega AM2's rail shooter Ghost Squad, only this time without AM2's involvement.
Internal Project Name#
The .exe and .ini files are named gs2, which likely stands for Ghost Squad 2.
Unused Graphics#
Found within some UI image files are UI_video_chat_form.png and UI_routemap_movie.png, two placeholder graphics for cutscene imagery.
There's also placeholder graphics, UI_TO_cam1.png and UI_TO_cam2.png, in the UI_route_demo folder for the "Reference Room" and "Elevator Hall" text in the second stage's route map, respectively.
Unused Video#
og_tobecontinued3-2.wmv is a cutscene promoting a "completed" version of the game, likely leftover from a location tested or prototype version.
Uncompiled Source Code#
Present in the same folder as the unused "to be continued" video are two equally-unused Lua scripts for it.
main.lua
------------------------------- UTF-8로 저장하기 위한 코멘트/UTF-8でセーブするためのコメント
require ("tools/bindEx" )
require ("tools/og_sequence" )
require ("tools/og_task" )
require ("Sound/Sound" )
local frame = 0
local s_TaskMgr = nil
local g_GeneralSE = new_SoundBank("SE_general.sound", true)
PlayInfo.GM_ToBeContinue()
local function TobeContinueObject()
local TobeCon_movie = LwMovie( "scene/to_be_continue/og_tobecontinued3-2.wmv" )
local TobeCon_img_movie = TobeCon_movie:GetTexture()
local led_space = 12
TobeCon_img_movie:SetCell( 0, RECT( 0,0,1024 + led_space * 2, 600 + led_space * 2 ) )
local tbl = {
Main = function(self)
end,
Draw = function(self)
lwMatrix:Push()
do
lwMatrix:Translate( 0, 600 , 0 );
local x = 1024 / ( 1024 + led_space * 2 );
local y = 600 / ( 600 + led_space *2 );
lwMatrix:Scale( x, -y,1.0 );
TobeCon_img_movie:DrawCell( 0 );
end
lwMatrix:Pop()
lwMisc:DebugPrint( "Status".. TobeCon_movie:GetStatus() );
end,
Stop = function(self)
s_TaskMgr:Remove(self)
end,
IsPlay = function( self )
return TobeCon_movie:GetStatus() == 3
end,
}
do
ChangeBGM("OG_bgm_tobecontinue.sound")
lwPostEffect:SetMode( PEM_MOVIE )
TobeCon_movie:SetPosition(0, 0, SCR_W, SCR_H)
TobeCon_movie:SetEnableRepeat(0)
lwMisc:DebugEvent( "TobeCon:Play" )
TobeCon_movie:Play()
lwMisc:DebugLog( "TobeCon" .. TobeCon_movie:GetStatus() );
end
s_TaskMgr:Add( "continue", tbl )
return tbl
end
local GameOverObject = function()
local nCurrentFrame = 0
local animation = nil
local KeepFrame = nil
local function GameOverSeq()
while true do
if nCurrentFrame > KeepFrame then
while true do coroutine.yield() end
end
nCurrentFrame = nCurrentFrame + 1
coroutine.yield()
end
end
local m_co = coroutine.wrap( function()
while true do
local tempPath = AppSetting.ConvertPath("img/UI/UI_gameover/UI_@/UI_gameover.anim")
animation = LwAnimation(tempPath, forLua.PRI_IMMEDIATELY)
KeepFrame = animation:GetAnimationLength(0) - 1
GameOverSeq()
animation = nil
while true do coroutine.yield() end
end
end )
local tbl = {
Main = function(self)
m_co()
end,
Draw = function(self)
local f = nCurrentFrame
if f > KeepFrame then
f = KeepFrame
end
animation:DrawAnimation(0, f)
end,
Stop = function(self)
s_TaskMgr:Remove(self)
animation = nil
end,
}
g_GeneralSE:Play("gameover")
s_TaskMgr:Add( "taskGameOver", tbl )
return tbl
end
function WaitFrame(frame)
local iFrame = 0
while iFrame < frame do
iFrame = iFrame + 1
coroutine.yield()
end
end
local function sequence()
if true then
local tobecon = TobeContinueObject()
while tobecon:IsPlay() do
coroutine.yield();
end
tobecon:Stop()
end
if true then
local gameover = GameOverObject()
WaitFrame( 200 )
gameover:Stop()
end
lwLauncher:SetFile( "scene/title/main.lua" )
while true do
coroutine.yield();
end
end
local function Init()
s_TaskMgr = og_task.ManagerCreate( "task" )
s_TaskMgr:Add( "Sequence", og_sequence.ManagerCreate( sequence, "Sequence" ) )
end
function Main()
if frame == 0 then
Init()
end
s_TaskMgr:Main()
frame = frame + 1
end
function Draw()
s_TaskMgr:Draw()
s_TaskMgr:DebugPrint( 2 )
end
seq_m3_result.lua
------------------------------- UTF-8로 저장하기 위한 코멘트/UTF-8でセーブするためのコメント
local TobeCon_movie = LwMovie( "scene/m_desert_result/og_tobecontinued_wmv9_95.wmv" )
local TobeCon_img_movie = TobeCon_movie:GetTexture()
local led_space = 12
TobeCon_img_movie:SetCell( 0, RECT( 0,0,1024 + led_space * 2, 600 + led_space * 2 ) )
function MovieDraw()
lwMatrix:Push()
do
lwMatrix:Translate( 0, 600 , 0 );
local x = 1024 / ( 1024 + led_space * 2 );
local y = 600 / ( 600 + led_space *2 );
lwMatrix:Scale( x, -y,1.0 );
TobeCon_img_movie:DrawCell( 0 );
end
lwMatrix:Pop()
end
local TobeContinueObject = function()
local nCurrentFrame = 0
local taskMgr = nil
local tbl = {
Main = function(self)
nCurrentFrame = nCurrentFrame + 1
end,
Draw = function(self)
MovieDraw()
end,
Start = function(self, taskMgr_)
taskMgr = taskMgr_
taskMgr:Add( "taskTobeContinue", self )
ChangeBGM("OG_bgm_tobecontinue.sound")
lwPostEffect:SetMode( PEM_MOVIE )
end,
Stop = function(self)
taskMgr:Remove(self)
taskMgr = nil
end,
}
return tbl
end
local GameOverObject = function()
local nCurrentFrame = 0
local taskMgr = nil
local aniGameOver = nil
local KeepFrame = nil
local function GameOverSeq()
while true do
if nCurrentFrame > KeepFrame then
while true do coroutine.yield() end
end
nCurrentFrame = nCurrentFrame + 1
coroutine.yield()
end
end
local m_co = coroutine.wrap( function()
while true do
local tempPath = AppSetting.ConvertPath("img/UI/UI_gameover/UI_@/UI_gameover.anim")
aniGameOver = LwAnimation(tempPath, forLua.PRI_IMMEDIATELY)
KeepFrame = aniGameOver:GetAnimationLength(0) - 1
GameOverSeq()
aniGameOver = nil
while true do coroutine.yield() end
end
end )
local tbl = {
Main = function(self)
m_co()
end,
Draw = function(self)
local f = nCurrentFrame
--img:SetCell( 0, RECT( 0,0,SCR_W,SCR_H) )
--img:DrawCell(0)
if f > KeepFrame then f = KeepFrame end
aniGameOver:DrawAnimation(0, f)
end,
Start = function(self, taskMgr_)
taskMgr = taskMgr_
taskMgr:Add( "taskGameOver", self )
g_GeneralSE: Play("gameover")
end,
Stop = function(self)
taskMgr:Remove(self)
taskMgr = nil
aniGameOver = nil
end,
}
return tbl
end
-- seq info
Seq_m3_result_Info = function()
return {
name = "Seq-m3-result",
main = Seq_m3_result,
goto = {
},
preload = "scene/to_be_continue/seq_m3_result.preload",
}
end
function Seq_m3_result()
SetShootable(false)
g_bTestHUD = false
local RO = dofile("lua/Direction/ResultScreen.lua")
RO:Start( g_TaskMgr )
RO:Stop()
RO = nil
-- 로케 대응 코드
local tobecon = TobeContinueObject()
tobecon:Start(g_TaskMgr)
--厭廃汽 advertise Movie亜 馬球 坪漁 鞠嬢赤嬢辞
--差紫 細食隔奄稽 ToBeContinueMovie 坦軒鞠醸製. 託板 呪舛戚 琶推敗.
do -- play
TobeCon_movie:SetPosition(0, 0, SCR_W, SCR_H)
TobeCon_movie:SetEnableRepeat(0)
lwMisc:DebugEvent( "TobeCon:Play" )
TobeCon_movie:Play()
lwMisc:DebugLog( "TobeCon" .. TobeCon_movie:GetStatus() );
while TobeCon_movie:GetStatus() == 3 do
lwMisc:DebugPrint( "WaitStop".. TobeCon_movie:GetStatus() );
coroutine.yield();
end
end
WaitFrame(100)
tobecon:Stop()
tobecon = nil
local gameover = GameOverObject()
gameover:Start(g_TaskMgr)
WaitFrame(200)
gameover:Stop()
gameover = nil
ResetCritical()
lwLauncher:SetFile( "scene/m_ship/Main.lua" )
end
|
The Ghost Squad series | |
|---|---|
|
Arcade |
|