Skip to content

c64scene-ar/tandy64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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: