-------------Maniac Mansion------------ A 4am crack 2015-09-10 --------------------------------------- Name: Maniac Mansion Genre: adventure Year: 1987 Publisher: Lucasfilm Games Media: double-sided 5.25-inch floppy OS: custom Previous cracks: The Blade several uncredited cracks on Asimov Only side A is bootable. ~ Chapter 0 In Which Various Automated Tools Fail In Interesting Ways COPYA no read errors on either side, but the copy hangs on boot Locksmith Fast Disk Backup ditto EDD 4 bit copy (no sync, no count) ditto Copy ][+ nibble editor nothing suspicious Disk Fixer T00 -> custom bootloader no sign of DOS (or any other OS) no sign of a disk catalog no sign of intelligent life anywhere Why didn't any of my copies work? I have no idea. It's probably not a structural problem; the drive never moves off track $00. Probably just a nibble check in early boot. Next steps: 1. Trace the boot 2. ??? ~ Chapter 1 In Which We're Off To A Roaring Start ]PR#5 CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]BLOAD BOOT0,A$800 ]CALL -151 *801L ; WTF 0801- 31 00 AND ($00),Y ; put an "RTS" at $0801, presumably so ; we can call $Cx5C like a subroutine ; to read more sectors 0803- A9 60 LDA #$60 0805- 8D 01 08 STA $0801 ; switch to ROM 0808- 2C 82 C0 BIT $C082 ; munge boot slot (x16) into $Cx form 080B- 8A TXA 080C- 48 PHA 080D- 4A LSR 080E- 4A LSR 080F- 4A LSR 0810- 4A LSR 0811- 09 C0 ORA #$C0 0813- 8D 36 08 STA $0836 ; clear screen hole 0816- A2 07 LDX #$07 0818- A9 00 LDA #$00 081A- 9D 78 04 STA $0478,X 081D- CA DEX 081E- 10 FA BPL $081A 0820- 68 PLA 0821- AA TAX 0822- 86 2B STX $2B ; initialize a sector count 0824- A9 0E LDA #$0E 0826- 85 00 STA $00 0828- A4 00 LDY $00 ; sector array 082A- B9 41 08 LDA $0841,Y 082D- 85 3D STA $3D ; page array 082F- B9 50 08 LDA $0850,Y 0832- 85 27 STA $27 *850.85F 0850- 2E 2C 2A 28 26 24 22 20 0858- 2D 2B 29 27 25 23 21 00 Those are the high bytes of the memory locations we're reading into. ; read a bunch of sectors, using the ; disk controller ROM (exits via $0801, ; but that's an "RTS" by now, so we can ; just write a straightforward loop and ; treat it like a subroutine) 0834- 20 5C C6 JSR $C65C ; decrement sector count and loop back ; to read more 0837- C6 00 DEC $00 0839- 10 ED BPL $0828 ; turn off drive motor 083B- BD 88 C0 LDA $C088,X ; and jump elsewhere 083E- 4C 00 2B JMP $2B00 Unusual, but fairly straightforward. Let's interrupt the boot at $083E and see what wonders await us at $2B00. *9600 *2BBF 2BBF- 55 The magic value is $55. Now I can write that value to disk. Turning to my trusty Disk Fixer sector editor, I find the nibble check code on T00,S0C. I'll put an "RTS" at the start of the nibble check. T00,S0C,$53 change "BD" to "60" The same sector holds the placeholder for the magic value. T00,S0C,$BF change "00" to "55" ]PR#6 ...works... Quod erat liberandum. --------------------------------------- A 4am crack No. 445 ------------------EOF------------------