re-enable LEGO1 impl

This commit is contained in:
jonschz 2025-06-20 14:33:37 +02:00
parent 004a5fd78a
commit 6988f938c3
2 changed files with 50 additions and 47 deletions

View File

@ -168,13 +168,11 @@ class LegoGameState {
ScoreItem* GetScore(MxS32 p_index) { return p_index >= m_count ? NULL : &m_scores[p_index]; } ScoreItem* GetScore(MxS32 p_index) { return p_index >= m_count ? NULL : &m_scores[p_index]; }
MxS16 m_count; // 0x00 MxS16 m_count; // 0x00
// TODO: Enable ifdefs when done #ifdef BETA10
// #ifdef BETA10 MxS16 m_indices[20]; // 0x02
MxS16 m_indices[20]; #endif
// #endif ScoreItem m_scores[20]; // 0x02 (0x22 for BETA10)
MxS16 m_unk0x372; // 0x372 (0x392 for BETA10)
ScoreItem m_scores[20]; // 0x02
MxS16 m_unk0x372; // 0x372
}; };
LegoGameState(); LegoGameState();

View File

@ -1473,6 +1473,8 @@ void LegoGameState::History::WriteScoreHistory()
MxS32 unk0x2c; MxS32 unk0x2c;
ScoreItem* p_scorehist = FUN_1003cc90(&GameState()->m_players[0], GameState()->m_unk0x24, unk0x2c); ScoreItem* p_scorehist = FUN_1003cc90(&GameState()->m_players[0], GameState()->m_unk0x24, unk0x2c);
#ifdef BETA10
if (!p_scorehist) { if (!p_scorehist) {
MxS32 i; MxS32 i;
// LINE: BETA10 0x100870ee // LINE: BETA10 0x100870ee
@ -1520,51 +1522,54 @@ void LegoGameState::History::WriteScoreHistory()
p_scorehist->m_unk0x2a = GameState()->m_unk0x24; p_scorehist->m_unk0x2a = GameState()->m_unk0x24;
} }
// if (p_scorehist != NULL) { #else
// p_scorehist->m_totalScore = totalScore; // TODO: Improve based on BETA10 if possible
// memcpy(p_scorehist->m_scores, scores, sizeof(p_scorehist->m_scores));
// }
// else {
// if (m_count < (MxS16) sizeOfArray(m_scores)) {
// assert(totalScore > p_scorehist->m_totalScore);
// m_scores[m_count].m_totalScore = totalScore; if (p_scorehist != NULL) {
// memcpy(m_scores[m_count].m_scores, scores, sizeof(m_scores[m_count].m_scores)); p_scorehist->m_totalScore = totalScore;
// m_scores[m_count].m_name = GameState()->m_players[0]; memcpy(p_scorehist->m_scores, scores, sizeof(p_scorehist->m_scores));
// m_scores[m_count].m_unk0x2a = GameState()->m_unk0x24; }
// m_count++; else {
// } if (m_count < (MxS16) sizeOfArray(m_scores)) {
// else if (m_scores[19].m_totalScore <= totalScore) { assert(totalScore > p_scorehist->m_totalScore);
// m_scores[19].m_totalScore = totalScore;
// memcpy(m_scores[19].m_scores, scores, sizeof(m_scores[19].m_scores));
// m_scores[19].m_name = GameState()->m_players[0];
// m_scores[19].m_unk0x2a = GameState()->m_unk0x24;
// }
// }
// MxU8 tmpScores[5][5]; m_scores[m_count].m_totalScore = totalScore;
// Username tmpPlayer; memcpy(m_scores[m_count].m_scores, scores, sizeof(m_scores[m_count].m_scores));
// MxS16 tmpUnk0x2a; m_scores[m_count].m_name = GameState()->m_players[0];
m_scores[m_count].m_unk0x2a = GameState()->m_unk0x24;
m_count++;
}
else if (m_scores[19].m_totalScore <= totalScore) {
m_scores[19].m_totalScore = totalScore;
memcpy(m_scores[19].m_scores, scores, sizeof(m_scores[19].m_scores));
m_scores[19].m_name = GameState()->m_players[0];
m_scores[19].m_unk0x2a = GameState()->m_unk0x24;
}
}
// // TODO: Match bubble sort loops MxU8 tmpScores[5][5];
// for (MxS32 i = m_count - 1; i > 0; i--) { Username tmpPlayer;
// for (MxS32 j = 1; j <= i; j++) { MxS16 tmpUnk0x2a;
// if (m_scores[j - 1].m_totalScore < m_scores[j].m_totalScore) {
// memcpy(tmpScores, m_scores[j - 1].m_scores, sizeof(tmpScores));
// tmpPlayer = m_scores[j - 1].m_name;
// tmpUnk0x2a = m_scores[j - 1].m_unk0x2a;
// memcpy(m_scores[j - 1].m_scores, m_scores[j].m_scores, sizeof(m_scores[j - 1].m_scores)); // TODO: Match bubble sort loops
// m_scores[j - 1].m_name = m_scores[j].m_name; for (MxS32 i = m_count - 1; i > 0; i--) {
// m_scores[j - 1].m_unk0x2a = m_scores[j].m_unk0x2a; for (MxS32 j = 1; j <= i; j++) {
if (m_scores[j - 1].m_totalScore < m_scores[j].m_totalScore) {
memcpy(tmpScores, m_scores[j - 1].m_scores, sizeof(tmpScores));
tmpPlayer = m_scores[j - 1].m_name;
tmpUnk0x2a = m_scores[j - 1].m_unk0x2a;
// memcpy(m_scores[j].m_scores, tmpScores, sizeof(m_scores[j].m_scores)); memcpy(m_scores[j - 1].m_scores, m_scores[j].m_scores, sizeof(m_scores[j - 1].m_scores));
// m_scores[j].m_name = tmpPlayer; m_scores[j - 1].m_name = m_scores[j].m_name;
// m_scores[j].m_unk0x2a = tmpUnk0x2a; m_scores[j - 1].m_unk0x2a = m_scores[j].m_unk0x2a;
// }
// } memcpy(m_scores[j].m_scores, tmpScores, sizeof(m_scores[j].m_scores));
// } m_scores[j].m_name = tmpPlayer;
// } m_scores[j].m_unk0x2a = tmpUnk0x2a;
}
}
}
#endif
} }
// FUNCTION: LEGO1 0x1003cc90 // FUNCTION: LEGO1 0x1003cc90