Running Pinball Construction Set on Mini vMac

About Mini vMac and all other 68k emulators, including SoftMac, Executor, and MESS.

Moderators: Cat_7, Ronald P. Regensburg

Post Reply
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Running Pinball Construction Set on Mini vMac

Post by FerazelX »

I have had a look at it, and am convinced that the problem lies in line 1 of CODE resource 1.
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

I have also run MacsBug (which runs in Mini vMac!) on it as well.
Image

Illegal Instruction at 001C36AE 'CODE 0001 03AE'+00956

1-Jan-12 6:40 PM (since boot = 39 seconds)
Current application is ÒPinballConstructionSet(E)-v2.5Ó., System $0710
ROM version $0075, $6000, $55AA (ROMBase $00400000)
VM is off
NIL^ = $00410000
Stack space used = +46; max used space = +424
Address 001C36AE is in the ÒPinballConstructionSet(E)-v2.5Ó heap at 001
It is 00000956 bytes into this heap block:
Start Length Tag Mstr Ptr Lock Prg Type ID File
¥ 001C2D58 00001500+00 R 001C1658 L P CODE 0001 03AE
68000 Registers
D0 = 00000020 A0 = 0031B104 USP = 00000000
D1 = 0000A9F4 A1 = 001C274B SSP = 00410000
D2 = 001C27B6 A2 = FFFFFFFF
D3 = FFFFFFFF A3 = FFFFFFFF
D4 = FFFFFFFF A4 = 001C24BE
D5 = FFFFFFFF A5 = 0031B0E4
D6 = FFFFFFFF A6 = 0031A44E PC = 001C36AE
D7 = 00000000 A7 = 0031A430 SR = SmxnZvc Int = 0
Disassembling from 001C36A2
'CODE 0001 03AE'
+0094A 001C36A2 ADDQ.W #$8,A7
+0094C 001C36A4 MOVEM.L -(A2),D0/D2/D3/D5/D6/A0/A5/A7
+00950 001C36A8 ASR.L D2,D1
+00952 001C36AA DC.W $E1FE ; ????
+00954 001C36AC BGT.S 'CODE 0001 03AE'+00982 ; 001C36DA
+00956 001C36AE *DC.W $7F26 ; ????
+00958 001C36B0 SMI (A1)+
+0095A 001C36B2 DC.W $9432 ; ????
+0095C 001C36B4 DC.W $1DCB ; ????
+0095E 001C36B6 DC.W $732D ; ????
+00960 001C36B8 _BitNot ; 00408334
+00962 001C36BA MOVE.W A2,-(A4)
+00964 001C36BC BVS.S 'CODE 0001 03AE'+009AC ; 001C3704
Heap zones
24 923K 00001400 to 000E808D SysZone^
24 0K 000014C4 to 000016B7
24 10K 000724D8 to 00074CD7
24 2551K 000E808E to 00365D2F
24 15K 001C155C to 001C515B ÒPinballConstructionSet(E)-v2.5Ó A
24 247K 0031BABC to 003599F7 ÒFinderÓ
24 30K 003279E4 to 0032F1E3
24 170K 0032F1EC to 003599EB
Checking all heaps
The System heap at 00001400 is ok
The heap at 000014C4 is ok
The heap at 000724D8 is ok
The heap at 000E808E is ok
The ÒPinballConstructionSet(E)-v2.5Ó heap at 001C155C is ok
The ÒFinderÓ heap at 0031BABC is ok
The heap at 003279E4 is ok
The heap at 0032F1EC is ok
Totaling the ÒPinballConstructionSet(E)-v2.5Ó heap at 001C155C
Total Blocks Total of Block Sizes
Free 0003 #3 00000DE0 #3552
Nonrelocatable 0001 #1 00000108 #264
Relocatable 0011 #17 00002CD8 #11480
Locked 0004 #4 00002104 #8452
Purgeable and not locked 0000 #0 00000000 #0
Heap size 0015 #21 00003BC0 #15296
The target heap is the System heap at 00001400
Totaling the System heap at 00001400
Total Blocks Total of Block Sizes
Free 0013 #19 00057126 #356646
Nonrelocatable 005D #93 0005BEA6 #376486
Relocatable 00E6 #230 00033C82 #212098
Locked 001F #31 0001F8FA #129274
Purgeable and not locked 0030 #48 0000BD90 #48528
Heap size 0156 #342 000E6C4E #945230
Displaying File Control Blocks
fRef File Vol Type Fl Fork LEof
0002 System Starter DiÉ zsys dW rsrc #997332
0060 Starter DiÉ ¥¥¥¥ dw data #73728
00BE Starter DiÉ ¥¥¥¥ dw data #73728
011C Finder Starter DiÉ FNDR dW rsrc #377469
017A Finder Preferences Starter DiÉ pref dW rsrc #360
01D8 Desktop DB Starter DiÉ BTFL dW data #26624
0236 Desktop DF Starter DiÉ DTFL dW data #228898
0294 Pinball CoÉ ¥¥¥¥ dw data #11264
02F2 Pinball CoÉ ¥¥¥¥ dw data #33792
0350 Desktop Pinball CoÉ FNDR dW rsrc #2131
03AE PinballConstructionSeÉ Pinball CoÉ APPL dW rsrc #149880
040C StdLog Starter DiÉ TEXT dW data #6532
#40 FCBs, #12 in use, #28 free
Displaying resource information:
> Map $001C1690, flags $0000, file $03AE = PinballConstructionSet(E)
S Map $00001498, flags $000D, file $0002 = System
Calling chain using A6 links
A6 Frame Caller
Return addresses on the stack
Stack Addr Frame Addr ISA Caller
0031A43E 68K 00066B2E 'scod BFAC 0002'+0005A
0031A43A 68K 00066B2A 'scod BFAC 0002'+00056
Closing log
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

