First note this is software is free as in freedom. You are welcome to learn from this site, use components of it in your own works, modify it, host your own copies, share derived versions with others, etc. The only notable condition is that you must guarantee others the exact same freedoms and benefits that I have granted you. See the 'LICENSE' section for more detail.

Running Locally

A pre-built version of the site should have been included for your convenience.

To run the site, you will need http server software. For local testing, I recommend using either Node.js or Python (the programming language).

Running with Node.js

If it isn't already, you will need Node.js http-server installed. Open a command line and run:

npm install -g http-server

Then open the command line and navigate to this directory. Once there, type in:

http-server

And hit enter to start a local http server. The command line should tell you some local web addresses you can visit to look at your site.

Running with Python

If Python is installed, then open the command line and navigate to this directory. Once there, type in:

python3 -m http.server

And hit enter to start a local http server.

Finally, open a web browser. Type "localhost:8000" into the address bar to see your local instance of the site.

Building From Source

Note that the build process is merely a fancy way of generating HTML, CSS, and JavaScript files. If you'd prefer to keep things simple and get working immediately, you can always edit those output files directly. Be advised, however, that if you switch to the full build process later, that process will overwrite any changes you made to the output files.

If you're working more extensively, it's generally easier to work with the source files and use software to automatically generate the HTML, CSS, and JavaScript. To run this build process, you will need several pieces of software installed. You will need:

After Node.js and npm are installed, these packages can be installed by opening a command line and running:

If everything is installed correctly, you should be able to open this directory in the command line and run:

make

The entire site will be built automatically, and you can view it locally in your web browser if you have an http server running (See 'Running Locally').

If this doesn't work, chances are you are missing the GNU utilities like xargs, cat, zip, or base64 which come by default on GNU/Linux systems but may require additional steps to install depending on your choice of operating system.

How to Edit the Source

The source files are all located in the 'src' directory. Most of these are text files, and can be edited with a standard text editor. However, some form of code-oriented editor will make life easier for you. If you don't already have a preferred code editor, I recommend trying "Visual Studio Code" (NOT to be confused with "Visual Studio," which is a different product).

The images (*.xcf files) were created with GIMP. You can use GIMP to open these files and edit the exact, original sources with all the layers and effects used. Alternatively, under "res/img," you can open and edit the final image files directly without these layers and effects. Some images do not have a source XCF file because they were created directly in this fashion.

Image Constraints

The site has several constraints as part of it's aesthetic.

Note these are minimum constraints, since a C64 could only display at that standard under very specific circumstances. Other cases of images have more constraints to better match the C64.

To take an existing image and make it obey these constrains, first you should crop the area of interest to fit the resolution constraints.

Keeping images on palette usually involves using GIMP's Image->Mode->Indexed tool with the C64Palette as the palette. Usually, some form of dithering is preferred to get better color usage. However, often this alone does not produce images of high enough quality.

To resolve this, first I export the cropped image with the Image->Mode->Indexed tool and no color dithering. This is my "colormap" image, which I use to guide further edits to ultimately create a higher quality conversion.

In general, the editing process is:

  1. Look at the colormap for areas that are mostly a solid color with no interruption or details. These are the areas that are poorly converting. This can be fine if it's not in part of the focus of the image. You should mostly pay attention to this happening in the primary feature areas of the image (for example, a face, or the "subject" of the image).
  2. Perform an edit and generate a new colormap. I have suggestions for specific edits you can try later.
  3. Are the critical areas better detailed? If so, it's a good edit and you should keep it. Otherwise, undo and try a different edit.
  4. Repeat until the image is sufficiently detailed under the C64 palette.
  5. Finally, convert to indexed one last time, but this time with dithering enabled (try them all and see which looks best to you). This can then be exported as the final image.

Two tools useful for editing an existing image into the palette:

Most of the images that I converted to the C64 palette use exactly this, nothing extra. You can look in src/res folder to see the original images for these along with the final version before conversion. This can be useful to try the process yourself.

Tighter Image Constraints

The most popular image mode for C64 games was multicolor mode. This mode featured:

Images used for more than just static display, such as backgrounds in a web game, should obey these tighter constraints.

C64 spirtes were limited to 12x21 with 2x1 pixels with 3 shared colors (background color is same as with the rest of the screen, but other two shared colors are unique to sprites) and an individual color. Technically limited to 8 sprites at a time, but in practice interrupt swapping could allow as many as 30 at once without too many complications.

