Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
I have another idea. Please test all this on the version I have rerecording for. It's MESS, not MAME, they merged the codebases a while ago, back in 2010 they were kinda separate, but I think I can compile this version of MESS with rerecording if it works for you guys.
http://www.progettosnaps.net/download?tipo=mess_bin&file=/mess/packs/mess0139b.zip
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
That version does not support the ct486 system.
EDIT: Based on reading through release notes, it looks like version 0.150 was the first one that had ct486:
Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
No, it looks like the call should have used "at486" instead?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
I tried at486 with this version of MESS and it's not really working properly. It's one of those ROMs that pops up with a message that it's not completely supported yet. If I try to load it with one of my .chd files it comes up with some indecipherable error message, and if I load it with just the boot disk it doesn't even let me change A: to a floppy drive in the BIOS.
Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
MAME supports overclocking for that CPU (quoting Lord_Nightmare, "start MAME with the -cheat parameter and then in the sliders menu you can adjust cpu overclock"). Since 586 emulation is weak, and if we stick to 486 officially, will it be allowed to overclock the CPU? My personal opinion is that given no other options to run newer games, and technical ability to do this physically to the original CPU, it'd bring more benefits than controversy.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
I'm not an expert on overclocking, but I know one of the primary dangers of overclocking a real system is overheating the CPU. If i'm not mistaken, this is also one of the primary factors that determines how much a given CPU can be overclocked.
There are only 2 controversies I foresee regarding overclocking:
1) Complaints that the physical CPU couldn't handle being overclocked to the necessary rate for the game in question.
2) Complaints that any connected/emulated hardware is incompatible with a CPU of the higher clock rate.
Theoretically, you can't overheat a non-physical CPU, so that aspect of overclock limitation is negated.
As for #2, I don't have a response due to limited knowledge of CPU-hardware interfaces.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
I tested this but never posted about it: Windows 3.1 runs just fine in MAME. Sound works, MIDIs work. Early Windows games will become TASable if rerecording is added.
Link to video
I'll try running the Flash games once I get everything set up.
Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
Exactly. If only they emulated more modern hardware well.
Also, look at my new sig!
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Quick update to let you know that that version requires a later version of libgthread than installed by default in Red Hat Linux 6.2 (using the install CD from that bannister thread).
EDIT: Official list of dependencies. Unfortunately, it's just for versions 9 and 10.
Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
I have ALL FP versions. Which one doesn't require that?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
I've been trying to run the flash player in Damn Small Linux and ran into the same issue. I'm going to try to install a higher version of the library into the OS and see what happens, but I'm not at all familiar with Linux so this is taking a while. If we can get this working, I feel like DSL is a good option because it's relatively small and runs ok on a 486.
I was able to get Flash Player running in DSL, but it was the Firefox plug-in of version 7.
I searched the Red Hat install for those dependencies linked above and found that the following are missing for FP9:
libfreetype.so.6
libfontconfig.so.1
libgtk-x11-2.0.so.0
libgobject-2.0.so.0
libglib-2.0.so.0
glibc>= 2.3 (has 2.1.3)
support for V4L1 (not sure how to check this)
For FP10, the following are also missing:
glibc>= 2.4
libnss3
cURL
support for V4L2 (again, not sure how to check this)
My search consisted of running
find -iname "libgtk*"
or similar lines in the / directory and comparing the file names, but I have minimal experience with Linux, so maybe that's a bad way to approach it.
EDIT: I've also tried some other distros, but these did not even finish booting from the ISO: Tiny Core Linux (never seemed to finish loading the kernel), Gentoo (same thing), CentOS 6.9 (not enough memory).
Joined: 4/17/2010
Posts: 11486
Location: Lake Chargoggagoggmanchauggagoggchaubunagungamaugg
I tried a few "alternatives" before. We need implementation quality capable of running this one game:
https://yadi.sk/d/abD5JnQG3RpJUw
Can you test it on them?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Checking V4L[1|2], check if your kernel was compiled with Video4Linux support.
To know which version of Video4Linux that's available, a quick google gave me this "Version 2.6.27 of the Linux kernel dropped support for the legacy Video4Linux (1) API." (from https://wiki.archlinux.org/index.php/webcam_setup ).
The configurations needed for each kernel can be found in this list: https://cateee.net/lkddb/web-lkddb/index_V.html
It's easiest to check if this is enabled by using "gunzip /proc/config.gz | grep [config option goes here]", this assumes /proc/config.gz is enabled.
First of all...
I want to mention few things that noone mentioned:
1) You have to press Scroll Lock to enable UI Menu keys: TAB for example.
2) You have to use 512,63,16,X disks in notion of dosbox: https://www.dosbox.com/wiki/IMGMOUNT
So, 512 bytes per sector, 63 sectors per track, 16 heads, X cylinders.
This is for "luck"
Because I had no luck for installing on any hdd which was made by chdman by default.
3) No one said about et4000.zip. btw, newest mame require kb_ms_natural.zip
4) I have no idea why I should press F1/F2 or idk I just hit some of them, while seeing message "Starting MS-DOS" at the beginning of the installation. Otherwise it hangs.
5) No one said that you should disable mouse in UI Menu to install Win 3.11 (thanks to one of other tutorials of InsertMoreCoinsblog IMC)
Everything below is about Windows 3.11
I have good news.
But lets start from beginning.
Few days ago, we had this:
If you try to run any game that is using Win32S.dll you had this screen for few miliseconds, and then back to DOS prompt.
But then, I started to dig into it hardly, and while I was doing so, I was blaming that this address translation makes me nuts.
And, suddenly this appeared: https://tea-ci.org/mamedev/mame/16524
Lately, I'll confirm that it's indeed fixing Win32s.dll
After I did confirm, that new build is sucessfully running game with Win32s.dll, I find that yet again, I have no music.
Then, after few days of digging into Win 3.11 kernel stuff, we've finally tracked the issue.
Log with all explanations and discussions here: https://gist.github.com/realmonster/329339dc4cafed2d92a262569cc04e1b
Answers on my unanswered questions that appears in log:
Q: - does it work with audio discs via sb16?
A: - yes it does
Q: - watchpoints is set on physical or logical address?
A: - watchpoints is set on physical address
Q: - is there easy way to extract all files from .chd image?
A: - I did it in following way:
1) chdman extractraw. I don't remember full command line, but there is only input and output, nothing else.
2) open DOSBox,
3) "mount D g:\win31" <- this mounts win31 directory as disk.
4) "imgmount C g:\win32.img -t hdd -fs fat -size 512,63,16,4161" <- here win32.img is result of chdman extractraw.
5) "mount E D:\DOS\NC" <- here D:\DOS\NC is your directory with Norton Commander
6) use ALT+F1 to select disk at left part, and ALT+F2 on right part.
7) use Insert to select all files you need.
8) Press F5 to copy, select checkbox about subdirectories.
9) Press Enter.
Done.
Q: why "source" command in mame debugger doesn't work
A: it works. it's executed when next breakpoint being hit. odd!
Also, useful thing: in console you may write "print (EAX&0xFFFF)+DSBASE" to see logical address of ds:[ax]
or directly in Memory view enter (EAX&0xFFFF)+DSBASE to see that location.
How I was investigating:
To find where is loading of executables happens, I set watchpoint on address translation table
Then, I found where entry point is called. This helped a lot.
Using this, I found that WIN32S.exe is loading bunch of others,and in the end WIN32S16.DLL.
After its entry point executed, nothing else was load and crash appeared.
I was trying to track it down, but no suceess.
Because it's somewhere in kernel, caused by bad pointers.
Then, when crazyc made fix, and nightly build appeared, I continued my research.
First, I was able to "get in" game executable entry.
It's tricky task, because code is running ultra fast, and all initialization is done at the begnning.
What helped me here?
WIN32S16.DLL was crashed before fix, and its entry point was investigated by me thoroughly. Fortunately it has GetProfileString close to the top.
Game executable initialization calls this function too!
This was my trump card.
I set there breakpoint, and step out until I'll see code of game executable.
And it worked!
It was only beginning of the journey.
Next, I found that AIL_redbook_open() fails.
But it's located in MSS32.DLL.
Then, it is calling 16 bit version from MSS16.DLL.
Which is using MciSendCommand from MSSYSTEM.DLL which fails for some reason.
Then I had to find out why MciSendCommand fails.
It turns out, that OpenDriver(MCICDA.DRV) from USER.EXE fails.
Then, it turns out that DRIVERFUNC from MCICDA.DRV fails with certain input.
And "finally" (as I thought), that driver function is failed because interrupt by MSCDEX returns data without specific flag - cdrom is able to play audio.
So I made patch of driver itself, to ignore flag, and music was working.
But nope, it wasn't the end of story.
Then we dig into QSCDROM.SYS, and found: looks like mame response on "mode sense command" page 2a with missing header.
I guess, this ends my reversing strike in last few days.
Result:
Link to video
I was recording in slowmotion, because avidump is slow.
So, that's why reaction is too fast.
Also, game speed is weird.
In this game you can change sync method by F8.
But I'm lazy to record it again.
Also, I had wrong old CUE file.
I have fixed one and bugged one.
I have mixed them, so I use here bugged instead of fixed.
Also, windows and dos screens are cropped.
Btw: New fix arrived. https://tea-ci.org/mamedev/mame/16569
Update on the Flash front: I was unable to get a standalone flash player running on DSL, and I believe it's not possible due to some uninstallable packages on this version of Linux, even with the lowest standalone version (9). In the process I did figure out how to connect Linux to the internet inside MAME (some of the slot options are network cards), which made the package installation process not utterly tedious.
This doesn't mean that some other distros won't run it. I'm going to try the Red Hat installation from the tutorial next.
Win3.11 over FreeDos doesn't work.
Just Win95 works.
Link to video
Had to do few hacks.
It is require 500+ MB disk, and you can't make it using FDISK.
So, I had to use 2GB premade disk from tutorial yet again.
To be able to install on it, you should run "SETUP /?" to see parameters.
And there will be /is /id <- disable available disk space check, and disable disk scan.
Otherwise it will blame that your disk configuration is suspicious,
And it will also scan whole disk sector by sector, and eventually fail in the middle.
After installing, I had issue - hard disk wasn't bootable.
I was able to boot windows using grub for dos.
Awesome utility. About it later.
I boot it using this grub4dos and made Win95 bootable disk, and using it,
I just run "sys a: c:"
and after it, my HDD became bootable.
SoundBlaster16 installer doesn't work. But there is workable driver in windows itself.
All you need is to select it.
CD Audio works out of box (all you need is to install MCI CD Audio)
Looks like this is because it's using Oak CD-ROM driver.
In Win 3.11 I had issue with LG CD-ROM driver.
When I first time saw wrong colors of the game, I thought it's driver issue.
So I've tried to change it to ET4000 one, but it crash display manager.
It doesn't work.
But according to some of ET4000 docs, Win95 detects it fine.
So, looks like it's not display issue.
I guess, you just can't have two 256 colors palette on screen at once.
Grub4dos
Very detailed Manual: http://diddy.boot-land.net/grub4dos/Grub4dos.htm
Downloads: https://sourceforge.net/projects/grub4dos/files/GRUB4DOS/Note: Download from directory. Exe is for windows.
So.
1) copy any of floppy image.
2) delete all files from it.
3) upload unpacked grub4dos without "chinese" dir it will be enough space.
leave it as "grub4dos" floppy.
Next, boot from dos floppy image. Because this image is not bootable itself.
Hotswitch floppy image to this grub4dos floppy.
Run it.
You'll see ~8 entries of menu.
Each one you can press "e" to edit rules for boot. Or press "b" for boot.
I took this one from manual:
title Boot CD-ROM - (cd)
chainloader (cd)
rootnoverify (cd)
I did it when I was trying to install ReactOs.
Because all it has is bootable CD.
It didn't work. But I edit this rule on fly into additional suggestion from manual:
And it worked.
It started to boot ReactOs disk.
Then it crashed somewhere.
So, To boot Win95 I did same but there is already premade entry for Win9x and Win ME.
Next goal is to check Diablo, and Diablo II :) :>
I'm waving the white flag on Flash in Linux in MAME. There are too many technical difficulties in trying to run it on a 486, and even if it were to run, it would be extremely slow and the setup would take a very long time. I'm sure there are better options out there.