diff --git a/src/SB/Core/gc/iSystem.cpp b/src/SB/Core/gc/iSystem.cpp index 93ac40410..846e6090f 100644 --- a/src/SB/Core/gc/iSystem.cpp +++ b/src/SB/Core/gc/iSystem.cpp @@ -25,7 +25,27 @@ extern void* MemoryFunctions[4]; extern U16 last_error; extern OSContext* last_context; -extern char stringBase0[]; +// Taken from iSystem.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "Level %d, Warning $03d: %s\n"; +char* str2 = "FPE: Invalid operation: "; +char* str3 = "SNaN\n"; +char* str4 = "Infinity - Infinity\n"; +char* str5 = "Infinity / Infinity\n"; +char* str6 = "0 / 0\n"; +char* str7 = "Infinity * 0\n"; +char* str8 = "Invalid compare\n"; +char* str9 = "Software request\n"; +char* str10 = "Invalid square root\n"; +char* str11 = "Invalid integer convert\n"; +char* str12 = "FPE: Overflow\n"; +char* str13 = "FPE: Underflow\n"; +char* str14 = "FPE: Zero division\n"; +char* str15 = "FPE: Inexact result\n"; +char* str16 = "iSystem.cpp"; +char* str17 = "Unable to initialize memory system.\n"; +char* str18 = "(With apologies to Jim Morrison) This the end, my only friend, The End."; +char* str19 = "%s.rw3"; void** psGetMemoryFunctions() { @@ -87,9 +107,9 @@ void iSystemExit() xMemExit(); OSPanic ( - stringBase0 + 0x113, // "iSystem.cpp" - 0x21d, - stringBase0 + 0x144 // "(With apologies to Jim Morrison) This the end, my only friend, The End." + "iSystem.cpp", + '!', + "(With apologies to Jim Morrison) This the end, my only friend, The End." ); } diff --git a/src/SB/Game/zEntCruiseBubble.cpp b/src/SB/Game/zEntCruiseBubble.cpp index 72fb971f3..e3197256a 100644 --- a/src/SB/Game/zEntCruiseBubble.cpp +++ b/src/SB/Game/zEntCruiseBubble.cpp @@ -107,10 +107,6 @@ namespace cruise_bubble // U8 (*hazard_check)(NPCHazard&, void*); // U8 (*hazard_check)(NPCHazard&, void*); // S32 gGridIterActive; - - extern const char stringBase0 - []; // "Idle01\0Idle02\0Idle03\0Idle04\0Idle05\0Idle06\0Idle07\0Idle08\0Idle09\0Idle10\0Idle11\0Idle12\0Idle13\0SlipIdle01\0Inactive01\0Inactive02\0Inactive03\0Inactive04\0Inactive05\0Inactive06\0Inactive07\0Inactive08\0Inactive09\0Inactive10\0Walk01\0Run01\0Run02\0Run03\0Land01\0LandRun01\0LandHigh01\0WallLand01\0Hit01\0Hit02\0Hit03\0Hit04\0Hit05\0SB_cruise_start\0SB_cruise_hit\0SB_cruise_nav_loop\0cruise_bubble_bind.MINF\0lightning\0Wake Ribbon 0\0Player|Cruise Bubble|Wake Ribbon 0|\0Wake Ribbon 1\0Player|Cruise Bubble|Wake Ribbon 1|\0par_cruise_explode\0Cruise Bubble Explosion\0cruise_bubble_droplet_shrapnel\0.minf\0.dff\0ui_3dicon_reticle\0ui_3dicon_target_lock\0ui_3dicon_missile_frame02\0%02d:%02d\0aura2\0aim_delay\0player.halt_time\0player.aim.turn_speed\0player.aim.anim_delta\0player.fire.delay_wand\0missle.life\0missle.hit_dist\0missle.crash_angle\0missle.collide_twist\0missle.hit_tests\0missle.appear.delay_show\0missle.appear.delay_fly\0missle.appear.offset\0missle.fly.accel\0missle.fly.max_vel\0missle.fly.engine_pitch_max\0missle.fly.engine_pitch_sensitivity\0missle.fly.flash_interval\0missle.fly.turn.xdelta\0missle.fly.turn.ydelta\0missle.fly.turn.xdecay\0missle.fly.turn.ydecay\0missle.fly.turn.ybound\0missle.fly.turn.roll_frac\0missle.explode.hit_radius\0missle.explode.hit_duration\0camera.aim.dist\0camera.aim.height\0camera.aim.pitch\0camera.aim.accel\0camera.aim.max_vel\0camera.aim.stick_decel\0camera.aim.stick_accel\0camera.aim.stick_max_vel\0camera.aim.turn_speed\0camera.seize.delay\0camera.seize.blend_time\0camera.seize.fade_dist\0camera.seize.hide_dist\0camera.seize.fov\0camera.survey.duration\0camera.survey.min_duration\0camera.survey.min_dist\0camera.survey.cut_dist\0camera.survey.drift_dist\0camera.survey.drift_softness\0camera.survey.jerk_offset\0camera.survey.jerk_deflect\0camera.restore.control_delay\0material.env_alpha\0material.env_coeff\0material.fresnel_alpha\0material.fresnel_coeff\0reticle.dist_min\0reticle.dist_max\0reticle.ang_show\0reticle.ang_hide\0reticle.delay_retarget\0trail.sample_rate\0trail.bubble_rate\0trail.bubble_emit_radius\0trail.wake_emit_radius\0blast.emit\0blast.radius\0blast.vel\0blast.rand_vel\0droplet.dist_min\0droplet.dist_max\0droplet.emit_min\0droplet.emit_max\0droplet.vel_min\0droplet.vel_max\0droplet.vel_perturb\0droplet.vel_angle\0droplet.rot_vel_max\0hud.glow_size\0hud.time_fade\0hud.time_glow\0hud.wind.size\0hud.wind.du\0hud.wind.dv\0hud.reticle.size\0hud.target.size\0hud.timer.font\0hud.timer.font_width\0hud.timer.font_height\0hud.timer.x\0hud.timer.y\0hud.timer.glow_size\0dialog.freq\0dialog.decay\0dialog.min_freq\0gloss_edge\0rainbowfilm_smooth32\0cruise_bubble_aim\0cruise_bubble_fire\0cruise_bubble_idle\0cruise_bubble_aim cruise_bubble_fire cruise_bubble_idle\0Cruise Bubble\0fire\0fly\0\0\0\0" - } // namespace cruise_bubble extern F32 zEntCruiseBubble_f_0_0; // 0.0 @@ -726,17 +722,13 @@ namespace cruise_bubble void init_shrapnel() { - shared.droplet_shrapnel = (zShrapnelAsset*)xSTFindAsset(xStrHash(stringBase0 + 0x214), NULL); + shared.droplet_shrapnel = (zShrapnelAsset*)xSTFindAsset(xStrHash("cruise_bubble_droplet_shrapnel"), NULL); } void init_wake_ribbons() { - // stringBase0 + 0x185 == "Wake Ribbon 0" - // stringBase0 + 0x193 == "Player|Cruise Bubble|Wake Ribbon 0|" - wake_ribbon[0].init(stringBase0 + 0x185, stringBase0 + 0x193); - // stringBase0 + 0x1b7 == "Wake Ribbon 1" - // stringBase0 + 0x1c5 == "Player|Cruise Bubble|Wake Ribbon 1|" - wake_ribbon[1].init(stringBase0 + 0x1b7, stringBase0 + 0x1c5); + wake_ribbon[0].init("Wake Ribbon 0", "Player|Cruise Bubble|Wake Ribbon 0|"); + wake_ribbon[1].init("Wake Ribbon 1", "Player|Cruise Bubble|Wake Ribbon 1|"); cruise_bubble::reset_wake_ribbons(); } @@ -837,8 +829,7 @@ namespace cruise_bubble void load_settings() { U32 params_size; - // stringBase0 + 0x163 == "cruise_bubble_bind.MINF" - xModelAssetParam* params = zEntGetModelParams(xStrHash(stringBase0 + 0x163), ¶ms_size); + xModelAssetParam* params = zEntGetModelParams(xStrHash("cruise_bubble_bind.MINF"), ¶ms_size); if (params == NULL) { @@ -950,7 +941,7 @@ namespace cruise_bubble xModelInstance* model; U32 size; - model = (xModelInstance*)xSTFindAsset(xStrHashCat(aid, stringBase0 + 0x233), &size); + model = (xModelInstance*)xSTFindAsset(xStrHashCat(aid, ".minf"), &size); if (model != NULL) { model = zEntRecurseModelInfo(model, NULL); @@ -960,7 +951,7 @@ namespace cruise_bubble model = (xModelInstance*)xSTFindAsset(aid, &size); if (model == NULL) { - model = (xModelInstance*)xSTFindAsset(xStrHashCat(aid, stringBase0 + 0x239), &size); + model = (xModelInstance*)xSTFindAsset(xStrHashCat(aid, ".dff"), &size); } if (model == NULL) { @@ -996,14 +987,13 @@ namespace cruise_bubble { explode_decal.cfg.life_time = zEntCruiseBubble_f_0_5; explode_decal.set_curve(&explode_curve[0], 3); - // stringBase0 + 0x1e9 == "par_cruise_explode" - explode_decal.set_texture(stringBase0 + 0x1e9); + explode_decal.set_texture("par_cruise_explode"); } else { explode_decal.cfg.life_time = zEntCruiseBubble_f_0_5; explode_decal.set_curve(&cheat_explode_curve[0], 3); - explode_decal.set_texture(stringBase0 + 0x1e9); + explode_decal.set_texture("par_cruise_explode"); } explode_decal.refresh_config(); } @@ -1153,8 +1143,7 @@ namespace cruise_bubble void init_missle_model() { - // stringBase0 + 0x163 == "cruise_bubble_bind.MINF" - U32 aid = xStrHash(stringBase0 + 0x163); + U32 aid = xStrHash("cruise_bubble_bind.MINF"); xEnt* ent = (xEnt*)xSTFindAsset(aid, NULL); xModelInstance* model = zEntRecurseModelInfo(ent, NULL); @@ -1288,9 +1277,6 @@ cruise_bubble::state_player_halt::state_player_halt() : state_type(STATE_PLAYER_ } #ifdef NON_MATCHING -// `stringBase0 + 0x17b` gets cached in r31 where original asm reloads it everytime -// change the offset in every other `stringBase0 + 0x17b` -// and the only difference in the diff will be that new offset void cruise_bubble::reset_wake_ribbons() { wake_ribbon[0].set_default_config(); @@ -1299,9 +1285,8 @@ void cruise_bubble::reset_wake_ribbons() if ((shared.flags & 0x200) == 0) { - // stringBase0 + 0x17b == "lightning" - wake_ribbon[0].set_texture(stringBase0 + 0x17b); - wake_ribbon[1].set_texture(stringBase0 + 0x17b); + wake_ribbon[0].set_texture("lightning"); + wake_ribbon[1].set_texture("lightning"); wake_ribbon[0].set_curve(&wake_ribbon_curve[0], 2); wake_ribbon[1].set_curve(&wake_ribbon_curve[0], 2); @@ -1309,8 +1294,8 @@ void cruise_bubble::reset_wake_ribbons() } else { - wake_ribbon[0].set_texture(stringBase0 + 0x17b); - wake_ribbon[1].set_texture(stringBase0 + 0x17b); + wake_ribbon[0].set_texture("lightning"); + wake_ribbon[1].set_texture("lightning"); wake_ribbon[0].set_curve(&cheat_wake_ribbon_curve[0], 2); wake_ribbon[1].set_curve(&cheat_wake_ribbon_curve[0], 2); @@ -1327,7 +1312,7 @@ void cruise_bubble::reset_wake_ribbons() #ifdef NON_MATCHING void cruise_bubble::init_explode_decal() { - explode_decal.init(1, stringBase0 + 0x1fc); + explode_decal.init(1, "Cruise Bubble Explosion"); explode_decal.set_default_config(); // r0 should be use here @@ -1338,7 +1323,7 @@ void cruise_bubble::init_explode_decal() explode_decal.cfg.blend_dst = 2; explode_decal.set_curve(explode_curve, 3); - explode_decal.set_texture(stringBase0 + 0x1e9); + explode_decal.set_texture("par_cruise_explosion"); explode_decal.refresh_config(); } #endif @@ -1413,12 +1398,9 @@ void init_hud() hud.glow = zEntCruiseBubble_f_0_0; hud.gizmos_used = 0; - // stringBase0 + 0x23e == "ui_3dicon_reticle" - hud.model.reticle = load_model(xStrHash(stringBase0 + 0x23e)); - // stringBase0 + 0x23e == "ui_3dicon_target_lock" - hud.model.target = load_model(xStrHash(stringBase0 + 0x250)); - // stringBase0 + 0x23e == "ui_3dicon_missile_frame02" - hud.model.wind = load_model(xStrHash(stringBase0 + 0x266)); + hud.model.reticle = load_model(xStrHash("ui_3dicon_reticle")); + hud.model.target = load_model(xStrHash("ui_3dicon_target_lock")); + hud.model.wind = load_model(xStrHash("ui_3dicon_missile_frame02")); hud.uv_wind.init(hud.model.wind->Data); hud.uv_wind.offset_vel.assign(current_tweak->hud.wind.du, current_tweak->hud.wind.dv); @@ -1523,8 +1505,7 @@ void cruise_bubble::render_timer(F32 alpha, F32 glow) F32 life = state->life; char buffer[16]; - // stringBase0 + 0x280 == "%02d:%02d" - sprintf(buffer, stringBase0 + 0x280, (S32)life, + sprintf(buffer, "%02d:%02d", (S32)life, ((S32)(zEntCruiseBubble_f_100_0 * life)) - (100 * (S32)life)); F32 dsize = glow * current_tweak->hud.timer.glow_size; @@ -1653,832 +1634,740 @@ void cruise_bubble::tweak_group::register_tweaks(bool init, xModelAssetParam* ap if (init) { this->aim_delay = zEntCruiseBubble_f_0_2; - // stringBase0 + 0x290 == "aim_delay" auto_tweak::load_param(this->aim_delay, 1.0f, zEntCruiseBubble_f_0_0, 1.0f, ap, apsize, - stringBase0 + 0x290); + "aim_delay"); } if (init) { this->player.halt_time = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x29a == "player.halt_time" auto_tweak::load_param(this->player.halt_time, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x29a); + "player.halt_time"); } if (init) { this->player.aim.turn_speed = zEntCruiseBubble_f_0_05; - // stringBase0 + 0x2ab == "player.aim.turn_speed" auto_tweak::load_param(this->player.aim.turn_speed, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x2ab); + ap, apsize, "player.aim.turn_speed"); } if (init) { this->player.aim.anim_delta = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x2c1 == "player.aim.anim_delta" auto_tweak::load_param(this->player.aim.anim_delta, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x2c1); + ap, apsize, "player.aim.anim_delta"); } if (init) { this->player.fire.delay_wand = zEntCruiseBubble_f_0_0667; - // stringBase0 + 0x2d7 == "player.fire.delay_wand" auto_tweak::load_param(this->player.fire.delay_wand, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x2d7); + apsize, "player.fire.delay_wand"); } if (init) { this->missle.life = zEntCruiseBubble_f_6_0; - // stringBase0 + 0x2ee == "missle.life" auto_tweak::load_param(this->missle.life, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x2ee); + ap, apsize, "missle.life"); } if (init) { this->missle.hit_dist = zEntCruiseBubble_f_0_3; - // stringBase0 + 0x2fa == "missle.hit_dist" auto_tweak::load_param(this->missle.hit_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x2fa); + "missle.hit_dist"); } if (init) { this->missle.crash_angle = zEntCruiseBubble_f_30_0; - // stringBase0 + 0x30a == "missle.crash_angle" auto_tweak::load_param(this->missle.crash_angle, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_60_0, ap, - apsize, stringBase0 + 0x30a); + apsize, "missle.crash_angle"); } if (init) { this->missle.collide_twist = zEntCruiseBubble_f_0_025; - // stringBase0 + 0x31d == "missle.collide_twist" auto_tweak::load_param(this->missle.collide_twist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x31d); + "missle.collide_twist"); } if (init) { this->missle.hit_tests = 4; - // stringBase0 + 0x332 == "missle.hit_tests" auto_tweak::load_param(this->missle.hit_tests, 1, 1, 100, ap, apsize, - stringBase0 + 0x332); + "missle.hit_tests"); } if (init) { this->missle.appear.delay_show = zEntCruiseBubble_f_0_1333; - // stringBase0 + 0x343 == "missle.appear.delay_show" auto_tweak::load_param(this->missle.appear.delay_show, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x343); + apsize, "missle.appear.delay_show"); } if (init) { this->missle.appear.delay_fly = zEntCruiseBubble_f_0_667; - // stringBase0 + 0x35c == "missle.appear.delay_fly" auto_tweak::load_param(this->missle.appear.delay_fly, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x35c); + apsize, "missle.appear.delay_fly"); } if (init) { this->missle.appear.offset = xVec3::create( zEntCruiseBubble_f_n0_049, zEntCruiseBubble_f_1_728, zEntCruiseBubble_f_0_922); - // stringBase0 + 0x374 == "missle.appear.offset" auto_tweak::load_param(this->missle.appear.offset, 0, 0, 0, ap, apsize, - stringBase0 + 0x374); + "missle.appear.offset"); } if (init) { this->missle.fly.accel = zEntCruiseBubble_f_6_0; - // stringBase0 + 0x389 == "missle.fly.accel" auto_tweak::load_param(this->missle.fly.accel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x389); + ap, apsize, "missle.fly.accel"); } if (init) { this->missle.fly.max_vel = zEntCruiseBubble_f_12_0; - // stringBase0 + 0x39a == "missle.fly.max_vel" auto_tweak::load_param(this->missle.fly.max_vel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x39a); + ap, apsize, "missle.fly.max_vel"); } if (init) { this->missle.fly.engine_pitch_max = zEntCruiseBubble_f_10_0; - // stringBase0 + 0x3ad == "missle.fly.engine_pitch_max" auto_tweak::load_param(this->missle.fly.engine_pitch_max, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x3ad); + ap, apsize, "missle.fly.engine_pitch_max"); } if (init) { this->missle.fly.engine_pitch_sensitivity = zEntCruiseBubble_f_0_005; - // stringBase0 + 0x3c9 == "missle.fly.engine_pitch_sensitivity" auto_tweak::load_param(this->missle.fly.engine_pitch_sensitivity, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, - zEntCruiseBubble_f_1_0, ap, apsize, stringBase0 + 0x3c9); + zEntCruiseBubble_f_1_0, ap, apsize, "missle.fly.engine_pitch_sensitivity"); } if (init) { this->missle.fly.flash_interval = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x3ed == "missle.fly.flash_interval" auto_tweak::load_param(this->missle.fly.flash_interval, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x3ed); + ap, apsize, "missle.fly.flash_interval"); } if (init) { this->missle.fly.turn.xdelta = zEntCruiseBubble_f_5_0; - // stringBase0 + 0x407 == "missle.fly.turn.xdelta" auto_tweak::load_param(this->missle.fly.turn.xdelta, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x407); + ap, apsize, "missle.fly.turn.xdelta"); } if (init) { this->missle.fly.turn.ydelta = zEntCruiseBubble_f_4_0; - // stringBase0 + 0x41e == "missle.fly.turn.ydelta" auto_tweak::load_param(this->missle.fly.turn.ydelta, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x41e); + ap, apsize, "missle.fly.turn.ydelta"); } if (init) { this->missle.fly.turn.xdecay = zEntCruiseBubble_f_0_99; - // stringBase0 + 0x435 == "missle.fly.turn.xdecay" auto_tweak::load_param(this->missle.fly.turn.xdecay, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x435); + "missle.fly.turn.xdecay"); } if (init) { this->missle.fly.turn.ydecay = zEntCruiseBubble_f_0_99; - // stringBase0 + 0x44c == "missle.fly.turn.ydecay" auto_tweak::load_param(this->missle.fly.turn.ydecay, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x44c); + "missle.fly.turn.ydecay"); } if (init) { this->missle.fly.turn.ybound = zEntCruiseBubble_f_0_6; - // stringBase0 + 0x463 == "missle.fly.turn.ybound" auto_tweak::load_param(this->missle.fly.turn.ybound, zEntCruiseBubble_f_1_5708, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x463); + "missle.fly.turn.ybound"); } if (init) { this->missle.fly.turn.roll_frac = zEntCruiseBubble_f_0_2; - // stringBase0 + 0x47a == "missle.fly.turn.roll_frac" auto_tweak::load_param(this->missle.fly.turn.roll_frac, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n1_0, zEntCruiseBubble_f_1_0, ap, - apsize, stringBase0 + 0x47a); + apsize, "missle.fly.turn.roll_frac"); } if (init) { this->missle.explode.hit_radius = zEntCruiseBubble_f_1_0; - // stringBase0 + 0x494 == "missle.explode.hit_radius" auto_tweak::load_param(this->missle.explode.hit_radius, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x494); + apsize, "missle.explode.hit_radius"); } if (init) { this->missle.explode.hit_duration = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x4ae == "missle.explode.hit_duration" auto_tweak::load_param(this->missle.explode.hit_duration, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x4ae); + apsize, "missle.explode.hit_duration"); } if (init) { this->camera.aim.dist = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x4ca == "camera.aim.dist" auto_tweak::load_param(this->camera.aim.dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x4ca); + apsize, "camera.aim.dist"); } if (init) { this->camera.aim.height = zEntCruiseBubble_f_1_5; - // stringBase0 + 0x4da == "camera.aim.height" auto_tweak::load_param(this->camera.aim.height, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n10_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x4da); + apsize, "camera.aim.height"); } if (init) { this->camera.aim.pitch = zEntCruiseBubble_f_0_0; - // stringBase0 + 0x4ec == "camera.aim.pitch" auto_tweak::load_param(this->camera.aim.pitch, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_n90_0, zEntCruiseBubble_f_90_0, ap, - apsize, stringBase0 + 0x4ec); + apsize, "camera.aim.pitch"); } if (init) { this->camera.aim.accel = zEntCruiseBubble_f_10_0; - // stringBase0 + 0x4fd == "camera.aim.accel" auto_tweak::load_param(this->camera.aim.accel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x4fd); + ap, apsize, "camera.aim.accel"); } if (init) { this->camera.aim.max_vel = zEntCruiseBubble_f_5_0; - // stringBase0 + 0x50e == "camera.aim.max_vel" auto_tweak::load_param(this->camera.aim.max_vel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x50e); + ap, apsize, "camera.aim.max_vel"); } if (init) { this->camera.aim.stick_decel = zEntCruiseBubble_f_720_0; - // stringBase0 + 0x521 == "camera.aim.stick_decel" auto_tweak::load_param(this->camera.aim.stick_decel, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x521); + ap, apsize, "camera.aim.stick_decel"); } if (init) { this->camera.aim.stick_accel = zEntCruiseBubble_f_360_0; - // stringBase0 + 0x538 == "camera.aim.stick_accel" auto_tweak::load_param(this->camera.aim.stick_accel, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x538); + ap, apsize, "camera.aim.stick_accel"); } if (init) { this->camera.aim.stick_max_vel = zEntCruiseBubble_f_135_0; - // stringBase0 + 0x54f == "camera.aim.stick_max_vel" auto_tweak::load_param(this->camera.aim.stick_max_vel, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_01, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x54f); + ap, apsize, "camera.aim.stick_max_vel"); } if (init) { this->camera.aim.turn_speed = zEntCruiseBubble_f_0_2; - // stringBase0 + 0x568 == "camera.aim.turn_speed" auto_tweak::load_param(this->camera.aim.turn_speed, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x568); + ap, apsize, "camera.aim.turn_speed"); } if (init) { this->camera.seize.delay = zEntCruiseBubble_f_0_0; - // stringBase0 + 0x57e == "camera.seize.delay" auto_tweak::load_param(this->camera.seize.delay, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x57e); + ap, apsize, "camera.seize.delay"); } if (init) { this->camera.seize.blend_time = zEntCruiseBubble_f_1_5; - // stringBase0 + 0x591 == "camera.seize.blend_time" auto_tweak::load_param(this->camera.seize.blend_time, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1000000000_0, - ap, apsize, stringBase0 + 0x591); + ap, apsize, "camera.seize.blend_time"); } if (init) { this->camera.seize.fade_dist = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x5a9 == "camera.seize.fade_dist" auto_tweak::load_param(this->camera.seize.fade_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x5a9); + apsize, "camera.seize.fade_dist"); } if (init) { this->camera.seize.hide_dist = zEntCruiseBubble_f_1_0; - // stringBase0 + 0x5c0 == "camera.seize.hide_dist" auto_tweak::load_param(this->camera.seize.hide_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x5c0); + apsize, "camera.seize.hide_dist"); } if (init) { this->camera.seize.fov = zEntCruiseBubble_f_95_0; - // stringBase0 + 0x5d7 == "camera.seize.fov" auto_tweak::load_param(this->camera.seize.fov, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_10_0, zEntCruiseBubble_f_180_0, ap, - apsize, stringBase0 + 0x5d7); + apsize, "camera.seize.fov"); } if (init) { this->camera.survey.duration = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x5e8 == "camera.survey.duration" auto_tweak::load_param(this->camera.survey.duration, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x5e8); + apsize, "camera.survey.duration"); } if (init) { this->camera.survey.min_duration = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x5ff == "camera.survey.min_duration" auto_tweak::load_param(this->camera.survey.min_duration, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x5ff); + apsize, "camera.survey.min_duration"); } if (init) { this->camera.survey.min_dist = zEntCruiseBubble_f_10_0; - // stringBase0 + 0x61a == "camera.survey.min_dist" auto_tweak::load_param(this->camera.survey.min_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x61a); + apsize, "camera.survey.min_dist"); } if (init) { this->camera.survey.cut_dist = zEntCruiseBubble_f_6_0; - // stringBase0 + 0x631 == "camera.survey.cut_dist" auto_tweak::load_param(this->camera.survey.cut_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x631); + apsize, "camera.survey.cut_dist"); } if (init) { this->camera.survey.drift_dist = zEntCruiseBubble_f_8_0; - // stringBase0 + 0x648 == "camera.survey.drift_dist" auto_tweak::load_param(this->camera.survey.drift_dist, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x648); + apsize, "camera.survey.drift_dist"); } if (init) { this->camera.survey.drift_softness = zEntCruiseBubble_f_0_1; - // stringBase0 + 0x661 == "camera.survey.drift_softness" auto_tweak::load_param(this->camera.survey.drift_softness, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_0_5, ap, apsize, - stringBase0 + 0x661); + "camera.survey.drift_softness"); } if (init) { this->camera.survey.jerk_offset = zEntCruiseBubble_f_0_8; - // stringBase0 + 0x67e == "camera.survey.jerk_offset" auto_tweak::load_param(this->camera.survey.jerk_offset, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_2_0, ap, apsize, - stringBase0 + 0x67e); + "camera.survey.jerk_offset"); } if (init) { this->camera.survey.jerk_deflect = zEntCruiseBubble_f_0_6; - // stringBase0 + 0x698 == "camera.survey.jerk_deflect" auto_tweak::load_param(this->camera.survey.jerk_deflect, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x698); + "camera.survey.jerk_deflect"); } if (init) { this->camera.restore.control_delay = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x6b3 == "camera.restore.control_delay" auto_tweak::load_param(this->camera.restore.control_delay, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x6b3); + "camera.restore.control_delay"); } if (init) { this->material.env_alpha = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x6d0 == "material.env_alpha" auto_tweak::load_param(this->material.env_alpha, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x6d0); + "material.env_alpha"); } if (init) { this->material.env_coeff = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x6e3 == "material.env_coeff" auto_tweak::load_param(this->material.env_coeff, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x6e3); + "material.env_coeff"); } if (init) { this->material.fresnel_alpha = zEntCruiseBubble_f_0_0; - // stringBase0 + 0x6f6 == "material.fresnel_alpha" auto_tweak::load_param(this->material.fresnel_alpha, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x6f6); + "material.fresnel_alpha"); } if (init) { this->material.fresnel_coeff = zEntCruiseBubble_f_0_75; - // stringBase0 + 0x70d == "material.fresnel_coeff" auto_tweak::load_param(this->material.fresnel_coeff, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x70d); + "material.fresnel_coeff"); } if (init) { this->reticle.dist_min = zEntCruiseBubble_f_3_0; - // stringBase0 + 0x724 == "reticle.dist_min" auto_tweak::load_param(this->reticle.dist_min, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x724); + apsize, "reticle.dist_min"); } if (init) { this->reticle.dist_max = zEntCruiseBubble_f_30_0; - // stringBase0 + 0x735 == "reticle.dist_max" auto_tweak::load_param(this->reticle.dist_max, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_10000_0, ap, - apsize, stringBase0 + 0x735); + apsize, "reticle.dist_max"); } if (init) { this->reticle.ang_show = zEntCruiseBubble_f_4_0; - // stringBase0 + 0x746 == "reticle.ang_show" auto_tweak::load_param(this->reticle.ang_show, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_90_0, ap, - apsize, stringBase0 + 0x746); + apsize, "reticle.ang_show"); } if (init) { this->reticle.ang_hide = zEntCruiseBubble_f_22_5; - // stringBase0 + 0x757 == "reticle.ang_hide" auto_tweak::load_param(this->reticle.ang_hide, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_90_0, ap, - apsize, stringBase0 + 0x757); + apsize, "reticle.ang_hide"); } if (init) { this->reticle.delay_retarget = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x768 == "reticle.delay_retarget" auto_tweak::load_param(this->reticle.delay_retarget, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_5_0, ap, apsize, - stringBase0 + 0x768); + "reticle.delay_retarget"); } if (init) { this->trail.sample_rate = zEntCruiseBubble_f_60_0; - // stringBase0 + 0x77f == "trail.sample_rate" auto_tweak::load_param(this->trail.sample_rate, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10000_0, ap, - apsize, stringBase0 + 0x77f); + apsize, "trail.sample_rate"); } if (init) { this->trail.bubble_rate = zEntCruiseBubble_f_60_0; - // stringBase0 + 0x791 == "trail.bubble_rate" auto_tweak::load_param(this->trail.bubble_rate, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10000_0, ap, - apsize, stringBase0 + 0x791); + apsize, "trail.bubble_rate"); } if (init) { this->trail.bubble_emit_radius = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x7a3 == "trail.bubble_emit_radius" auto_tweak::load_param(this->trail.bubble_emit_radius, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x7a3); + apsize, "trail.bubble_emit_radius"); } if (init) { this->trail.wake_emit_radius = zEntCruiseBubble_f_0_1; - // stringBase0 + 0x7bc == "trail.wake_emit_radius" auto_tweak::load_param(this->trail.wake_emit_radius, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x7bc); + apsize, "trail.wake_emit_radius"); } if (init) { this->blast.emit = 300; - // stringBase0 + 0x7d3 == "blast.emit" auto_tweak::load_param(this->blast.emit, 1, 0, 0x3e8, ap, apsize, - stringBase0 + 0x7d3); + "blast.emit"); } if (init) { this->blast.radius = zEntCruiseBubble_f_0_0; - // stringBase0 + 0x7de == "blast.radius" auto_tweak::load_param(this->blast.radius, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x7de); + apsize, "blast.radius"); } if (init) { this->blast.vel = zEntCruiseBubble_f_5_0; - // stringBase0 + 0x7eb == "blast.vel" auto_tweak::load_param(this->blast.vel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n100000_0, zEntCruiseBubble_f_100000_0, - ap, apsize, stringBase0 + 0x7eb); + ap, apsize, "blast.vel"); } if (init) { this->blast.rand_vel = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x7f5 == "blast.rand_vel" auto_tweak::load_param(this->blast.rand_vel, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n100000_0, zEntCruiseBubble_f_100000_0, - ap, apsize, stringBase0 + 0x7f5); + ap, apsize, "blast.rand_vel"); } if (init) { this->droplet.dist_min = zEntCruiseBubble_f_1_0; - // stringBase0 + 0x804 == "droplet.dist_min" auto_tweak::load_param(this->droplet.dist_min, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x804); + apsize, "droplet.dist_min"); } if (init) { this->droplet.dist_max = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x815 == "droplet.dist_max" auto_tweak::load_param(this->droplet.dist_max, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x815); + apsize, "droplet.dist_max"); } if (init) { this->droplet.emit_min = 10; - // stringBase0 + 0x826 == "droplet.emit_min" auto_tweak::load_param(this->droplet.emit_min, 1, 0, 0x1e, ap, apsize, - stringBase0 + 0x826); + "droplet.emit_min"); } if (init) { this->droplet.emit_max = 20; - // stringBase0 + 0x837 == "droplet.emit_max" auto_tweak::load_param(this->droplet.emit_max, 1, 0, 0x1e, ap, apsize, - stringBase0 + 0x837); + "droplet.emit_max"); } if (init) { this->droplet.vel_min = zEntCruiseBubble_f_2_0; - // stringBase0 + 0x848 == "droplet.vel_min" auto_tweak::load_param(this->droplet.vel_min, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100000_0, ap, - apsize, stringBase0 + 0x848); + apsize, "droplet.vel_min"); } if (init) { this->droplet.vel_max = zEntCruiseBubble_f_6_0; - // stringBase0 + 0x858 == "droplet.vel_max" auto_tweak::load_param(this->droplet.vel_max, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100000_0, ap, - apsize, stringBase0 + 0x858); + apsize, "droplet.vel_max"); } if (init) { this->droplet.vel_perturb = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x868 == "droplet.vel_perturb" auto_tweak::load_param(this->droplet.vel_perturb, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100000_0, ap, - apsize, stringBase0 + 0x868); + apsize, "droplet.vel_perturb"); } if (init) { this->droplet.vel_angle = zEntCruiseBubble_f_60_0; - // stringBase0 + 0x87c == "droplet.vel_angle" auto_tweak::load_param(this->droplet.vel_angle, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100000_0, ap, - apsize, stringBase0 + 0x87c); + apsize, "droplet.vel_angle"); } if (init) { this->droplet.rot_vel_max = zEntCruiseBubble_f_360_0; - // stringBase0 + 0x88e == "droplet.rot_vel_max" auto_tweak::load_param(this->droplet.rot_vel_max, zEntCruiseBubble_f_0_017, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100000_0, ap, - apsize, stringBase0 + 0x88e); + apsize, "droplet.rot_vel_max"); } if (init) { this->hud.glow_size = zEntCruiseBubble_f_0_05; - // stringBase0 + 0x8a2 == "hud.glow_size" auto_tweak::load_param(this->hud.glow_size, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x8a2); + apsize, "hud.glow_size"); } if (init) { this->hud.time_fade = zEntCruiseBubble_f_0_25; - // stringBase0 + 0x8b0 == "hud.time_fade" auto_tweak::load_param(this->hud.time_fade, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x8b0); + apsize, "hud.time_fade"); } if (init) { this->hud.time_glow = zEntCruiseBubble_f_0_5; - // stringBase0 + 0x8be == "hud.time_glow" auto_tweak::load_param(this->hud.time_glow, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x8be); + apsize, "hud.time_glow"); } if (init) { this->hud.wind.size = zEntCruiseBubble_f_0_75; - // stringBase0 + 0x8cc == "hud.wind.size" auto_tweak::load_param(this->hud.wind.size, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x8cc); + apsize, "hud.wind.size"); } if (init) { this->hud.wind.du = zEntCruiseBubble_f_0_0; - // stringBase0 + 0x8da == "hud.wind.du" auto_tweak::load_param(this->hud.wind.du, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n1000000000_0, zEntCruiseBubble_f_1000000000_0, ap, apsize, - stringBase0 + 0x8da); + "hud.wind.du"); } if (init) { this->hud.wind.dv = zEntCruiseBubble_f_4_0; - // stringBase0 + 0x8e6 == "hud.wind.dv" auto_tweak::load_param(this->hud.wind.dv, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_n1000000000_0, zEntCruiseBubble_f_1000000000_0, ap, apsize, - stringBase0 + 0x8e6); + "hud.wind.dv"); } if (init) { this->hud.reticle.size = zEntCruiseBubble_f_0_1; - // stringBase0 + 0x8f2 == "hud.reticle.size" auto_tweak::load_param(this->hud.reticle.size, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x8f2); + apsize, "hud.reticle.size"); } if (init) { this->hud.target.size = zEntCruiseBubble_f_0_1; - // stringBase0 + 0x903 == "hud.target.size" auto_tweak::load_param(this->hud.target.size, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_100_0, ap, - apsize, stringBase0 + 0x903); + apsize, "hud.target.size"); } if (init) { this->hud.timer.font = 2; - // stringBase0 + 0x913 == "hud.timer.font" auto_tweak::load_param(this->hud.timer.font, 1, 0, 4, ap, apsize, - stringBase0 + 0x913); + "hud.timer.font"); } if (init) { this->hud.timer.font_width = zEntCruiseBubble_f_0_0275; - // stringBase0 + 0x922 == "hud.timer.font_width" auto_tweak::load_param(this->hud.timer.font_width, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_1_0, ap, - apsize, stringBase0 + 0x922); + apsize, "hud.timer.font_width"); } if (init) { this->hud.timer.font_height = zEntCruiseBubble_f_0_047; - // stringBase0 + 0x937 == "hud.timer.font_height" auto_tweak::load_param(this->hud.timer.font_height, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_001, zEntCruiseBubble_f_1_0, ap, - apsize, stringBase0 + 0x937); + apsize, "hud.timer.font_height"); } if (init) { this->hud.timer.x = zEntCruiseBubble_f_0_78; - // stringBase0 + 0x94d == "hud.timer.x" auto_tweak::load_param(this->hud.timer.x, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x94d); + "hud.timer.x"); } if (init) { this->hud.timer.y = zEntCruiseBubble_f_0_86; - // stringBase0 + 0x959 == "hud.timer.y" auto_tweak::load_param(this->hud.timer.y, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x959); + "hud.timer.y"); } if (init) { this->hud.timer.glow_size = zEntCruiseBubble_f_0_01; - // stringBase0 + 0x965 == "hud.timer.glow_size" auto_tweak::load_param(this->hud.timer.glow_size, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_10_0, ap, - apsize, stringBase0 + 0x965); + apsize, "hud.timer.glow_size"); } if (init) { this->dialog.freq = zEntCruiseBubble_f_1_0; - // stringBase0 + 0x979 == "dialog.freq" auto_tweak::load_param(this->dialog.freq, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x979); + "dialog.freq"); } if (init) { this->dialog.decay = zEntCruiseBubble_f_0_75; - // stringBase0 + 0x985 == "dialog.decay" auto_tweak::load_param(this->dialog.decay, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x985); + "dialog.decay"); } if (init) { this->dialog.min_freq = zEntCruiseBubble_f_0_1; - // stringBase0 + 0x992 == "dialog.min_freq" auto_tweak::load_param(this->dialog.min_freq, zEntCruiseBubble_f_1_0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_1_0, ap, apsize, - stringBase0 + 0x992); + "dialog.min_freq"); } if (init) { - this->material.fresnel_texture = xStrHash(stringBase0 + 0x9a2); - this->material.env_texture = xStrHash(stringBase0 + 0x9ad); + this->material.fresnel_texture = xStrHash("gloss_edge"); + this->material.env_texture = xStrHash("rainbowfilm_smooth32"); } } @@ -2629,19 +2518,16 @@ void cruise_bubble::insert_player_animations(xAnimTable& table) return; } - // stringBase0 + 0x9c2 == "cruise_bubble_aim" shared.astate.player.aim = - xAnimTableNewState(&table, stringBase0 + 0x9c2, 0x10, 0, zEntCruiseBubble_f_1_0, NULL, NULL, + xAnimTableNewState(&table, "cruise_bubble_aim", 0x10, 0, zEntCruiseBubble_f_1_0, NULL, NULL, zEntCruiseBubble_f_0_0, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); - // stringBase0 + 0x9d4 == "cruise_bubble_fire" shared.astate.player.fire = - xAnimTableNewState(&table, stringBase0 + 0x9d4, 0x20, 0, zEntCruiseBubble_f_1_0, NULL, NULL, + xAnimTableNewState(&table, "cruise_bubble_fire", 0x20, 0, zEntCruiseBubble_f_1_0, NULL, NULL, zEntCruiseBubble_f_0_0, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); - // stringBase0 + 0x9e7 == "cruise_bubble_idle" shared.astate.player.idle = - xAnimTableNewState(&table, stringBase0 + 0x9e7, 0x10, 0, zEntCruiseBubble_f_1_0, NULL, NULL, + xAnimTableNewState(&table, "cruise_bubble_idle", 0x10, 0, zEntCruiseBubble_f_1_0, NULL, NULL, zEntCruiseBubble_f_0_0, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); char* start_from = (char*)xMemPushTemp(0x250); @@ -2656,31 +2542,24 @@ void cruise_bubble::insert_player_animations(xAnimTable& table) *++s = '\0'; } - // stringBase0 + 0x9c2 == "cruise_bubble_aim" shared.atran.player.aim = - xAnimTableNewTransition(&table, start_from, stringBase0 + 0x9c2, + xAnimTableNewTransition(&table, start_from, "cruise_bubble_aim", (xAnimTransitionConditionalCallback)&check_anim_aim, NULL, 0, 0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_0_0, 0, 0, zEntCruiseBubble_f_0_15, NULL); - // stringBase0 + 0x9c2 == "cruise_bubble_aim" - // stringBase0 + 0x9d4 == "cruise_bubble_fire" shared.atran.player.fire = - xAnimTableNewTransition(&table, stringBase0 + 0x9c2, stringBase0 + 0x9d4, NULL, NULL, 0, 0, + xAnimTableNewTransition(&table, "cruise_bubble_aim", "cruise_bubble_fire", NULL, NULL, 0, 0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_0_0, 0, 0, zEntCruiseBubble_f_0_15, NULL); - // stringBase0 + 0x9d4 == "cruise_bubble_fire" - // stringBase0 + 0x9e7 == "cruise_bubble_idle" shared.atran.player.idle = - xAnimTableNewTransition(&table, stringBase0 + 0x9d4, stringBase0 + 0x9e7, NULL, NULL, 0x10, + xAnimTableNewTransition(&table, "cruise_bubble_fire", "cruise_bubble_idle", NULL, NULL, 0x10, 0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_0_0, 0, 0, zEntCruiseBubble_f_0_15, NULL); - // stringBase0 + 0x9fa == "cruise_bubble_aim cruise_bubble_fire cruise_bubble_idle" - // stringBase0 + 0x0 == "Idle01" shared.atran.player.end = - xAnimTableNewTransition(&table, stringBase0 + 0x9fa, stringBase0 + 0x0, NULL, NULL, 0, 0, + xAnimTableNewTransition(&table, "cruise_bubble_aim cruise_bubble_fire cruise_bubble_idle", "Idle01", NULL, NULL, 0, 0, zEntCruiseBubble_f_0_0, zEntCruiseBubble_f_0_0, 0, 0, zEntCruiseBubble_f_0_15, NULL); @@ -3657,4 +3536,4 @@ WEAK F32 xSCurve(float val) } F32 a = (1.0f - val); return (1.0f - (2.0f * a * a)); -} \ No newline at end of file +} diff --git a/src/SB/Game/zGame.cpp b/src/SB/Game/zGame.cpp index 6f95de83e..fe078594a 100644 --- a/src/SB/Game/zGame.cpp +++ b/src/SB/Game/zGame.cpp @@ -39,7 +39,159 @@ extern F32 lbl_803CF5AC; // A extern F32 lbl_803CDA54; extern F32 lbl_803CDA58; -extern char stringBase0[]; +// Taken from zGame.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "HB02"; +char* str2 = "HB01"; +char* str3 = "HB03"; +char* str4 = "HB04"; +char* str5 = "JF01"; +char* str6 = "JF02"; +char* str7 = "JF03"; +char* str8 = "JF04"; +char* str9 = "BB01"; +char* str10 = "BB02"; +char* str11 = "BB03"; +char* str12 = "BB04"; +char* str13 = "GL01"; +char* str14 = "GL02"; +char* str15 = "GL03"; +char* str16 = "B101"; +char* str17 = "HB05"; +char* str18 = "HB06"; +char* str19 = "HB09"; +char* str20 = "BC01"; +char* str21 = "BC02"; +char* str22 = "BC03"; +char* str23 = "BC04"; +char* str24 = "BC05"; +char* str25 = "RB01"; +char* str26 = "RB02"; +char* str27 = "RB03"; +char* str28 = "SM01"; +char* str29 = "SM02"; +char* str30 = "SM03"; +char* str31 = "SM04"; +char* str32 = "B201"; +char* str33 = "DB01"; +char* str34 = "DB02"; +char* str35 = "DB03"; +char* str36 = "DB04"; +char* str37 = "DB06"; +char* str38 = "KF01"; +char* str39 = "KF02"; +char* str40 = "KF04"; +char* str41 = "KF05"; +char* str42 = "GY01"; +char* str43 = "GY02"; +char* str44 = "GY03"; +char* str45 = "GY04"; +char* str46 = "HB07"; +char* str47 = "HB08"; +char* str48 = "B302"; +char* str49 = "B303"; +char* str50 = "HB10"; +char* str51 = "PG12"; +char* str52 = "techbutton6_click"; +char* str53 = "SAVING GAME ICON UI"; +char* str54 = "MNU4 AUTO SAVE FAILED"; +char* str55 = "MNU4 SAVE COMPLETED"; +char* str56 = "{font=0}{i:MNU4 AUTO SAVE TXT}"; +char* str57 = "fx_boomball_smoke.RW3"; +char* str58 = "ui_savinggame"; +char* str59 = "ui_savinggame.RW3"; +char* str60 = "GAME OVER (%f secs)\n"; +char* str61 = "Loading... %3.2f\n"; +char* str62 = " "; +char* str63 = ". "; +char* str64 = ".. "; +char* str65 = "..."; +char* str66 = "loading screen bg"; +char* str67 = "eGameWhere_NA"; +char* str68 = "eGameWhere_InitStart"; +char* str69 = "eGameWhere_InitScene"; +char* str70 = "eGameWhere_InitCamera"; +char* str71 = "eGameWhere_InitMusic"; +char* str72 = "eGameWhere_InitOther"; +char* str73 = "eGameWhere_InitEnd"; +char* str74 = "eGameWhere_ExitStart"; +char* str75 = "eGameWhere_ExitRumble"; +char* str76 = "eGameWhere_ExitHUD"; +char* str77 = "eGameWhere_ExitSound"; +char* str78 = "eGameWhere_ExitCamera"; +char* str79 = "eGameWhere_ExitScene"; +char* str80 = "eGameWhere_ExitEnd"; +char* str81 = "eGameWhere_SetupScene"; +char* str82 = "eGameWhere_SetupZFX"; +char* str83 = "eGameWhere_SetupPlayer"; +char* str84 = "eGameWhere_SetupCamera"; +char* str85 = "eGameWhere_SetupScrFX"; +char* str86 = "eGameWhere_SetupSceneLoad"; +char* str87 = "eGameWhere_SetupMusicNotify"; +char* str88 = "eGameWhere_SetupHudSetup"; +char* str89 = "eGameWhere_SetupSkydome"; +char* str90 = "eGameWhere_SetupSceneEvents"; +char* str91 = "eGameWhere_SetupUpdateCull"; +char* str92 = "eGameWhere_SetupLOD"; +char* str93 = "eGameWhere_SetupExtras"; +char* str94 = "eGameWhere_SetupEnd"; +char* str95 = "eGameWhere_LoopStart"; +char* str96 = "eGameWhere_CutsceneFinish"; +char* str97 = "eGameWhere_LoopDo"; +char* str98 = "eGameWhere_LoopCalcTime"; +char* str99 = "eGameWhere_LoopPadUpdate"; +char* str100 = "eGameWhere_LoopTRCCheck"; +char* str101 = "eGameWhere_LoopCheats"; +char* str102 = "eGameWhere_LoopSceneUpdate"; +char* str103 = "eGameWhere_LoopPlayerUpdate"; +char* str104 = "eGameWhere_LoopSoundUpdate"; +char* str105 = "eGameWhere_LoopSFXWidgets"; +char* str106 = "eGameWhere_LoopHUDUpdate"; +char* str107 = "eGameWhere_LoopCameraUpdate"; +char* str108 = "eGameWhere_LoopCameraFXUpdate"; +char* str109 = "eGameWhere_LoopFlyToInterface"; +char* str110 = "eGameWhere_LoopCameraBegin"; +char* str111 = "eGameWhere_LoopSceneRender"; +char* str112 = "eGameWhere_LoopCameraEnd"; +char* str113 = "eGameWhere_LoopCameraShowRaster"; +char* str114 = "eGameWhere_LoopCameraFXEnd"; +char* str115 = "eGameWhere_LoopMusicUpdate"; +char* str116 = "eGameWhere_LoopUpdateMode"; +char* str117 = "eGameWhere_LoopContinue"; +char* str118 = "eGameWhere_LoopEndGameLoop"; +char* str119 = "eGameWhere_SaveLoop"; +char* str120 = "eGameWhere_ModeSceneSwitch"; +char* str121 = "eGameWhere_ModeCutsceneFinish"; +char* str122 = "eGameWhere_ModeGameExit"; +char* str123 = "eGameWhere_ModeGameInit"; +char* str124 = "eGameWhere_ModeGameSetup"; +char* str125 = "eGameWhere_ModeSwitchAutoSave"; +char* str126 = "eGameWhere_ModeSwitchCutsceneFinish"; +char* str127 = "eGameWhere_ModeStoreCheckpoint"; +char* str128 = "eGameWhere_LoseChanceReset"; +char* str129 = "eGameWhere_LoseChanceResetDone"; +char* str130 = "eGameWhere_TransitionBubbles"; +char* str131 = "eGameWhere_TransitionBegin"; +char* str132 = "eGameWhere_TransitionSnapShot"; +char* str133 = "eGameWhere_TransitionUpdate"; +char* str134 = "eGameWhere_TransitionPadUpdate"; +char* str135 = "eGameWhere_TransitionTRCCheck"; +char* str136 = "eGameWhere_TransitionCameraClear"; +char* str137 = "eGameWhere_TransitionCameraBegin"; +char* str138 = "eGameWhere_TransitionRenderBackground"; +char* str139 = "eGameWhere_TransitionSpawnBubbles"; +char* str140 = "eGameWhere_TransitionDrawEnd"; +char* str141 = "eGameWhere_TransitionUpdateBubbles"; +char* str142 = "eGameWhere_TransitionCameraEnd"; +char* str143 = "eGameWhere_TransitionCameraShowRaster"; +char* str144 = "eGameWhere_TransitionUpdateEnd"; +char* str145 = "eGameWhere_TransitionUIRender"; +char* str146 = "eGameWhere_TransitionUIRenderEnd"; +char* str147 = "eGameWhere_TransitionEnd"; +char* str148 = "eGameWhere_TransitionEnded"; +char* str149 = "eGameWhere_SetupPlayerInit"; +char* str150 = "eGameWhere_SetupPlayerCamera"; +char* str151 = "eGameWhere_SetupPlayerEnd"; #ifdef NON_MATCHING // Scheduling, I guess @@ -197,7 +349,7 @@ S32 zGameOkToPause() { return 0; } - if ((globals.sceneCur)->sceneID == 0x50473132) + if ((globals.sceneCur)->sceneID == 'PG12') { return 0; } @@ -226,10 +378,10 @@ void zGamePause() } else { - zEntEvent(stringBase0 + 0xff, 24); // "techbutton6_click" - zEntEvent(stringBase0 + 0x111, 4); // "SAVING GAME ICON UI" - zEntEvent(stringBase0 + 0x125, 4); // "MNU4 AUTO SAVE FAILED" - zEntEvent(stringBase0 + 0x13b, 4); // "MNU4 SAVE COMPLETED" + zEntEvent("techbutton6_click", 24); + zEntEvent("SAVING GAME ICON UI", 4); + zEntEvent("MNU4 AUTO SAVE FAILED", 4); + zEntEvent("MNU4 SAVE COMPLETED", 4); iPadStopRumble(globals.pad0); zGameModeSwitch(eGameMode_Pause); zGameStateSwitch(0); @@ -244,7 +396,7 @@ void zGameStall() zGameModeSwitch(eGameMode_Stall); xSndPauseAll(1, 1); iPadStopRumble(globals.pad0); - zEntEvent(stringBase0 + 0xff, 24); // "techbutton6_click" + zEntEvent("techbutton6_click", 24); } } diff --git a/src/SB/Game/zLightning.cpp b/src/SB/Game/zLightning.cpp index d790890e9..0483fb21d 100644 --- a/src/SB/Game/zLightning.cpp +++ b/src/SB/Game/zLightning.cpp @@ -12,7 +12,62 @@ extern RwRaster* sLightningRaster; extern xVec3 sTweakStart; extern xVec3 sTweakEnd; -char* _ = "Line"; +// Taken from zLightning.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "Line"; +char* str2 = "Rotating"; +char* str3 = "Zeus"; +char* str4 = "Func"; +char* str5 = "Lightning|\x01Type Info"; +char* str6 = "Lightning|\x01Type Info|Setup Degrees"; +char* str7 = "Lightning|\x01Type Info|Move Degrees"; +char* str8 = "Lightning|\x01Type Info|Normal Offset"; +char* str9 = "Lightning|\x01Type Info|Back Offset"; +char* str10 = "Lightning|\x01Type Info|Side Offset"; +char* str11 = "PAREMIT_EG_SPARK"; +char* str12 = "LIGHTNING"; +char* str13 = "Lightning|\x01\x01Go"; +char* str14 = "Start Lightning"; +char* str15 = "Lightning|\x01Globals|\x01\x01JerkFrequency"; +char* str16 = "Lightning|\x01Globals|\x01\x02ShiftSpeed"; +char* str17 = "Lightning|\x01Globals|\x01\x03MinPStep"; +char* str18 = "Lightning|\x01Globals|\x01\x03MaxPStep"; +char* str19 = "Lightning|\x01Globals|\x02\x01MinScale"; +char* str20 = "Lightning|\x01Globals|\x02\x01MaxScale"; +char* str21 = "Lightning|\x01Globals|\x02\x01ScalePerLength"; +char* str22 = "Lightning|\x01Globals|\x02\x02MinSpan"; +char* str23 = "Lightning|\x01Globals|\x02\x02SpanPerLength"; +char* str24 = "Lightning|\x01Globals|\x02\x03SlopeRange"; +char* str25 = "Lightning|\x01Globals|\x02\x03UVSpeed"; +char* str26 = "Lightning|\x01Time"; +char* str27 = "Lightning|\x01Total Points"; +char* str28 = "Lightning|\x01Type"; +char* str29 = "Lightning|\x02Flag|Rot Scalar"; +char* str30 = "Lightning|\x02Flag|No Fade Out"; +char* str31 = "Lightning|\x02Flag|Arc"; +char* str32 = "Lightning|\x02Flag|Vertical Orientation"; +char* str33 = "Lightning|\x02Flag|Taper Thickness At End"; +char* str34 = "Lightning|\x02Flag|Taper Thickness At Start"; +char* str35 = "Lightning|\x02Start|x"; +char* str36 = "Lightning|\x02Start|y"; +char* str37 = "Lightning|\x02Start|z"; +char* str38 = "Lightning|\x03End|x"; +char* str39 = "Lightning|\x03End|y"; +char* str40 = "Lightning|\x03End|z"; +char* str41 = "Lightning|\x04Color|\x01R"; +char* str42 = "Lightning|\x04Color|\x02G"; +char* str43 = "Lightning|\x04Color|\x03B"; +char* str44 = "Lightning|\x04Color|\x04A"; +char* str45 = "Lightning|Lengths|Rot Radius"; +char* str46 = "Lightning|Lengths|Arc Height"; +char* str47 = "Lightning|Lengths|Thickness"; +char* str48 = "Lightning|Randomness|Rand Radius"; +char* str49 = "X to test lightning\n"; +char* str50 = " "; +char* str51 = "1"; +char* str52 = "0"; +char* str53 = "-"; +char* str54 = "\n"; void xDebugAddTweak(const char*, F32*, F32, F32, const tweak_callback*, void*, U32) { diff --git a/src/SB/Game/zNPCTypeAmbient.cpp b/src/SB/Game/zNPCTypeAmbient.cpp index b1cbee745..23a2f3405 100644 --- a/src/SB/Game/zNPCTypeAmbient.cpp +++ b/src/SB/Game/zNPCTypeAmbient.cpp @@ -21,10 +21,27 @@ extern F32 zNPCTypeAmbientx405f66f3; extern F32 zNPCTypeAmbientx3f400000; extern F32 zNPCTypeAmbientx3edf66f3; extern NPCSndTrax g_sndTrax_Neptune; -extern char zNPCTypeAmbient_stringBase0[]; extern F32 _882; extern F32 _883; +// Taken from zNPCTypeAmbient.s. +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "Unknown"; +char* str2 = "Idle01"; +char* str3 = "Idle02"; +char* str4 = "Idle03"; +char* str5 = "Fidget01"; +char* str6 = "Fidget02"; +char* str7 = "Fidget03"; +char* str8 = "Move01"; +char* str9 = "Bumped01"; +char* str10 = "Dance01"; +char* str11 = "Pray01"; +char* str12 = "Attack01"; +char* str13 = "zNPCAmbient"; +char* str14 = "zNPCJelly"; +char* str15 = "zNPCNeptune"; + void ZNPC_Ambient_Startup() { S32 i = 0; @@ -84,7 +101,7 @@ void ZNPC_Destroy_Ambient(xFactoryInst* inst) xAnimTable* ZNPC_AnimTable_Ambient() { - xAnimTable* table = (xAnimTable*)xAnimTableNew(zNPCTypeAmbient_stringBase0 + 0x60, NULL, 0); + xAnimTable* table = (xAnimTable*)xAnimTableNew("zNPCAmbient", NULL, 0); xAnimTableNewState(table, g_strz_ambianim[1], 0x110, 1, _882, NULL, NULL, _883, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); return table; diff --git a/src/SB/Game/zNPCTypeTiki.cpp b/src/SB/Game/zNPCTypeTiki.cpp index d9038742c..3a1de66e8 100644 --- a/src/SB/Game/zNPCTypeTiki.cpp +++ b/src/SB/Game/zNPCTypeTiki.cpp @@ -14,7 +14,6 @@ extern const char* g_strz_tikianim[ANIM_COUNT]; extern U32 g_hash_tikianim[ANIM_COUNT]; extern zParEmitter* cloudEmitter; extern xParEmitterCustomSettings thunderEmitterInfo; -extern char zNPCTypeTiki_stringBase0[]; extern F32 _862; extern F32 _858_2; extern F32 _1084; @@ -22,6 +21,17 @@ extern F32 _867; extern NPCSndTrax g_sndTrax_TikiShared[3]; extern NPCSndTrax g_sndTrax_TikiThunder[2]; +// Taken from zNPCTypeTiki.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "Unknown"; +char* str2 = "Idle01"; +char* str3 = "PAREMIT_THUNDER_CLOUD"; +char* str4 = "PAREMIT_CLOUD"; +char* str5 = "target"; +char* str6 = "zNPCTiki"; +char* str7 = "what the ...\n"; +char* str8 = "Idle"; + void ZNPC_Tiki_Startup() { for (S32 i = 0; i < ANIM_COUNT; i++) @@ -112,7 +122,7 @@ xAnimTable* ZNPC_AnimTable_Tiki() { xAnimTable* table; - table = xAnimTableNew(zNPCTypeTiki_stringBase0 + 0x3a, NULL, 0); + table = xAnimTableNew("zNPCTiki", NULL, 0); xAnimTableNewState(table, g_strz_tikianim[1], 0x110, 1, _862, NULL, NULL, _858_2, NULL, NULL, xAnimDefaultBeforeEnter, NULL, NULL); return table; @@ -237,7 +247,7 @@ S32 zNPCTiki::CanRope() void AnimPick() { - xStrHash(zNPCTypeTiki_stringBase0 + 0x51); + xStrHash("Idle"); } void zNPCTiki::Move(xScene* xscn, F32 dt, xEntFrame*) diff --git a/src/SB/Game/zNPCTypeVillager.cpp b/src/SB/Game/zNPCTypeVillager.cpp index 9e2333f0a..4891b1403 100644 --- a/src/SB/Game/zNPCTypeVillager.cpp +++ b/src/SB/Game/zNPCTypeVillager.cpp @@ -7,10 +7,127 @@ extern U32 g_hash_folkanim[26]; extern char* g_strz_platanim[2]; extern U32 g_hash_platanim[2]; extern zParEmitter* g_pemit_aqualeak; -extern char zNPCTypeVillager_stringBase0[]; extern xParEmitterCustomSettings g_parf_aqualeak; extern xVec3 g_O3; +// Taken from zNPCTypeVillager.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = "Unknown"; +char* str2 = "Idle01"; +char* str3 = "Move01"; +char* str4 = "Hurt01"; +char* str5 = "Yawn01"; +char* str6 = "Talk01"; +char* str7 = "Flee01"; +char* str8 = "Fear01"; +char* str9 = "Pray01"; +char* str10 = "Clap01"; +char* str11 = "Special01"; +char* str12 = "Ride01"; +char* str13 = "Bump01"; +char* str14 = "Fall01"; +char* str15 = "Land01"; +char* str16 = "Weep01"; +char* str17 = "Swim01"; +char* str18 = "Idle02"; +char* str19 = "Idle03"; +char* str20 = "Idle04"; +char* str21 = "Yawn02"; +char* str22 = "Yawn03"; +char* str23 = "Yawn04"; +char* str24 = "Talk02"; +char* str25 = "Talk03"; +char* str26 = "Talk04"; +char* str27 = "fish_d_balloon_move"; +char* str28 = "fish_d_balloon_hit"; +char* str29 = "zNPCVillager"; +char* str30 = "zNPCBallonBoy"; +char* str31 = "zNPCSuperFriend"; +char* str32 = "NonRandomTalkAnims"; +char* str33 = "FAB1001"; +char* str34 = "FAB1002"; +char* str35 = "FAB1003"; +char* str36 = "FAB1004"; +char* str37 = "FAB1011"; +char* str38 = "FAB1017"; +char* str39 = "FAB1018"; +char* str40 = "FAB1019"; +char* str41 = "FAB1020"; +char* str42 = "FAB1021"; +char* str43 = "FAB1022"; +char* str44 = "FAB1023"; +char* str45 = "FAB1025"; +char* str46 = "FAB1029"; +char* str47 = "FAB1030"; +char* str48 = "FAB1032"; +char* str49 = "FAB1033"; +char* str50 = "FAB1034"; +char* str51 = "FAB1035"; +char* str52 = "FAB1038"; +char* str53 = "FAB1046"; +char* str54 = "FAB1047"; +char* str55 = "FAB1049"; +char* str56 = "FAB1073"; +char* str57 = "FAB1074"; +char* str58 = "FAB1076"; +char* str59 = "FAB1077"; +char* str60 = "FAB1078"; +char* str61 = "FAB1079"; +char* str62 = "FAB1080"; +char* str63 = "FAB1006"; +char* str64 = "FAB1012"; +char* str65 = "FAB1016"; +char* str66 = "FAB1024"; +char* str67 = "FAB1026"; +char* str68 = "FAB1065"; +char* str69 = "FAB1039_a"; +char* str70 = "FAB1039_b"; +char* str71 = "FAB1039_c"; +char* str72 = "FAB1055"; +char* str73 = "FAB1040"; +char* str74 = "FAB1053"; +char* str75 = "FAB1081_a"; +char* str76 = "FAB1081_b"; +char* str77 = "FAB1042"; +char* str78 = "FAB1045"; +char* str79 = "FAB1056"; +char* str80 = "FAB1064"; +char* str81 = "FAB1050"; +char* str82 = "FAB1007"; +char* str83 = "FAB1007_b"; +char* str84 = "FAB1031"; +char* str85 = "FAB1082_a"; +char* str86 = "FAB1082_b"; +char* str87 = "FAB1010"; +char* str88 = "FAB1027"; +char* str89 = "FAB1037"; +char* str90 = "FAB1052"; +char* str91 = "FAB1067"; +char* str92 = "FAB1014"; +char* str93 = "FAB1008"; +char* str94 = "FAB1036"; +char* str95 = "FAB1041_a"; +char* str96 = "FAB1041_b"; +char* str97 = "FAB1054"; +char* str98 = "FAB1013"; +char* str99 = "FAB1009"; +char* str100 = "FAB1028"; +char* str101 = "FAB1051"; +char* str102 = "FAB1072"; +char* str103 = "FAB1083"; +char* str104 = "NPC|zNPCNewsFish|screen|on screen|x"; +char* str105 = "NPC|zNPCNewsFish|screen|on screen|y"; +char* str106 = "NPC|zNPCNewsFish|screen|off screen|x"; +char* str107 = "NPC|zNPCNewsFish|screen|off screen|y"; +char* str108 = "NPC|zNPCNewsFish|screen|size"; +char* str109 = "NPC|zNPCNewsFish|screen|rotation"; +char* str110 = "NPC|zNPCNewsFish|screen|appearSpeed"; +char* str111 = "NPC|zNPCNewsFish|screen|disappearSpeed"; +char* str112 = "shadow_balloons"; +char* str113 = "gloss_edge"; +char* str114 = "rainbowfilm_smooth32"; +char* str115 = "PAREMIT_FOLK_SANDYB_LEAK"; + void ZNPC_Villager_Startup() { S32 i; @@ -154,7 +271,7 @@ xAnimTable* ZNPC_AnimTable_SuperFriend() /* void FOLK_InitEffects() { - g_pemit_aqualeak = zParEmitterFind(zNPCTypeVillager_stringBase0 + 0x4b6); + g_pemit_aqualeak = zParEmitterFind("PAREMIT_FOLK_SANDYB_LEAK"); g_parf_aqualeak.custom_flags = 0x300; // 0x138 xVec3Copy((xVec3*)&g_parf_aqualeak.pos, (xVec3*)&g_O3); // 0x140 xVec3Copy((xVec3*)&g_parf_aqualeak.vel, (xVec3*)&g_O3); // 0x14c diff --git a/src/SB/Game/zPlatform.cpp b/src/SB/Game/zPlatform.cpp index a003925b2..1b5cbd9c8 100644 --- a/src/SB/Game/zPlatform.cpp +++ b/src/SB/Game/zPlatform.cpp @@ -11,7 +11,18 @@ zParEmitter* sEmitTremble; zParEmitter* sEmitBreakaway; -extern char stringBase0[]; +// Taken from zPlatform.s +// Defining these here makes the stringBase0 offsets match in the later functions. +char* str1 = ""; +char* str2 = "Idle"; +char* str3 = "Spring"; +char* str4 = "teeter_totter_pat"; +char* str5 = "teeter_totter_pat_bind"; +char* str6 = "PAREMIT_PLAT_TREMBLE"; +char* str7 = "PAREMIT_PLAT_BREAKAWAY"; +char* str8 = "skatepark_bumper"; +char* str9 = "skatepark_flipper"; +char* str10 = "Check1"; void genericPlatRender(xEnt* ent) { @@ -76,8 +87,8 @@ void zPlatform_Mount(zPlatform* ent) void zPlatform_Setup(zPlatform* ent, xScene* sc) { zEntSetup((zEnt *)ent); - sEmitTremble = zParEmitterFind(stringBase0 + 0x36); // "PAREMIT_PLAT_TREMBLE" - sEmitBreakaway = zParEmitterFind(stringBase0 + 0x4b); // "PAREMIT_PLAT_BREAKAWAY" + sEmitTremble = zParEmitterFind("PAREMIT_PLAT_TREMBLE"); + sEmitBreakaway = zParEmitterFind("PAREMIT_PLAT_BREAKAWAY"); if (ent->subType == ZPLATFORM_SUBTYPE_PADDLE) { ent->tmr = -1e38;