VOGONS


First post, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hello,
i get some trouble trying to load SB16 emulation booting in MS-MODE from Windows 98SE (please read at bottom for technical details), basically, during boot, i get:

"error: Could not allocate code/patch RAM below 4 Mbyte boundary. Try loading SBEINIT.COM before SMARTDRV.EXE or minimizing VDISK RAM. Creative SB16 Emulation Driver NOT loading."

My first doubt is, why the messages mention "SMARTDRV.EXE"? I don't have any reference of it in my config.sys or autoexec.bat, i'm using a modified version of "MS-DOS Mode Super Easy" (see https://www.philscomputerlab.com/ms-dos-mode-super-easy.html) which provides a PIF file, below my customized version:

CONFIG.SYS

[COMMON]
DOS=HIGH,UMB,NOAUTO
FILES=40
BUFFERS=40
LASTDRIVE=H
COUNTRY=039,850,C:\WINDOWS\COMMAND\country.sys

[menu]
menuitem=EMC, Expanded memory + Mouse + CD-ROM
menuitem=XMC, Extended memory + Mouse + CD-ROM
menuitem=CMC, Conventional Memory only + Mouse + CD-ROM
menuitem=EM, Expanded memory + Mouse
menuitem=XM, Extended memory + Mouse
menuitem=CM, Conventional memory only + Mouse
menuitem=E, Expanded memory
menuitem=X, Extended memory
menuitem=C, Conventional memory only

menudefault=EM,10

[EMC]
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\WINDOWS\EMM386.EXE RAM
DEVICEHIGH=C:\DOS\DRIVERS\VIDECDD.SYS /D:OPTICAL

[XMC]
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICEHIGH=C:\DOS\DRIVERS\VIDECDD.SYS /D:OPTICAL

[CMC]
DEVICEHIGH=C:\DOS\DRIVERS\VIDECDD.SYS /D:OPTICAL

[EM]
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\WINDOWS\EMM386.EXE RAM

[XM]
DEVICE=C:\WINDOWS\HIMEM.SYS

[CM]

[E]
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICE=C:\WINDOWS\EMM386.EXE NOEMS

[X]
DEVICE=C:\WINDOWS\HIMEM.SYS

[C]

AUTOEXEC.BAT

SET PATH=%PATH%;C:\DOS
SET DOSDRVDIR=C:\DOS\DRIVERS
SET SBDIR=C:\PROGRA~1\CREATIVE\SBLIVE\DOSDRV
SET BLASTER=A220 I7 D1 H5 P330 T6
SET CTSYN=C:\WINDOWS

GOTO %config%

:EMC
:XMC
:CMC
%SBDIR%\SBEINIT.COM
LH C:\WINDOWS\COMMAND\MSCDEX.EXE /D:OPTICAL
LH %DOSDRVDIR%\CTMOUSE.EXE /R2
LH keyb it,,C:\WINDOWS\COMMAND\keyboard.sys
GOTO :END

:EM
:XM
:CM
%SBDIR%\SBEINIT.COM
LH %DOSDRVDIR%\CTMOUSE.EXE /R2
LH keyb it,,C:\WINDOWS\COMMAND\keyboard.sys
GOTO :END

:E
:X
:C
%SBDIR%\SBEINIT.COM
keyb it,,C:\WINDOWS\COMMAND\keyboard.sys
GOTO :END

:END

I've think that EMM386.exe is necessary for SB16 Emultion, right?

I ask kindly help in orderd to solve it, maybe the solution consists in something simple but unhopefully i'm not an expert.

Thank you in advance

Regards

My Hardware:
Computer: HP D530 SFF (smal form factor)
MOBO: Hawlett-Packard 085Ch
MOBO CHIPSET: Intel 865G (Springdale-G) + ICH5
BIOS: Hawlett-Packard 786B2 v1.11 (2003)
CPU: Intel Pentium 4 2.8 Ghz (socket 478)
RAM: ~2GB
AUDIO: PCI SoundBlaster Live 5.1 SB0060 (the motherboard features an embeded audio device but i've disabled it via BIOS)
GPU: ATI Radeon 9200SE 128MB 8 (low profile AGP slot, 8x)
HDD: Seagate 120GB IDE

My Software:
OS: Win98SE 4.10.2222
Applied patch: PATCHMEM (Rudolph R. Loew), NUSB

Attachments

  • pic1.png
    Filename
    pic1.png
    File size
    353.24 KiB
    Views
    1153 views
    File license
    Fair use/fair dealing exception

Reply 1 of 12, by thp

User metadata
Rank Member
Rank
Member

Have you tried using the recently-released SBEMU? https://github.com/crazii/SBEMU

It supports the SB Live and might be more compatible.

Other than that, what‘s your „mem /c | more“ output?

Reply 2 of 12, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hello Thp,
using the boot option "Expanded memory + Mouse", running "mem /c | more" i get what you could see in the attachments (pic2, pic3), sorry for the italian words in the screens, is it still understandable?

If i boot using any option which not includes "EMM386" i get this error:

error: Memory Manager not detected. Creative SB16 Emulation Driver requires EMM386 or similar. Creative SB16 Emulation NOT loadi […]
Show full quote

error:
Memory Manager not detected.
Creative SB16 Emulation Driver requires EMM386 or similar.
Creative SB16 Emulation NOT loading.

About SBEMU, yes i've tried the latest version in the past (with the audio embedded chipset) but i got a lot of troubles with it (some games doesn't load, some has scratchy audio, some freeze, some go slow ...), so i've switched to a SoundBlaster SB0060 in order to get a better and compatible experience, i've read in the web that this model got the better compatibility for DOS + Win98, sincerely i want to go on with it, not SBEMU.

Thank you so much

Attachments

  • pic3.gif
    Filename
    pic3.gif
    File size
    348.04 KiB
    Views
    1093 views
    File comment
    mem /c | more
    File license
    Fair use/fair dealing exception
  • pic2.gif
    Filename
    pic2.gif
    File size
    325.5 KiB
    Views
    1093 views
    File comment
    mem /c | more (continue)
    File license
    Fair use/fair dealing exception

Reply 3 of 12, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
chico89 wrote on 2023-06-20, 10:48:

My first doubt is, why the messages mention "SMARTDRV.EXE"? I don't have any reference of it in my config.sys or autoexec.bat

That's just a guess of SBEINIT, because smartdrv was often loaded in autoexec.bat, being the first app to "consume" extended memory.

The problem is that SB EMU wants extended memory with a physical address < 0x400000. It's problematic because
a) EMM386 uses this resource ( partly ) itself and
b) the XMS API might provide a memory block beyond address 0x400000 just because there are multiple extended memory blocks available ( due to "holes" in the free physical addresses ).

