diff --git a/source/fma/fma.cpp b/source/fma/fma.cpp index a3a64f6f6..a3991a444 100644 --- a/source/fma/fma.cpp +++ b/source/fma/fma.cpp @@ -50,6 +50,10 @@ FX #include "gfx\fader.h" #endif +#include "game\game.h" +#include "utils\utils.h" +#include "pad\pads.h" +#include "gfx\font.h" /* Std Lib ------- */ @@ -60,6 +64,7 @@ FX #ifndef __ANIM_SPONGEBOB_HEADER__ #include "actor_spongebob_anim.h" #endif +#include "actor_spongebob_fma_anim.h" #ifndef __ANIM_MERMAIDMAN_HEADER__ #include "actor_mermaidman_anim.h" @@ -73,6 +78,10 @@ FX #include "actor_gary_anim.h" #endif +#ifndef __ANIM_PLANKTON_HEADER__ +#include "actor_plankton_anim.h" +#endif + /*---------------------------------------------------------------------- Tyepdefs && Defines @@ -85,19 +94,36 @@ enum FMA_ACTOR_MM, FMA_ACTOR_BB, FMA_ACTOR_GARY, + FMA_ACTOR_PLANKTON, FMA_NUM_ACTORS }; // Actor animation types -enum +enum { FMA_ANIM_IDLE, FMA_ANIM_WALK, + + FMA_ANIM_FIXTV, + FMA_ANIM_GIVEEND, + FMA_ANIM_GIVESTART, + FMA_ANIM_IDEA, + FMA_ANIM_QUICKEXIT, + FMA_ANIM_SHOUT, + FMA_ANIM_STUMBLE, + FMA_ANIM_THROW, + + FMA_ANIM_HIDE, + FMA_ANIM_UNHIDE, + FMA_ANIM_UNHIDEIDLE, + FMA_ANIM_SIT, + FMA_ANIM_SITLOOKLEFT, FMA_NUM_ANIMS, }; + // Available script commands typedef enum { @@ -108,13 +134,14 @@ typedef enum SC_WAIT_ON_TIMER, // frames (nonblocking) SC_WAIT_ON_ACTOR_STOP, // actor (nonblocking) + SC_WAIT_ON_ACTOR_ANIM, // actor (nonblocking) SC_WAIT_ON_CAMERA_STOP, // (nonblocking) SC_WAIT_ON_CONVERSATION, // scriptId (nonblocking) SC_SET_ACTOR_VISIBILITY, // actor,on/off SC_SET_ACTOR_POSITION, // actor,x,y SC_SET_ACTOR_FACING, // actor,facing - SC_SET_ACTOR_ANIM_STATE, // actor,state + SC_SET_ACTOR_ANIM_STATE, // actor,state,loop SC_WALK_ACTOR_TO_POSITION, // actor,x,y,frames SC_STOP, // @@ -126,20 +153,26 @@ typedef enum -------------------- */ // Data for an actors graphics +struct sFMAAnim +{ + s16 Bank; + s16 Anim; +}; typedef struct { - FileEquate m_file; - int m_anims[FMA_NUM_ANIMS]; + FileEquate m_file[2]; + sFMAAnim m_anims[FMA_NUM_ANIMS]; } ACTOR_GRAPHICS_DATA; // Actor data typedef struct { - CActorGfx *m_gfx; + CActorGfx *m_gfx[2]; u8 m_active; - u8 m_animState,m_animFrame; + s8 m_animState,m_animFrame; + s8 m_animLoop; DVECTOR m_pos; @@ -163,6 +196,115 @@ typedef struct CFmaScene FmaScene; +/*****************************************************************************/ +// Actor graphics data +static const ACTOR_GRAPHICS_DATA s_actorGraphicsData[FMA_NUM_ACTORS]= +{ + { // SpongeBob + {ACTORS_SPONGEBOB_SBK,ACTORS_SPONGEBOB_FMA_SBK}, + { +/*FMA_ANIM_IDLE*/ {0,ANIM_SPONGEBOB_IDLEBREATH}, +/*FMA_ANIM_WALK*/ {0,ANIM_SPONGEBOB_RUN}, +/*FMA_ANIM_FIXTV*/ {1,ANIM_SPONGEBOB_FMA_FIXTV}, +/*FMA_ANIM_GIVEEND*/ {1,ANIM_SPONGEBOB_FMA_GIVEEND}, +/*FMA_ANIM_GIVESTART*/ {1,ANIM_SPONGEBOB_FMA_GIVESTART}, +/*FMA_ANIM_IDEA*/ {1,ANIM_SPONGEBOB_FMA_IDEA}, +/*FMA_ANIM_QUICKEXIT*/ {1,ANIM_SPONGEBOB_FMA_QUICKEXIT}, +/*FMA_ANIM_SHOUT*/ {1,ANIM_SPONGEBOB_FMA_SHOUT}, +/*FMA_ANIM_STUMBLE*/ {1,ANIM_SPONGEBOB_FMA_STUMBLE}, +/*FMA_ANIM_THROW*/ {1,ANIM_SPONGEBOB_FMA_THROW}, +/*FMA_ANIM_HIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDEIDLE*/ {0,-1}, +/*FMA_ANIM_SIT*/ {0,-1}, +/*FMA_ANIM_SITLOOKLEFT*/ {0,-1}, + }, + }, + { // Mermaid Man + {ACTORS_MERMAIDMAN_SBK, (FileEquate)0}, + { +/*FMA_ANIM_IDLE*/ {0,ANIM_MERMAIDMAN_IDLE}, +/*FMA_ANIM_WALK*/ {0,-1}, +/*FMA_ANIM_FIXTV*/ {0,-1}, +/*FMA_ANIM_GIVEEND*/ {0,-1}, +/*FMA_ANIM_GIVESTART*/ {0,-1}, +/*FMA_ANIM_IDEA*/ {0,-1}, +/*FMA_ANIM_QUICKEXIT*/ {0,-1}, +/*FMA_ANIM_SHOUT*/ {0,-1}, +/*FMA_ANIM_STUMBLE*/ {0,-1}, +/*FMA_ANIM_THROW*/ {0,-1}, +/*FMA_ANIM_HIDE*/ {0,ANIM_MERMAIDMAN_HIDE}, +/*FMA_ANIM_UNHIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDEIDLE*/ {0,-1}, +/*FMA_ANIM_SIT*/ {0,ANIM_MERMAIDMAN_SIT}, +/*FMA_ANIM_SITLOOKLEFT*/ {0,-1}, + }, + }, + { // Barnicle Boy + {ACTORS_BARNACLEBOY_SBK, (FileEquate)0}, + { +/*FMA_ANIM_IDLE*/ {0,ANIM_BARNACLEBOY_IDLE}, +/*FMA_ANIM_WALK*/ {0,-1}, +/*FMA_ANIM_FIXTV*/ {0,-1}, +/*FMA_ANIM_GIVEEND*/ {0,ANIM_BARNACLEBOY_GIVEEND}, +/*FMA_ANIM_GIVESTART*/ {0,ANIM_BARNACLEBOY_GIVESTART}, +/*FMA_ANIM_IDEA*/ {0,-1}, +/*FMA_ANIM_QUICKEXIT*/ {0,-1}, +/*FMA_ANIM_SHOUT*/ {0,-1}, +/*FMA_ANIM_STUMBLE*/ {0,-1}, +/*FMA_ANIM_THROW*/ {0,-1}, +/*FMA_ANIM_HIDE*/ {0,ANIM_BARNACLEBOY_HIDE}, +/*FMA_ANIM_UNHIDE*/ {0,ANIM_BARNACLEBOY_UNHIDE}, +/*FMA_ANIM_UNHIDEIDLE*/ {0,ANIM_BARNACLEBOY_UNHIDEIDLE}, +/*FMA_ANIM_SIT*/ {0,ANIM_BARNACLEBOY_SIT}, +/*FMA_ANIM_SITLOOKLEFT*/ {0,ANIM_BARNACLEBOY_SITLOOKLEFT}, + }, + }, + + { // Gary Da Snail + {ACTORS_GARY_SBK, (FileEquate)0}, + { +/*FMA_ANIM_IDLE*/ {0,ANIM_GARY_IDLE}, +/*FMA_ANIM_WALK*/ {0,ANIM_GARY_IDLE}, +/*FMA_ANIM_FIXTV*/ {0,-1}, +/*FMA_ANIM_GIVEEND*/ {0,-1}, +/*FMA_ANIM_GIVESTART*/ {0,-1}, +/*FMA_ANIM_IDEA*/ {0,-1}, +/*FMA_ANIM_QUICKEXIT*/ {0,-1}, +/*FMA_ANIM_SHOUT*/ {0,-1}, +/*FMA_ANIM_STUMBLE*/ {0,-1}, +/*FMA_ANIM_THROW*/ {0,-1}, +/*FMA_ANIM_HIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDEIDLE*/ {0,-1}, +/*FMA_ANIM_SIT*/ {0,-1}, +/*FMA_ANIM_SITLOOKLEFT*/ {0,-1}, + }, + }, + { // Plankton + {ACTORS_PLANKTON_SBK, (FileEquate)0}, + { +/*FMA_ANIM_IDLE*/ {0,ANIM_PLANKTON_IDLE}, +/*FMA_ANIM_WALK*/ {0,-1}, +/*FMA_ANIM_FIXTV*/ {0,-1}, +/*FMA_ANIM_GIVEEND*/ {0,-1}, +/*FMA_ANIM_GIVESTART*/ {0,-1}, +/*FMA_ANIM_IDEA*/ {0,-1}, +/*FMA_ANIM_QUICKEXIT*/ {0,-1}, +/*FMA_ANIM_SHOUT*/ {0,-1}, +/*FMA_ANIM_STUMBLE*/ {0,-1}, +/*FMA_ANIM_THROW*/ {0,-1}, +/*FMA_ANIM_HIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDE*/ {0,-1}, +/*FMA_ANIM_UNHIDEIDLE*/ {0,-1}, +/*FMA_ANIM_SIT*/ {0,-1}, +/*FMA_ANIM_SITLOOKLEFT*/ {0,-1}, + }, + }, +}; + + +ACTOR_DATA m_actorData[FMA_NUM_ACTORS]; /*****************************************************************************/ @@ -176,42 +318,42 @@ static const int s_FMAIntroScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH1_03_DAT, // Scene 1 - SB & Gary outside house - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,80*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_GARY,84*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_GARY,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_GARY,true, - SC_SNAP_CAMERA_TO, 67*16,16*16, + SC_SNAP_CAMERA_TO, 67*16,18*16, SC_WAIT_ON_TIMER, 60, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH1_00_DAT, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,60*16,30*16,60*2, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_GARY,64*16,30*16,60*3, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, // SC_WAIT_ON_TIMER, 60*2, // Scene 2 - Shady shoals with BB & MM - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,11*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,60*16,30*16,60*2, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,17*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 60, // Scene 3 - SB Arives @@ -220,22 +362,20 @@ static const int s_FMAIntroScript[]= SC_SET_ACTOR_POSITION, FMA_ACTOR_GARY,44*16,30*16, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_GARY,28*16,30*16,60*3, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_GARY, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_GARY,FMA_ANIM_IDLE,1, // Scene 4 - SB talks to em // Scene 5 - MM gives task SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH1_01_DAT, -// Scene 6 - SB readies to run - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 15, - SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH1_02_DAT, - SC_WAIT_ON_TIMER, 15, - // Scene 7 - SB Leaves + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH1_02_DAT, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,30, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, @@ -245,8 +385,8 @@ static const int s_FMAIntroScript[]= SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_GARY, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH1_03_DAT, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_GARY,44*16,30*16,60*2, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_GARY, - SC_WAIT_ON_TIMER, 60*5, SC_STOP }; @@ -261,63 +401,64 @@ static const int s_FMAC1EndScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH2_03_DAT, // Scene 1 - Shade Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 60*2, // Scene 2 - inside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,208*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,211*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SNAP_CAMERA_TO, 197*16,16*16, + SC_SNAP_CAMERA_TO, 197*16,18*16, SC_WAIT_ON_TIMER, 30, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH2_00_DAT, SC_WAIT_ON_TIMER, 30, // Scene 3 - SB enter by door - SC_MOVE_CAMERA_TO, 235*16,16*16,60, + SC_MOVE_CAMERA_TO, 235*16,18*16,60, SC_WAIT_ON_CAMERA_STOP, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,270*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,260*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,230*16,30*16,120, - SC_MOVE_CAMERA_TO, 210*16,16*16,120, + SC_MOVE_CAMERA_TO, 210*16,18*16,120, SC_WAIT_ON_CAMERA_STOP, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH2_01_DAT, // scene 6 - sarnie flys thru the air // SC_SPRITE_SHIT - SC_MOVE_CAMERA_TO, 197*16,16*16,120, + SC_MOVE_CAMERA_TO, 197*16,18*16,120, SC_WAIT_ON_CAMERA_STOP, // Scene 7 - MM Eats sarnie - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,220*16,30*16,40, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,56, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SITLOOKLEFT,1, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, SC_WAIT_ON_TIMER, 30, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH2_02_DAT, // Scene 8 - SB Leaves - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 10, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH2_03_DAT, - SC_WAIT_ON_TIMER, 10, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, SC_STOP @@ -333,28 +474,28 @@ static const int s_FMAC2EndScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH3_02_DAT, // Scene 1 - Shade Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 60*2, // Scene 2 - inside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,208*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,211*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SNAP_CAMERA_TO, 197*16,16*16, + SC_SNAP_CAMERA_TO, 197*16,18*16, SC_WAIT_ON_TIMER, 60, // Scene 3 - SB enter by door - SC_MOVE_CAMERA_TO, 235*16,16*16,60, + SC_MOVE_CAMERA_TO, 235*16,18*16,60, SC_WAIT_ON_CAMERA_STOP, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,270*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, @@ -362,23 +503,24 @@ static const int s_FMAC2EndScript[]= SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH3_00_DAT, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,220*16,30*16,200, - SC_MOVE_CAMERA_TO, 197*16,16*16,200, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,216, + SC_MOVE_CAMERA_TO, 197*16,18*16,200, SC_WAIT_ON_CAMERA_STOP, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, // Scene 7 - BB gives new task + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SITLOOKLEFT,1, SC_WAIT_ON_TIMER, 30, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH3_01_DAT, // Scene 8 - SB Leaves - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 10, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH3_02_DAT, - SC_WAIT_ON_TIMER, 10, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, SC_STOP @@ -394,62 +536,70 @@ static const int s_FMAC3EndScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH4_02_DAT, // Scene 1 - Shade Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 30, // Scene 2 - SB arrives outside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,16*16,30*16,96, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,14*16,30*16,104, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH4_00_DAT, // Scene 3 - inside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,208*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,211*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SNAP_CAMERA_TO, 197*16,16*16, - SC_WAIT_ON_TIMER, 30, + SC_SNAP_CAMERA_TO, 197*16,18*16, + SC_WAIT_ON_TIMER, 5, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SITLOOKLEFT,1, + SC_WAIT_ON_TIMER, 5, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH4_01_DAT, SC_WAIT_ON_TIMER, 30, // Scene 4 - SB enter by door, and runs over to them - - SC_MOVE_CAMERA_TO, 235*16,16*16,60, + SC_MOVE_CAMERA_TO, 235*16,18*16,60, SC_WAIT_ON_CAMERA_STOP, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_HIDE,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,220*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_MM,1, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_HIDE,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,204*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, + + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,270*16,30*16, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,260*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,220*16,30*16,200, - SC_MOVE_CAMERA_TO, 197*16,16*16,200, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,208*16,30*16,248, + SC_MOVE_CAMERA_TO, 197*16,18*16,200, SC_WAIT_ON_CAMERA_STOP, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, -// Scene 5 - MM & BB need to hide here - -// Scene 7 - BB gives new task +// BB removes shade + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_UNHIDE,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_BB, SC_WAIT_ON_TIMER, 30, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH4_02_DAT, - // Scene 8 - SB Leaves - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 20, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, @@ -459,6 +609,7 @@ static const int s_FMAC3EndScript[]= /*****************************************************************************/ /*** C4 End FMA **************************************************************/ /*****************************************************************************/ + static const int s_FMAC4EndScript[]= { SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_00_DAT, @@ -466,66 +617,38 @@ static const int s_FMAC4EndScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH5_02_DAT, // Scene 1 - Shade Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 369*16,18*16, SC_WAIT_ON_TIMER, 30, // Scene 2 - SB arrives outside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,405*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, - - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,16*16,30*16,96, - SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, - SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH5_00_DAT, - SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH5_01_DAT, -/* NEED PORTHOLE TO FINISH THIS BABY -// Scene 3 - inside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16, - SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, - SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, - - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,370*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SNAP_CAMERA_TO, 197*16,16*16, - SC_WAIT_ON_TIMER, 30, - SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH4_01_DAT, - SC_WAIT_ON_TIMER, 30, - -// Scene 4 - SB enter by door, and runs over to them - - SC_MOVE_CAMERA_TO, 235*16,16*16,60, - SC_WAIT_ON_CAMERA_STOP, - - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,270*16,30*16, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,260*16,30*16,40, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,382*16,30*16,92, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,220*16,30*16,200, - SC_MOVE_CAMERA_TO, 197*16,16*16,200, - SC_WAIT_ON_CAMERA_STOP, - SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, -// Scene 5 - MM & BB need to hide here + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH5_00_DAT, +// SB throws bar thru window -// Scene 7 - BB gives new task - SC_WAIT_ON_TIMER, 30, - SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH4_02_DAT, +// BB comes to Porthole + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_BB,374*16,30*16,60, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_BB, + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH5_01_DAT, -*/ // Scene 8 - SB Leaves - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 20, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH5_02_DAT, - SC_WAIT_ON_TIMER, 20, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,420*16,30*16,40, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, SC_STOP @@ -543,111 +666,174 @@ static const int s_FMAC5EndScript[]= SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT, // Scene 1 - Shade Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 30, // Scene 2 - SB arrives outside Shady Shoals - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,16*16,30*16,96, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT, // Scene 3 - SB Fixing TV - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,224*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,220*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1, SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, - SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,208*16,30*16, + SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,205*16,30*16, - SC_SNAP_CAMERA_TO, 197*16,16*16, + SC_SNAP_CAMERA_TO, 197*16,18*16, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_FIXTV,1, + SC_WAIT_ON_TIMER, 60, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, - SC_WAIT_ON_TIMER, 10, - SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, - + SC_WAIT_ON_TIMER, 60, // Scene 4 - Goes to BB, and collects his prize - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,16, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,44, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_02_DAT, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,154, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, // Scene 5 - SB leaves Shady Shoals - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_TIMER, 30, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,4*16,30*16, SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, - SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,144, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,72, SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, // Scene 6 - Back in shady - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,207*16,30*16, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,208*16,(30*16)+8, SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, - SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE, - SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,212*16,30*16, - SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1, - SC_SNAP_CAMERA_TO, 197*16,16*16, - SC_WAIT_ON_TIMER, 60, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,211*16,(30*16)+8, + SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, + SC_SNAP_CAMERA_TO, 197*16,18*16, + SC_WAIT_ON_TIMER, 120, // Scene 7 - TV goes pop // Scene 8 - Outside, MM & BB SCREEEEEEEEEEEEEEEAM - SC_SNAP_CAMERA_TO, 4*16,16*16, + SC_SNAP_CAMERA_TO, 4*16,18*16, SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT, SC_STOP }; +/*****************************************************************************/ +/*** Plankton FMA ************************************************************/ +/*****************************************************************************/ -// Actor graphics data -static const ACTOR_GRAPHICS_DATA s_actorGraphicsData[FMA_NUM_ACTORS]= +static const int s_FMAPlanktonScript[]= { - { ACTORS_SPONGEBOB_SBK, { ANIM_SPONGEBOB_IDLEBREATH, ANIM_SPONGEBOB_RUN } }, // ACTOR_SPONGEBOB - { ACTORS_MERMAIDMAN_SBK, { ANIM_MERMAIDMAN_IDLEBREATHE, ANIM_MERMAIDMAN_IDLEBREATHE } }, // ACTOR_MM - { ACTORS_BARNACLEBOY_SBK, { ANIM_BARNACLEBOY_IDLEBREATHE, ANIM_BARNACLEBOY_IDLEBREATHE } }, // ACTOR_BB - { ACTORS_GARY_SBK, { ANIM_GARY_IDLE, ANIM_GARY_IDLE/*ANIM_GARY_SLITHER*/ } }, // ACTOR_GARY + SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT, + SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT, + SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_02_DAT, + SC_REGISTER_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT, + +// Scene 1 - Shade Shoals + SC_SNAP_CAMERA_TO, 4*16,18*16, + SC_WAIT_ON_TIMER, 30, + +// Scene 2 - SB arrives outside Shady Shoals + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,1, + SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_SPONGEBOB,true, + + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,16*16,30*16,96, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_00_DAT, + +// Scene 3 - SB Fixing TV + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_IDLE,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,224*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_MM,1, + SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_MM,true, + + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_IDLE,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,220*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_BB,1, + SC_SET_ACTOR_VISIBILITY, FMA_ACTOR_BB,true, + + SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,205*16,30*16, + + SC_SNAP_CAMERA_TO, 197*16,18*16, + + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_FIXTV,1, + SC_WAIT_ON_TIMER, 60, + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_01_DAT, + SC_WAIT_ON_TIMER, 60, + +// Scene 4 - Goes to BB, and collects his prize + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,216*16,30*16,44, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_IDLE,1, + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_02_DAT, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_QUICKEXIT,0, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + SC_WAIT_ON_ACTOR_ANIM, FMA_ACTOR_SPONGEBOB, + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,240*16,30*16,40, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, + +// Scene 5 - SB leaves Shady Shoals + SC_SNAP_CAMERA_TO, 4*16,18*16, + SC_WAIT_ON_TIMER, 30, + + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_SPONGEBOB,FMA_ANIM_WALK,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_SPONGEBOB,4*16,30*16, + SC_SET_ACTOR_FACING, FMA_ACTOR_SPONGEBOB,0, + + SC_WALK_ACTOR_TO_POSITION, FMA_ACTOR_SPONGEBOB,40*16,30*16,72, + SC_WAIT_ON_ACTOR_STOP, FMA_ACTOR_SPONGEBOB, + +// Scene 6 - Back in shady + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_MM,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_MM,208*16,(30*16)+8, + SC_SET_ACTOR_FACING, FMA_ACTOR_MM,0, + SC_SET_ACTOR_ANIM_STATE, FMA_ACTOR_BB,FMA_ANIM_SIT,1, + SC_SET_ACTOR_POSITION, FMA_ACTOR_BB,211*16,(30*16)+8, + SC_SET_ACTOR_FACING, FMA_ACTOR_BB,0, + SC_SNAP_CAMERA_TO, 197*16,18*16, + SC_WAIT_ON_TIMER, 120, + +// Scene 7 - TV goes pop + +// Scene 8 - Outside, MM & BB SCREEEEEEEEEEEEEEEAM + SC_SNAP_CAMERA_TO, 4*16,18*16, + SC_WAIT_ON_CONVERSATION, SCRIPTS_FMA_CH6_03_DAT, + + SC_STOP }; - -ACTOR_DATA m_actorData[FMA_NUM_ACTORS]; - - static const int *s_fmaScripts[CFmaScene::NUM_FMA_SCRIPTS]= { s_FMAIntroScript, @@ -656,16 +842,11 @@ static const int *s_fmaScripts[CFmaScene::NUM_FMA_SCRIPTS]= s_FMAC3EndScript, s_FMAC4EndScript, s_FMAC5EndScript, + s_FMAPlanktonScript, }; static CFmaScene::FMA_SCRIPT_NUMBER s_chosenScript=CFmaScene::FMA_SCRIPT__INTRO; - - -#include "pad\pads.h" -#include "gfx\font.h" - - /*---------------------------------------------------------------------- Function: Purpose: @@ -682,7 +863,15 @@ void CFmaScene::init() CConversation::init(); m_level=new ("FMALevel") CLevel(); - m_level->init(25); + if (s_chosenScript==FMA_SCRIPT__PLANKTON) + { + m_level->init(26); + } + else + { + m_level->init(25); + } + m_cameraPos.vx=30; m_cameraPos.vy=280; @@ -693,9 +882,19 @@ void CFmaScene::init() actor=m_actorData; for(i=0;im_gfx=CActorPool::GetActor(s_actorGraphicsData[i].m_file); + for (int b=0; b<2; b++) + { // Load banks + actor->m_gfx[b]=0; + if (s_actorGraphicsData[i].m_file[b]) + { + actor->m_gfx[b]=CActorPool::GetActor(s_actorGraphicsData[i].m_file[b]); + } + } + + actor->m_active=false; actor->m_animState=FMA_ANIM_IDLE; + actor->m_animLoop=0; actor->m_animFrame=0; actor->m_pos.vx=0; actor->m_pos.vy=0; @@ -725,7 +924,10 @@ void CFmaScene::shutdown() { for(int i=0;irender(); @@ -761,7 +965,9 @@ void CFmaScene::render() DVECTOR pos; pos.vx=actor->m_pos.vx-m_cameraPos.vx; pos.vy=actor->m_pos.vy-m_cameraPos.vy; - actor->m_gfx->Render(pos,s_actorGraphicsData[i].m_anims[actor->m_animState],actor->m_animFrame,actor->m_facing); + int AnimBank=s_actorGraphicsData[i].m_anims[actor->m_animState].Bank; + int AnimNo=s_actorGraphicsData[i].m_anims[actor->m_animState].Anim; + actor->m_gfx[AnimBank]->Render(pos,AnimNo,actor->m_animFrame,actor->m_facing); } actor++; } @@ -790,23 +996,21 @@ delete font; void CFmaScene::think(int _frames) { #if defined (__USER_paul__) || defined (__USER_daveo__) - if(PadGetHeld(0)&PAD_UP) + if (PadGetHeld(0)&PAD_L1) { - m_cameraPos.vy-=16; - } - else if(PadGetHeld(0)&PAD_DOWN) - { - m_cameraPos.vy+=16; - } - else if(PadGetHeld(0)&PAD_LEFT) - { - m_cameraPos.vx-=16; - } - else if(PadGetHeld(0)&PAD_RIGHT) - { - m_cameraPos.vx+=16; + if(PadGetHeld(0)&PAD_UP) m_cameraPos.vy-=16; + if(PadGetHeld(0)&PAD_DOWN) m_cameraPos.vy+=16; + if(PadGetHeld(0)&PAD_LEFT) m_cameraPos.vx-=16; + if(PadGetHeld(0)&PAD_RIGHT) m_cameraPos.vx+=16; } #endif + + if(PadGetHeld(0) & PAD_START) + { // Give player an exit option!! + m_scriptRunning=false; + m_doOtherProcessing=true; + } + if(m_scriptRunning==false&&!m_readyToShutdown) { startShutdown(); @@ -849,9 +1053,20 @@ void CFmaScene::think(int _frames) // Anim actor->m_animFrame++; - if(actor->m_animFrame>=actor->m_gfx->getFrameCount(s_actorGraphicsData[i].m_anims[actor->m_animState])) + int AnimBank=s_actorGraphicsData[i].m_anims[actor->m_animState].Bank; + int AnimNo=s_actorGraphicsData[i].m_anims[actor->m_animState].Anim; + int LastFrame=actor->m_gfx[AnimBank]->getFrameCount(AnimNo)-1; + if(actor->m_animFrame>=LastFrame) { - actor->m_animFrame=0; + if (actor->m_animLoop) + { // Loop anim + actor->m_animFrame=0; + } + else + { // hold on last frame + actor->m_animFrame=LastFrame; + } + } actor++; @@ -985,6 +1200,10 @@ void CFmaScene::startNextScriptCommand() m_stillProcessingCommand=true; break; + case SC_WAIT_ON_ACTOR_ANIM: // actor + m_stillProcessingCommand=true; + break; + case SC_WAIT_ON_CAMERA_STOP: // m_stillProcessingCommand=true; break; @@ -1028,6 +1247,8 @@ void CFmaScene::startNextScriptCommand() m_pc++; actor=&m_actorData[*m_pc++]; actor->m_animState=*m_pc++; + actor->m_animLoop=*m_pc++; + actor->m_animFrame=0; } break; @@ -1103,6 +1324,25 @@ void CFmaScene::processCurrentScriptCommand() } break; + case SC_WAIT_ON_ACTOR_ANIM: // actor + { + int ThisActor=*(m_pc+1); + ACTOR_DATA *actor=&m_actorData[ThisActor]; + int AnimBank=s_actorGraphicsData[ThisActor].m_anims[actor->m_animState].Bank; + int AnimNo=s_actorGraphicsData[ThisActor].m_anims[actor->m_animState].Anim; + int LastFrame=actor->m_gfx[AnimBank]->getFrameCount(AnimNo)-1; + if(actor->m_animFrame>=LastFrame) + { + m_pc+=2; + m_stillProcessingCommand=false; + } + else + { + m_doOtherProcessing=true; + } + } + break; + case SC_WAIT_ON_CAMERA_STOP: // if(!m_cameraMoving) { diff --git a/source/fma/fma.h b/source/fma/fma.h index 3ee0a30ca..04b98bc0f 100644 --- a/source/fma/fma.h +++ b/source/fma/fma.h @@ -49,6 +49,7 @@ public: FMA_SCRIPT__CH3FINISHED, FMA_SCRIPT__CH4FINISHED, FMA_SCRIPT__CH5FINISHED, + FMA_SCRIPT__PLANKTON, NUM_FMA_SCRIPTS, FMA_SCRIPT__NONE, }FMA_SCRIPT_NUMBER;