I have since managed to get my hands on a master disk, but PCS still crashes with an error of Type 3, even after I apply the "No Master Disk Needed" crack.

Is there any way to hack the system file (or the BIOS if need be) so that it always thinks that there is a disk in the "actual" drive, even though there isn't? If the system file (or BIOS) can be tricked into thinking that there is a 400k floppy in the "actual" drive (even though there isn't), it may become possible to run Pinball Constuction Set in Mini vMac.
User avatar
adespoton
Forum All-Star
Posts: 4227
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Running Pinball Construction Set on Mini vMac

Post by adespoton »

Bumping an ancient post, but I had some thoughts about this...

I believe starting with System 7.5, Apple changed the way it handled disk insertion, and patched the ROM trap with a system call. If we can track down what they did, there could be a really obvious place to insert an extra value here (the new system call doesn't assume that if one disk is inserted, there can't be another one inserted IIRC -- it made installing from multiple disk images possible instead of doing the eject/insert dance, even if you had 2 FDDs).
Adam P
Tinkerer
Posts: 67
Joined: Wed Mar 31, 2010 11:55 pm
Location: Maine, U.S.
Contact:

Re: Running Pinball Construction Set on Mini vMac

Post by Adam P »

The test system above is System Software 7.1 ($0710), not 7.5, where Apple started making some drastic changes in how it handled drive management, also introducing code that generated startup hangs with a looping QElem chain if something broke…

For the above image, the CPU went to a part of the non-code (or mid-instruction) in CODE ID 1, so the program expected something that the system couldn’t offer (the game you’re trying is buggy).

Getting technical, the Program Counter isn’t coming directly from any of the address registers, and the code 0x7F265BD19432 around the PC isn’t even text (as some routines may store text in the code)… rD1 is set to the trapword for ExitToShell, so something was definitely happening.

Running Pinball Construction Set (©1985) appears to call for a 68000 system with the 400KB (single-sided floppy) disk inserted.  The program, which came after DOS version(s), features its own miniature OS (by Bill Budge), so there may be some pretty low-level calls.

But for the Classic Mini vMac, no setup should cause this kind of crash.  (The MacII version, however, may, considering that it’s not even compatible w. BeHierarchic, producing a similar ‘bad PC’ issue when dragging from menu to menu.)

Thanks to Electronic Arts, I can’t download this off MacGarden to pinpoint the problem further.
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

Big bump, but I wanted to ask: If the custom OS by some chance is causing the crash, how come the Demo doesn't?

For the record,

Demo = 1.1
Full = 2.5
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

Anything?
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

Had another look at it, and have pretty much confirmed that internal floppy emulation is NOT the problem - SoftMac appears to support this emulation, and the the Type 3 System Error still occurs.
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

It seems that Mini vMac supports internal floppy emulation as of 3.5.0, and it STILL gives a system error!
Image
Image

Perhaps there is some weird memory issue going on?
User avatar
Ronald P. Regensburg
Expert User
Posts: 7821
Joined: Thu Feb 09, 2006 10:24 pm
Location: Amsterdam, Netherlands

Re: Running Pinball Construction Set on Mini vMac

Post by Ronald P. Regensburg »

ID=03 means "Illegal Instruction"
Maybe still something missing in the emulation.
pruten
Tinkerer
Posts: 68
Joined: Thu Feb 27, 2014 3:10 am

Re: Running Pinball Construction Set on Mini vMac

Post by pruten »

FerazelX wrote: Disassembling from 001C36A2
'CODE 0001 03AE'
+0094A 001C36A2 ADDQ.W #$8,A7
+0094C 001C36A4 MOVEM.L -(A2),D0/D2/D3/D5/D6/A0/A5/A7
+00950 001C36A8 ASR.L D2,D1
+00952 001C36AA DC.W $E1FE ; ????
+00954 001C36AC BGT.S 'CODE 0001 03AE'+00982 ; 001C36DA
+00956 001C36AE *DC.W $7F26 ; ????
+00958 001C36B0 SMI (A1)+
+0095A 001C36B2 DC.W $9432 ; ????
+0095C 001C36B4 DC.W $1DCB ; ????
+0095E 001C36B6 DC.W $732D ; ????
+00960 001C36B8 _BitNot ; 00408334
+00962 001C36BA MOVE.W A2,-(A4)
+00964 001C36BC BVS.S 'CODE 0001 03AE'+009AC ; 001C3704
That's def corrupted. 0xE1FE is not a valid 68k instruction, and I don't think it's off by a single bit flip. (Since I can't think of way to flip a bit and get an instruction that makes sense in that context.) Possibly this was a compressed CODE resource, and it was corrupted on decompression. Or maybe the binary is really just corrupted?
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

Very possibly corrupted on decompression due to a copy protection issue.
FerazelX
Tinkerer
Posts: 81
Joined: Sun Jan 20, 2008 11:38 am

Re: Running Pinball Construction Set on Mini vMac

Post by FerazelX »

Bit of a bump, but I wanted to ask if there are any updates on this.

Also, I seem to recall that, as a child, I played using a copy, rather than the master disk.
Post Reply