As for a): you could try to reduce phsical memory to 1 GB. Since EMM386 wants access to all extended memory and paging is enabled, it has to reserve space for page tables, usually in the first 4 MB.
As for b): tool XMSRes might be used to ensure that the memory block with the lowest address is returned when SBEINIT allocates XMS memory. It can be found in https://github.com/Baron-von-Riedesel/VSBHDA/ … d/v1/vsbhda.zip ( must be run with the /L option )

Reply 4 of 12, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hello Baron,
thank you for your reply.

Honestly, as I wrote above, I would like to enable audio without SBEMU. My non-expert question is:
Why use SBEMU if I have a SoundBlaster card that should be already compatible?
In my experience, as i wrote, i've found SBEMU problematic.

For the proposed options (A and B), they works even if i don't use SBEMU (only SBEINIT)?

Anyway, for option B, basing on what you said i could try something like this?

...
:EM
:XM
:CM
%DIR_OF_XMRES%\xmsres.exe /L

%SBDIR%\SBEINIT.COM
LH %DOSDRVDIR%\CTMOUSE.EXE /R2
LH keyb it,,C:\WINDOWS\COMMAND\keyboard.sys
...

Thank you! : )

Reply 5 of 12, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
chico89 wrote on 2023-06-21, 10:34:

Honestly, as I wrote above, I would like to enable audio without SBEMU. My non-expert question is:
Why use SBEMU if I have a SoundBlaster card that should be already compatible?

A small misunderstanding - I wrote "SB EMU", but meant Creative's SB16 emulation, not crazii's SBEMU.

Anyway, for option B, basing on what you said i could try something like this? […]
Show full quote

Anyway, for option B, basing on what you said i could try something like this?

...
:EM
:XM
:CM
%DIR_OF_XMRES%\xmsres.exe /L

