Compiling DOSQuake on DOSEMU or DOSBOX?

Getting old software/games running on older hardware.

Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-12 @ 00:39

I'm trying to compile DOSQuake with DJGPP on some kind of emulator. Has anyone tried this before? Is there a generic makefile to work with DJGPP?
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-12 @ 01:16

Dosbox won't do it and will make gcc crash, so i'd advise something of a polished virtual machine with win9x to do it (like Qemu, Vmware)

q1source.zip lacks a DJGPP makefile so you'll have to make one.
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-12 @ 01:21

Doesn't qip quake include one? Does anyone know where i can find a copy of it? insideqc seems to keep reloading the page ad infinitum.
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-12 @ 01:26

Also, instead of setting up a Win95 image on VirtualBox or something, could it be possible to compile with OpenWatcom and run with DOSEMU?
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby Azarien » 2017-5-12 @ 10:30

I *did* compile Quake on DOSBox, but it's very slow.
It builds without problem on XP with newest DJGPP toolset (or rather it did a year ago).

Here's my never-finished and semi-abandoned source port. Pay attention to the "dos" branch which contains some DOS-specific fixes.

https://github.com/Azarien/SoftQuake

Is there a generic makefile to work with DJGPP?


https://github.com/Azarien/SoftQuake/bl ... /quake.mak

Also, instead of setting up a Win95 image on VirtualBox or something, could it be possible to compile with OpenWatcom and run with DOSEMU?


I think porting to OpenWatcom would require major changes to the code.

EDIT: the above DOS branch supports some new console commands (cmdlist, cvarlist, max_fps, in_mlook, crosshair 2) and has smooth sky scrolling. Other new features (like .ogg playback or completely rewritten DirectDraw code) are Windows-specific.
Azarien
Oldbie
 
Posts: 609
Joined: 2015-5-14 @ 07:14

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-13 @ 03:12

When trying to build your branch on DOSEMU, i got several crashes.

Code: Select all
ERROR: MFS: couldn't find root path /media/CDROM
ERROR: Fault in dosemu code, in_dpmi=2
ERROR: cpu exception in dosemu code outside of DPMI client!
trapno: 0x0e  errorcode: 0x00000007  cr2: 0x005107f4
eip: 0x00498988  esp: 0x7ffd9b30f8f0  eflags: 0x00010206
cs: 0x0033  ds: 0x0000  es: 0x0000  ss: 0x002b
ERROR: Please report the contents of ~/.dosemu/boot.log at
http://sourceforge.net/tracker/?atid=457447&group_id=49784&func=browse
It would be even more helpful if would recompile DOSEMU and reproduce this
bug with "debug on" in compiletime-settings.
Page fault: write instruction to linear address: 0x005107f4
CPU was in user mode
Exception was caused by insufficient privilege


I'm going to try on a Win98 VirtualBox soon.
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-13 @ 03:26

FWIW when I compiled the dos version of Engoo (back when it did support DOS in 2010) I used a Win98SE VirtualPC 2007 guest to do the deed. QIP Quake has long filenames so that may be an obstacle for some environments with dos only
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-13 @ 13:37

Thanks for the info! Anything is appreciated. :)

Still trying to get a Win98 copy. Will probably buy something on ebay, seems easier.
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby Azarien » 2017-5-14 @ 15:15

I never used DOSEMU and I don't know why it crashes.

I just compiled the same code with the latest DJGPP tools (GCC 7.1.0) on 32-bit Windows 10 Creators Update. The compiled game runs in DOSBox 0.74.
Azarien
Oldbie
 
Posts: 609
Joined: 2015-5-14 @ 07:14

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-15 @ 01:19

Does the final DJGPP run on 16-bit DOS?
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby Azarien » 2017-5-16 @ 20:05

darkirk wrote:Does the final DJGPP run on 16-bit DOS?


I don't have any DOS machines at hand. I tried on VMware Player with DOS 6.22. The game works when run with -nosound parameter, otherwise it crashes. I guess this is vmware issue. 320x200 is too fast and stuttering, while higher resolutions are quite low on fps. But again, I'd blame vmware which is not a gaming platform.

There's also a cosmetic bug apparent in the open-source version of Quake (1.09) for DOS (the latest official DOS version of Quake was 1.08)

There are 4-pixel wide borders at the left and right edges of the screen:
Image
It's the same kind of border that normally appears when you press the minus key to make the game area smaller.
The bug doesn't appear in Windows. I don't know the cause, but it is present in Id's original source.
Azarien
Oldbie
 
Posts: 609
Joined: 2015-5-14 @ 07:14

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-16 @ 22:56

That's definitely a gaffe id made in the source release (affects Winquake too). Note that Winquake's last release was before they had multiple GLQuake releases so they didn't bother to check on this

QIP fixes it and it should also be easily fixable itself.
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-17 @ 23:51

I can't load the QIP website in any way. It keeps refreshing. Is there a zip or something with the website files?
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-18 @ 00:35

bounce.wav
Attachments
qip_src_20020201.zip
(1.05 MiB) Downloaded 22 times
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-18 @ 04:11

Much appreciated. :)
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-24 @ 01:00

Unfortunately, QIP fails to build with DJGPP, both on Win10, Win98 and DOSBOX:

Code: Select all
release_dos/d_edge.o:d_edge.c:(.text+0x222): undefined reference to `TransformVector'
release_dos/d_edge.o:d_edge.c:(.text+0x235): undefined reference to `TransformVector'
release_dos/d_edge.o:d_edge.c:(.text+0x3fb): undefined reference to `TransformVector'
release_dos/d_edge.o:d_edge.c:(.text+0x45d): undefined reference to `D_DrawZSpans'
release_dos/d_edge.o:d_edge.c:(.text+0x4c2): undefined reference to `D_DrawZSpans'
release_dos/d_edge.o:d_edge.c:(.text+0x563): undefined reference to `D_DrawZSpans'
release_dos/d_edge.o:d_edge.c:(.text+0x61c): undefined reference to `D_DrawZSpans'
release_dos/d_edge.o:d_edge.c:(.text+0x793): undefined reference to `TransformVector'
release_dos/d_edge.o:d_edge.c:(.text+0x7e0): undefined reference to `TransformVector'
release_dos/d_init.o:d_init.c:(.text+0x184): undefined reference to `D_DrawSpans16'
release_dos/d_init.o:d_init.c:(.text+0x1bd): undefined reference to `D_DrawSpans8'
release_dos/d_modech.o:d_modech.c:(.text+0x14): undefined reference to `D_PolysetAff8End'
release_dos/d_modech.o:d_modech.c:(.text+0x19): undefined reference to `D_PolysetAff8Start'
release_dos/d_modech.o:d_modech.c:(.text+0x1f): undefined reference to `D_PolysetAff8Start'
release_dos/d_modech.o:d_modech.c:(.text+0x1bc): undefined reference to `D_PolysetAff8End'
release_dos/d_modech.o:d_modech.c:(.text+0x1c1): undefined reference to `D_PolysetAff8Start'
release_dos/d_modech.o:d_modech.c:(.text+0x1c7): undefined reference to `D_PolysetAff8Start'
release_dos/d_polyse.o:d_polyse.c:(.text+0x1c4): undefined reference to `D_PolysetCalcGradients'
release_dos/d_polyse.o:d_polyse.c:(.text+0x323): undefined reference to `D_PolysetDrawSpans8'
release_dos/d_polyse.o:d_polyse.c:(.text+0x48a): undefined reference to `D_PolysetScanLeftEdge'
release_dos/d_polyse.o:d_polyse.c:(.text+0x5e4): undefined reference to `D_PolysetDrawSpans8'
release_dos/d_polyse.o:d_polyse.c:(.text+0x747): undefined reference to `D_PolysetScanLeftEdge'
release_dos/d_scan.o:d_scan.c:(.text+0x4bf): undefined reference to `D_DrawTurbulent8Span'
release_dos/d_scan.o:d_scan.c:(.text+0x5ea): undefined reference to `D_DrawTurbulent8Span'
release_dos/d_sprite.o:d_sprite.c:(.text+0x40f): undefined reference to `TransformVector'
release_dos/d_sprite.o:d_sprite.c:(.text+0x420): undefined reference to `TransformVector'
release_dos/d_sprite.o:d_sprite.c:(.text+0x431): undefined reference to `TransformVector'
release_dos/d_sprite.o:d_sprite.c:(.text+0x52e): undefined reference to `TransformVector'
release_dos/d_sprite.o:d_sprite.c:(.text+0x73c): undefined reference to `D_SpriteDrawSpans'
release_dos/r_aclip.o:r_aclip.c:(.text+0x81f): undefined reference to `D_PolysetDraw'
release_dos/r_aclip.o:r_aclip.c:(.text+0x86e): undefined reference to `R_Alias_clip_left'
release_dos/r_aclip.o:r_aclip.c:(.text+0x8ac): undefined reference to `R_Alias_clip_right'
release_dos/r_aclip.o:r_aclip.c:(.text+0x97c): undefined reference to `R_Alias_clip_bottom'
release_dos/r_aclip.o:r_aclip.c:(.text+0x9cc): undefined reference to `R_Alias_clip_top'
release_dos/r_alias.o:r_alias.c:(.text+0x111d): undefined reference to `D_PolysetDraw'
release_dos/r_alias.o:r_alias.c:(.text+0x11c6): undefined reference to `R_AliasTransformAndProjectFinalVerts'
release_dos/r_alias.o:r_alias.c:(.text+0x11e1): undefined reference to `D_PolysetDrawFinalVerts'
release_dos/r_alias.o:r_alias.c:(.text+0x1666): undefined reference to `D_Aff8Patch'
release_dos/r_alias.o:r_alias.c:(.text+0x1213): undefined reference to `D_PolysetDraw'
release_dos/r_draw.o:r_draw.c:(.text+0x208): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0x37d): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0x3f2): undefined reference to `TransformVector'
release_dos/r_draw.o:r_draw.c:(.text+0x4c3): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0x5fe): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0x670): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0x6de): undefined reference to `TransformVector'
release_dos/r_draw.o:r_draw.c:(.text+0x7a6): undefined reference to `R_ClipEdge'
release_dos/r_draw.o:r_draw.c:(.text+0xbfe): undefined reference to `TransformVector'
release_dos/r_edge.o:r_edge.c:(.text+0xc): undefined reference to `r_bmodelactive'
release_dos/r_edge.o:r_edge.c:(.text+0x13): undefined reference to `r_bmodelactive'
release_dos/r_edge.o:r_edge.c:(.text+0x1d6): undefined reference to `R_GenerateSpans'
release_dos/r_edge.o:r_edge.c:(.text+0x3ae): undefined reference to `r_bmodelactive'
release_dos/r_edge.o:r_edge.c:(.text+0x570): undefined reference to `R_RemoveEdges'
release_dos/r_edge.o:r_edge.c:(.text+0x588): undefined reference to `R_StepActiveU'
release_dos/r_edge.o:r_edge.c:(.text+0x5ce): undefined reference to `R_InsertNewEdges'
release_dos/r_edge.o:r_edge.c:(.text+0x666): undefined reference to `R_InsertNewEdges'
release_dos/r_efrag.o:r_efrag.c:(.text+0x105): undefined reference to `BoxOnPlaneSide'
release_dos/r_efrag.o:r_efrag.c:(.text+0x224): undefined reference to `BoxOnPlaneSide'
release_dos/r_main.o:r_main.c:(.text+0x900): undefined reference to `R_SurfacePatch'
release_dos/r_main.o:r_main.c:(.text+0xea9): undefined reference to `R_Surf16End'
release_dos/r_main.o:r_main.c:(.text+0xeae): undefined reference to `R_Surf16Start'
release_dos/r_main.o:r_main.c:(.text+0xeb4): undefined reference to `R_Surf16Start'
release_dos/r_main.o:r_main.c:(.text+0xec8): undefined reference to `R_Surf16Patch'
release_dos/r_main.o:r_main.c:(.text+0xee1): undefined reference to `R_Surf8End'
release_dos/r_main.o:r_main.c:(.text+0xee7): undefined reference to `R_Surf8Start'
release_dos/r_main.o:r_main.c:(.text+0xeee): undefined reference to `R_Surf8Start'
release_dos/r_main.o:r_main.c:(.text+0xf02): undefined reference to `R_Surf8Patch'
release_dos/r_main.o:r_main.c:(.text+0x1cc1): undefined reference to `R_SurfacePatch'
release_dos/r_main.o:r_main.c:(.text+0x1d7c): undefined reference to `Sys_LowFPPrecision'
release_dos/r_main.o:r_main.c:(.text+0x1edf): undefined reference to `Sys_HighFPPrecision'
release_dos/r_main.o:r_main.c:(.text+0x2004): undefined reference to `Sys_HighFPPrecision'
release_dos/r_main.o:r_main.c:(.text+0x21c0): undefined reference to `R_EdgeCodeEnd'
release_dos/r_main.o:r_main.c:(.text+0x21c6): undefined reference to `R_EdgeCodeStart'
release_dos/r_main.o:r_main.c:(.text+0x21cc): undefined reference to `R_EdgeCodeStart'
release_dos/r_misc.o:r_misc.c:(.text+0x79e): undefined reference to `TransformVector'
release_dos/r_part.o:r_part.c:(.text+0x1324): undefined reference to `D_DrawParticle'
release_dos/r_sprite.o:r_sprite.c:(.text+0x536): undefined reference to `TransformVector'
release_dos/r_surf.o:r_surf.c:(.text+0x538): undefined reference to `R_DrawSurfaceBlock16'
release_dos/r_surf.o:r_surf.c:(.text+0x830): undefined reference to `R_DrawSurfaceBlock8_mip0'
release_dos/r_surf.o:r_surf.c:(.text+0x834): undefined reference to `R_DrawSurfaceBlock8_mip1'
release_dos/r_surf.o:r_surf.c:(.text+0x838): undefined reference to `R_DrawSurfaceBlock8_mip2'
release_dos/r_surf.o:r_surf.c:(.text+0x83c): undefined reference to `R_DrawSurfaceBlock8_mip3'
release_dos/snd_mix.o:snd_mix.c:(.text+0x88): undefined reference to `Snd_WriteLinearBlastStereo16'
release_dos/snd_mix.o:snd_mix.c:(.text+0x3e7): undefined reference to `SND_PaintChannelFrom8'
release_dos/sys_dos.o:sys_dos.c:(.text+0x764): undefined reference to `MaskExceptions'
release_dos/sys_dos.o:sys_dos.c:(.text+0x769): undefined reference to `Sys_SetFPCW'
release_dos/sys_dos.o:sys_dos.c:(.text.startup+0x171): undefined reference to `MaskExceptions'
release_dos/sys_dos.o:sys_dos.c:(.text.startup+0x176): undefined reference to `Sys_SetFPCW'
release_dos/vid_vga.o:vid_vga.c:(.text+0x907): undefined reference to `VGA_UpdateLinearScreen'
release_dos/vid_vga.o:vid_vga.c:(.text+0x92a): undefined reference to `VGA_UpdatePlanarScreen'
release_dos/vid_ext.o:vid_ext.c:(.text+0x235): undefined reference to `VGA_UpdateLinearScreen'
release_dos/world.o:world.c:(.text+0x728): undefined reference to `BoxOnPlaneSide'
release_dos/world.o:world.c:(.text+0x986): undefined reference to `SV_HullPointContents'
release_dos/world.o:world.c:(.text+0x9c6): undefined reference to `SV_HullPointContents'
release_dos/world.o:world.c:(.text+0xc72): undefined reference to `SV_HullPointContents'
release_dos/world.o:world.c:(.text+0xd26): undefined reference to `SV_HullPointContents'
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-24 @ 01:24

Oh darn I forgot this file
Attachments
qip_src_general.zip
(226.69 KiB) Downloaded 20 times
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby darkirk » 2017-5-24 @ 03:36

DOS Quake doesn't work without ASM?
darkirk
Newbie
 
Posts: 12
Joined: 2017-5-12 @ 00:30

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby leileilol » 2017-5-24 @ 04:55

It can work if you change some id386s to 0, in which it will compile to a more portable (and much slower) C-based codepath
by the way, DOSBox is not for running Windows 9x
User avatar
leileilol
l33t++
 
Posts: 9733
Joined: 2006-12-16 @ 18:03

Re: Compiling DOSQuake on DOSEMU or DOSBOX?

Postby Azarien » 2017-5-24 @ 14:54

I don't see the point of removing .asm parts from DOS build. I left them also in Windows as I don't care about 64 bits.
Azarien
Oldbie
 
Posts: 609
Joined: 2015-5-14 @ 07:14


Return to Software

Who is online

Users browsing this forum: No registered users and 2 guests