mbbsemu / MBBSEmu

The MajorBBS Emulation Project is an Open Source, Cross-Platform emulator for easily running The MajorBBS & Worldgroup Modules
https://www.mbbsemu.com
MIT License
129 stars 14 forks source link

[MHWWHL] Wheel of Fame! - Crashing on any command in game #53

Closed tuday2 closed 4 years ago

tuday2 commented 4 years ago

Module Information

Describe the bug Module crashes on any input once you are playing a game

To Reproduce Steps to reproduce the behavior: Enter module - play game - Any input once in game will crash MBBSemu

Expected behavior Game plays properly

Screenshots Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Unknown Exported Function Ordinal in MAJORBBS: 579') at MBBSEmu.HostProcess.ExportedModules.Majorbbs.Invoke(UInt16 ordinal, Boolean offsetsOnly) at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.ExternalFunctionDelegate(UInt16 ordinal, UInt16 functionOrdinal) at MBBSEmu.CPU.CpuCore.Tick() at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.Execute(IntPtr16 entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassState, Queue1 initialStackValues, UInt16 initialStackPointer) at MBBSEmu.Module.MbbsModule.Execute(IntPtr16 entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassSetState, Queue1 initialStackValues, UInt16 initialStackPointer) at MBBSEmu.HostProcess.MbbsHost.WorkerThread() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location where exception was thrown --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

Software Information:

API REPORT {"UniqueIdentifier":"MJWWHL","File":"MJWWHL.DLL","Imports":{"DOSCALLS":[89],"PHAPI":[16],"MAJORBBS":[574,762,827,459,713,460,625,330,437,516,561,599,550,628,313,53,485,534,326,578,604,566,650,441,389,543,455,456,544,65,492,589,331,476,559,474,521,761,335,463,403,629,113,785,787,786,582,117,119,162,579,401,573,654,484,520,665,571,560,77,11,659,486,621,351,522,94,411,205,225,622,757,357,167],"GALGSBL":[40,63,72,59]}}

enusbaum commented 4 years ago

MAJORBBS.579 is strlwr which converts the specified string to all lowercase.

image

Wheel of Fame appears to apply this to the input command before processing it.

Signature: char *lower=strlwr(char *string);

enusbaum commented 4 years ago

Fixed with https://github.com/enusbaum/MBBSEmu/pull/61

tuday2 commented 4 years ago

Confirmed fixed.