%SBDIR%\SBEINIT.COM
LH %DOSDRVDIR%\CTMOUSE.EXE /R2
LH keyb it,,C:\WINDOWS\COMMAND\keyboard.sys

xmsres needs as argument the (max) amount of XMS memory that is to remain free - example: "XMSRES.EXE /L 8" will provide 8 MB free XMS memory at the lowest physical address possible.
After SBEINIT is done, XMSRES can be unloaded by "XMSRES.EXE /U".

Reply 6 of 12, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hello,
i've tried this below but i get stuck after "%SBDIR%\SBEINIT.COM" (pic4), the boot doesn't continue (cursor flashing in bottom/left of the screen):

...
:EM
:XM
:CM
%XMSRES_DIR%\XMSRES.EXE /L 8
%SBDIR%\SBEINIT.COM
%XMSRES_DIR%\XMSRES.EXE /U

LH %DOSDRVDIR%\CTMOUSE.EXE /R2
LH keyb it,,C:\WINDOWS\COMMAND\keyboard.sys
...

Any other suggestion? Maybe another memory manager?

Thank you so much

Attachments

  • pic4.gif
    Filename
    pic4.gif
    File size
    154.9 KiB
    Views
    1007 views
    File comment
    pic4
    File license
    Fair use/fair dealing exception

Reply 7 of 12, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
chico89 wrote on 2023-06-22, 09:40:

Any other suggestion?

Did you reduce your memory to 1GB ( or, even better, to 512MB or 256 MB ) ? That's important, because EMM386's paging tables are located in the first 4 MB address region 0-3fffffh and - since it's unknown how much extended memory SBEINIT needs in that region - those tables should be as small as possible.

Reply 8 of 12, by Gmlb256

User metadata
Rank l33t
Rank
l33t

I suggest reducing the amount of RAM to 64 MB, certain games using the DOS/4GW extender crashes with more than that amount of memory.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 9 of 12, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hi guys and thank you a lot for your suggestions, i'll try to reduce RAM memory (the physical banks), anyway, can i ask if exists some utility software side that can help in this cases? I mean, randomly i've seen this topic Limit DOS RAM memory (XMSDSK / HimemX / JemmEx), DOS RAM size limit and talks about "reducing ram", can be an option using some utilities like R. Loew's LIMITMEM.SYS or something else (instead removing RAM phisically)?

Thank you

Reply 10 of 12, by Gmlb256

User metadata
Rank l33t
Rank
l33t

Limiting the amount of RAM thru software is more convenient than having to remove them physically.

Of those in my experience, XMSDSK with the /T command line switch is the most flexible one, being a RAMdisk driver which can be installed and uninstalled on the fly. LIMITMEM.SYS works as well when adding it prior loading any XMS driver.

VIA C3 Nehemiah 1.2A @ 1.46 GHz | ASUS P2-99 | 256 MB PC133 SDRAM | GeForce3 Ti 200 64 MB | Voodoo2 12 MB | SBLive! | AWE64 | SBPro2 | GUS

Reply 11 of 12, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
chico89 wrote on 2023-06-22, 16:29:

i ask if exists some utility software side that can help in this cases? I mean ... like R. Loew's LIMITMEM.SYS or something else (instead removing RAM phisically)?

Sure. But remember that SBEINIT apparently wants physical ram in address range 0-3fffffh. That means, the utility to reduce XMS memory must use some sort of "top-down" approach. I don't know if LIMITMEM.SYS does that. HIMEMX's /MAXMEM option might do the job, but I recall that it doesn't cooperate too well with MS EMM386...

Reply 12 of 12, by chico89

User metadata
Rank Newbie
Rank
Newbie

Hello guys,
sorry for the delay but seems that adding LIMITMEM solved the problem, SBEINIT loads correctly without errors.
To be clear, i've used the same AUTOEXEC.BAT and CONFIG.SYS of my first post but, in the last one, before every occurrence of HIMEM.SYS, i've placed LIMITMEM:

DEVICE=C:\DOS\DRIVERS\LIMITMEM\LIMITMEM.SYS 32

32 is the size in MByte of course.

I've successfully tested these games without any crash nor troubles in sounds: Risky Woods, Duke Nukem 3D, Prince of Persia, Prince of Persia 2.

In case of problems or similar I'll update here for more feedback (in order to help othe people having same problems), for now thank you all for your patience and helpfuness.