[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MLB Crack: Putting the Puzzle Together
On Thursday, October 18, 2012 6:56:07 PM UTC-5, Hot Rod wrote:
> Hi,
>
> I'm going to be adding a series of posts here describing my most recent retro computing project - a crack of the Micro League Baseball Box Score/Stat Compiler disk.
>
>
>
> ]HR
Putting the Puzzle Together
So at this point I had 6+2 encoded, ten-sectors per track data, and I wanted to map onto the Black Bag crack layout. I needed the Teams rosters and data to be in the same place as the other disks, so they’d all work together. That’s what I built next; I took just that data from the Box Score disk and laid it out on another disk, where the BB cracks expected it. That worked – the game disk and GM disk could find and read the teams from the Box Score disk.
Then I lifted the boot from the GM crack and moved that over, but then modified to load the track/sector groups as per the original Box Score disk. The adaptation to the replacement RWTS is pretty simple; the original would set track into $2C, sector into $2E, buff_lo into $34 and buff_hi into $35, and then call $900. The Cloak tweaked it by instead setting the buff_hi into $34, and the count of sectors to read into $35, with an assumption that everything was descending (so the track/sector/buff_hi are all the last ones). Loads faster this way, but made the sector conversions more work. But, can still use a load table that has four-byte groups, and the RWTS calls from within the program itself can be modified in place, using the same zero page addresses. And all the calls are to $900, so just searching and updating those covered it. Beyond the 4+4 encoding and disk layout, the MLB programs have no secondary protection; the only protection is the format, so converting it is the entire effort.
So the original map I had of the ten-sector tracks ended up with the data laid out quite differently on the 16-sector tracks:
0811: $0400-$07FF start Track $06, Sector 6 to Track $06, sector 9 [now t0s8-B]
0815: $2200-$275D start Track $01, Sector 4 to Track $01, sector 9 [left same]
0819: $D400-$E7DA start Track $08, Sector 6 to Track $0A, sector 5 [now t8sC thru t9sF]
081D: $6000-$A6C2 start Track $0C, Sector 6 to Track $13, sector 6 [now tCs9 to t10sF]
0821: $A700-$BEBE start Track $13, Sector 7 to Track $16, sector 0 [now t12s0 to t13s7]
That got the data put in the right places, and I could now boot the game in ‘cracked’ form for the first time. The ‘S’ option worked, so I could see the stats, and after finding a couple more disk calls in the Aux RAM code, Printing stats worked too. That left the Play game option, and the Delete team options. Since I knew the path of the Play game option, and it was still just reads, I tackled that next. The Delete option was going to need disk write routines, so I saved that for last.
]HR