VOGONS


First post, by ik777

User metadata
Rank Member
Rank
Member

anyway i link this cd image first.

https://skydrive.live.com/#cid=26995F18F31AFB … 8F31AFBE0%21118

This DOS CD game is famous japan pc-9801 game "DRAGON KNIGHT4" which officially released in Korea. Nowaday this game is well emulated in pc-98 emulator "Anex86" or "Neko Project". But this CD image is pure DOS application with censored graphics and korean translation. I bought this game a few years ago but never played because after I installed and run, this CD always emit such annoying message.

http://cfile270.uf.daum.net/image/174841434FF4342931B396

after install, game directory
http://cfile289.uf.daum.net/image/184132384FF433200814E0

my CD mount method
http://cfile290.uf.daum.net/image/146617414FF433940C6781

I also tried installing real cd and mount physical CD-ROM but in vains. Always I found fuging "CD-ROM check failed"

I asked koreans who ever run it with DOSBOX, but this game is quite rare and "censored" graphic was not welcomed by DOSBOX user. Here is last hope, you may try it and add it compatible list too.

*Known issue (in manual)
1. This game need over 550K conv. memory
2. files=40 buffers=40 is described in manual
3. need 2MB of EMS Memory
4. CD-ROM driver must loaded in config.sys "device=" and mscdex.
5. manual says it can be run with windows 95.

Reply 1 of 4, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

There is a minor compatibility issue. The game's highly sophisticated CD check is to try and delete a file on the CD, expecting an "access denied" error.

The unlink function in drive_iso.cpp sets the DOS error to "access denied", but it is changed to "file not found" in dos_files.cpp:

bool DOS_UnlinkFile(char const * const name) {
char fullname[DOS_PATHLENGTH];Bit8u drive;
if (!DOS_MakeName(name,fullname,&drive)) return false;
if(Drives[drive]->FileUnlink(fullname)){
return true;
} else {
DOS_SetError(DOSERR_FILE_NOT_FOUND);
return false;
}
}

It seems that a good way to fix this is for all drive unlink functions to set appropriate errors, as is already being done for CD images.

The attached workaround program will satisfy the CD check until the problem is officially resolved. Just run the program in DOSBox before starting the game. Source code is included in the archive.

Attachments

  • Filename
    DK4FIX.ZIP
    File size
    904 Bytes
    Downloads
    191 downloads
    File license
    Fair use/fair dealing exception

Reply 3 of 4, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

That would work if the only other error is access denied, but it seems to me that other errors are (or should be) possible.

Setting file attributes on cdrom uses this test:

    if (strncmp(Drives[drive]->GetInfo(),"CDRom ",6)==0 || strncmp(Drives[drive]->GetInfo(),"isoDrive ",9)==0) {
DOS_SetError(DOSERR_ACCESS_DENIED);
return false;
}

But it seems kind of redundant when the cdrom drive unlink function already sets the correct error...