Skip to content

Instantly share code, notes, and snippets.

@segrax
Last active April 18, 2020 23:13
Show Gist options
  • Save segrax/bac6ff9e202eb76b43b960cc4285c1a7 to your computer and use it in GitHub Desktop.
Save segrax/bac6ff9e202eb76b43b960cc4285c1a7 to your computer and use it in GitHub Desktop.
Maniac Mansion C64 Disk Layout Information
Table Offset:
0x102: Room Disk Number
0x139: Room Track / Sector (0x6E, 110 bytes)
Demo:
0x1F2: Script Room Numbers (0x37, 55 bytes)
0x292: Script Offsets (0x6E, 110 bytes)
Retail:
0x1F2: Script Room Numbers (0x37, 55 bytes)
0x229: Script Offsets (0x6E, 110 bytes)
Room Format:
Length of resource
Resource
Script Format:
Length of script
Checksum
Script
private function sectorCount(int $pTrack) {
return (21 - ($pTrack > 17) * 2 - ($pTrack > 24) - ($pTrack > 30));
}
RoomSectorAlgorithm = (sectorCount(_roomTracks[res]) + _roomSectors[res]) * 256;
Room-8
Track:5
Sector:17
Disk Image Offset = 0x5400 + (0x11 * 0x100) = 0x6500
Script-6
Room:8
Script Offset: 0x0D70
Disk Image Offset: 0x0D70 + 0x6500 = 0x7270
@segrax
Copy link
Author

segrax commented Apr 18, 2020

