Tandy 64 intro - for the Tandy 1000 HX
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
conf
res
src
tandy64
test
tools
Makefile
README.md

README.md

Tandy 64

A intro for the Tandy 1000 HX (and compatible) computers released for Demosplash 2017

Capture from emulator (fonts don't look good, missing border, and some glitches):
Tandy 64 Intro

Recorded real hardware: (he, we don't have a way to capture RGBI output yet... sorry)
Tandy 64 Intro

(The "Tandy 64 Jr." for the IBM PCJr. here)

Requirements

  • Tandy 1000 HX (or compatible)
  • Tested with 256Kb RAM, but could fit in 128Kb with some minor changes

How to compile it

And do:

$ make

To run it in the DosBox-x emulator, do:

$ make run

Resources

The /res folder has the music, graphics and fonts in their native formats. And in the /tools folder are the scripts to convert them to a more optimized format for the Tandy.

To convert the resources to native do:

$ make res

Source code structure

The /src folder contains the source code and all converted resources. There are 4 .asm files:

  • main.asm: setups the stack and calls the pre_intro, intro and post_intro in order
  • pre_intro.asm: shows the C64 loading screen
  • intro.asm: Everything happens here. The code is somewhat messy. There a few state machines to control and sync the different actions. Some pointers:
    • plasma_tex_*: refers to "plasma textures", the ones that appear at the very beginning
    • plasma_*: (without the _tex suffix): refers to the plasma animation.
    • new_i08_*: there are like 3 different interrupt handlers. They are used in at different parts
    • boy_anim_*: code related to the guy walking/dancing
    • text_writter_*: code related to the "cursor writting text"
    • letter_state_*: code related to the PVM letters animation
    • state_* / main_state_*: "main" state machine code
    • scroll_*: scroller code
    • raster_bars_*: raster bar effect code
  • post_intro.asm: the final C64 screen

Tools

In tools folder you will find:

  • convert_vgm_to_pvm.py: Converts VGM music format to PVM (Plays VGM Music) music format
    • Almost the same as VGM but uses Run-leght encoding. As an example, the music that we use takes ~78K in VGM format, and around ~48K in PVM format. It is good to have it in less than 64k (1 segment)
    • A stand-along PVM player could be found here: pvmplay.asm
  • convert_gfx_to_bios_format.py: Converts graphics to Tandy format.
  • convert_anim_to_frames.py: Quick hack to dump animation frames in tandy format

We also used:

  • Deflemask for composing the music
  • plasma_generator.py: to visually build the plasma effects
  • VChar64 for the charset
    • The charset used is based on one used on a c64 intro?? (couldn't find the original intro)
  • Tandy 1000 HX BIOS dump
    • In order to learn more about the Tandy 1000 HX we disassembled its BIOS

Lessons learned

  • Comming soon™

Questions and others

Do you have questions? Do you want to collaborate with PVM? We're here: