VOGONS


First post, by darkirk

User metadata
Rank Newbie
Rank
Newbie

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?

Reply 1 of 19, by leileilol

User metadata
Rank l33t++
Rank
l33t++

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.

apsosig.png
long live PCem

Reply 4 of 19, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie

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/blob/dos … Quake/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.

Reply 5 of 19, by darkirk

User metadata
Rank Newbie
Rank
Newbie

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

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.

Reply 6 of 19, by leileilol

User metadata
Rank l33t++
Rank
l33t++

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

apsosig.png
long live PCem

Reply 8 of 19, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie

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.

Reply 10 of 19, by Azarien

User metadata
Rank Oldbie
Rank
Oldbie
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:
JK9QUgw.png
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.

Reply 11 of 19, by leileilol

User metadata
Rank l33t++
Rank
l33t++

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.

apsosig.png
long live PCem

Reply 15 of 19, by darkirk

User metadata
Rank Newbie
Rank
Newbie

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

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'
Show last 36 lines
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'