Anyone got some good ideas for games to run to find emulation bugs? Afaik it should be running correctly(theoretically), but various software(Windows 95 and up, Windows 3.0 in 386-enhanced mode,All Linux in general(except minix 2.0.*)) all seems to crash, probably being a CPU emulation bug.
Anyone got some good games for testing if it's running correctly?
Halloween Harry/Alien Carnage (non-freeware releases)
One Must Fall 2097
Super Star Wars (leaked after being cancelled) or Earthworm Jim 1/2 (DOS, same engine)
After a full day(12 hours) of implementing and fixing bugs with cue sheet and it's backend data files in UniPCemu(a new feature I just implemented), I'm now directly installing Earthworm Jim from a cue/bin disk image 😁 No more converting them over to ISO disk images anymore 😁
That opens up a whole other can of worms (the 386+ emulation diagnostics software) ;p
Edit: Didn't speak a moment too soon! During it's setup, copying movie.exe (the top progress bar filled 1/3rd) it crashes back to the MS-DOS prompt, being unresponsive! It did manage to copy over a few little things, though(setup.exe and 1 or 2 other files).
Tried installing Quarantine II - Roadwarrior. The setup fails about 10% in, with a Disk read error? (It's a cue/bin disk image I ripped from my physical disk)
Is something more required to convert the 2352-byte sectors to 2048-byte sectors other than copying byte 0x10 and onwards(for a total of 2048 bytes) to the input buffer? Is more processing needed in the case of 2352-byte sectors? Perhaps the physical disk was a bit damaged through time and it needs some kind of error correction?
Trying to run rw.exe(as it tells me to do after the install), it shows the Dos/4GW banner, then "MSCDEX NOT LOADED", "real buffer address: 16270" and a message about vesa support being required and to make sure to install it's video drivers, returning me to the MS-DOS prompt?
But MSCDEX is working properly afaik? I ran the CD-ROM install.exe using it, which succeeded?
Does it need something special to load mscdex properly?
Harry gives a "runtime error 200 at 029c:0162" then proceeds to run properly?
Oxyd seems to start properly...
Edit: It seems to have some weird kind of effect on the bottom screen? Like some scanline rendering effect going wrong/mistimed(think 8088MPH intro rollover or raster racing effects being mistimed). I see the top part working properly, the bottom part blinking white/black screens? I'm currently running on an ET4000 emulated graphics card.
Edit: The main menu too. Switches between all white and normal bottom?
Edit: Perhaps it's the Turbo Pascal speed problem(the 200 error)? It's a 3MIPS Pentium after all?
Last edited by superfury on 2019-07-08, 22:18. Edited 3 times in total.
Btw already ran QEMM 7.0. It so far ran fine on the Pentium emulation(with V86 mode extensions turned on).
Edit: Super Star Wars seems to run properly too.
Edit: Tubular worlds... Still starting up...
Edit: Image moving into screen... Cyberlegion cadets Preparing for battle There is no way back on front...
Edit: So far so good. Pressing escape...
Edit: Scrolling in man during 1P mode, shows bits of the right border at the left border of the screen(a few pixels wide)?
Edit: Vulcan world selection(?) seems fine?
Edit: Ah, mouse controls. Worked fine. Shooting using left mouse button works. Enemies destroyed properly, score effective!
Edit: Escape gives Game over properly.
Edit: Also zooming in main menu text works.
Edit: Exit to Dos works.
Btw just ran The Elder Scrolls Arena(TES I) two days ago. When returning to MS-DOS, it seems to hang saying it returns to it on the screen(cursor at second or third row column 0)?
Edit: MS-DOS still doesn't seem to handle a disk change of the CD-ROM drive well? When changing the disk(using Dosbox's timing and rough algorithm to eject,insert,spinup,spindown) it seems to pretty muvh hang for a while executing 'dir', only after a long while complaining about the drive not being ready, after which a R)etry will read the new disk?
Hmmm.. Earthworm Jim 1's setup.exe still seems to crash to the MS-DOS prompt at the opposite of MOVIE.EXE now(instead of a little bit(about 1/8) into the start of the file, it's about 1/8 from the end of the file now.
Just tried Zone 66. It almost immediately crashes on what seems to be a #GP fault for interrupt 21 ran from V86 mode? It tries to switch stacks to a PL0 stack, which is invalid, causing a double fault, thus triple faulting eventually on that INT 21h instruction?
Edit: TR is 0x20, with a base of 0x8C and a limit of 0xFFFF? The triple fault happens at 0F88:0503 in V86 mode?
The interrupt(21h) isn't present, so it tries to throw a #GP(010A) fault to the V86 monitor.
It's a CPL 3, so it tries to switch stacks to a CPL 0 stack(new CPL 0, faults handled as external).
It reads it's CPL0 SS:ESP from the TSS at address 0x8C(the INT 23h handler?). Offset 4 of that 'TSS'(MS-DOS IVT?) contains the used SS:ESP, which is read from address 0x90 in physical memory(Paging isn't enabled) for ESP, which is 0e3a0155, then SS after that (address 0x94), which becomes 0x42E5? That's a very wrong data block being read right there? It's in the middle of the MS-DOS IVT, reading the IP,CS of vector 24h as ESP, then IP of vector 25h as SS? That cannot be correct?
Of course, since that value is so strange, loading it into SS throws a #TS(42E5), which becomes a double fault instead(remember the #GP fault for the interrupt handler?), which of course still can't switch stacks, thus triple faulting the CPU!
Zone 66 starting in MS-DOS 6.22 until triple fault reboot.
Fair use/fair dealing exception
Edit: Btw, Ultima VII The Black Gate seems to run without issues(only forgot to load mouse.com though, so went without mouse and only cursor keys(SLOW!) and the left Ctrl key for confirmation(and terminating the app).
Thinking about what it's reading there, it might be the main payload of the zone66.exe file?
Just tried Windows 95 OSR 2.5('c') on UniPCemu. It seems to hang due to a 0F03(LSL) instruction being executed in real mode? That isn't supposed to happen?
Edit: After fixing a slight bug on IRET from PL0 to PL3(Normal PM, not V86 mode) to properly use it's stack from PL0 instead of trying to access it through paging as a PL3 stack(which of course fails due to PL0 not being accessable to PL3) when popping SS off the stack(which faulted due to it being done as a PL3 read instead of a PL0 read), it continues like all other Windows 95 versions(A,B,C now all do the exact same thing): crashes into a BSOD at 0137:6622 instead of infinitely hanging at said location!
Yay! Progress! After making sure enough free hard disk space is left and fixing a small POP SS bug (during IRET/RETF to a lower privilege level) to properly use the PL0 stack (instead of faulting from it, see last post), Earthworm Jim now properly installs without crashing! 😁
Edit: Just tried using MOVIE.EXE from the EWJ install directory. It tells me that "Your VGA board doesn't support 640x480x256" for the ET4000 emulation???
EWJ1.EXE seems to run properly. I see no faults running it (ignoring exception 7h for FPU emulation).
I do see it trying to run CD-ROM audio commands on the CD-ROM drive(which aren't supported), which of course error out, but other than that, it's running fine 😁
Edit: Other than that, Earthworm Jim seems to be running fine(as well as having fixed the installer just now). 😁
It's surprising how difficult it is to get an original, uncracked version of Lemmings running correctly on anything but a DOS-based system because of the drm. Even the cracked versions have all kinds of flickering and color issues under DOSBox.
Interestingly enough, looking into the 'E0' case, I don't see any jump, call or IRET from segment E0 to segment 367? So there's probably something going wrong in executing segment 367?
Hmmmm... Interestingly, when searching upwards for the same ESP being used last time, I see ESP becoming said value(from 00000FEA to 00000FEC) during a 0FFF instruction(that throws a #UD)?
The invalid E0 value seems to be in paged(/physical) memory at address 0032600e?