0 users browsing Programming. | 1 bot  
    Main » Programming » Resurrecting Visual Basic 3 shareware in VB6
    Pages: First Previous 1 2 3
    Posted on 20-06-10, 01:25 (revision 4)
    Dinosaur

    Post: #723 of 1282
    Since: 10-30-18

    Last post: 3 days
    Last view: 12 hours
    Let's check another collection of old forgotten shareware on CD, this time I borrowed some bits from Walnut Creek's Giga Games series (discs 3 and 5).

    Their info files are a mess, and they don't even tell you most of the times if your game needs extra libraries, like the VB ones, so this time I only managed to checkout a few samples:

    - BJ_POK33.ZIP: More Ultisoft shareware, but this time it is NOT another reskinned slot machine simulator! QCARD.DLL consumer and has SSFrames, but otherwise it doesn't share the same sins as their video slot games (string font sizes, mainly), so pretty much a straightforward port. All these Ultisoft games feature a catalog of their complete shareware lineup, which upsets VB6 because it features >1024-character lines, which causes the IDE to refuse saving anything at all until you break up those lines. No, nobody (be it sane or clinically insane) does one-liner complex functions in VB - these guys instead fitted all their catalog descriptions in code which led to the ridiculously long lines. Unlike most Ultisoft products, their shareware card games shipped separate executables built from different codebases for shareware and registered products, so there is nothing to unlock here - the nagscreens are here to stay, including the catalog dialog that was now promoted to an actual nagscreen too!

    - HS32.ZIP: MOAR Ultisoft gambling simulators - this one is particularly lame (but so are actual horse races to me). Once again, nothing noteworthy to write about, except for the fact that this continues the Ultisoft tradition of hardcoded regkeys. NEXT!

    - LASBLO20.ZIP: Oh joy, a rare VB4/16-bit sample! I thought nobody bothered with that release (either stick to VB3 until it was practical to do, or jump ship to Win95 and the promised 32-bit land ASAP). Unfortunately this means I can't do anything at all since there is no VB4 decompiler :/

    - MIMA250.ZIP: Some shitty Missile Command clone from Canada made in VB2 (DoDi may bitch with some non-errors, but the decompiled code is useable). You fight straight lines ICBMs with useless missiles. DoDi kinda lost its mind when dealing with those raster opcodes (looks like the dev declared all common opcodes, but only used SRCAND and SRCINVERT, but DoDi came up with invalid values and byteswapped values on comments, including a freakishy long one), but I guess I got those right at the end? This game uses the MCI control for playing MIDIs via MCI commands, yet it resorts to sndPlaySound for playing WAVs!? Madness. Lots of dead code, and a single global boolean variable controls what target is built (shareware vs. registered), but the name/serial validation routines are missing (if they ever existed, but then there is no code to load name/serial from an INI file).

    - RDTPV10S.ZIP: Someone that liked card games and auto racing decided to find out what happened when you combined both, and this is the result, a somewhat entertaining piece of shareware. This one was fun - two custom VBXs with no 32-bit replacements:
    * WAVE1.VBX (actual name: WAVE.VBX from Mabry Software): For those devs that were too lazy to wrap sndPlaySound and/or found the MCI control overkill. I didn't even bothered with this one - moving this to sndPlaySound(SND_ASYNC | SND_NODEFAULT) only took me like 3 minutes for the 18 WAV files this game uses.
    * ROADTRIP.VBX: This one is a really custom control (not just a generic 3rd-party control made by someone else), coded specificaly for this game - it's a glorified imagelist, except that it ships with hardcoded images ("resources") of the custom card deck designed for this game. Naturally this means that this VBX is useless outside this game, and therefore there is no point looking for a 32-bit OCX, as this game never got a 32-bit release despite being released in May '96. The replacement involved carving the VBX for the card deck images (which were good ol' .BMP files, complete with headers instead of just raw bitmaps) and MS Common Controls ImageList, which with minimal code changes served the exact same purpose.
    So basically I ended trading away two unknown VBXs with a single API call and a standard MS OCX. I could have put all the card images on a single bitmap, letting me to use PicClip, or even do away with external dependencies and just BitBlt some cards but the key here is to be lazy :P Shareware source base, the highscores dialog is there (complete with its backing code!) but the actual menu item event handler just serves a "Please Register" messagebox. Now let me talking about their "shareware protection" bits: this game enforces a 14-day trial, and once it expires you're locked out. For this, the game creates a fake DLL (mci00826.dll) on C:\WINDOWS\SYSTEM\, a hardcoded path, which is bound to fail on those rare Windows installs back when MS allowed you to setup Windows on whatever directory you wanted. Oh, and that's a no-fly zone on anything past XP, or NT without admin privileges. This game also does something incredibly lame: it checks its 18 WAV files on boot to ensure their file sizes are consistent against an internal table, and bails out if you have changed even one of the files... yet there is no error handler on that proceudre, so the program will crash instead at the first missing file. I guess that too served their purposes as well.

    - SOL3.ZIP: Packed installer EXE, so I'm leaving this for later as I'm lazy to fire up the VM and install.

    - USC22.ZIP: Yet another Ultisoft shareware card game, and as you've expected, this is the crippled shareware binary. There are previews of the games only available on the registered version, but no actual code to drive those, so there is nothing to unlock here :/ QCARD.DLL consumer, and it uses almost every API function, even some of the "undocumented" ones!

    Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
    Posted on 20-06-12, 23:10 (revision 2)
    Dinosaur

    Post: #726 of 1282
    Since: 10-30-18

    Last post: 3 days
    Last view: 12 hours
    Speaking about Road Trip: the game turned out to be quite fun, but the AI/RNG is just horrible, plus the game is a pile of bugs:

    - If you need a specific Solution Card to counter a specific Hazard Card, chances are you're going to draw pretty much every Solution Card in the deck except for the one that you need, while your opponent gets all copies of the card that it's useless to him. This quickly leads to nasty no-win situations because there is no balancing whatsoever, basically killing the "skill" aspect of the game.

    - When you win, sometimes no matter how many times you dismiss the game summary dialog, it comes back as soon as you hover your pointer over the game field or menu bars. This seems to be due to a timer going amok.

    - You're supposed to get a 14-day trial, but it seems that all you get is a ONE-DAY TRIAL due to the very botched way of the game to parse dates: their "software protection" method stores on its fake DLL the installation date as the day of year, which is calculated by extracting the day and month of the current date, which is done using Val(Mid$(Date, n, 2)), where n=1 for the current month and n=3 for the current day of month. If you already spotted why this is BLATANTLY BROKEN, chances are you don't live in good ol' US of A because if this dev ever read the VB docs he should have known that the string representation of a date this way is locale-dependant! (The correct way to do it is to use Format$ with a custom date format, Day/Month built-in functions, or even better: DatePart which already gives you the day of year, although that one required shipping an extra DLL back then because that for whatever reason, MS considered DatePart to be a "financial function", which depended on MSAFINX.DLL)

    - Their "software protetction" routines also store some other unknown stuff on said fake DLL, even on the registered version (according to leftover code on the shareware executable - the methods were exactly the same except for the botched trial expiration part)

    The history of this game ends sometime after 1997, when an update was released (this time the dev had updated to VB4, but the app was still 16-bit, and aside extending the trial period to 30 days and replacing the custom ROADTRIP.VBX with VBIO.VBX and COMDLG16.OCX, the bugfixes -if any- are unknown), promised Internet play for future versions, and promptly vanished from the Internet before crossing the bridge to the new millennium. A pity, as I genuinely see some potential on this card game...

    UPDATE: Road Trip is a computer implementation of the French cardgame Mille Bornes ("thousand milestones"), which is played with actual cards. Nice~

    Licensed Pirate® since 2006, 100% Buttcoin™-free, enemy of All Things JavaScript™
    Pages: First Previous 1 2 3
      Main » Programming » Resurrecting Visual Basic 3 shareware in VB6
      Yes, it's an ad.