{
"rooms": [
{
"Disk": 0,
"Sector": 0,
"Track": 0
},
{
"Disk": 50,
"Sector": 1,
"Track": 1
},
{
"Disk": 50,
"Sector": 1,
"Track": 15
},
{
"Disk": 50,
"Sector": 6,
"Track": 3
},
{
"Disk": 50,
"Sector": 16,
"Track": 6
},
{
"Disk": 50,
"Sector": 2,
"Track": 4
},
{
"Disk": 50,
"Sector": 8,
"Track": 14
},
{
"Disk": 50,
"Sector": 4,
"Track": 9
},
{
"Disk": 50,
"Sector": 17,
"Track": 5
},
{
"Disk": 50,
"Sector": 8,
"Track": 25
},
{
"Disk": 50,
"Sector": 13,
"Track": 2
},
{
"Disk": 50,
"Sector": 15,
"Track": 15
},
{
"Disk": 50,
"Sector": 12,
"Track": 21
},
{
"Disk": 50,
"Sector": 4,
"Track": 18
},
{
"Disk": 50,
"Sector": 7,
"Track": 16
},
{
"Disk": 50,
"Sector": 2,
"Track": 33
},
{
"Disk": 49,
"Sector": 19,
"Track": 4
},
{
"Disk": 50,
"Sector": 16,
"Track": 16
},
{
"Disk": 50,
"Sector": 3,
"Track": 20
},
{
"Disk": 50,
"Sector": 4,
"Track": 24
},
{
"Disk": 50,
"Sector": 1,
"Track": 27
},
{
"Disk": 50,
"Sector": 1,
"Track": 26
},
{
"Disk": 50,
"Sector": 1,
"Track": 19
},
{
"Disk": 50,
"Sector": 13,
"Track": 22
},
{
"Disk": 50,
"Sector": 16,
"Track": 28
},
{
"Disk": 50,
"Sector": 3,
"Track": 28
},
{
"Disk": 50,
"Sector": 0,
"Track": 30
},
{
"Disk": 50,
"Sector": 15,
"Track": 31
},
{
"Disk": 50,
"Sector": 12,
"Track": 33
},
{
"Disk": 50,
"Sector": 3,
"Track": 5
},
{
"Disk": 49,
"Sector": 2,
"Track": 2
},
{
"Disk": 50,
"Sector": 12,
"Track": 7
},
{
"Disk": 49,
"Sector": 6,
"Track": 9
},
{
"Disk": 49,
"Sector": 4,
"Track": 10
},
{
"Disk": 50,
"Sector": 6,
"Track": 34
},
{
"Disk": 50,
"Sector": 0,
"Track": 35
},
{
"Disk": 50,
"Sector": 0,
"Track": 14
},
{
"Disk": 50,
"Sector": 4,
"Track": 10
},
{
"Disk": 50,
"Sector": 3,
"Track": 23
},
{
"Disk": 50,
"Sector": 7,
"Track": 21
},
{
"Disk": 49,
"Sector": 17,
"Track": 7
},
{
"Disk": 49,
"Sector": 17,
"Track": 6
},
{
"Disk": 49,
"Sector": 11,
"Track": 8
},
{
"Disk": 50,
"Sector": 11,
"Track": 15
},
{
"Disk": 50,
"Sector": 1,
"Track": 11
},
{
"Disk": 49,
"Sector": 5,
"Track": 1
},
{
"Disk": 49,
"Sector": 18,
"Track": 5
},
{
"Disk": 49,
"Sector": 9,
"Track": 12
},
{
"Disk": 49,
"Sector": 9,
"Track": 6
},
{
"Disk": 49,
"Sector": 1,
"Track": 12
},
{
"Disk": 50,
"Sector": 14,
"Track": 19
},
{
"Disk": 49,
"Sector": 1,
"Track": 4
},
{
"Disk": 49,
"Sector": 2,
"Track": 13
},
{
"Disk": 0,
"Sector": 0,
"Track": 0
},
{
"Disk": 0,
"Sector": 0,
"Track": 0
}
],
"scripts": [
{
"Room": 9,
"Number": 1,
"Offset": 1651
},
{
"Room": 45,
"Number": 2,
"Offset": 2769
},
{
"Room": 50,
"Number": 3,
"Offset": 1298
},
{
"Room": 18,
"Number": 4,
"Offset": 4384
},
{
"Room": 18,
"Number": 5,
"Offset": 4569
},
{
"Room": 18,
"Number": 6,
"Offset": 4580
},
{
"Room": 8,
"Number": 7,
"Offset": 3440
},
{
"Room": 8,
"Number": 8,
"Offset": 3502
},
{
"Room": 16,
"Number": 9,
"Offset": 4306
},
{
"Room": 22,
"Number": 10,
"Offset": 3052
},
{
"Room": 27,
"Number": 11,
"Offset": 3174
},
{
"Room": 7,
"Number": 12,
"Offset": 4248
},
{
"Room": 24,
"Number": 13,
"Offset": 3644
},
{
"Room": 24,
"Number": 14,
"Offset": 3675
},
{
"Room": 17,
"Number": 15,
"Offset": 3371
},
{
"Room": 3,
"Number": 16,
"Offset": 3651
},
{
"Room": 28,
"Number": 17,
"Offset": 2382
},
{
"Room": 28,
"Number": 18,
"Offset": 2414
},
{
"Room": 10,
"Number": 19,
"Offset": 3170
},
{
"Room": 18,
"Number": 20,
"Offset": 4591
},
{
"Room": 18,
"Number": 21,
"Offset": 4685
},
{
"Room": 18,
"Number": 22,
"Offset": 4752
},
{
"Room": 18,
"Number": 23,
"Offset": 4810
},
{
"Room": 25,
"Number": 24,
"Offset": 2991
},
{
"Room": 5,
"Number": 25,
"Offset": 4183
},
{
"Room": 5,
"Number": 26,
"Offset": 4230
},
{
"Room": 5,
"Number": 27,
"Offset": 4256
},
{
"Room": 5,
"Number": 28,
"Offset": 4275
},
{
"Room": 5,
"Number": 29,
"Offset": 4301
},
{
"Room": 5,
"Number": 30,
"Offset": 4339
},
{
"Room": 19,
"Number": 31,
"Offset": 3174
},
{
"Room": 19,
"Number": 32,
"Offset": 3311
},
{
"Room": 19,
"Number": 33,
"Offset": 3562
},
{
"Room": 19,
"Number": 34,
"Offset": 3590
},
{
"Room": 19,
"Number": 35,
"Offset": 3670
},
{
"Room": 21,
"Number": 36,
"Offset": 2542
},
{
"Room": 21,
"Number": 37,
"Offset": 2576
},
{
"Room": 21,
"Number": 38,
"Offset": 2966
},
{
"Room": 43,
"Number": 39,
"Offset": 802
},
{
"Room": 9,
"Number": 40,
"Offset": 1732
},
{
"Room": 4,
"Number": 41,
"Offset": 3754
},
{
"Room": 8,
"Number": 42,
"Offset": 3515
},
{
"Room": 8,
"Number": 43,
"Offset": 4205
},
{
"Room": 8,
"Number": 44,
"Offset": 4372
},
{
"Room": 27,
"Number": 45,
"Offset": 3302
},
{
"Room": 12,
"Number": 46,
"Offset": 2945
},
{
"Room": 27,
"Number": 47,
"Offset": 3254
},
{
"Room": 21,
"Number": 48,
"Offset": 3553
},
{
"Room": 27,
"Number": 49,
"Offset": 3318
},
{
"Room": 27,
"Number": 50,
"Offset": 3345
},
{
"Room": 9,
"Number": 51,
"Offset": 1800
},
{
"Room": 4,
"Number": 52,
"Offset": 3797
},
{
"Room": 1,
"Number": 53,
"Offset": 6263
},
{
"Room": 7,
"Number": 54,
"Offset": 4281
},
{
"Room": 7,
"Number": 55,
"Offset": 4326
},
{
"Room": 7,
"Number": 56,
"Offset": 4571
},
{
"Room": 1,
"Number": 57,
"Offset": 6283
},
{
"Room": 47,
"Number": 58,
"Offset": 2471
},
{
"Room": 30,
"Number": 59,
"Offset": 3730
},
{
"Room": 18,
"Number": 60,
"Offset": 4880
},
{
"Room": 18,
"Number": 61,
"Offset": 4908
},
{
"Room": 18,
"Number": 62,
"Offset": 4934
},
{
"Room": 18,
"Number": 63,
"Offset": 4966
},
{
"Room": 18,
"Number": 64,
"Offset": 5001
},
{
"Room": 18,
"Number": 65,
"Offset": 5024
},
{
"Room": 18,
"Number": 66,
"Offset": 5047
},
{
"Room": 18,
"Number": 67,
"Offset": 5067
},
{
"Room": 18,
"Number": 68,
"Offset": 4945
},
{
"Room": 18,
"Number": 69,
"Offset": 5102
},
{
"Room": 7,
"Number": 70,
"Offset": 4580
},
{
"Room": 29,
"Number": 71,
"Offset": 3290
},
{
"Room": 1,
"Number": 72,
"Offset": 6687
},
{
"Room": 23,
"Number": 73,
"Offset": 1359
},
{
"Room": 24,
"Number": 74,
"Offset": 3706
},
{
"Room": 23,
"Number": 75,
"Offset": 1656
},
{
"Room": 23,
"Number": 76,
"Offset": 1730
},
{
"Room": 7,
"Number": 77,
"Offset": 4727
},
{
"Room": 7,
"Number": 78,
"Offset": 4824
},
{
"Room": 23,
"Number": 79,
"Offset": 1811
},
{
"Room": 9,
"Number": 80,
"Offset": 1860
},
{
"Room": 9,
"Number": 81,
"Offset": 2050
},
{
"Room": 9,
"Number": 82,
"Offset": 2214
},
{
"Room": 26,
"Number": 83,
"Offset": 3091
},
{
"Room": 26,
"Number": 84,
"Offset": 3483
},
{
"Room": 26,
"Number": 85,
"Offset": 3862
},
{
"Room": 26,
"Number": 86,
"Offset": 3975
},
{
"Room": 26,
"Number": 87,
"Offset": 4031
},
{
"Room": 26,
"Number": 88,
"Offset": 4255
},
{
"Room": 26,
"Number": 89,
"Offset": 4325
},
{
"Room": 26,
"Number": 90,
"Offset": 4547
},
{
"Room": 26,
"Number": 91,
"Offset": 4800
},
{
"Room": 26,
"Number": 92,
"Offset": 5108
},
{
"Room": 26,
"Number": 93,
"Offset": 5531
},
{
"Room": 26,
"Number": 94,
"Offset": 5586
},
{
"Room": 31,
"Number": 95,
"Offset": 2217
},
{
"Room": 17,
"Number": 96,
"Offset": 3401
},
{
"Room": 18,
"Number": 97,
"Offset": 5119
},
{
"Room": 44,
"Number": 98,
"Offset": 1705
},
{
"Room": 12,
"Number": 99,
"Offset": 3158
},
{
"Room": 12,
"Number": 100,
"Offset": 3358
},
{
"Room": 1,
"Number": 101,
"Offset": 6815
},
{
"Room": 41,
"Number": 102,
"Offset": 2165
},
{
"Room": 20,
"Number": 103,
"Offset": 3338
},
{
"Room": 20,
"Number": 104,
"Offset": 3912
},
{
"Room": 20,
"Number": 105,
"Offset": 4160
},
{
"Room": 20,
"Number": 106,
"Offset": 4237
},
{
"Room": 1,
"Number": 107,
"Offset": 6891
},
{
"Room": 40,
"Number": 108,
"Offset": 1382
},
{
"Room": 27,
"Number": 109,
"Offset": 3391
},
{
"Room": 45,
"Number": 110,
"Offset": 3350
},
{
"Room": 31,
"Number": 111,
"Offset": 2546
},
{
"Room": 26,
"Number": 112,
"Offset": 5764
},
{
"Room": 31,
"Number": 113,
"Offset": 2789
},
{
"Room": 51,
"Number": 114,
"Offset": 2517
},
{
"Room": 31,
"Number": 115,
"Offset": 2830
},
{
"Room": 33,
"Number": 116,
"Offset": 2741
},
{
"Room": 16,
"Number": 117,
"Offset": 4355
},
{
"Room": 16,
"Number": 118,
"Offset": 4366
},
{
"Room": 30,
"Number": 119,
"Offset": 4505
},
{
"Room": 42,
"Number": 120,
"Offset": 2357
},
{
"Room": 30,
"Number": 121,
"Offset": 4870
},
{
"Room": 30,
"Number": 122,
"Offset": 5220
},
{
"Room": 30,
"Number": 123,
"Offset": 5649
},
{
"Room": 51,
"Number": 124,
"Offset": 2803
},
{
"Room": 30,
"Number": 125,
"Offset": 5683
},
{
"Room": 46,
"Number": 126,
"Offset": 1695
},
{
"Room": 45,
"Number": 127,
"Offset": 3408
},
{
"Room": 1,
"Number": 128,
"Offset": 6960
},
{
"Room": 50,
"Number": 129,
"Offset": 1403
},
{
"Room": 51,
"Number": 130,
"Offset": 2890
},
{
"Room": 33,
"Number": 131,
"Offset": 3163
},
{
"Room": 21,
"Number": 132,
"Offset": 3757
},
{
"Room": 4,
"Number": 133,
"Offset": 3812
},
{
"Room": 38,
"Number": 134,
"Offset": 3045
},
{
"Room": 38,
"Number": 135,
"Offset": 3072
},
{
"Room": 38,
"Number": 136,
"Offset": 3144
},
{
"Room": 38,
"Number": 137,
"Offset": 3570
},
{
"Room": 38,
"Number": 138,
"Offset": 3634
},
{
"Room": 38,
"Number": 139,
"Offset": 4059
},
{
"Room": 38,
"Number": 140,
"Offset": 4094
},
{
"Room": 38,
"Number": 141,
"Offset": 4150
},
{
"Room": 4,
"Number": 142,
"Offset": 3833
},
{
"Room": 31,
"Number": 143,
"Offset": 3004
},
{
"Room": 1,
"Number": 144,
"Offset": 7191
},
{
"Room": 10,
"Number": 145,
"Offset": 3188
},
{
"Room": 7,
"Number": 146,
"Offset": 4869
},
{
"Room": 26,
"Number": 147,
"Offset": 5944
},
{
"Room": 19,
"Number": 148,
"Offset": 3771
},
{
"Room": 19,
"Number": 149,
"Offset": 3793
},
{
"Room": 8,
"Number": 150,
"Offset": 4716
},
{
"Room": 1,
"Number": 151,
"Offset": 7633
},
{
"Room": 1,
"Number": 152,
"Offset": 7963
},
{
"Room": 9,
"Number": 153,
"Offset": 2355
},
{
"Room": 9,
"Number": 154,
"Offset": 2526
},
{
"Room": 31,
"Number": 155,
"Offset": 3094
},
{
"Room": 31,
"Number": 156,
"Offset": 3395
},
{
"Room": 20,
"Number": 157,
"Offset": 4689
},
{
"Room": 31,
"Number": 158,
"Offset": 3429
},
{
"Room": 12,
"Number": 159,
"Offset": 3469
},
{
"Room": 9,
"Number": 160,
"Offset": 2534
}
],
"costumes": [
{
"Room": 46,
"Number": 1,
"Offset": 1997
},
{
"Room": 44,
"Number": 2,
"Offset": 1969
},
{
"Room": 44,
"Number": 3,
"Offset": 3811
},
{
"Room": 44,
"Number": 4,
"Offset": 9396
},
{
"Room": 44,
"Number": 5,
"Offset": 11265
},
{
"Room": 44,
"Number": 6,
"Offset": 5741
},
{
"Room": 44,
"Number": 7,
"Offset": 7608
},
{
"Room": 44,
"Number": 8,
"Offset": 13122
},
{
"Room": 30,
"Number": 9,
"Offset": 6808
},
{
"Room": 31,
"Number": 10,
"Offset": 4506
},
{
"Room": 19,
"Number": 11,
"Offset": 3867
},
{
"Room": 26,
"Number": 12,
"Offset": 6152
},
{
"Room": 24,
"Number": 13,
"Offset": 3914
},
{
"Room": 31,
"Number": 14,
"Offset": 3486
},
{
"Room": 12,
"Number": 15,
"Offset": 3592
},
{
"Room": 32,
"Number": 16,
"Offset": 2710
},
{
"Room": 51,
"Number": 17,
"Offset": 3216
},
{
"Room": 40,
"Number": 18,
"Offset": 1600
},
{
"Room": 42,
"Number": 19,
"Offset": 2843
},
{
"Room": 27,
"Number": 20,
"Offset": 3577
},
{
"Room": 51,
"Number": 21,
"Offset": 3544
},
{
"Room": 46,
"Number": 22,
"Offset": 1937
},
{
"Room": 33,
"Number": 23,
"Offset": 8575
},
{
"Room": 30,
"Number": 24,
"Offset": 8739
},
{
"Room": 31,
"Number": 25,
"Offset": 6238
}
],
"sounds": [
{
"Room": 30,
"Number": 1,
"Offset": 3943
},
{
"Room": 33,
"Number": 2,
"Offset": 7104
},
{
"Room": 17,
"Number": 3,
"Offset": 3569
},
{
"Room": 24,
"Number": 4,
"Offset": 3877
},
{
"Room": 36,
"Number": 5,
"Offset": 1946
},
{
"Room": 1,
"Number": 6,
"Offset": 7210
},
{
"Room": 44,
"Number": 7,
"Offset": 1797
},
{
"Room": 24,
"Number": 8,
"Offset": 3729
},
{
"Room": 44,
"Number": 9,
"Offset": 1908
},
{
"Room": 44,
"Number": 10,
"Offset": 1940
},
{
"Room": 36,
"Number": 11,
"Offset": 1903
},
{
"Room": 4,
"Number": 12,
"Offset": 3882
},
{
"Room": 4,
"Number": 13,
"Offset": 3860
},
{
"Room": 4,
"Number": 14,
"Offset": 3904
},
{
"Room": 7,
"Number": 15,
"Offset": 4985
},
{
"Room": 7,
"Number": 16,
"Offset": 5018
},
{
"Room": 7,
"Number": 17,
"Offset": 5044
},
{
"Room": 7,
"Number": 18,
"Offset": 5083
},
{
"Room": 24,
"Number": 19,
"Offset": 3858
},
{
"Room": 43,
"Number": 20,
"Offset": 895
},
{
"Room": 21,
"Number": 21,
"Offset": 4017
},
{
"Room": 5,
"Number": 22,
"Offset": 4935
},
{
"Room": 5,
"Number": 23,
"Offset": 4736
},
{
"Room": 5,
"Number": 24,
"Offset": 4790
},
{
"Room": 5,
"Number": 25,
"Offset": 4889
},
{
"Room": 17,
"Number": 26,
"Offset": 3507
},
{
"Room": 3,
"Number": 27,
"Offset": 3770
},
{
"Room": 15,
"Number": 28,
"Offset": 2469
},
{
"Room": 10,
"Number": 29,
"Offset": 3234
},
{
"Room": 21,
"Number": 30,
"Offset": 3774
},
{
"Room": 25,
"Number": 31,
"Offset": 3095
},
{
"Room": 25,
"Number": 32,
"Offset": 3117
},
{
"Room": 8,
"Number": 33,
"Offset": 4721
},
{
"Room": 8,
"Number": 34,
"Offset": 4752
},
{
"Room": 24,
"Number": 35,
"Offset": 3893
},
{
"Room": 18,
"Number": 36,
"Offset": 5271
},
{
"Room": 8,
"Number": 37,
"Offset": 4783
},
{
"Room": 21,
"Number": 38,
"Offset": 4038
},
{
"Room": 44,
"Number": 39,
"Offset": 1819
},
{
"Room": 1,
"Number": 40,
"Offset": 7974
},
{
"Room": 16,
"Number": 41,
"Offset": 4377
},
{
"Room": 23,
"Number": 42,
"Offset": 1892
},
{
"Room": 4,
"Number": 43,
"Offset": 3936
},
{
"Room": 29,
"Number": 44,
"Offset": 3377
},
{
"Room": 17,
"Number": 45,
"Offset": 3528
},
{
"Room": 27,
"Number": 46,
"Offset": 3408
},
{
"Room": 5,
"Number": 47,
"Offset": 4960
},
{
"Room": 41,
"Number": 48,
"Offset": 2827
},
{
"Room": 41,
"Number": 49,
"Offset": 2848
},
{
"Room": 41,
"Number": 50,
"Offset": 2966
},
{
"Room": 17,
"Number": 51,
"Offset": 5040
},
{
"Room": 41,
"Number": 52,
"Offset": 3940
},
{
"Room": 17,
"Number": 53,
"Offset": 6014
},
{
"Room": 41,
"Number": 54,
"Offset": 2889
},
{
"Room": 45,
"Number": 55,
"Offset": 4052
},
{
"Room": 30,
"Number": 56,
"Offset": 5707
},
{
"Room": 33,
"Number": 57,
"Offset": 3225
},
{
"Room": 33,
"Number": 58,
"Offset": 3376
},
{
"Room": 33,
"Number": 59,
"Offset": 3448
},
{
"Room": 30,
"Number": 60,
"Offset": 6682
},
{
"Room": 30,
"Number": 61,
"Offset": 6717
},
{
"Room": 51,
"Number": 62,
"Offset": 2903
},
{
"Room": 51,
"Number": 63,
"Offset": 2974
},
{
"Room": 12,
"Number": 64,
"Offset": 3550
},
{
"Room": 16,
"Number": 65,
"Offset": 4409
},
{
"Room": 46,
"Number": 66,
"Offset": 1853
},
{
"Room": 51,
"Number": 67,
"Offset": 3117
},
{
"Room": 51,
"Number": 68,
"Offset": 3054
},
{
"Room": 16,
"Number": 69,
"Offset": 4542
},
{
"Room": 47,
"Number": 70,
"Offset": 2962
}
]
}

@segrax
Copy link
Author

segrax commented Apr 18, 2020

Disk number is in ASCII - 0x32 = '2' = Disk 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment