无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8892|回复: 10

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

[复制链接]
发表于 2005-4-6 13:27:55 | 显示全部楼层 |阅读模式
[这个贴子最后由gotomsdos在 2005/04/06 08:10pm 第 1 次编辑]

全世界找不到用一个参数解决DOS仙剑作成光盘能在内存大小不一的电脑里正常运行的办法!(因为,DOS仙剑<原光盘版被破解成硬盘版的那种>内存大于24MB,就说内存是负值...我的机子上是这样)
过程是这样的:
我正在做操作系统安装、维护和游戏(按下选项就可以玩的那种,当然是DOS的)综合DVD光盘,(送给朋友们的)还把一些我自己设计的图片做成启动时的LOGO和背景图片,效果非常好,已经作的差不多了,但是,有些游戏比如仙剑,要内存不能超过32M吧,用XMSDSK 是可以减掉内存的,但是问题是送给朋友玩,各人的内存是不一样的。那么怎样在DOS下通过批处理来实现只使用一定数量的内存? 看了HIMEM的参数,好象没有这个选项!(98和XP是可以选内存大小的,XP的BOOT。INI有参数的)

只好退而求其次,用一大段批处理来解决了.... 如下:(与大家共享)
如果谁想作成光盘,送给朋友,直接从光盘启动就可以玩, 相信会对你有很大帮助的....
解决的思路是这样的:
作一个带有DOS光盘驱动的可启动软盘镜象,通过EASYBOOT的选项来启动它,把DOS仙剑硬盘版放在光盘根目录,启动软盘镜象后,AUTOEXEC.BAT中的CHOICE.COM就会询问玩家电脑的内存大小,根据这个值来用XMSDSK作成内存盘,正好使得不同玩家电脑的内存大小都被一律调整为20MB,这就符合DOS仙剑硬盘版的内存要求了!接着,会把光盘上的游戏目录和SOUND BLASTER16的DOS声卡驱动目录复制到那个刚刚创建的内存盘中,加载声卡驱动(如果玩家的声卡符合兼容SB的就可以了),接着运行游戏了!
CONFIG.SYS:
dos=high,umb
device=himem.sys
device=emm386.exe ram
devicehigh=vide-cdd.sys /d:dosrav
shell=command.com /f /p /e:640
BUFFERS=22,0
FILES=40
AUTOEXEC.BAT:
@echo off
PROMPT &#36;p&#36;g
lh shsucdx /d:dosrav
lh ctmouse
rem lh smartdrv
findcd /s
rem command /f /c
if exist %cdrom1%\sound\sbinit.com goto cd1
if exist %cdrom2%\sound\sbinit.com goto cd2
if exist %cdrom3%\sound\sbinit.com goto cd3
if exist %cdrom4%\sound\sbinit.com goto cd4
:cd1
%cdrom1%
set romcd=%cdrom1%
goto end
:cd2
%cdrom2%
set romcd=%cdrom2%
goto end
:cd3
%cdrom3%
set romcd=%cdrom3%
goto end
:cd4
%cdrom4%
set romcd=%cdrom4%
goto end
:end
a:
tw32
cls
echo .
echo .
echo .
echo 要玩这个游戏,必须确定您的电脑的内存大小
echo 我的电脑的内存容量大约是(MB,兆):
echo .
echo [1] 32
echo [2] 64
echo [3] 96
echo [4] 128
echo [5] 160
echo [6] 192
echo [7] 224
echo [8] 256
echo [9] 288
echo [a] 320
echo 352
echo [c] 384
echo [d] 416
echo [e] 448
echo [f] 480
echo [g] 512
choice /c:123456789abcdefg 请按下相应的方括号中的数字或字母(即刻执行):
if errorlevel 16 goto 512
if errorlevel 15 goto 480
if errorlevel 14 goto 448
if errorlevel 13 goto 416
if errorlevel 12 goto 384
if errorlevel 11 goto 352
if errorlevel 10 goto 320
if errorlevel 9 goto 288
if errorlevel 8 goto 256
if errorlevel 7 goto 224
if errorlevel 6 goto 192
if errorlevel 5 goto 160
if errorlevel 4 goto 128
if errorlevel 3 goto 96
if errorlevel 2 goto 64
if errorlevel 1 goto 32
:32
a:
tw32 /u
xmsdsk 28000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat
:64
a:
tw32 /u
xmsdsk 44000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:96
a:
tw32 /u
xmsdsk 76000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:128
a:
tw32 /u
xmsdsk 108000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:160
a:
tw32 /u
xmsdsk 140000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:192
a:
tw32 /u
xmsdsk 172000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:224
a:
tw32 /u
xmsdsk 204000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:256
a:
tw32 /u
xmsdsk 236000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:288
a:
tw32 /u
xmsdsk 268000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:320
a:
tw32 /u
xmsdsk 300000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:352
a:
tw32 /u
xmsdsk 332000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:384
a:
tw32 /u
xmsdsk 364000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:416
a:
tw32 /u
xmsdsk 396000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:448
a:
tw32 /u
xmsdsk 428000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:480
a:
tw32 /u
xmsdsk 460000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat

