Anglofying & running Japanese Lemmings for Windows

On one of my later trips I picked up this fun title, Lemmings!

And looking at the back of the box, what fun it contains!

Support PC-98, Epsons, IBM’s, IBM PC/AT.. Probably FM Towns as well

One interesting thing about 1995, is that with the rise of Windows 95, this marked the end of the specialized PC market in Japan. Just as WING/Direct X basically killed off the DIY driver/extender environment on MS-DOS, by being able to abstract the hardware it removed any meaningful difference between an EPSON PC vs a PC-98, FM Towns, or even the lowly IBM AT/386.

This being a Win32 includes both WING & Win32s. A perfect snapshot of an early Win32 commercial game circa 1995, as you needed to cater to that massive Windows 3.1 install base, although so many were rushing to Windows 95. Naturally this also means that the setup program is a Win16 app, once more again to preserve that bridge of the Windows 3.1 & Windows 95 world.

Well the obvious thing to do is just install it on a legacy 32bit OS, and what better than Windows XP?

Lemmings happily running under Windows XP via VMWare.

Now to run it on something like Windows 10, it’s just a matter of copying the WINLEMM.INI into %sysroot%, along with placing a copy of WING32.DLL into the %sysroot%\SysWOW64 directory and you are good to go!

Japanese Lemmings on English Windows 10

Sadly the character encoding in Windows is still really lacking and doesn’t render all that great. However that had me thinking as almost a decade ago I did find a demo of Lemmings for Windows. Could it be possible to just overlay the executables & DLL’s to produce an English commercial version?

Surprisingly the answer is yes. I wasn’t sure what to expect, but it’s as simple as that!

The game is mostly playable, some parts are just coded to run as fast as possible, as no doubt nobody was imagining 1+ Ghz machines. So the intro, warp & suicide are almost instant.

It’s something to keep the kids entertained for a day in recent events. It’s been a LONG CNY.

Philip Pemberton’s 3B1 emulator moved

It’s been a while since I played with Philip Pemberton’s excellent emulator, however the source code has been moved to github

As a nice bonus it’s been updated to build against the newer source drops of Karl Stenerud’s Musashi.

The Makefile is so nice it chains in c files from sub-directories to build, which unfortunately it doesn’t work so well with the latest Musashi. Like a bull charging into the China shop I just smashed together a build script, and got a working exe:

And it’s so nice to see it actually boot up.

Things like the C compiler still break, apparently the 6100 had an actual physical memory buffer for IPC? It’s all so confusing.

Not that mine is all that great but my crap fork is here:

freebee-master_17032020.zip

The price of Commodore 64’s is getting out of control.

I’ve been looking on and off the last year, and they all seem to be $100 USD minimum for one that is either ‘as-is’ or broken. Good working ones are selling for double or more.

I’ve been disappointed, as I haven’t played with one in years.

Commodore 64 C

And then as a fluke I found an auction for a kind of beat up Commodore 64c for a mere £40! Naturally shipping it to Hong Kong was going to cost more than that, and with all the Wuhan Flu thing going on, I really didn’t expect it to show up any time soon. Yet, one week after I bought it, the Commodore arrived!

It’s a little dirty, but overall it feels okay. I was a bit nervous if it would even turn on. However as it was in the UK, the power supply is already 220v, and the TV I have in the office is PAL (it should have had SCART too, but they sent me the UK one, not the continental one ….)

Now for those who have never setup a PAL Commodore before, they output to CHANNEL 4. The cable to the TV (LEAD, lol!) has 2 different ends to it, so only one side goes to the TV, and the other to the equipment. Unlike NTSC, there is no channel 3/4 select, nor is there an external RF modulator, it’s all contained in the 64c’s chassis.

Nice.

I had to wave my phone around for a bit to get the TV to scan the analog band with the Commodore powered up, but after 5 minutes, it finally had done it’s scan and I could behold the hew of the blue screen.

It looks much better in person, but yeah there it is. I haven’t’ had time to do much else, but I wanted to share this quick bit.

I also got a datasette with it, but I’m oddly enough out of audio cassettes. It feels so weird to have no software for a machine.

Asking some suppliers I was able to get some 10 packs of 60 minute tapes for å…ƒ 27.5, or approximately $3.75 for a pack of 10. If this were 1982 I could be a media mogel! But in 2020 I suspect that I can measure the demand for new tapes on one finger.

I have big plans for this little thing. Although amateur surgery may be part of it.

