-
Notifications
You must be signed in to change notification settings - Fork 0
reimplement: OpenSHC::Random::RNG 100% #65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| #include "OpenSHC/Random/RNG.func.hpp" | ||
| #include "OpenSHC/Random/RNG.hpp" | ||
|
|
||
| namespace OpenSHC { | ||
| namespace Random { | ||
|
|
||
| // FUNCTION: STRONGHOLDCRUSADER 0x00471810 | ||
| RNG* RNG::Constructor_RNG() | ||
|
|
||
| { | ||
| MACRO_CALL_MEMBER(RNG_Func::setTimeBasedSeed, this)(); | ||
| MACRO_CALL_MEMBER(RNG_Func::populateRNG1040, this)(); | ||
| return this; | ||
| } | ||
|
|
||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
|
|
||
| #include "OpenSHC/Random/RNG.hpp" | ||
|
|
||
| namespace OpenSHC { | ||
| namespace Random { | ||
|
|
||
| // FUNCTION: STRONGHOLDCRUSADER 0x0046a800 | ||
| void RNG::nextRandomNumber1() | ||
| { | ||
| this->currentNumber1 = this->randomNumbers[this->index1]; | ||
| this->index1 = this->index1 + 1; | ||
| if (20000 <= this->index1) { | ||
| this->index1 = 0; | ||
| } | ||
| return; | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I do not think we should use an explicit final return in a void function.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fair! |
||
| } | ||
| } | ||
|
|
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
|
|
||
| #include "OpenSHC/Random/RNG.hpp" | ||
|
|
||
| namespace OpenSHC { | ||
| namespace Random { | ||
|
|
||
| // FUNCTION: STRONGHOLDCRUSADER 0x0046a7d0 | ||
| void RNG::nextRandomNumber2() | ||
| { | ||
| this->currentNumber2 = this->randomNumbers[this->index2]; | ||
| this->index2 = this->index2 + 1; | ||
| if (20000 <= this->index2) { | ||
| this->index2 = 0; | ||
| } | ||
| return; | ||
| } | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| #include "OpenSHC/Global.func.hpp" | ||
| #include "OpenSHC/OS.func.hpp" | ||
| #include "OpenSHC/Random/RNG.func.hpp" | ||
| #include "OpenSHC/Random/RNG.hpp" | ||
|
|
||
| namespace OpenSHC { | ||
| namespace Random { | ||
|
|
||
| // FUNCTION: STRONGHOLDCRUSADER 0x0046a760 | ||
| void RNG::populateRNG1040() | ||
|
|
||
| { | ||
|
|
||
| MACRO_CALL(OpenSHC::Global_Func::SetRNGSeed)(this->seed); | ||
| this->index2 = 0; | ||
| this->index1 = 0; | ||
| short* _pRandomNumber = &this->randomNumbers[0]; | ||
| int n = 20000; | ||
| do { | ||
| int random = MACRO_CALL(OpenSHC::OS_Func::_rand)(); | ||
| *_pRandomNumber = (short)random; | ||
| _pRandomNumber += 1; | ||
| n -= 1; | ||
| } while (n != 0); | ||
|
Comment on lines
+17
to
+24
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is unnerving... I would think running over the whole I assume making this an up-counting for loop will not create the same effect, hm?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So, this one is interesting: I checked how one would get the size of an C array also, but the only thing I found was for (int i = 0; i < sizeof(this->randomNumbers) / sizeof(this->randomNumbers[0]); i++) {
this->randomNumbers[i] = MACRO_CALL(OpenSHC::OS_Func::_rand)();
}One could also make the size of randoms a constant or something, to use in different positions. But I am not sure if this kind of "binding" is something we want to do at this point, since it makes an overreach, leaving the current cpp file. But it makes my suspicion likelier, that structures like |
||
|
|
||
| this->currentNumber2 = this->randomNumbers[this->index2]; | ||
| this->index2 += 1; | ||
|
|
||
| this->currentNumber1 = this->randomNumbers[this->index1]; | ||
| this->index1 += 1; | ||
|
|
||
| return; | ||
| } | ||
|
|
||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| #include "OpenSHC/OS.func.hpp" | ||
| #include "OpenSHC/Random/RNG.func.hpp" | ||
| #include "OpenSHC/Random/RNG.hpp" | ||
| #include <time.h> | ||
|
|
||
| namespace OpenSHC { | ||
| namespace Random { | ||
|
|
||
| // FUNCTION: STRONGHOLDCRUSADER 0x0046a740 | ||
| void RNG::setTimeBasedSeed() | ||
|
|
||
| { | ||
|
|
||
| __time64_t time = MACRO_CALL(OpenSHC::OS_Func::__time64)((__time64_t*)0x0); | ||
| this->seed = (int)time; | ||
| return; | ||
| } | ||
|
|
||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10168,10 +10168,10 @@ SHC_3BB0A8C1_0x0046A4C4 | 0.0% | Pending | |
| SHC_3BB0A8C1_0x0046A4C8 | 0.0% | Pending | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you count the one that work if the Lib functions are active as 100%?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes! I was not sure what to call them. "Reimplemented (non-call matching)"
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have a similar case in #56. It really depends a bit on how we handle the resolvers. I wrote you on Discord that the partial tests might get harder the more resolvers are active. If we assume we keep the resolver on false in general, a reimplementation would be 100% if it matches 100% in case the called resolvers are active. In would not make sense otherwise and would not need a special mark, since the non-100% are artifical through the resolvers. |
||
| SHC_3BB0A8C1_0x0046A4D0 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A720 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A740 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A760 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A7D0 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A800 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A740 | 100.0% | Reimplemented | ||
| SHC_3BB0A8C1_0x0046A760 | 100.0% | Reimplemented | ||
| SHC_3BB0A8C1_0x0046A7D0 | 100.0% | Reimplemented | ||
| SHC_3BB0A8C1_0x0046A800 | 100.0% | Reimplemented | ||
| SHC_3BB0A8C1_0x0046A830 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A850 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x0046A890 | 0.0% | Pending | ||
|
|
@@ -10475,7 +10475,7 @@ SHC_3BB0A8C1_0x004717F8 | 0.0% | Pending | |
| SHC_3BB0A8C1_0x004717FC | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471800 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471804 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471810 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471810 | 100.0% | Reimplemented | ||
| SHC_3BB0A8C1_0x00471830 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471860 | 0.0% | Pending | ||
| SHC_3BB0A8C1_0x00471890 | 0.0% | Pending | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This newline is valid according to our linter settings?
Well, ok. 😅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like it either hahaha, shall we update the clang-formatter? :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you find a fitting setting, feel free.
It is not horrible if some of this slips through, but better earlier than later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, short research indicates that there is no specific setting to remove this line break. I think than it is okayish, but if these things happen, try to remove them manually.