Plans
Commodore 64 tape preservation project


SITE POLICY / GOALS
-------------------

We preserve c64 tape games (not disk and cartridge games as there are other good sites.)
No download of games for ordinary users (only for research)
  It's probably not legal, it eats LOTS of bandwidth and it's not why this site exists.
  Raw dumps available to developers who can help analyze loaders.
  Games available to developers/researchers so that more information about the games can be provided.
We are a preservation and research project
  Information about all companies, people and products
We want to preserve as many games and information about those games as possible before it's too late.
We're a non-profit project
  No commercials
  No membership fees
Open discussions / plans
Create a strong community for preservation
Open database format
  All information will be available and there will be no closed database formats.
All data owned by the community, NOT the site admins
QUALITY DATA
Change copyright notes (footer) when it's decided to whom/what enitity it's to be transfered to.
Open Publication License (OPL) might be considered.



GUIDES
------

We need several guides telling contributors how to create and provide information for the site.
Without these guides we get a much harder time incorporating the info and use lots of time to adapt it.
The acuracy of the information will also be higher when people know what we need and how to get/
provide it.

Dump guide
Clean guide
Scan guide
Analyze loaders guide
Submit files/data guide
Submit suggestions/improvments
Quality check data
  Don't add data you're not sure about.
  If in doubt, please consult with other people.



FORMATS
-------

Comprehensive docs of all c64 tape formats
Loaders documented with full source



DATABASE FORMAT
---------------

MAIN TABLE:

id               int                       ID of game
uniq_id          int                       Uniq ID across c64 sites
same             int                       Number that bind together same game, but different loader,
                                           format, publisher
cover_title      varchar(255)              Title on the cover/inlay. This is the title displayed
                                           as title