Thanks to LGR I just found out about SimCity for palm pilots was a thing!

I only owned one palm, the Palm VII which was the first taste of 2007 from back in ’99 or so.

Palm stumbled however delivering such a low powered low memory, low storage and amazingly out dated 68000 based machine, but what set it apart from all the rest was the integrated cellular modem. Raise the little antenna and you could send and receive emails, “browse” websites all from the palm of your hand. It really was fantastic, until I got the cellular bill. AT&T saw this as an ultra premium device and service, not something for normal people and priced it as an ultra niche thing. And it’s a shame as the future was right there, in the plam of your hand so to speak.

SimCity!

I looked on google play and picked up PHEM, and downloaded some ROMs. I started with the VII ROM out of nostalgia, but sadly the VII ROM I found is version 3.5

And naturally SimCity won’t work.

I kind of remember this being another issue with the VII, that it was basically a dead end evelotionary branch, not a vision or path forward. It was a fluke.

Version 4 devices were back to needing rs232 docks.

For me the future wouldn’t come back until 2002 with the first Windows CE phones, that features an ARM processor, expandability and a more robust OS.

I always thought there was no good full featured games back then, it’s amazing playing SimCity, even under emulation. Although if anyone wants to try, modern android phones run it far too quickly.

Are you Japanese?

On my latest trip, I managed to find a copy of Zork 1 for the PC-98! And let me say, let the adventure begin!

I went to Beep and the place next door I always forget it’s name, and I found this burried in the back for a mere Â¥2,860! Not exactly what I thought would be a bargain, but flipping it over however…

Zork 1 for the PC-98!

Â¥7,800 YEN! From 1991!Honestly I don’t even know what is up with the price of software in Japan! Clutching this thing in my hands for the Â¥2,800 makes it feel like a steal so of course I buy it!

Contents of the box

Nice to see that opening of the box gives me a catalogue, a manual, minimal map, registration card and a diskette! And I’m hoping I can read it using a USB drive.

Now I have no pc98 gear in Japan, and I’m trying to not have a mountain of hardware here, the i7 desktop and 30″ cinema display are already feeling ‘too big’ for this place anyways. I go to hardoff and pick up 2 USB floppy drives hoping to read the 3 1/2″ diskette.

Now I bought an IBM & some weird iMac looking drive, I was hoping between the two drives, maybe one would work. And I was right for buying the two. The IBM drive didn’t read the disk AT ALL.

However this iMac looking Logitec LFD-31US did the trick!

Apparently you need what is known as a “3-mode USB floppy drive”. Whatever that means. Although I can read the disk fine from Windows 10, winimage was unable to make a disk image. Disk Explorer is another option, which also specializes in the PC-98’s weird 1.2MB on a 1.44MB disk, however it couldn’t read the disk either.

I write a simple C program to read 512, 1024, 2048 blocks from \\.\A: (the physical drive), however it was cut short after 138kb. Maybe a hidden bad sector? Xcopy ran without issues, so who knows.

Looking at what I could dump, it does look like a bootable image:

and the xcopy did pick up MSDOS.SYS & IO.SYS. I though Microsoft was so against people redistributing MS-DOS, but then again aren’t most PC98’s floppy only?

I was able to cobble together a DIY disk image, and it doesn’t work fully on Neko Project II sadly. However Annex86 works fine.

