# RIPtel 3.1 — Patch Notes

Patched build of RIPtel 3.1 Visual Telnet (RIPscrip BBS client, 1997) for modern
Windows (7+) and high-DPI displays. This document lists every change made to the
original binaries.

> Draft — hand-edit before distribution.

## Files changed

| File | Original MD5 | Patched MD5 | What changed |
|------|--------------|-------------|--------------|
| `RIPTEL.EXE`   | `3e343f33…` | `a5031238…` | registration, time-bomb, windowed launch, nag, dialogs, license text, telnet fixes, mouse-pointer size, portable settings, no startup licence/tips screens, default folders |
| `Ripscrip.dll` | `bade8b1f…` | `8c74f023…` | smooth scaling, mouse-pointer size, frame pacing, 80×25 text, font-scale + edge fixes, portable settings, stage-space fixes, CP437 terminal font |
| `Ctl3d32.dll`  | (v2.31)     | `656243be…` | loads from the app folder instead of the Windows system dir |

`RIPtel.ini` / `RIPSCRIP.INI` and `riptel.pho` are shipped pre-seeded (see below);
they are data files, not code patches. The 25 `ICONS\WIPE*.FN` screen-transition scripts are
also shipped modified — see "Screen transitions" below; they are content, not code.

---

## Registration / licensing

- **Registration checks removed.** The app always reports itself as registered; the
  serial/registration prompts no longer gate any functionality.
- **Registered user set to "RIPtel User".** Shown in the About box.
- **60-day evaluation time-bomb removed.** The expiry countdown was gated behind the
  registration check, so it never triggers; the day counter is also pinned so the
  system clock is never consulted.

## Runs on modern Windows

- **`Ctl3d32.dll` loads from the application folder.** The stock DLL refuses to load
  unless it lives in the Windows system directory; that self-location check is patched
  so the app-local copy works. (Windows 7+ only — no legacy Win9x/NT support.)
- **Per-user install / writable app folder.** The app writes files next to itself,
  which fails under `C:\Program Files`. The installer targets
  `%LocalAppData%\Programs\RIPtel`, and the INI files are seeded per-user so the app
  can read/write its settings and paths.

## Window & display

- **Sensible default folders.** With no setting saved yet, the program used to fall back to
  1997 values — `C:\RIPSCRIP` for its own directory and bare `RECEIVE` / `SEND` for transfers.
  It now uses the folder it is actually installed in, and your Windows **Downloads** folder for
  uploads and downloads.
- **Fully portable — unzip it anywhere and run it.** The original kept its settings in the
  Windows directory: both programs asked Windows for `RIPtel.ini` and `RIPSCRIP.INI` by bare
  name, and Windows always resolved that to `C:\Windows`, never the program's own folder. So a
  copied folder started with no settings, did not know where it had been installed, and failed
  with "Can't open help file MESSAGES.HLP". Settings now live beside `RIPTEL.EXE`, wherever you
  put it — nothing is written to the Windows directory, nothing needs administrator rights, and
  settings no longer disappear into `%LocalAppData%\VirtualStore\Windows`.
- **No licence screen on first run.** The agreement box (and its "decline and quit" path) no
  longer appears at startup. The notice is still on Help > Software licence, and the terms ship
  as `license.txt` / `license.original.txt`.
- **No "Did you know..." tips box at startup.** It is gone for good, not just unticked — the
  program used to write the setting back on its own, so unticking the box did not reliably keep
  it away.
- **Launches in a centered, resizable window** instead of full-screen.
- **True 4:3 client area** In a normal window the drawable area is
  auto-sized to exactly 4:3, and resizing keeps that ratio, so the picture fills the window
  edge to edge. (Full screen is the exception — see below.)
- **The window can no longer grow off the bottom of the screen.** Because a 4:3 shape ties the
  height to the width, dragging the frame wider used to push the bottom of the window down past
  the desktop, and going full screen did the same — part of the picture ended up hidden behind
  the taskbar. Resizing now stops at the bottom of the usable desktop area and makes the window
  narrower rather than taller, and full screen keeps exactly the size the desktop gives it,
  centring the picture with black bars at the sides instead of running off the bottom.
- **Correct picture size on smaller screens.** On a display too small to fit the program's
  preferred window it opens at a reduced size — and the RIP picture was then drawn at only
  five-eighths scale into the top-left corner, while the text stayed full size and spilled out of
  its buttons. The picture now fills the window properly at any starting size.
- **Smooth RIP scaling (the big one).** The RIP engine renders into a fixed
  1280×960 picture which is then smoothly scaled to whatever size the window is:
  - Making the window **smaller** downscales with halftone smoothing (crisp).
  - Making it **larger** scales up with the same smoothing, instead of the blocky
    "checkerboard" enlargement you would otherwise get.
  - Mouse clicks are remapped so RIP buttons stay clickable at any window size.
  - **Requires reasonably modern hardware (~2012 or newer).** The persistent large
    canvas plus a scaled blit on every repaint is more work than the 1997 original;
    on very old machines it may feel sluggish.
- **Button rollover text is the right size at any window size.** Maximized, the status line under
  the buttons used to be drawn about 2.7× too large — it ran off both edges of the picture and,
  because the app erases it by stamping back a fixed-size saved copy, the leftovers piled up and
  smeared into the screen. It now scales with everything else.
- **No more thin white line along the top and left of the picture.**
- **The blue gradient background is back.** On any modern display the program mis-detected the
  colour depth and fell back to the plain flat-blue background meant for old 16-colour machines.
  It now correctly shows the dithered gradient the demo screens were designed with.
- **Text cursor scales with the window.** The blinking cursor tracks both position and
  size as the window is resized (including different RIP font/region sizes).