label_title      varchar(255)              Title on cassette/cassette label
game_title       varchar(255)              Title when game completely loaded
genre            indexes genre 
create_date      date                      When record was first created
update_date      date                      When record was last updated
languages        bigint                    Bitfield of languages
compilation      index compilation         If game part of compilation
scanned_by       index preservers          Who did the scanning
screenshots_by   index preservers          Who did the screenshots
owned_by         indexes preservers        Who own this game
developer_names  indexes people_companies
publisher_name   index people_companies
publisher_year   index year                The year THIS particular game was IN the STORES
coded_by         indexes people_companies
music_by         indexes people_companies
gfx_by           indexes people_companies
others_by        indexes people_companies  All other people involved (designer, producer, manual
                                           writer, cover designer
other_info       blob                      Lots of info (can also be info about owners of this game)
filename         varchar(255)              path+filename of game
raw              varchar(255)              path+filename of raw dump(s)
sid              varchar(255)              path+filename of sid(s)
docs             varchar(255)              path+filename of docs
box_format       index box                 what kind of box is game contained in
barcode          varchar(255)              barcode number on packaging
tape_num_tapes   byte                      Number of tapes
tape_num_sides   byte                      Number of tape sides
tape_multiload   int                       Number of parts
tape_modified    index yesno               Manually modified?
tape_loader      index loader              Loader used
tape_notes       blob                      Lots of info (report from FT and other)
tape_cbmrcrc32   varchar(9)                CRC32 of CBM ROM block
clean_software   index clean               What software and version was used to clean tap(s)
magic_crc32      varchar(64)               CRC32 of entire TAP (1 line for each TAP)
reviews          varchar(255)              Magazine reviews (1 line for each)
rarety           int                       How rare the release is
value            int                       How much is the release worth

btw: pictures does not have a field in the db. They are called id_[l|s|g|o]_num.
[l|s|g|o] = l - loader, s - start, g - game, o - other. num = number of picture.
Example: 163_l_1 = the first loader picture of game no. 163.

Same thing for scans. They are called id_[f|if|ib|tf|tb|box]_num
[f|if|ib|tf|tb|df|db|cf|cb|box]
f = front of cassette cover or box
if = inlay front
ib = inlay back
tf = cassette front
tb = cassette back
box = scan of all sides of a box

Remember that games part of a compilation will use the compilation scans.



OTHER TABLES:

languages
  id
  name       varchar(32)               Name of country
  short      varchar(2)                Short version of name (en = england, de = germany, no = norway)

loader
  id
  name        varchar(48)              Loader name
  threshold   varchar(4)               Threshold (TAP byte) $xx
  threshold2  varchar(5)               Threshold (Clock cyles) $xxxx
  endianess   index endianess          MSbF or LSbF
  pilot       varchar(255)             Pilot
  sync        varchar(255)             Sync
  bit0_pulse  varchar(4)               $xx
  bit1_pulse  varchar(4)               $xx
  notes       blob                     Description of loader
  disassembly blob                     Disassembly of loader

year
  id
  name       varchar(4)

endiannes
  id
  name       varchar(5)

people_companies
  id
  name       varchar(128)              Name of person/company, not uniq
  company    index yesno               Is this a company? (or a person)
  notes      blob                      Info about company/person

preservers
  id
  name       varchar(64)               Name of owner/dumper/scanner, not uniq

genre
  id
  name

compilation
  id
  name       varchar(255)              Full name of compilation
  publisher  index people_comanies     Name of publisher
  num_games  byte                      Number of games
  notes      blob

box
  id
  name       varchar(32)               Box types/names

yesno
  id
  name       varchar(3)                yes or no

owner
  id
  preserver  index preservers          The owner of this game/comment
  comments   tinyblob                  The comment
  game_id    index main                The game we want to comment

clean
  id
  name       varchar(32)               Software name and version

rarety
  id
  name       varchar(32)               See rarety guide below


index = int
indexes = varchar(255), containing numbers separated by spaces


rarety guide:

 1 - Very common
 2 - Common
 3 - Somewhat scarce
 4 - Scarce
 5 - Somewhat rare
 6 - Rare
 7 - Very rare
 8 - Extremely rare
 9 - Prototype



UTILITIES/TOOLS
---------------

TAPClean (win+lin util)
FinalTap (windows util - both GUI and CLI version)
Mtap (dos util)
Recorder Justage (c64 util)
Inspect2 (windows util)
Hex editor
6510 disassembler

Commodore 64 Programmer's Reference Guide



CREDITS
-------

This site is based on input and data from the following people:
  Bo Goeran Kvamme (PHP, DB and data input)
  Fungus (Loader analysis)
  Mason (data input)
  Netraider (DB)
  Peepo (DB and data input)
  SLC
  TCE (Loader analyzis and the DC2N)
  ...and others at tapes.c64.no
  (if your name is missing, please let me know)



TODO
----

- Title.php: Only display db-fields with actual data (not sure about this one)
- Title.php: Fix MS Explorer render bug (width and size of screenshots)
- Recode all pages to use php templates and even more CSS (partly done)
- Let owners make duplicate lists + describe condition of their games/collection
- Status: Show list of games added since last visit
- Add user profiles: enable/disable db fields, output preferences, session support etc.
- Fix pages still using old design
- Add page explaining how to add/change data to/in the database
- Toggle showing of original releases only or all games
- By clicking on the thumbnails you will see the full scan (jpg).
  Admin user will see png. (this part is done)
- Handle links when uploading scans + cover for compilations
- Add ability to edit owner field (only remove yourself)
- When adding games part of a compilation: Do it all on one page and only do the
  common fields once.
- Add reports (select fields to add to the query)
- Right align numbers on front page. Maybe using tables and CSS?
- A 'show loader' page with all info about a loader, including list of games using it.
- Add barcode checker (check for duplicates and games missing barcode)
- New design
- Look at Ajax
- Show info field at title page when logged in
- Show games (last 7 days) with taps added
- Fix download of Grog's Revenge (0299). Probably quotes trouble.
  720 degrees too
- Update time for edit_game is 0, date is ok



RULES FOR ENTERING A GAME TO THE DATABASE
---------------------------------------

- You should own the game or know someone who do AND get the data about the game from the packaging.
- If a game title start with 'The', put it at the end like this: 'Game, The'.
- If the game has got a subtitle, put it behind main title after a ': '.
- Prepositions and 'the' inside sentences should be all small caps.
- Please remember to add the publisher of YOUR ACTUAL release in the publisher field.
  That is: Rereleases and compilations use the publisher of the rerelease/compilation.
- Don't set the Year field if you don't know the year YOUR ACTUAL release was in the STORES.
- Only use barcode numbers from original game package (inlay for tape games).
  Use 'None' if no barcode, or Incomplete if damaged.
- The tap and raw filenames use the name of the game from the packaging as the filename.
- Multiple versions/packaging of the same game get their own entries in the db.
  Different barcode numbers -> new db entry.
  Different inlay -> new db entry.
  They MIGHT share the same tap. We don't handle multiple version of cassette label prints for now.
- Inlay scans are done in 300dpi in png format (you may scan in higher resolution).
- Scan with descreen, then in photoshop use unsharp mask with values 120-180 and 0,5 in the first two parameters. Plain sharpen in terrible
  You may scan the text ONLY pages without colors in grayscale.
  If there are colors, you scan it in colors.
- The cover is a 'cropped' front inlay resized to a width of 300 pixels and in jpg
- Don't fill in the scanned_by field if you don't intend to do that work.
- Please remember that scans, dumps and screenshots follow a SPECIFIC version of the game.
  Screenshots are made from the taps OF THAT game. NOT some other dump from the Internet.
- Filenames for taps, raw taps and docs:
  title = in-game title
  dumper= username of dumper
  id = game id (xxxx)
  raw taps: title_dumper_id.zip [files: title_dumper_id_RAW-X.tap or .dmp for dc2n files]
  taps: title_id.zip [files: title (Side x)_id.tap]
  docs: title_id_doc.zip [files: ]
  Remember: 'a' and 'the' at end of sentence, and ':' becomes '-' (not sure about the ':')
- If in doubt, PLEASE ASK BEFORE adding data to the database.
- Suggestions/improvements are always welcome.
- There are currently some db fields that can't be added/changed without a SQL client.
  This will be fixed SOON.
- There will be a new contribution page with more information soon.

- SUMMARY: ALL data should come from original game/packaging and the dump of THAT game.