On boot there is a nice graphical logo, and animation as the door opens. Really cool I have to say. Searching through zork.exe there is some interesting strings

  • Are you Japanese?
  • MS Run-Time Library – Copyright (c) 1988, Microsoft Corp
  • Original copyright (c)1988 Infocom Inc.
  • Used under license from Activision. All rights reserved.
  • (c)1991 SystemSoft
  • Copyright VACS Corp./ASCII Corp.,1986-90.
  • @(#)sunedit.c 1.0 07/03/1989 by VACS Corp.

Well that’s interesting. I was wondering how to trigger the ‘Are you Japanese?’ and well it turns out it’s pretty simple:

I’d have to figure out how to type in things like eat/sleep take… Although it is a twist on the old Infocom style. Now could this have ‘saved’ Infocom before their sale to Activision? I guess there was a market for Infocom games in Japan, although probably far earlier than 1991.

GCC moved to git!

After all that flap about having moved GCC into GIT I thought it would be worth checking out, you know digging for interesting old artifacts.

I found the ‘start’ back over here on github:

Sadly the ‘initial revisions’ only contain a few files, far from the contents of the ’87 archive.

Pitty.

Not that I would envy anyone crazy enough to do such a thing, I was just hoping someone else would have done a better job than I did.

emulator-sun-2

Since I was playing with the 68000 based GCC ’87 I know it was going to be more geared to SUN workstations, certainly of the early 80’s vintage as they would be the most ‘affordable/cheap/donated’ to FSF (Or so I’d imagine).

Naturally the go to emulator is TME, however this time while searching around for the install scripts and stuff I found lisper‘s (heeltoe.com) emulator-sun-2, a greatly cut down and SUN-2 focused emulator that emphasizes ease of use.

Wait, what? SUN-2, and ease of use? Why yes, not only that, as it uses SDL 1.2 it also means it’s much easier to compile. After an hour of messing around with it, I had it running on Windows. After a few minutes I had it running on my ARM based Acer NovaGO.

At it’s core is the m68k 68010 emulation from Karl Stenerud‘s Musashi core which is a great choice for the SUN-2 as it’s a 68010 based machine. Some fun notes from web.cuzuco.com/~cuzuco/sun2/ include:

  • CPU is a Motorola 68010 running at 10MHz
  • Maximum physical memory is 4 Megabytes
  • Maximum virtual memory is 16 Megabytes
  • All I/O is via a Multibus (an Intel design)
  • Main disk is a SMD, the largest size is 380Mbyte
  • Has a SCSI adapter, but the disk is slow and small (42Mbyte)
  • Sun was just finishing NFS
  • alludes to future AT&T UNIX System VI and VII
  • Display supported dual heads and a resolution of 1152×900
  • List price as tested: $44,900
  • Sun was still private, had 400 employees and sold 1500 units

You can read about the debut of the SUN-2 in the UNIX/WORLD Magazine, VOlume 1, Number 5 dated October 1984 in archive.org. It starts on page 86.

I started to integrate sigurbjornl’s patches for networking but I think I need to work through SunOS 2.0’s weird VAX 4.2BSD arp issues (anyone have the source code to SunOS 2.0?!). I’ll probably update it with UDP or some fixed ARP thing to remove that or just let the SUN-2 talk to a VAX with 4.2BSD so they can be weird, together.

I’m also pretty sure my old Cockatrice III sort of debugged SLiRP thing broke the packed structs to let it work properly when compiled with Microsoft C, so I’ll have to break down and either try to fix that, or update and borrow the vastly updated SLiRP from SIMH.

For Windows users who want to play along the bundle is on the terribly named page “Ancient UNIX/BSD emulation on Windows” as SUN2.zip.

GCC from ’87 on the 68000

Years ago I found the ‘first’ released version of GCC, and had built it for the VAX. And things were… fun.

While digging around on bitsavers for new and interesting things, I saw some newer stuff from MIT, and stumbled into the GNU directory and rediscovered the early GNU software depot.

And I re-built the early GCC to target the 68000 which I’d imagine primarily was for the SUN target.

simple program

Using a simple program I can run it through the pre-processor, and the compiler to get the following assembly:

assembly from ’87 GCC

Then it’s a matter of running it through the cross assembler, uuencoding it, and sending it to the target.

I used the cross assembler from the AtariST cross ‘project’, to get an object file. I fired up MachTen, pasted my object file to the VM, and uudecoded the object.

And yeah, much to my surprise the object file linked fine, and I got my native EXE.

It’s not much of a cross toolkit, and honestly it’s kind of useless… but I thought it was maybe worth a bare paragraph to show the other available target available for the 1987 release of GCC.

Also on the MIT archive is TRIX, the MIT Unix work alike that almost became the GNU Kernel, until Mach stole their hearts, and basically lead them on a wild goosechase.

I haven’t bothered uploading binaries or patches or anything yet, I don’t know if people are interesting in such a fringe thing……

The Jingsha x79 redeemed itself

Back on Christmas Eve I struggled to get this board to do much of anything. When it did boot it’d bluescreen Windows with a useless ‘ IRQL NOT LESS OR EQUAL ‘ error. I took it that the board was crap, and just shelved it.

Today however I’m working on another project and I need to emulate a ‘datacentre’ deployment so I’m stuck looking for machines with RAM, and of course cores. They can be slow I don’t care, but I need to run a TONNE of VM’s. I need egress, ingress, routers, policing, domains, email, servers, various databases, some container infrastructure to provision some other apps and all kinds of crap. I’d planned on maxxing this board out to 256GB or more, but it wasn’t playing nice. And now that it’s like the end of the world out here, getting more RAM from China really isn’t going to happen.

So this time I tried something different.

I have this Dell r710 server with a bunch of memory but it’s CPU’s are frankly lacking. I took the 32GB I had reserved for the Jingsha and swapped out 64GB from the Dell to put into here. I also picked up some massive GAMEMAX GM-1650 power supply which I figured would be more than enough for the dual processor board. The PSU clearly was built for a miner, and I had to use some really lame Y cable for the CPU power. I wasn’t sure what would happen if any of it even worked. My expectations were pretty low, and the first few times the board didn’t appear to do anything at all.

Then suddenly it beeped!

Booting Windows 10 from USB

I shoved in a Windows install USB, and it actually booted this time!

I bought some more of those ALSEYE 120mm cpu radiators as they couple with socket 2011 just fine.

Probably the weakest Quadro ever. But it’s low powered compared to anything modern

Although finding an E-ATX case that isn’t some ‘bling surprise’ is kind of difficult. It’s annoying all these ‘glass window’ cases, and other nonsense. What was wrong with IBM AT BEIGE?!

The lack of a boot diagnostic LED display really hurts this board. Clearly there was something about the memory I had it doesn’t like. It ran fine in the Huananzhi dual x79 board, and it runs fine in the Dell r710.

So yeah. Now I have 3 machines with 64GB of ram, and one with 96. It’d be easier to order but here we are.

So 6 weeks later the Jingsha finally did something useful.

One thing to mention as well is that like others have mentioned while running Linux it’s not uncommon to freeze, reboot and other fun things. Meanwhile Windows is fine. What is going on here?!

I enabled NUMA thinking if something was going wrong maybe it’d be isolated to a single NUMA node, and not take down the entire machine. I’m not convinced I was right, HOWEVER I did capture this error message!

Feb 19 07:31:27 rancher kernel: [    5.820094] mce: [Hardware Error]: CPU 1: Machine Check: 0 Bank 7: cc00008000010093
Feb 19 07:31:27 rancher kernel: [ 5.821328] mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 7: cc00008000010093
Feb 19 07:31:27 rancher kernel: [ 6.812122] mce: [Hardware Error]: CPU 1: Machine Check: 0 Bank 7: cc0069c000010093

Well that’s not good. So what is more interesting, is that I entered the BIOS after hammering F2/DEL like a typical end user and found this in the memory settings:

Memory is being configured as 1333Mhz, incorrectly

As you can see the current memory speed is 1333 MHz.

However as you can see, I’m using hynix 8gb 2rx4 pc3-10600r-9-11-e2 memory sticks, which means they should be clocked down to 1066 MHz. It’s probably a bit premature to write this, but I’m 30 minutes up, which is a record running Linux on the Jingsha.

It feels like RAM is the new Lupus. it’s never Lupus, but it’s always Lupus.

Cross compiling SDL 1.2.15 for ARM Win32

I was getting this fun error:

C:\proj\ss\SDL-1.2.15\VisualC\SDL>link /dll -out:sdl.dll *.obj winmm.lib dxguid.lib gdi32.lib user32.lib advapi32.lib dxguid.lib uuid.lib dxguid.lib Version.res
Microsoft (R) Incremental Linker Version 14.24.28315.0
Copyright (C) Microsoft Corporation. All rights reserved.

Creating library sdl.lib and object sdl.exp
SDL_dx5events.obj : error LNK2001: unresolved external symbol GUID_SysMouse
SDL_dx5events.obj : error LNK2001: unresolved external symbol GUID_SysKeyboard
SDL_dx5events.obj : error LNK2019: unresolved external symbol IID_IDirectInputDevice2A referenced in function DX5_DInputInit
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_XAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_YAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_ZAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RxAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RyAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_RzAxis
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_Slider
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_Key
SDL_dx5video.obj : error LNK2001: unresolved external symbol GUID_POV
sdl.dll : fatal error LNK1120: 12 unresolved externals

Which was NOT easy to track down. Thankfully while amputating and chasing the origin of GUID_Key, I ran across this: cboard.cprogramming.com

I have read various texts that state you must
Code:?

1#define INITGUID

And yes, you do!

In the file SDL-1.2.15\src\video\windx5\directx.h I just added it to the top, and now it’ll build the hacky DLL!

Maybe it’s something for Visual C++ version 19? I don’t know.

Anyway the advantage is now I have full audio for DosBOX!

Luckily updating binaries wasn’t too hard.