This is a sub-page of Development:Sonic the Hedgehog 4: Episode I.
|
|
To do:
|
|
|
'...But what does it mean?' |
The demo version has some unused code.
Developmer Comments#
/*****************************************************************************/
/* Sonic4_AppMain.cpp Author : Syuichi Gotou */
/* Copyright(c) 2009 Dimps CORP. All Rights Reserved. */
/*---------------------------------------------------------------------------*/
/* iPhone アプリケーションメイン */
/*---------------------------------------------------------------------------*/
/* Date Ver Comment */
/* 090630- 0.01 first version */
/*****************************************************************************/
Commented Code#
Enemy#
//// パケット送信
//GmEnemyPacketSet( pWork, pPlayer, GMD_ENEMY_STATE_DAMAGE);
//// プレイヤー特殊跳ね返り
//if ( pPlayer && ply_work->obj_work.obj_type == GMD_OBJTYPE_PLAYER) {
// GmPlayerAtkReactionRefInit( pPlayer );
// return;
//}
Enemy Packet.
Player#
// #endif of #if defined(MTD_DEBUG) // デバッグ版
// g_obj.drawflag |= NND_DRAWOBJ_FRAGPARALIGHT1 | NND_DRAWOBJ_SHADER_VERTEXBLEND;
// g_obj.load_drawflag |= NND_DRAWOBJ_FRAGPARALIGHT1 | NND_DRAWOBJ_SHADER_VERTEXBLEND;
// g_obj.drawflag |= (NND_DRAWOBJ_MATCTRL_DIFFUSE | NND_DRAWOBJ_MATCTRL_AMBIENT);
// g_obj.drawflag |= (NND_DRAWOBJ_MATCTRL_ALPHA | NND_DRAWOBJ_MATCTRL_BLEND);
// g_obj.drawflag |= NND_DRAWOBJ_MATCTRL_TEXOFFSET;
// if (!GmMainIsCreateDHB()) {
// ply_work->gmk_flag &= ~GMD_PLGF_DH_BOARD;
// }
// プレイヤー中心へ移動完了◆
// GmMapCamExternOpExitX((MTE_GE2_TYPE)ply_work->camera_no);
// GmMapCamExternOpExitY((MTE_GE2_TYPE)ply_work->camera_no);
// タイマ等初期化
//ply_work->lFrontWallPosY = 0;
//ply_work->lFrontWallPosZ = 0;
// ply_work->tension_combo_timer = 0;
// ply_work->tension_combo = 0;
// SE
//GmSoundPlaySE("Damage1");
//GmSoundPlaySE("Damage2"); 針◆
//GmSoundPlaySE("Damage3"); 水
// // 針ダメージの時、針の音を鳴らす
// if ( pDamage->hit_flag & GMD_OBJ_RECT_HIT_FLAG_NEEDLE ) {
// GmSoundPlayArcSe( &ply_work->h_snd_se, Game_SE, SE_Toge );
// }
// /* テンション設定 */
// if ( !(ply_work->player_flag & GMD_PLF_BARRIER ) ) {
// // テンション減少
// GmPlayerTensionGet( ply_work, -GMD_PLAYER_TRICK_DAMAGE );
// GmFixSetTensionAct((s16)(ply_work->tension >> GMD_PLAYER_TENSION_SHIFT), GMD_FIX_TENSION_DEC_ANIM_VIBRATION);
// }
/* ダメージ設定 */
====Sonic Rush leftover code====
//ply_work->hover_timer = GMD_PL_BLAZE_HOVER_TIME;
// // SE
// switch ( ply_work->char_no ) {
// default:
// // Voice
// GmSoundPlayArcSe( &ply_work->h_snd_se, Game_SE, SE_Owa );
// break;
// case GSD_PLAYER_BLAZE:
// // Voice
// GmSoundPlayArcSe( &ply_work->h_snd_se, Game_SE, SE_Ups );
// break;
// }
A possible leftover snippet of code from Sonic Rush, based on the mentions of Blaze the Cat and her hovering ability. Given Sonic the Hedgehog 4: Episode I reuses Sonic Rush's physics engine, it's not very out of place.
Stage Select#
//#include "dbgPadEmu.hpp" //フリックの操作とデバッグパッドが混線する
Probably to include a debug pad.
// u32 has_emerald[24]; //!< 各ステージで取得したエメラルドの情報
This is supposed to be info determining how many Chaos Emeralds are obtained in a stage.
//mppAchievementSupport::get()->event_LoseRingCounterClear();//sss - bad
commented, because it was "bad".
/*
if(true) {//test2 time att
main_work->record_time[iii] = 6000+iii;
main_work->hi_score[iii] = 5000+iii;
}*/
A commented "Time Attack" test, which shows the record time and the high score.
s32 dmStgSlctGetRevisedStageNo(s32 idx, s32 diff, s32 zone_no)
{
s32 result;
s32 src = 0;
s32 dst = 0;
result = (int)idx + diff;
src = dm_stgslct_zone_act_num_tbl[zone_no][0];
dst = src + dm_stgslct_zone_act_num_tbl[zone_no][1];
// 先頭から一つ戻ると最後に移動
if (result < src) {
result = (int)(dst - 1);
}
// 最後から一つ進むと先頭に移動
if (result >= dst) {
result = src;
}
MTM_ASSERT(result >= src && result < dst);
return result;
}
*/
===Motobug===
//ObjObjectAction3dNNModelLoad(obj_work, &ene_work->obj_3d,
// NULL/*data_work*/, NULL/*model_data_path*/,
// IDB_ENE_MOTORA_MDL_ENE_MOTORA_ZNO/*index*/,
// ObjDataGet(GMD_DWORK_NO_ENEMY_MOTORA_MODEL)->pData/*archive*/,
// NULL/*tex_data_path*/, ObjDataGet(GMD_DWORK_NO_ENEMY_MOTORA_TEX)->pData,
// NND_DRAWOBJ_SHADER_USER_PROFILE_TOON);
===Burrobot=== Japanese name, "Mogurin". Referred to as "Mogu".
|
Prototype |
Final |
|---|---|
|
|
//ObjDrawObjectActionSet(obj_work, IDB_ENE_MOGU_MTN_ENE_MOGU_FRIP_ZNM);
// 移動速度設定
//obj_work->spd.x = 0;
A parameter for Speed X.
//ObjDrawObjectActionSet(obj_work, IDB_ENE_MOGU_MTN_ENE_MOGU_FW_ZNM);
// len = FX_F32_TO_FX32( GMD_ENE_MOGU_LENGTH_SEARCH_PLAYER * GMD_ENE_MOGU_LENGTH_SEARCH_PLAYER )+1;
//ObjDrawObjectActionSet(obj_work, IDB_ENE_MOGU_MTN_ENE_MOGU_MOVE_ZNM);
// ObjDrawObjectActionSet(obj_work, IDB_ENE_MOGU_MTN_ENE_MOGU_JUMP_02_ZNM);
// obj_work->ppFunc = gmEneMoguWalkInit;
//GmEneComActionSetDependHFlip(obj_work, IDB_ENE_MOGU_MTN_ENE_MOGU_MOVE_ZNM, IDB_ENE_MOGU_MTN_ENE_MOGU_MOVE_L_ZNM);
/*
obj_work->move_flag &= ~OBD_MOVE_FRONT;
// 移動速度設定
if (obj_work->disp_flag & OBD_DISP_HFLIP) {
obj_work->spd.x = -GMD_ENE_MOGU_MOVE_SPD_X;
}
else {
obj_work->spd.x = GMD_ENE_MOGU_MOVE_SPD_X;
}
*/
Again, more X Speed parameters.
/*
ランダムで泡発生
efct_work = GmEfctCmnEsCreate(&ply_work->obj_work, GME_EFCT_CMN_IDX_BUBBLE);
// 親クリア
efct_work->efct_com.obj_work.parent_obj = NULL;
*/
An unused effect that appears to create sets of bubbles.
//obj_work->move_flag |= OBD_MOVE_NOMOVE | OBD_MOVE_NOCOL; // 移動無し 地形あたり無し
//obj_work->disp_flag |= OBD_DISP_NODIRFLIP;
// 地形あたり
//ObjObjectFieldRectSet(obj_work, -4, -8, 4, -2);
//ObjObjectFieldRectSet(obj_work, -4, -8, 4, -2);
//rect_work->ppDef = gmGmkSpringDefFunc;
//rect_work->ppHit = NULL;
//ObjRectAtkSet(rect_work, 0/*flag*/, 0/*power*/);
//ObjRectDefSet(rect_work, GMD_OBJ_RECT_DEF_FLAG_WEAK_BODYATK, GMD_OBJ_RECT_DEF_POWER_DEFAULT);
//static void gmEneMoguFwInit(OBS_OBJECT_WORK *obj_work);
//static void gmEneMoguFwMain(OBS_OBJECT_WORK *obj_work);
BukuBuku#
// GMS_EFFECT_3DES_WORK* efct_work;
// efct_work = GmEfctEneEsCreate( obj_work, GME_EFCT_ENE_IDX_E10_BUKUBUKU);
//efct_work = GmEfctCmnEsCreate( obj_work, GME_EFCT_CMN_IDX_BUBBLE);
// efct_work->efct_com.obj_work.pos.x = obj_work->pos.x;
// efct_work->efct_com.obj_work.pos.y = obj_work->pos.y;
/*
// 尾っぽにつける
if (obj_work->disp_flag & OBD_DISP_HFLIP) {
GmComEfctSetDispOffsetF(efct_work, 15.f, 0.f, 0.f);
// GmEffect3DESAddDispOffset(efct_work, 80.0f, 0.0f, 0.0f);
// efct_work->efct_com.obj_work.pos.x += FX_F32_TO_FX32( 50 );
}else{
GmComEfctSetDispOffsetF(efct_work, -15.f, 0.f, 0.f);
// GmEffect3DESAddDispOffset(efct_work, -80.0f, 0.0f, 0.0f);
// efct_work->efct_com.obj_work.pos.x -= FX_F32_TO_FX32( 50 );
}
efct_work->efct_com.obj_work.ppFunc = gmEneBukuEfctBubbleMain;
efct_work->efct_com.obj_work.move_flag &= ~OBD_MOVE_NOMOVE;
// efct_work->obj_3des.flag |= OBD_ACTFLAG_3D_ES_PARTICLE_DEPEND;
*/
This badnik is supposed to have tail effects.
Boss2 (Casino Street Eggman)#
//static void gmBoss2BodyCatchChangeNeedleModeTimer( void );
//ѓ^Ѓ[ѓ“”»’и
/*if ( gmBoss2BodyPinBallCheckTurn(body_work) ){
Angle16 dest_angle;
BOOL flag_positive;
//‰E‚ЙЊь‚©‚¤
if ( obj_work->disp_flag & OBD_DISP_HFLIP ){
obj_work->disp_flag &= ~OBD_DISP_HFLIP;
dest_angle = GMD_BOSS2_ANGLE_RIGHT;
flag_positive = TRUE;
}
//Ќ¶‚ЙЊь‚©‚¤
else {
obj_work->disp_flag |= OBD_DISP_HFLIP;
dest_angle = GMD_BOSS2_ANGLE_LEFT;
flag_positive = FALSE;
}
//•ыЊь“]Љ·
gmBoss2BodyInitTurn(
body_work,
dest_angle,
GMD_BOSS2_BODY_PINBALL_FRAME_TURN,
flag_positive );
}
Float frame = gmBoss2BodyUpdateTurn(body_work);
//ѓ^Ѓ[ѓ“’†
if ( 0 < frame ){
return;
}*/
//Њь‚«
/*void gmBoss2EffScatterSetParamSpin( OBS_OBJECT_WORK* obj_work )
{
GMS_BOSS2_EFFECT_SCATTER_WORK* scatter_work = (GMS_BOSS2_EFFECT_SCATTER_WORK*)obj_work;
//‰с“]
nnMakeUnitQuaternion( &scatter_work->spin_quat );
for (Sint32 i = 0; i < 2; ++i) {
// ѓ‰ѓ“ѓ_ѓЂ‚И‰с“]ЋІ‚рђЭ’и
NNS_VECTOR spin_axis;
Float rand_z = FX_FX32_TO_F32( AkMathRandFx() );
Angle16 rand_angle = AKM_DEGtoA16( 360.0f * FX_FX32_TO_F32(AkMathRandFx()) );
AkMathGetRandomUnitVector( &spin_axis, rand_z, rand_angle );
AMS_QUAT diff_rot;
nnMakeRotateAxisQuaternion(
&diff_rot,
spin_axis.x,
spin_axis.y,
spin_axis.z,
AKM_DEGtoA32(5.0f) );
nnMultiplyQuaternion( &scatter_work->spin_quat, &diff_rot, &scatter_work->spin_quat );
}
}*/
===Boss4Chibi (Eggman's Mini Eggmans)===
//#define T_FUNC_SUB(func, w) {static void func(GMS_BOSS4_CAP_WORK*); w->proc_update = func;}
// ワーク設定
// TODO : 未実装
// ライフ無し
// 地形当たり無し
//obj_work->move_flag |= OBD_MOVE_NOCOL;
Appears to be object work parameters. It's never finished.
/*
ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_BODY].flag = OBD_RECT_GROUP | OBD_RECT_NODAMAGE | OBD_RECT_NOHIT_UP | OBD_RECT_NOAUTO_ENABLEOFF;
ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_BODY].ppHit = gmBoss4ChibiDefHitFunc;
ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_BODY].flag |= OBD_RECT_ENABLE;
ObjRectGroupSet( &ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_BODY], GMD_OBJ_RECT_GROUP_PLAYER, GMD_OBJ_RECT_TARGET_GROUPFLAG_ENEMY );
*/
// ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_BODY].flag &= ~OBD_RECT_ENABLE;
// TODO : 食らい当たり設定 仮
// ObjRectWorkSet(&ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_DEF], -24, -24, 24, 24);
// ene_3d->ene_com.rect_work[GMD_ENEMY_RECT_DEF].ppDef = gmBoss4CapsuleDamageDefFunc;
A setting for hit and run.
// 爆発時間を0に設定(足しこむ方式)
// chibi_work->wait = 0;
// 鉄球のなにもしない処理切り替え
// T_FUNC( gmBoss4ChibiBomb2, obj_work );
Explosion parameters, presumably for Pinch Mode of the boss?