joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Disabling the FPU doesn’t stop Quake from running

skitt opened this issue · comments

Describe the bug

Quake requires a FPU and on a real FPU-less system it aborts with “Error: Quake requires a floating-point processor”. Disabling the FPU in DOSBox-X doesn’t prevent Quake from running, I thought it would/should.

Steps to reproduce the behaviour

  1. Start DOSBox-X with dosbox-x -set "cpu fpu=false" -set "cpu cputype=pentium"
  2. Confirm that the logs show the corresponding warning: “WARNING: Disabling FPU support for this CPU type is unusual, may confuse DOS programs”
  3. NSSI and similar tools determine that there is no FPU
  4. Start Quake, it runs fine

Expected behavior

Quake should abort as described above.

What operating system(s) this bug have occurred on?

Debian 12

What version(s) of DOSBox-X have this bug?

2024.03

Used configuration

No response

Output log

No response

Additional information

I haven’t tried with FPU emulation disabled at build-time, see #4262

Quake (or rather, DJGPP) expects interrupt 7 to occur if it tries to run a floating-point instruction without a FPU. It seems this doesn’t happen on DOSBox-X.

Have you checked that no similar bug report(s) exist?

  • I have searched and didn't find any similar bug report.

Code of Conduct & Contributing Guidelines

  • I agree to follow the code of conduct and the contributing guidelines.

I'm able to cause Quake to crash by setting fpu=false.

That’s intriguing, I wonder what the difference is...

Visual Studio x64 version runs MCPDIAG regardless of fpu=true|false when CPU core is dynamic_x86.
If CPU core is normal and fpu=false, MCPDIAG mentions FPU is not available.

CPU core = dynamic_x86 and fpu=false

image

CPU core: normal and fpu=false

image