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

(MJWWHL) - Wheel of Fame - crashes on entry #34

Closed tuday2 closed 4 years ago

tuday2 commented 4 years ago

Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Unable to locate FFFF:02F9') at MBBSEmu.Memory.MemoryCore.GetWord(UInt16 segment, UInt16 offset) at MBBSEmu.CPU.CpuCore.GetOperandValueUInt16(OpKind opKind, EnumOperandType operandType) 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()

enusbaum commented 4 years ago

Wheel of Fame appears to support RIP graphics.

To detect if the user is using RIP graphics, it checks int clingo to get the index of the language the user is using (for MBBSEmu, this will always be 0) and then looks up that index in struct lingo **languages;

Property for MAJORBBS.761 (int clingo) needs to be created with a value of 0. Additionally, MAJORBBS.762 struct lingo **languages; needs to be implemented. From the disassembly, it appears the first value in the lingo struct is a char* to the language string. Setting this value to ansi should instruct the module to continue operation in ANSI mode.

image