VISUAL NOVEL FANTASY COMPUTER
NEVEL-98
Make visual novels the way they looked on a 1990s Japanese computer.
Draw in 16 colors, compose FM music and write the story in Lua, all inside one machine inspired by the NEC PC-9801 adventures. Then share your game as a floppy disk or a web page.
Both run in your browser. New here? Start with the manual.
A computer that never existed
NEVEL-98 imagines the machine behind the PC-98 adventures of the late '80s and '90s. Its limits are the style: dithered pixel art, square text windows, FM music.
- 16 colors on screen, so shading comes from dithering, like the originals.
- Every image can carry its own palette, so each scene gets its own mood.
- The machine's Lua has no file or OS access: a cart only talks to the API, and saved games replay exactly.
> specs display 640×400, 60 frames per second colors 16 on screen, each one of 4096 (0xRGB) palettes one per cart, plus one per image text 8×16 and 6×12 fonts, 80×25 like PC-98 sound 6 channels: 4-op FM, SSG square, noise music 32 instruments, 64 patterns, 8 songs images 64 per cart, up to 640×400 each texts key tables, up to 8 languages code Lua 5.4, up to 512 KB >
A visual novel is just Lua
Every call waits as long as it needs to: say waits for the player to read, choice waits for an answer, a transition waits until it ends. You write the story from top to bottom.
scene("start", function()
layout("game")
bg("station", "dither")
music(1)
show("rei_smile", "right", "dither")
say("Rei", "Ehehe! You missed it too?")
if choice{ "Who are you?",
"I didn't miss it. I let it go." } == 1 then
flag.asked = true
end
jump("platform")
end)
bg()show()say()choice{}menu{}jump()layout()music()quake()flagthe_end()
Five editors behind the function keys
Everything you need lives inside the machine. Press Esc for the console, F1–F5 for the editors, F6 to run your game.
Code
A Lua editor with syntax highlighting for keywords, API names, strings and numbers.
- Undo, find, go to line, comment, duplicate
- Indent a whole selection with Tab
- A runtime error stops the cart: press F1 to open the line that failed
Image
A pixel art editor built around two colors and a dither pattern, the classic PC-98 shading.
- Pen, line, boxes, ovals, fill, selection and stamps
- Dither brushes that mix the primary and secondary color
- Edit the cart palette or the image's own palette
Text
Your script as a table of keys, one column per language. Call a line with "@rei.hello".
- Up to 8 languages, with a Language option for players
- Missing translations are shown in red
- CSV import and export for translators
Sound
32 instruments in the spirit of the PC-98's OPNA chip.
- 4-operator FM with 8 algorithms, drawn as a diagram
- SSG square waves and noise
- Play them on your keyboard while you tweak, or start from a preset
Music
A 6-channel tracker for the songs of your game.
- 64 patterns of 32 rows, 8 songs with loop points
- Transpose, copy and paste whole patterns
- Sound effects borrow only the channels they use
Console
Where the machine boots. Load and save carts, import pictures, export your game.
import photo.pngturns any picture into 16-color artexport game.htmlmakes a web player- Tab completes file names, Up recalls commands
Built for the PC-98 look
The visual novel engine is part of the machine, so a new cart already has saves, a backlog and a title screen.
Framed layouts
The scene in an ornate frame, side panels for a clock, the date or a command menu, the text in a console below.
Adventure commands
Choices, PC-98 style command menus like Look / Talk / Move, flags and multiple endings.
Transitions
Dither, wipe, blinds, curtain and mosaic dissolves, palette fades, flashes and screen shake.
Saves included
6 save slots, backlog, auto and skip, text speed and volume. Loading replays the scene exactly.
Any picture, 16 colors
Import a PNG or JPG and get ordered (Bayer) or error-diffusion dithering, with a shared or own palette.
Game mode too
Define
_draw(and_update) with no scenes, and the cart runs as a plain game loop, like PICO-8.
Share it on a floppy disk
A game is a cartridge, and a cartridge travels three ways.
.n98The whole game as one text file: code, palette, images, music and texts. Easy to read and to keep in git.
.n98.pngA picture of a 3.5" floppy with your game's label. The cart is hidden inside the PNG.Share floppies as files: image hosts that re-encode pictures remove the cart.
.htmlOne page with the machine and your game inside. Upload it anywhere and it plays.
Last Train Home
December 31st, 1994. You've just missed the last train of the year. On the empty platform you meet Rei, whose radio plays songs from next year.
The demo cart: 3 endings, 3 FM tracks and a red LED clock counting down to midnight. Its source is open in the editors, ready to take apart.