- **Mouse pointer is the right size again.** The program's own mouse pointers — the arrow, the
  hand shown over clickable areas, and the hourglass — were drawn as 32×32 pictures in 1997. On a
  modern high-DPI display Windows stretched them to double size, so they looked oversized and
  blurry against the artwork. They are now always shown at their original 32×32, at any
  display-scaling setting. Note this means the pointer keeps the program's own 1997 artwork and
  its fixed size rather than following your Windows mouse-pointer theme or size preference.
- **DPI-aware.** The app now declares itself DPI-aware, so the RIP display fills the window
  correctly at any Windows/Wine display-scaling setting (e.g. 150% / 192 DPI) while the menus
  render at the readable, scaled size. (No effect at 100% / 96 DPI.)
- **Smooth resize.** Resizing shows a quiet outline while dragging and snaps to the scaled
  image on release, instead of repainting on every frame.
- **Drawing performance — screens appear many times faster.** The program put the whole screen
  back on display after *every single* drawing command. On a 1997 display that was cheap; on a
  modern one, where the picture is being scaled up to a large window, it meant a busy screen
  could take many seconds to finish and animations crawled. Drawing is now collected and shown
  up to 80 times a second instead, so complex screens appear many times faster and look exactly
  the same. (This is also why the menu transition effects needed explicit timing — see
  "Screen transitions" below.)
- **The original's "Video Configuration Suggestion" warning is suppressed** — it appeared on any
  high-resolution display and had no bearing on this build.

## Screen transitions

- **The wipe/slide effects between menus now run at a sensible, consistent speed.** These
  effects never had any timing of their own — on the original hardware they were slow simply
  because redrawing was slow, so once drawing got faster (above) they finished instantly and you
  could not see them at all. They are now explicitly timed using the protocol's own delay
  command: roughly **half a second** for the simple ones (including the effect used when
  returning to the main menu) up to **1.5 seconds** for the most elaborate, scaled in between by
  how much each effect actually draws. The effects themselves are unchanged — only their pacing.

## Terminal

- **The terminal character set (CP437) at this version's fixed display size.** This build pins
  the drawing area to a fixed 1280×960 and scales that to whatever size the window is, which is
  what keeps everything consistent as you resize. The original only carried its IBM/DOS terminal
  font at a handful of 1990s screen sizes — 640×480, 800×600, 1024×768 and near-neighbours — and
  1280×960 is not one of them, so the terminal fell back to an incomplete outline font: box
  drawing and block shading came out as accented Western European letters, and the symbols at
  codes 1–31 did not draw at all.
  - The terminal now uses a **640×480 font set drawn at exactly double size**, which fits
    1280×960 precisely. Being an exact 2× of the original artwork it is pixel-clean rather than
    resampled, and the shapes are the authentic 1997 ones — the whole set works, including the
    smileys, card suits, arrows and musical notes at codes 1–31 that text-mode BBS door games use
    for cards and menus, and the house symbol at 127.
  - **Trade-off worth knowing:** because it is a doubled 640×480 font rather than one of the
    in-between sets, the text is chunkier than the 800×600 or 1024×768 fonts would look at a
    similar size — those would give finer detail. The doubled set was chosen for consistency: it
    matches the fixed drawing area exactly, so text stays stable and predictable at every window
    size instead of shifting character shapes as the window changes.

- **The text terminal is now 80×25 instead of 80×24.** The engine's built-in geometry reserved
  the bottom text line for an on-screen status bar that this version never draws, so a row of
  the display was simply wasted. The full 25 rows now fill the canvas exactly. (The 8×8 text
  modes gained their missing row too — 43 instead of 42.)
- **The BBS is told the real window size.** The original never answered the telnet window-size
  question (NAWS), so hosts fell back to their own default and painted only 24 rows —
  Synchronet, for example, reported "TERM: 80x24". The client now reports 80×25.
- **Fixed a bug in the original's telnet negotiation.** RIPtel sent a truncated, unterminated
  "send location" reply, which caused the BBS to silently swallow everything the client said
  afterwards — including its terminal type. Now sent correctly and in full.
- **This build identifies itself as a distinct RIPscrip revision.** When a BBS asks "are you a RIP
  terminal?", stock RIPtel answers `RIPSCRIP030001`; this build answers `RIPSCRIP030002` — the same
  RIPscrip **3.0** language level, one revision up, so a host that cares can tell a patched client
  from a stock one. Nothing about what the client understands changed. The `$RIPVER$` script
  variable reports the same value.

## Startup / cosmetic

- **Demo phone-book cleared** (`riptel.pho`) — the dead 1997 BBS entries are removed.
- **"Did You Know?" tips disabled** at startup (`ShowTips=0`).
- **Dialogs centered on screen** (License, loading, and other template dialogs no longer
  appear offset relative to the window).

---

## Notes for packaging

- The deliverable payload is built by `./run/stage` into `temp/staged/`
  (a build output — `temp/` is not checked in, so regenerate it rather than editing it).
  It copies `_original/files/` verbatim, runs both patchers, converts the shipped text
  files to Windows CRLF, adds `license.txt` + `license.original.txt`, and blanks the demo
  phone book.
- Start-menu/desktop shortcuts and an "open the RIPtel folder in Explorer" shortcut are in
  the drafted installer script (`_transform/installer/riptel.nsi`, not yet built). Only
  `RIPTEL.HLP` gets a help shortcut — `RIPSCRIP.HLP` is not a WinHelp file despite the
  extension, so WinHelp cannot open it.

<!-- Reverse-engineering detail for maintainers is in research/ (research/reverse-engineering.md, research/install-findings.md). -->
