VOGONS

Common searches


First post, by keenmaster486

User metadata
Rank l33t
Rank
l33t

EDIT: I should have done this in the first place but here's a self-extracting archive that will fit on a floppy disk, for y'all's convenience:
download/file.php?id=45182

I've made another game engine. Whoop de do.

I'd love it if those of you who like testing things on your machines would feel inclined to load it up! It's intended to run in a pure DOS environment. Probably will not run on Windows 98 due to how it messes with the DOS timer.

I'm currently away from all of my DOS machines so I have no way of testing this code other than emulators.

System requirements (currently):
-386 or better (the FB compiler produces 32-bit protected mode 386 code)
-VGA card
-Adlib / Sound Blaster
-8 MB of RAM
-How much conventional memory? I have no idea. This is why I need testers!

The goal is to make it run on a 386. It's written in FreeBasic, and I might have it just as optimized as it's going to get before moving to assembly code. I have no idea what it's going to do on a real machine. Currently it runs fine in 86Box (with a 486DX/33) and DOSBox.

In 86Box I am running MS-DOS 5.0 with a bare-bones HIMEM only setup and no extra drivers/TSRs, etc. I don't know how much conventional memory it really wants, but I do know it wants 8 MB of XMS/EMS. Memory usage is not of great concern right now; I'm currently focused on speed.

I should mention that FB code generally is very picky about DOS memory management. Sometimes it will not run at all no matter what you do, other times you have to disable EMM386, etc. But it needs to be tested in a "normal" DOS environment first before stripping things away to make it work. I'm interested in knowing what, if anything, needs to be done to get it to run.

Interestingly, in 86Box it chokes badly on a plain old Pentium (system error says "invalid opcode"), while it runs fine on a 386, 486, and MMX. I'm not sure why.

Here's the download link to it:

https://drive.google.com/open?id=1qgt-KETth_r … wsYC-A0k5a8kO03

Run ENGINE.EXE and select Level 1. The other levels will work but are very untested and use things that haven't been implemented yet.

In the IMF folder there's a program I wrote called DROPLAY. It will play DRO v1 and IMF type 0 and 1 files. You could mess around with that as well to test how well it runs on slower machines.

TED.EXE is a level editor. The key commands for it are in the DOCS folder.

Please also note that the engine will take a great deal of time to load.... the graphics loading code is very quick and dirty and due for a change.

EDIT: Oh, forgot to mention one very important thing:

DEBUG CODES:

F10 + D ---- pulls up debug information at top of screen. X and Y coordinates & velocity & acceleration of player, plus current maximum possible framerate at the upper right. It would be useful to get this framerate number, or at least the range it moves around in on particular machines.

F10 + J ---- enable / disable jump cheat (activated by up key)

Last edited by keenmaster486 on 2018-03-13, 18:48. Edited 1 time in total.

World's foremost 486 enjoyer.

Reply 1 of 40, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,

System requirements (currently):
-386 or better (the FB compiler produces 32-bit protected mode 386 code)

It seems the FB compiler produces code that also requires an FPU. I could not test it on my 25 MHz 486SX since engine.exe quits with error: 'Coprocessor not available at eip=0002b405'.
On the other hand it runs great with sound on MS-DOS 6.22 and Win98SE with Athlon XP 2200 + Abit KT7-A + SBLive! (JEMM386 and SB16 emulation loaded under DOS). I don't think it's relevant but the max FPS range is 64-512 in debug mode.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 5 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

@Falcosoft - good info! I forgot about the FPU thing. The engine uses mostly integer math so it might be worth trying to disable that. Awesome that it works on the other machine.

About the memory usage, of course 8 MB is kind of ridiculous for a 386 game. I'm going to focus on reducing memory usage later; right now I'm focused on speed and features. I can compile it with temporarily reduced memory usage though, at the expense of a bunch of internal sprites that aren't used.

World's foremost 486 enjoyer.

Reply 6 of 40, by Scali

User metadata
Rank l33t
Rank
l33t
keenmaster486 wrote:

@Falcosoft - good info! I forgot about the FPU thing. The engine uses mostly integer math so it might be worth trying to disable that. Awesome that it works on the other machine.

Is there an option to compile with FPU emulation?

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 7 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t
Scali wrote:

Is there an option to compile with FPU emulation?

There is an FPU emulator somewhere which is reported to work; I think maybe it comes with DJGPP? In any case there is no flag on FBC to disable FPU code.

As for memory usage, I stripped down the graphics loading code and produced the following executable:

Filename
ENGINE.EXE
File size
232 KiB
Downloads
54 downloads
File license
Fair use/fair dealing exception

This one only uses 3 MB of memory, so a 386 with FPU and 4 MB should be good to go!

World's foremost 486 enjoyer.

Reply 8 of 40, by Scali

User metadata
Rank l33t
Rank
l33t
keenmaster486 wrote:
Scali wrote:

Is there an option to compile with FPU emulation?

