Jump to content
IGNORED

Geneve laptop from Win7


hloberg

Recommended Posts

I want to reconstruct what you are doing in a VM so I can understand how it works. Also, I want to 'try' to recompile MAME. this one will be on an old i5 or i3 dsktop.

On the Geneve front I'm organizing and creating a good OS boot drive that has all working programs, batches and documentation. This stuff is all over the place so it's taking time.

My goal is to have a section of https://ti99resources.wordpress.com/

that has all the drives, documentation and construction information on how to create this on anyone's computer for the Geneve. Hopefully creating interest in the Geneve again. I would like to do the same for the 99/8 in time. 

Link to comment
Share on other sites

4 minutes ago, wierd_w said:

Yes. It is running on the distro's stock version of MAME.  The stock version lacked the rom data needed for doing this, but hloberg posted a different set of archives for windows, that contain the rom zip files.

 

I put them in the correct location (/usr/local/share/games/mame/roms), and things seem to just work.

https://ti99resources.wordpress.com/

has all the ROMS, software, docs for MAME 222 and above (may work with 206?) for Geneve, 99/8 etc.. at bottom of software page.

 

Link to comment
Share on other sites

OK.  First, I am using oracle virtualbox, because it does virtualization, is free, and can produce flat vmdk files. (I can use qemu tools package to convert the resulting disk image into a flat image suitable for use with RUFUS, for writing to a USB stick and using on real iron.)

 

 

Steps to reproduce:

 

1) Install virtualbox

2) Download the latest stable debian net-install cd image. (i386 iso, amd64 iso)

3) Create a new virtual machine, and specify that it is debian, and what flavor. (i386 or x64)

4) Configure the VM to use the downloaded net install CD iso as the boot device.

5) Boot the ISO, use text mode installation, go through the install process, DO NOT install a GUI. Allow it to install GRUB2 on the virtual disk drive.
6) VM will reboot, and boot from the hard disk.  Log in as the root user. (the limited user will not have sudoers access yet!)

7) Install some necessary packages.

 

apt-get install xorg sudo twm mame zram-tools cifs-utils

 

8 ) Set your limited user (created during installation wizard process) up for sudo access.

 

/sbin/usermod -aG sudo {LimitedUserName}

 

9) Configure sudo so that permitted users dont have to use a password to issue the poweroff command.

 

Edit the following file with nano (or whatever editor you like most)

 

nano /etc/sudoers

 

Look for this area, and add the highlighted line.

 

VirtualBox_Genevian_14_01_2021_10_11_12.thumb.png.ad743fd407d51105616bb3e22a3e72f1.png

 

10) Create an invocation shell script that will start mame, then do a poweroff. This is what we will have .xinitrc run before twm, with forked invocation.

 

I put it in the limited user's home directory, in a folder called .scripts, and named it runmame.sh .  It looks like this inside, (since it contains all your special invocation voodoo)

 

#!/bin/bash

mame genmod -skip_gameinfo -peb:slot4 speech -peb:slot6 tirs232 -peb:slot8 hfdc -peb:slot8:hfdc:h1 generic -hard1 /home/genevian/.shared/mame/disks/BOOTDISK3.hd

sudo poweroff

 

11) Make the script executable and readable/editable by everyone.

 

chmod 777 runmame.sh

 

12) Edit the limited user's .xinitrc file, so that it looks like this inside.

VirtualBox_Genevian_14_01_2021_10_19_45.thumb.png.528309139093d977021173144371d281.png

 

13) Edit the limited user's .bashrc file, go to the VEEEEEEERY bottom, and add this line:

 

startx

 

so that it looks like this inside.

VirtualBox_Genevian_14_01_2021_10_21_10.thumb.png.49d81bb29c74d5449ae876aa9cfcd8de.png

 

14) copy the rom files into the correct location at /usr/local/share/games/mame/roms

 

I accomplished this using a CIFS (windows file share) mount.  I did this by mounting my NAS. To do that, you need a place to mount the file system ON first. Historically, this is done on /mnt.

 

mkdir /mnt/cifs

 

Then you mount it.

 

mount -t cifs //192.168.0.3/Public /mnt/cifs

 

It will ask for the windows share password. Give it, press enter. Boom, you now have that network device mounted and can copy files to/from it.

 

cp -r /mnt/cifs/geneve/roms/*.* /usr/local/share/games/mame/roms

 

get an ls -ll on that location, so you are sure they copied.

VirtualBox_Genevian_14_01_2021_10_27_31.thumb.png.8f86a3a746a7a944b446b7ff5cae2217.png

 

15) Copy the disk images over similarly, but put them in an appropriate place in the limited user's home directory, then give the limited user ownership of them with chown.

 

16) TEST!!

 

Exit out of the root user account with exit.

 

exit

 

Then log in as the limited user.  It should IMMEDIATELY start xwindows, and the geneve emulation.

 

(and that is where I am at right now.)

 

 

Edited by wierd_w
  • Like 1
Link to comment
Share on other sites

I ham-fisted some ubuntu .deb files (yes, this is not recommended) in to get a recent mame. (.226) Had to give a few ubuntu support file .debs along with it to make it install via dpkg.  (libjpeg8, libjpeg8-turbo, multiarch-support) Seems to work though.  Seems to not make my laptop's fans blare instantly to life in the VM also. Must be some quality/performance fixes in the later version.

 

Since this is not a recommended course of action, I will NOT detail how to do that here. :)

 

Onward and upward-- time to get rid of the grub timer.

  • Like 1
Link to comment
Share on other sites

OK. I have rebuilt it again, this time with the FAT32 partition mounted, to contain the disk images.

 

It now autoboots as the genevian user, and autostarts genmod on TTY1.  The image is ~8gb in size, but is mostly empty space.

 

 

I will begin testing on real iron using a RUFUS burned usb stick.

  • Like 1
Link to comment
Share on other sites

Well..

 

My i5 laptop is (and always has been) picky about what USB devices it will boot from. Refuses to start the stick I just made. (had to drive to town to get some, and not driving back again just because this computer is picky)

 

SO, I decided "Hey, lets go SUPER OLD!", and dug out my Fujitsu Lifebook E2000. It's an old "Windows XP era" laptop.

 

It is laughably old.

 

Specs:

Pentium 4, single core, ~2ghz, netburst arch

1gb RAM

ATI m340 video

SigmaTel integrated ac97 audio

ALI pci chipset, IDE disk controller (ata 100)

cardbus slots

USB2.0 rear panel connector.

Broadcom B43xx based wifi (wireless G)

(bonus)-- Hardware RS232 and LPT ports on rear panel

 

Now; It TOO has issues booting from USB (because it is old as hell), but since it has a dvd drive baked in, I can start it with plopboot, and then boot it from USB that way.  So I did. Since the USB controller is ancient, it has "issues", and has to be put in 1.1 mode to boot from plopboot... So, initial loading of the initrd is painfully slow.  BUT, then the system starts, and linux mounts volumes with its native USB2.0 drivers. X loads and then so does MAME. 

 

It runs like it has a concrete enema. 

 

Switching to tty2 with the key combo, I log in as root, and see how loaded the system is. Sure enough, the CPU is beating itself to death at 100% saturation.

 

I try to run tetris from mdos, in the mdosgames folder.

 

I laugh and cry, as I watch it slowly draw the splash screen.

Gameplay is laughably poor.

 

(I note that necessary firmware to enable gpu acceleration is not present, but meh)

 

HOWEVER, IT BOOTED, and technically "Works". 

 

I switch back to tty2, and gracefully down the system.

 

Now, as hilarious as this is, other people SURELY have something that is both newer, AND stronger in the knees than this lifebook that they can test this image with. Remember, this was built specifically for "Older" laptops, that have a normal BIOS (not UEFI), and is a 32bit flavor OS. I am thinking "windows 7 era" laptops here, with dual or quad core processors. It will not work on a "UEFI ONLY" modern system.  I will have to build a UEFI bootable version for newer units. If/when I do that, I will use a 64bit base system.

 

I am zipping up the image now.  Since it is a full base debian system, it will be about 600mb in size zipped.  You will need a 16gb or so sized flash drive, and rufus.

 

For completeness, the root password is 'genevian'

 

DO NOT reformat the fat32 volume. There is an important reason for this:

Linux can either mount a filesystem based on its hardware node ("/dev/sda1" for example), or by the GUID of the filesystem (which is generated at format).  Since this is meant to run "God only knows where", and get booted "God only knows how", I have the /etc/fstab entries all calling file systems by GUID entries. If you reformat the FAT32 volume, it will no longer mount on boot.  I will provide instructions on how to grow the FAT32 volume to fill the rest of a thumbdrive later. Just remember, DO NOT FORMAT IT.

 

Genevian_Build_2-flat.7z

 

 

To write it to a USB device:

 

On windows, use rufus. Select the vmdk file (after changing type to all files), and write it to the drive.  When it is done, it should work as a bootable device. Windows successfully mounts the FAT32 volume, and ignores the 2.5gb EXT4 volume linux lives on.  This should let people easily get at the disk images.

 

On linux, use dd to copy the flat image over. While the extension is vmdk, it is really just a flat, boring image inside.

 

It is partitioned with a 2.5gb EXT4 bootable volume, then a ~6gb FAT32 volume. The fat32 volume should be capable of being extended to fill whatever medium you write the image onto. 

 

Quality of life, totally optional things to do:

 

Configure GRUB to display a fancy splash screen or something until X starts.

 

Edited by wierd_w
  • Like 2
Link to comment
Share on other sites

Note, to get to tty2, press

 

ctrl + alt + F2

 

 

That will switch to virtual terminal 2, which should be waiting at a login prompt.  You can log in as root there.  password is 'genevian'

 

Mame can keep running in tty1.

 

To get back to tty1, do the same sequence, but with F1 instead.

 

This is useful for making changes. 

  • Thanks 1
Link to comment
Share on other sites

OK, I don't know if it fixes the race condition completely, but echoing a silly limerick to /dev/null one line at a time seems to introduce sufficient delay to have it not happen in my VM anymore.

 

Waiting a full second before starting the window manager is heavy handed, so I want to avoid that if possible.

 

VirtualBox_Genevian_Build_2_16_01_2021_05_36_44.thumb.png.1e2f0077afb186673bcc1b2fd4e54e0b.png

Link to comment
Share on other sites

Success!

 

 

 

 

I have, since making this vid, found that ALSA was not initializing correctly, and have added some instructions to reset alsa, set volume 100%, unmute, then test sound playback with a sample wav file before starting MAME.

 

 

Edited by wierd_w
  • Like 2
Link to comment
Share on other sites

2 hours ago, wierd_w said:

Are there any games or programs on that mdos hard disk image that produce sound?

 

I want to properly test MAME audio output with real hardware.

attached is the 2 .hd files I'm working on cleaning up, test & documenting. run XB from the prompt. that get you TI99 XB2.6 where you can test sound all you like.

DISKS.zip

  • Like 1
Link to comment
Share on other sites

It's been a whole day, I should give an update.

 

 

I am disappointed.

 

ALSA initializes, but it always wants to init the WRONG CARD as the default sound source. (Specifically, it ALWAYS wants to init the hdmi audio output, instead of the internal analog speakers or headphones)

 

This is on 100% of systems I have tested. (though the sample size *IS* limited.. I am not made of money yo.)

 

 

I am going to have to invest in some smart initialization voodoo to make this work as intended, where I use amixer to get a return of all detected devices, pass it through some fancy grep and awk voodoo to select the device for analog output, set that as default, init AGAIN, and **THEN** test.

 

 

That is here I am currently at.  It will take me awhile to write and test a robust init shell mini program, and shoehorn that into my "runmame.sh" invoke script.

 

 

Unless of course, you want to just pass the buck off to the user, tell them to use the OSD, and select the sound device there somehow. (have not checked if MAME lets you do that.)

Link to comment
Share on other sites

@wierd_w looking good. But don't knock yourself out over this, the Win7 is now badge free & only 15 secs start (which is faster than the real Geneve). Still, Linux would be a very good option as it does not need a Win license.

As for the sound, if anyone is doing this in Linux they probably will know how to modify for thier system if you put a note with the install or the .iso (if you go that route) that'd be fine.

One place where I found a lot about removing the badging from Win was looking at the arcade machine people who have started just using PCs as the backend for the consoles. I sure someone has already setup a Linux to boot MAME in their arcade console and posted it. That's where I found the last of the details of de-badging Win7 was from a guy who created a arcade console using Win7 & MAME.

Finally, It's going to be few weeks before I post anything to my websites as I'm starting to get rather busy. So take your time.

Link to comment
Share on other sites

8 hours ago, wierd_w said:

ALSA initializes, but it always wants to init the WRONG CARD as the default sound source. (Specifically, it ALWAYS wants to init the hdmi audio output, instead of the internal analog speakers or headphones)

Could this help: https://askubuntu.com/questions/1038490/how-do-you-set-a-default-audio-output-device-in-ubuntu-18-04

Link to comment
Share on other sites

41 minutes ago, mizapf said:

Not really.

 

That how-to uses pulse-audio, which is ANOTHER audio framework on Linux.  (Others being OSS, and Jack) Pulse provides what it calls "Sinks", which are actually pseudo-devices, that grab hold of an ALSA device back end.  It is basically a broker, but can also do filtering and such. It is very useful for a full desktop linux.

 

However, the minimalist debian I am using does not configure pulse, and configuring pulse without a graphical tool is not pleasant or fun.

 

It would simply be easier to just tell ALSA which card and device to use as the default audio device for PCM output, and call it a day.  Throwing an endless litany of more and more layers of obfuscation on is not how you make something SIMPLER. :(

 

As is, I just need to walk through some verbose text output from amixer, filter it with grep for "analog" and 'headphone', notate which card and device ID that is, then instruct alsacfg to init that as the default.

 

I can accomplish that with a shell script.  Adding all kinds of bloat for a GUI, when one of the design goals for the project is "No GUI other than MAME!!", is counter-intuitive.

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...