Small Images

You may notice that PNGs and GIFs created by your favorite image editor are larger than the PNGs and GIFs in the res/img folder. Smaller images are preferred because the page loads faster and they cost less to host. To get PNGs and GIFs of similar tiny size, I use the "zopflipng" to optimize PNGs and "gifsicle" to optimize gifs.

For "zopflipng," I optimize using the recommended maximum optimization:

zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent infile.png outfile.png

For "gifsicle," I use the basic optimization command. Note that there is little point in optimizing a gif that is not an animation, since there aren't many optimization tricks inherent in the format.

gifsicle -O3 infile.gif -o outfile.gif

Unreleased Articles

For the benefit of showing you the full writing process, my unreleased articles and notes are included in this release. These include everything under the 'src/articles' folder but not in the 'src/articles/published' subfolder. While I hope they are interesting and instructive, bear in mind that these are effectively unpublished notes to myself. Therefore, since they are not written for a public audience, a number of usual assumptions about reading and interpreting them are no longer valid.

What exactly is different?

A personal note is simply anything I found useful for reminding myself of a particular idea. They have no particular organization or theme, don't necessarily have a clear interpretation or meaning to anyone other than myself, and aren't necessarily reflective of my own thoughts or beliefs.

Here are some points to help you better understand these notes correctly.

SID files

Due to neocities' file extension whitelist, all SID files have renamed file extensions. For these files, the "PNG" file extension can be dropped so it becomes a ".sid" file to obtain the original file.

Releasing a New Version

LICENSE

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

See COPYING.AGPL for the GNU AFFERO GENERAL PUBLIC LICENSE

While this work as a whole and all of it's components are available under the GNU Affero General Public License, some components are also available under different license terms. These components and their respective terms are listed below.

For any copyright year range specified as YYYY-ZZZZ in this package note that the range specifies every single year in that closed interval.

"AGPL" Logo

res/img/agpl-v3-logo.svg

The AGPL Logo is in the public domain.

"Connecting Chain" font

res/fonts/CCH.woff2

The "Connecting Chain" font is Copyright (C) 2018 by Katapan, and is licensed under the following terms:

You MAY use the "Connecting Chain Handserif" font provided with the patch for anything you create, as long as you give credit to me.

"Commodore 64" font

res/fonts/CP.woff2

The "Commodore 64" font is Copyright (C) 2005 by Devin Cook, and is licensed under the following terms:

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

res/sids

"Let's Go" is Copyright (C) 2002 by Kamil Wolnikowski (Jammer)

"Eager to Play" is Copyright (C) 2002 by Kamil Wolnikowski (Jammer)

scripts/jssid

JSSid is Copyright (C) 2013 by Joe Hohertz, and is licensed under the GNU GPL Version 2.

scripts/jssid/pico.dev.js

pico.js is Copyright (C) 2013 by nao yonamine, and is licensed under the following terms:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

scripts/jssid/stream.js

steam.js is Copyright (C) 2013 by Matt Westcott & Ben Firshman, and is licensed under the following terms:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

res/img

All files under the res/img folder that are not listed elsewhere on this page are Copyright (C) 2020 by thebatknight <thebatbox@fooprotonmail.com>.

Permission is granted to copy, distribute and/or modify these files under the terms of a Creative Commons Attribution-ShareAlike International License, Version 4.0 or any later version published by Creative Commons Corporation. A copy of the license is included in the ''COPYING.CSA'' file as part of this distribution, and is also available at https://creativecommons.org/licenses/by-sa/4.0/

res/mid

All files under the res/mid folder that are not listed elsewhere on this page are Copyright (C) 2020 by thebatknight <thebatbox@fooprotonmail.com>.

Permission is granted to copy, distribute and/or modify these files under the terms of a Creative Commons Attribution-ShareAlike International License, Version 4.0 or any later version published by Creative Commons Corporation. A copy of the license is included in the ''COPYING.CSA'' file as part of this distribution, and is also available at https://creativecommons.org/licenses/by-sa/4.0/


This document is Copyright (C) 2020 thebatknight <thebatbox@fooprotonmail.com>

Permission is granted to copy, distribute and/or modify this document under the terms of a Creative Commons Attribution-ShareAlike International License, Version 4.0 or any later version published by Creative Commons Corporation. A copy of the license is included in the ''COPYING.CSA'' file as part of this distribution, and is also available at https://creativecommons.org/licenses/by-sa/4.0/

Click here to return.