# 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…` | `d2ca6159…` | registration, time-bomb, windowed launch, nag, dialogs, license text, telnet fixes, mouse-pointer size, portable settings, no startup licence/tips screens, default folders, RIPscrip-file open fixes, help and web links open in the default browser |
| `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.

## Help and web links

- **Help works again, in your web browser.** The original help was a WinHelp file, and Windows
  10 and 11 have no WinHelp viewer at all, so every Help command did nothing. The manual has been
  converted to a single web page, `riptel.help.html`, installed next to the program. Help >
  Contents, the Help buttons in dialogs, and the help buttons on the built-in demo screens all
  open it in your default browser, at the topic they always pointed to. The page has a keyword
  Index and a full-text Search, and works offline.
- **Help > Search for help on... opens the guide's Search page.** In the original it showed
  WinHelp's search dialog; under Wine it did nothing at all.
- **Help > How to use help is gone.** It described the old WinHelp viewer.
- **Web addresses open in your default browser.** File > Web and links a BBS sends used to need
  a browser program configured by hand in Setup (and failed with "No Web Browser Configured"
  otherwise). They now use whatever browser your system is set to use. An address typed without
  `http://` works too. The Web Browser setting in Setup is no longer used.
- **The Start-menu "RIPtel Help" shortcut opens the web page** instead of the missing WinHelp
  viewer.
- **`RIPTEL.HLP` is no longer installed** — the web page replaces it completely.
  (`RIPSCRIP.HLP` and `MESSAGES.HLP` are still installed: despite the name they are data files
  the program reads, not help.)

## Opening a RIPscrip file

- **The stray dialog before the file picker is gone.** Choosing File > Open > RIPscrip file put up
  a small box captioned "Text" reading "Text Mesage" (sic) that had to be dismissed before the
  picker appeared. It was unfinished placeholder code left in the shipping build — it asked
  nothing and its answer was discarded — so it has been removed. The genuine warning about
  RIPscrip graphics being switched off is unaffected.
- **The screen is cleared before a file is loaded.** The program used to redraw the *current*
  screen immediately before reading the new file, so artwork landed on top of whatever was already
  there. It now performs the RIPscrip reset first — the same clean slate a file gets at the start
  of a session — so each file draws exactly as its author intended.
- **SAUCE metadata no longer shows up as garbage.** Much BBS-era artwork carries a SAUCE record
  glued to the end of the file: a small block of information about the piece (title, author,
  group, date) and sometimes a few comment lines. It is a note *about* the artwork, not part of
  it, and the program used to feed it to the renderer along with the picture, producing stray
  characters and marks at the end. It is now trimmed off before the artwork is drawn.
  - This applies **only to files you open yourself.** Artwork arriving from a BBS, and files
    pulled in by a RIPscrip script, are untouched.

## 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). -->