There is an FPU emulator somewhere which is reported to work; I think maybe it comes with DJGPP? In any case there is no flag on FBC to disable FPU code.

Well, you won't have to disable FPU code... There are ways to generate code that can call emulation routines when there is no FPU installed, or run on the FPU directly.

But perhaps your compiler does not support that.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 9 of 40, by keropi

User metadata
Rank l33t++
Rank
l33t++

That FPU requirement is a block for me, I can't test it on my 386DX system (my next one is a p233mmx )

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 10 of 40, by badmojo

User metadata
Rank l33t
Rank
l33t
keropi wrote:

That FPU requirement is a block for me, I can't test it on my 386DX system (my next one is a p233mmx )

What?! Where is your 486 young man?

Life? Don't talk to me about life.

Reply 11 of 40, by keropi

User metadata
Rank l33t++
Rank
l33t++

in pieces... can't decide what to build tbh I just bought a 4DPS mobo and I think I'll work with that - maybe 🤣

🎵 🎧 PCMIDI MPU , OrpheusII , Action Rewind , Megacard and 🎶GoldLib soundcard website

Reply 12 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Haha, I'd love a test on a 233MMX anyway...

Totally untested non-FPU-dependent executable coming right up!

Filename
ENGINE.EXE
File size
269 KiB
Downloads
58 downloads
File license
Fair use/fair dealing exception

World's foremost 486 enjoyer.

Reply 13 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Updatey updatey, I tested the above executable in 86Box with a 386SX/33 CPU, and lo and behold it works! Not a perfect indicator of whether it would work in the real world though.

Interestingly, I had to disable HIMEM in CONFIG.SYS for it to work; otherwise it returned a page fault. Not sure why this worked, or even HOW it worked given that the thing requires extended memory. Oh well I guess...

World's foremost 486 enjoyer.

Reply 14 of 40, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++
Azarien wrote:
keenmaster486 wrote:

-8 MB of RAM

This seems quite high for a 386 machine, at least for a "period-correct" one.

I remember a guy selling his OS/2 2.1 rig way back then with 20mb on board. That amount of RAM would have been worth $1k at the time.

I always thought part of the reason to partake in this hobby is to mess around with hardware we couldn't back in the day. Who cares if it wasn't common, if the system can run with 20mb or 32mb of RAM, why not load it up?

All hail the Great Capacitor Brand Finder

Reply 15 of 40, by Plasma

User metadata
Rank Member
Rank
Member
keenmaster486 wrote:

Updatey updatey, I tested the above executable in 86Box with a 386SX/33 CPU, and lo and behold it works! Not a perfect indicator of whether it would work in the real world though.

Interestingly, I had to disable HIMEM in CONFIG.SYS for it to work; otherwise it returned a page fault. Not sure why this worked, or even HOW it worked given that the thing requires extended memory. Oh well I guess...

FreeBASIC DOS programs use DPMI (protected mode).

Reply 16 of 40, by keenmaster486

User metadata
Rank l33t
Rank
l33t

I know, but my experience has been that DPMI servers need HIMEM... maybe I'm wrong on this? Do they access memory directly without needing anything loaded in CONFIG.SYS?

World's foremost 486 enjoyer.

Reply 17 of 40, by Scali

User metadata
Rank l33t
Rank
l33t
keenmaster486 wrote:

I know, but my experience has been that DPMI servers need HIMEM... maybe I'm wrong on this? Do they access memory directly without needing anything loaded in CONFIG.SYS?

Many DOS extenders can use memory in various ways...
Not loading any device drivers and having the DOS extender manage all memory is usually the best way to do it.
DPMI mainly exists to have multiple memory managers/drivers working together, because there is a common API. So when himem.sys and/or EMM386 are already loaded, the DPMI interface allows DOS extenders to still switch to protected mode and access extended or expanded memory.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 18 of 40, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Azarien wrote:
keenmaster486 wrote:

-8 MB of RAM

This seems quite high for a 386 machine, at least for a "period-correct" one.

I feel special now. 😊 My father's business PC was a 386DX-40 with 16MB of RAM, Trident VGA,
a single-speed CD-ROM with controller card and two IDE drives (second for data) and a 20" CRT monitor with BNC connectors.
Oh, and he also had got a huge external QIC streamer with a dedicated controller card and a software called "SYTOS".
I was allowed to play some games there in '95/'96. Only from diskette, of course.
We quickly became worried when one of my games produced weird sounds, haha. 😅

keenmaster486 wrote:
Scali wrote:

Is there an option to compile with FPU emulation?

There is an FPU emulator somewhere which is reported to work; I think maybe it comes with DJGPP? In any case there is no flag on FBC to disable FPU code.

I remember Franke387 and Emul87.

By the way, is the engine using i87, i287 or i387 instructions ?
i287 seemes to be the safests (infinities excluded) of them,
since it didn't require FWAIT instuctions anymore, but most FPU emulators did handle them well enough.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//