diff --git a/SpaceCadetPinball/TBall.cpp b/SpaceCadetPinball/TBall.cpp index 4bf91d0..4b37e92 100644 --- a/SpaceCadetPinball/TBall.cpp +++ b/SpaceCadetPinball/TBall.cpp @@ -34,12 +34,9 @@ TBall::TBall(TPinballTable* table) : TPinballComponent(table, -1, false) ListBitmap = new std::vector(); /*Full tilt: ball is ballN, where N[0,2] resolution*/ - auto groupIndex = loader::query_handle(ballGroupName); - if (groupIndex < 0) - { + if (pb::FullTiltMode) ballGroupName[4] = '0' + fullscrn::GetResolution(); - groupIndex = loader::query_handle(ballGroupName); - } + auto groupIndex = loader::query_handle(ballGroupName); Offset = *loader::query_float_attribute(groupIndex, 0, 500); diff --git a/SpaceCadetPinball/TKickout.cpp b/SpaceCadetPinball/TKickout.cpp index aa41833..c4fcd6b 100644 --- a/SpaceCadetPinball/TKickout.cpp +++ b/SpaceCadetPinball/TKickout.cpp @@ -45,7 +45,7 @@ TKickout::TKickout(TPinballTable* table, int groupIndex, bool someFlag): TCollis Circle.RadiusSq = visual.FloatArr[2] * visual.FloatArr[2]; auto zAttr = loader::query_float_attribute(groupIndex, 0, 408); - CollisionBallSetZ = pb::FullTiltMode && !pb::FullTiltDemoMode ? zAttr[3] : zAttr[2]; + CollisionBallSetZ = pb::FullTiltMode ? zAttr[3] : zAttr[2]; ThrowSpeedMult2 = visual.Kicker.ThrowBallMult * 0.01f; BallAcceleration = visual.Kicker.ThrowBallAcceleration; ThrowAngleMult = visual.Kicker.ThrowBallAngleMult; diff --git a/SpaceCadetPinball/TTableLayer.cpp b/SpaceCadetPinball/TTableLayer.cpp index f804bb9..e45ba36 100644 --- a/SpaceCadetPinball/TTableLayer.cpp +++ b/SpaceCadetPinball/TTableLayer.cpp @@ -54,13 +54,11 @@ TTableLayer::TTableLayer(TPinballTable* table): TCollisionComponent(table, -1, f GraityDirX = cos(PinballTable->GravityAnglY) * sin(PinballTable->GravityAngleX) * PinballTable->GravityDirVectMult; GraityDirY = sin(PinballTable->GravityAnglY) * sin(PinballTable->GravityAngleX) * PinballTable->GravityDirVectMult; + auto angleMultArr = loader::query_float_attribute(groupIndex, 0, 701); /*Full tilt hack - GraityMult should be 0.2*/ - if (!pb::FullTiltMode && !pb::FullTiltDemoMode) - { - auto angleMultArr = loader::query_float_attribute(groupIndex, 0, 701); + if (angleMultArr && !pb::FullTiltMode) GraityMult = *angleMultArr; - } else GraityMult = 0.2f; diff --git a/SpaceCadetPinball/fullscrn.cpp b/SpaceCadetPinball/fullscrn.cpp index a2e23d7..4db62bf 100644 --- a/SpaceCadetPinball/fullscrn.cpp +++ b/SpaceCadetPinball/fullscrn.cpp @@ -95,7 +95,7 @@ int fullscrn::GetResolution() void fullscrn::SetResolution(int value) { - if (!pb::FullTiltMode || pb::FullTiltDemoMode) + if (!pb::FullTiltMode) value = 0; assertm(value >= 0 && value <= 2, "Resolution value out of bounds"); resolution = value; @@ -103,7 +103,7 @@ void fullscrn::SetResolution(int value) int fullscrn::GetMaxResolution() { - return pb::FullTiltMode && !pb::FullTiltDemoMode ? 2 : 0; + return pb::FullTiltMode ? 2 : 0; } void fullscrn::window_size_changed() diff --git a/SpaceCadetPinball/midi.cpp b/SpaceCadetPinball/midi.cpp index b045524..9adc940 100644 --- a/SpaceCadetPinball/midi.cpp +++ b/SpaceCadetPinball/midi.cpp @@ -56,10 +56,6 @@ int midi::music_init() track1 = load_track("TABA1"); track2 = load_track("TABA2"); track3 = load_track("TABA3"); - - // FT demo .006 has only one music track, but it is nearly 9 min. long - if (!track1 && pb::FullTiltDemoMode) - track1 = load_track("DEMO"); } else { @@ -275,7 +271,8 @@ std::vector* midi::MdsToMidi(std::string file) // Delta time is in variable quantity, Big Endian uint32_t deltaVarLen; auto count = ToVariableLen(delta, deltaVarLen); - auto deltaData = reinterpret_cast(&deltaVarLen); + deltaVarLen = SwapByteOrderInt(deltaVarLen); + auto deltaData = reinterpret_cast(&deltaVarLen) + 4 - count; midiBytes.insert(midiBytes.end(), deltaData, deltaData + count); switch (event.iEvent >> 24) diff --git a/SpaceCadetPinball/partman.cpp b/SpaceCadetPinball/partman.cpp index 43eeb5f..2901d74 100644 --- a/SpaceCadetPinball/partman.cpp +++ b/SpaceCadetPinball/partman.cpp @@ -86,11 +86,6 @@ DatFile* partman::load_records(LPCSTR lpFileName, bool fullTiltMode) { zMapResolution = LRead(fileHandle); fieldSize--; - - // -1 means universal resolution, maybe. FT demo .006 is the only known user. - if (zMapResolution == 0xff) - zMapResolution = 0; - assertm(zMapResolution <= 2, "partman: zMap resolution out of bounds"); } diff --git a/SpaceCadetPinball/pb.cpp b/SpaceCadetPinball/pb.cpp index 350bd55..02bfd05 100644 --- a/SpaceCadetPinball/pb.cpp +++ b/SpaceCadetPinball/pb.cpp @@ -32,7 +32,7 @@ DatFile* pb::record_table = nullptr; int pb::time_ticks = 0, pb::demo_mode = 0, pb::game_mode = 2; float pb::mode_countdown_, pb::time_now = 0, pb::time_next = 0, pb::ball_speed_limit, pb::time_ticks_remainder = 0; high_score_struct pb::highscore_table[5]; -bool pb::FullTiltMode = false, pb::FullTiltDemoMode = false, pb::cheat_mode = false; +bool pb::FullTiltMode = false, pb::cheat_mode = false; std::string pb::DatFileName; @@ -121,16 +121,14 @@ int pb::uninit() void pb::SelectDatFile(std::array dataSearchPaths) { DatFileName.clear(); - FullTiltDemoMode = FullTiltMode = false; - std::string datFileNames[3] + std::string datFileNames[2] { "CADET.DAT", - options::get_string("Pinball Data", pinball::get_rc_string(168, 0)), - "DEMO.DAT", + options::get_string("Pinball Data", pinball::get_rc_string(168, 0)) }; - // Default game data test order: CADET.DAT, PINBALL.DAT, DEMO.DAT + // Default game data test order: CADET.DAT, PINBALL.DAT if (options::Options.Prefer3DPBGameData) std::swap(datFileNames[0], datFileNames[1]); for (auto path : dataSearchPaths) @@ -138,19 +136,16 @@ void pb::SelectDatFile(std::array dataSearchPaths) if (DatFileName.empty() && path) { pinball::BasePath = path; - for (auto datFileName : datFileNames) + for (int i = 0; i < 2; i++) { + auto datFileName = datFileNames[i]; auto datFilePath = pinball::make_path_name(datFileName); auto datFile = fopenu(datFilePath.c_str(), "r"); if (datFile) { fclose(datFile); DatFileName = datFileName; - if (datFileName == "CADET.DAT") - FullTiltMode = true; - if (datFileName == "DEMO.DAT") - FullTiltDemoMode = FullTiltMode = true; - + FullTiltMode = datFileName == "CADET.DAT"; printf("Loading game from: %s\n", datFilePath.c_str()); break; } diff --git a/SpaceCadetPinball/pb.h b/SpaceCadetPinball/pb.h index 40a62af..5c2a173 100644 --- a/SpaceCadetPinball/pb.h +++ b/SpaceCadetPinball/pb.h @@ -40,7 +40,7 @@ public: static DatFile* record_table; static TPinballTable* MainTable; static high_score_struct highscore_table[5]; - static bool FullTiltMode, FullTiltDemoMode; + static bool FullTiltMode; static std::string DatFileName; static int init();