:512
a:
tw32 /u
xmsdsk 492000 z: /t /y
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat
发表于 2005-4-6 22:51:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2005-4-7 19:14:33 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

[这个贴子最后由gotomsdos在 2005/04/07 07:23pm 第 1 次编辑]

以上批处理已被精简为:改用GET 和STRINGS
@echo off
PROMPT &#36;p&#36;g
lh shsucdx /d:dosrav
lh ctmouse
rem lh smartdrv
findcd /s
rem command /f /c
if exist %cdrom1%\sound\sbinit.com goto cd1
if exist %cdrom2%\sound\sbinit.com goto cd2
if exist %cdrom3%\sound\sbinit.com goto cd3
if exist %cdrom4%\sound\sbinit.com goto cd4
:cd1
set romcd=%cdrom1%
goto end
:cd2
set romcd=%cdrom2%
goto end
:cd3
set romcd=%cdrom3%
goto end
:cd4
set romcd=%cdrom4%
goto end
:end
a:
tw32
cls
echo .
echo .
echo .
echo . 要玩这个游戏,必须知道您的电脑的内存大小
echo . 您的电脑的内存容量大约是下面的哪一个(MB,兆):
echo .
echo .
echo . . 32
echo . . 64
echo . . 96
echo . . 128
echo . . 160
echo . . 192
echo . . 224
echo . . 256
echo . . 288
echo . . 320
echo . . 352
echo . . 384
echo . . 416
echo . . 448
echo . . 480
echo . . 512
get28 s "请输入您的电脑内存容量(以上数字之一),再按回车键:"
cls
tw32/u
if "%get%"=="32" goto 32
strings diskmb=sub %get%, 20
strings diskkb=mul %diskmb%, 1000
xmsdsk %diskkb% z: /t /y
goto playpal
:32
xmsdsk 30000 z: /t /y
:playpal
xcopy %romcd%\sound z:\sound\ /e /s
xcopy %romcd%\pal z:\sound\pal\ /e /s
set blaster=a220 i5 d1 h5 p330
set sbpci=z:\sound
z:\sound\sbinit
z:
cd\sound\pal
play.bat
回复

使用道具 举报

发表于 2005-4-8 20:58:29 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

为什么不用mem 或者 mi这样的程序自动判断用户的内存大小呢?
回复

使用道具 举报

 楼主| 发表于 2005-4-8 23:25:22 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

[这个贴子最后由gotomsdos在 2005/04/08 11:37pm 第 1 次编辑]

CLIMBING 兄你好!
mem 和 mi 都不能传出变量,
get /m 和 strings xmstotal都只能报告64MB之内
不知道有没有什么程序能传大内存的变量?
期盼中....
回复

使用道具 举报

发表于 2005-4-9 12:33:31 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

可以使用lmod这一类的程序将mi或者mem输出的结果转出到变量中,当然,前提还是这些命令的输出结果能够准确的显示出你需要的结果。
回复

使用道具 举报

发表于 2005-4-11 10:16:34 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

处理这个问题的关键就是要用EMM386,其他基本没什么了!
回复

使用道具 举报

 楼主| 发表于 2005-4-11 13:14:30 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

DOS对内存的要求是多方面的 有一些仅仅有EMM386还是玩不起来的.
回复

使用道具 举报

发表于 2005-4-11 15:20:24 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

最简单的做法就是用DOS 6.22的mammaker就轻松搞定了!我95年时玩仙剑就是这么弄的!
回复

使用道具 举报

发表于 2005-4-13 07:42:56 | 显示全部楼层

[原创] 用批处理解决了DOS仙剑硬盘版的内存瓶颈(作成光盘,DOS下),并自动运行

哪位DX给上传一下GET 和STRINGS!!
                         THX!!
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
卤煮好厉害,向楼主学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 05:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表