Current AO progress is:
Overall Complete functions: ~99% (See below)
Overall Complete instructions: ~99%
Hello all,
We are nearing the endgame. The reversing project is one step from releasing a standalone version of AO’s engine and thus providing the same boons as the AE version does. While there are still some bugs that need to be fixed (for instance the audio currently completely refuses to work and the input has problems too), you can nonetheless expect AO to drop in the upcoming months.
With these happy news out of the way, it’s time to take a look at this month’s “whodunnit.” Like always, you can click on their names to see every single git commit they made along with the code in these commits. And now strap yourself in, because there are a lot of changes and additions to go over:
Paul
- Implemented the
LiftPoint
andMusicController
classes. - Finished implementing the
Bee
BirdPortal
,CircularFade
,DeathGas
,Demo
,Gibs
,Grenade
,HintFly
,MotionDetector
,ParticleBurst
,PlatformBase
,PullRingRope
,Spark
andZapLine
classes. - Finished remaining
Decompress
andFactory
functions. - Also implemented the following functions:
BaseBomb::DealDamageRect_417A50()
DynamicArray::Remove_Item_404520()
FlameSparks::VRender_432640()
FlintLockFire::VRender_41B0F0()
MainMenuTransition::VRender_436610()
Menu::FMV_Or_Level_Select_Render_47EEA0()
SaveGame::Kill_Objects_451720()
SaveGame::Load_459970()
ScreenShake::VRender_4625E0()
Shadow::Calculate_Position_462040()
Shadow::Render_462410()
SlingMudokon::tsub_470230()
SlingMudokon::tsub_4707B0()
String_FormatString_450DC0()
- Named fields and arrays in the
Input
,MainMenu
,SaveGame
andStringFormatters
classes. - Deleted a constructor of the
BaseAnimatedWithPhysicsGameObject
class to work around a crash. - Replaced Travis Continuous Integration with Azure Pipelines/Azure Devops.
- Fix Abe’s Exoddus sound regression playing a note every few seconds that shouldn’t be there.
- Added missing Hint Fly data.
- Stopped Stockyard stars rendering in standalone.
- Did a whole load of fixes to get standalone to run.
D3nwah
- Implemented the following functions:
AbilityRing::VRender_456340()
BeeSwarm::VRender_480AC0()
Blood::VRender_407810()
DDCheat::DebugOut_495990()
DDCheat::Misc_409E90()
DDCheat::ScreenShot_409720()
DDCheat::sub_498B40()
DDCheat::Sub_49AD50()
DDCheat::Teleport_409CE0()
DDCheat::VUpdate_4098C0()
DemoPlayback::ctor_4517B0()
DoorFlame::VUpdate_432440()
Explosion::DealBlastDamage_459160()
Input_SaveSettingsIni_44F460()
Input::Update()
LCDScreen::VRender_434400()
LCDScreen::VUpdate_4341B0()
Menu::ButtonRemap_Render_47F940()
Menu::Options_Controller_Render_47F430()
PauseMenu::VRender_44E6F0()
PauseMenu::VUpdate_44DFB0()
Rope::VRender_458780()
ScreenWave::VRender_463130()
SFX_Play_43AD70()
SFX_Play_43ADE0()
SFX_Play_43AE60()
SFX_Play_43AED0()
Slog::Sfx_475BD0()
SND_Init_Ambiance_4765C0()
SnoozeParticle::VRender_464620()
Spark::VUpdate_477DB0()
Start_Slig_sounds_476960()
ThrowableTotalIndicator::VRender()
- Fixed issue #706: Can’t bind fart/roll input on gamepad.
- Fixed issue #897: Lift ropes are borked.
- Applied style fixes.
- Named fields in the
DDCheat
,Input
andSaveGame
classes. - Deleted unneeded
SaveGame::sub_45A2D0()
function.
Mouzedrift
- Implemented the following functions:
AliveFont::DrawString_41C360()
AliveFont::MeasureWidth_41C200()
AliveFont::MeasureWidth_41C2B0()
AliveFont::SliceText_41C6C0()
BoomMachine::VIsButtonOn()
BoomMachine::VHandleButton()
BoomMachine::VUpdate()
Bullet::VUpdate()
Meat::AddToPlatform_438EA0()
Meat::InTheAir_438720()
Meat::OnCollision_438D80()
Meat::VGetCount_439020()
Meat::VOnTrapDoorOpen_438FD0()
Meat::VUpdate_438A20()
Slig::Brain_GetAlertedTurn_46E520()
SlingMudokon::VUpdate()
SnoozeParticle::VUpdate_464500()
- Fixed the following issues:
- #338: You cant delete a save that has been created in the same session.
- #339: You cant load a fresh save from the main menu that has been created in the same session.
- #803: Slig turns around when he shouldn’t.
- #806: Abe starts run jumping too early.
- #824: Chime Lock ball moves on its own.
- #841: Slig doesn’t move when he should.
- #898: Paramite thinks he’s cornered when he isn’t.
- Applied style fixes.
- Swapped an integer still used in the
Abe
class for its enumeration counterpart (1
tokEventSpeaking_1
). - Converted integers to enumerations in the
BeeNest
,BoomMachine
,Grinder
,InvisibleEffect
,MeatSaw
,RollingBall
,RollingBallStopper
,SecurityClaw
andSecurityOrb
classes. - Named fields, functions, flags and states in the
Abe
,BaseGameObject
,BirdPortal
,BoomMachine
,CircularFade
,Elum
,Font
,GrenadeMachineNozzle
,Grinder
,Input
,InvisibleEffect
,LiftMover
,MainMenu
,Mine
andMudokon
classes. - Made it so Abe’s Oddysee also used resource IDs.
- Fixed circular fade not being destroyed.
- Fixed broken Foot Switch.
- Fixed a possible crash when loading into screens with Sligs in the
Slig::CreateFromSaveState_4B3B50()
function. - Fixed a crash in the
Slig::vUpdateAnim_4B1320()
function. - Fixed Intellisense blowing up.
- Fixed grenade getting stuck in the air.
- Fixed wrong sound being played.
- Fixed Sling Mudokon not waiting before whistling.
- Fixed Sligs trying to shoot Abe behind cover.
- Fixed wrong run jump behaviour.
- Fixed
ParticleBurst
parts looking wrong compared to OG. - Fixed lift idle bug.
LIJI32
- Fixed rounding errors.
- Improved rendering on high DPI displays.
- Changed SDL keycodes to SDL scancodes so Abe’s Exoddus responds to non-QWERTY/Latin keyboard layouts.
Pryon
- Named fields, function arguments and states in the
BaseBomb
,DeathFadeout
,DemoPlayback
,Dove
,Input
andMainMenuController
classes. - Fixed issue #826: Screen doesn’t change when you hop into a different screen with a certain distance.
- Fixed issue #843: Game crashes when you enter the boardroom screen with the gas timer.
- Fixed keyboard rebinding bug introduced in commit
e8d338d
.
THEONLYDarkShadow
- Named almost every single yet unamed field, flag, structure and function in the
Abe
class. - Named a couple of unnamed arguments in the
Alarm::ctor_4091F0()
function. - Fixed alignment of the switch-case statement in the
Alarm::vUpdate_409460()
. - Named an object type in the
BaseGameObject
class. - Named fields and flags in the
BaseAliveGameObject
class. - Fixed alignment of switch-case statements in the
BaseAliveGameObject
class. - Named states in the
GameEnderController
class. - Named some fields in the
LaughingGas
class. - Named a couple of fields in the
MusicController
class. - Fixed Abe’s Oddysee standalone not running on GNU + Linux systems.
UltraStars3000
- Fixed issue #847: Specific ring Mudokon shouldn’t be asking for a password.
- Did a float cast fix in the
DebugHelpers::Vec2Distance()
function.
I’d like to thank THEONLYDarkShadow, for lending me a huge helping hand with collecting these changes out!
As the reversing part of the project nears its completion, you can see that the team is making very rapid progress. If you would like to help us out, you can do so either financially (Patreon or PayPal) or by joining the server and contributing code or playtesting.
Thanks for reading, see you next month!