Sr. Developer @easytechgreen

Week of the 11/05/2020 - #20

Contents

Tech

  • Inkscape videos and blog
  • YouTube Video on emulations
  • Another headless CMS - DatoCMS
  • Apple II resources
  • Carbon: Beautiful screenshots of your code
  • ImGui: Bloat-free Immediate Mode Graphical User interface for C++
  • 8088 MPH Revision 2015 olskool demo winner
  • Sound resources on an Apple II
  • Create Apple II DSK images with monitor text files

Science

  • Polynomial Optics: A Construction Kit for Efficient Ray-Tracing of Lens Systems

Art

  • Idea to generate Double Planetoid by M.C.Escher as a shader

Inkscape videos and blog

Inkscape

I found this good video which compares Inkscape & Illustrator. The author has many other videos on using Inkscape and a blog with lots of tutorials/articles. Highly recommended.

  • Illustrator vs. Inkscape video - [YouTube]
  • Inkscape masterclass: Become A Master of Inkscape - The Inkscape Master Class is a comprehensive series of 50+ videos where I go over every tool, feature and function in Inkscape and explain what it is, how it works, and why it’s useful. Think of it as an interactive user manual, in video format, that you can refer to any time you want. [web]
  • Inkscape tutorials blog - [web]
  • Creating Patterns Along a Path in Inkscape - [blog article].

YouTube Video on emulations

This veeery long video talks about emulation, cycle-perfect emulations and retro-hardware. On the video we have Matt Godbolt who wrote the JSbeeb BBC micro-emulator and jason Turner. Worth the view. [YouTube]. This is the other side of the video [YouTube]. Mostly talks about 6502 processors. One very interesting piece of information discussed is that the opcode $87 which doesn’t actually exist does a store A & X into zero page (AAX / SAX / AXS) [reference]. In addition he show the Visual 6502 projects and talks about where the different registers are, etc. [visual 6502].

  • jsbeeb - Javascript BBC micro emulator - [GitHub]
  • Online version of the BBC micro emulator - [site]

Another headless CMS

To look at: https://www.datocms.com/. NextJS blog hitting a DatoCMS: https://cms-datocms.now.sh/. For image resizeing it uses imagix API (https://www.imgix.com/).

Apple II resources

Applesoft snippet to view color palette

Small program to show the 16 colors available on the Apple II. Here’s the code and

10 GR : HOME
20 FOR I = 1 TO 16
30 COLOR = I
40 VLIN 5,35 AT 2*I+2
50 VLIN 5,35 AT 2*I+3
60 NEXT I

Color version Color TV Monochrome Green Monochrome White

Google sheet with Apple II low resolution addresses

This Google sheet might come in handy to do some tests: [GoogleSheet]

Apple II Low-resolution memory

Polynomial Optics: A Construction Kit for Efficient Ray-Tracing of Lens Systems

Caustics

Very interesting paper on the simulation of light transport through lens systems. The paper is called “Polynomial Optics: A Construction Kit for Efficient Ray-Tracing of Lens Systems” by Mattihas B. Hullin, Johannes Hanika and Wolfgang Heidrich. It can be found here. [pdf]. Also there are some source code and other extra information [here]

Carbon: Beautiful screenshots of your code

This is a web page where you can paste a code snippet and render a great PNG image of it choosing syntax highlightning schema of your choice. You can test it [here] and you can download the source from [GitHub]. Here’s my Apple II code rendered in it:

Apple II scrolling code

ImGui: Bloat-free Immediate Mode Graphical User interface for C++

Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies). [GitHub]. There is an issue in the GH repo that has a lot of comments/screenshots of people using it. Its [this one]. A good example to test and see how it works in Linux is the one in examples/example_sdl_opengl2 which, as its name implies, uses SDL + OpenGL2.

Idea to generate Double Planetoid by M.C.Escher as a shader

I want to generate this image by renowned Dutch artist M.C.Escher:

Double Planetoid by M.C.Escher

To get started I should probably have a look at this shader [Shadetoy link]. Here’s a screenshot:

Paper City by NuSan

This Shader is inspired by this other Shader which I should study as well [shadertoy link]

As another source of inspiration I found this image which I also liked:

Night and Day

8088 MPH Revision 2015 olskool demo winner

This demo was the winner of Revision15 and pushed the limits of 8088 demos in many ways. I found a whole bunch of articles explaining the techniques and history which make for a fantastic reading. Here they are:

  • Links to YouTube and Pouet [YouTube] - [Pouet] - Revision 2015 Compo site
  • 8088 MPH: We Break All Your Emulators [article] This write up goes through the demo and talks about several of the effects and how they were done. There are also links to other more in-depth write ups.
  • CGA in 1024 Colors - a New Mode: the Illustrated Guide [article] This more in-depth article talks about how to achive 1024 colors from a CGA card!
  • 1K colours on CGA: How it’s done [article] Another article on how the color effects where achieved.
  • 8088 PC Speaker MOD player: How it’s done [article] This blog post talks about the last 100seconds of the demo which playback an Amiga mod file on a standard PC.
  • 8088 MPH: Sprites? Where we’re going, we don’t need… sprites! - [article]

  • Some thoughts on emulators [article] I learned about the 8088 demo from this recent article which talks about demos en emulation. An interesting read.

1k colors in CGA

Sound resources on an Apple II

Some sound related resources.

  • DMS Drummer a Percussion sequencer for the Apple II This is the best in class for the apple II. It allows you to create and play a drum sequence on an Apple II with a decent quality. You can download a demo or pay U$S15 for the full version. Here’s the link to the creator site [web] and to the [demo dsk] You can buy the DMS [web]
  • AppleCrate Polyphonic Music Synthesizer Description of how a crate a 16 voice synth out of 16 Apple IIs. [article]
  • Apple II Real-Time Single-Voice Music Synthesizer

  • Apple Duet this is an old technique that allows for two simultaneous voices on classical hardware. [article]
/***************************************************************************
 *   Copyright (C) 1979-2015 by Paul Lutus                                 *
 *   http://arachnoid.com/administration                                   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 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 General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

/* Electric Duet Player Routine circa 1980 */
 
$0900  A9 01:   LDA #$01        ; 2 *!*
$0902  85 09:   STA $09         ; 3
$0904  85 1D:   STA $1D         ; 3
$0906  48:      PHA             ; 3
$0907  48:      PHA             ; 3
$0908  48:      PHA             ; 3
$0909  D0 15:   BNE $0920       ; 4 *!*
$090B  C8:      INY             ; 2
$090C  B1 1E:   LDA ($1E),Y     ; 5 *!*
$090E  85 09:   STA $09         ; 3
$0910  C8:      INY             ; 2
$0911  B1 1E:   LDA ($1E),Y     ; 5 *!*
$0913  85 1D:   STA $1D         ; 3
$0915  A5 1E:   LDA $1E         ; 3 *!*
$0917  18:      CLC             ; 2
$0918  69 03:   ADC #$03        ; 2 *!*
$091A  85 1E:   STA $1E         ; 3
$091C  90 02:   BCC $0920       ; 4 *!*
$091E  E6 1F:   INC $1F         ; 5
$0920  A0 00:   LDY #$00        ; 2 *!*
$0922  B1 1E:   LDA ($1E),Y     ; 5 *!*
$0924  C9 01:   CMP #$01        ; 2
$0926  F0 E3:   BEQ $090B       ; 4 *!*
$0928  B0 0D:   BCS $0937       ; 4 *!*
$092A  68:      PLA             ; 4
$092B  68:      PLA             ; 4
$092C  68:      PLA             ; 4
$092D  A2 49:   LDX #$49        ; 2 *!*
$092F  C8:      INY             ; 2
$0930  B1 1E:   LDA ($1E),Y     ; 5 *!*
$0932  D0 02:   BNE $0936       ; 4 *!*
$0934  A2 C9:   LDX #$c9        ; 2 *!*
$0936  60:      RTS             ; 6
$0937  85 08:   STA $08         ; 3
$0939  20 2D09: JSR $092D       ; 6
$093C  8E 8309: STX $0983       ; 4
$093F  85 06:   STA $06         ; 3
$0941  A6 09:   LDX $09         ; 3 *!*
$0943  4A:      LSR A           ; 2
$0944  CA:      DEX             ; 2
$0945  D0 FC:   BNE $0943       ; 4 *!*
$0947  8D 7C09: STA $097C       ; 4
$094A  20 2D09: JSR $092D       ; 6
$094D  8E BB09: STX $09BB       ; 4
$0950  85 07:   STA $07         ; 3
$0952  A6 1D:   LDX $1D         ; 3 *!*
$0954  4A:      LSR A           ; 2
$0955  CA:      DEX             ; 2
$0956  D0 FC:   BNE $0954       ; 4 *!*
$0958  8D B409: STA $09B4       ; 4
$095B  68:      PLA             ; 4
$095C  A8:      TAY             ; 2
$095D  68:      PLA             ; 4
$095E  AA:      TAX             ; 2
$095F  68:      PLA             ; 4
$0960  D0 03:   BNE $0965       ; 4 *!*
$0962  2C 30C0: BIT $C030       ; 4
$0965  C9 00:   CMP #$00        ; 2
$0967  30 03:   BMI $096C       ; 4 *!*
$0969  EA:      NOP             ; 2
$096A  10 03:   BPL $096F       ; 4 *!*
$096C  2C 30C0: BIT $C030       ; 4
$096F  85 4E:   STA $4E         ; 3
$0971  2C 00C0: BIT $C000       ; 4
$0974  30 C0:   BMI $0936       ; 4 *!*
$0976  88:      DEY             ; 2
$0977  D0 02:   BNE $097B       ; 4 *!*
$0979  F0 06:   BEQ $0981       ; 4 *!*
$097B  C0 00:   CPY #$00        ; 2
$097D  F0 04:   BEQ $0983       ; 4 *!*
$097F  D0 04:   BNE $0985       ; 4 *!*
$0981  A4 06:   LDY $06         ; 3 *!*
$0983  49 40:   EOR #$40        ; 2 *!*
$0985  24 4E:   BIT $4E         ; 3
$0987  50 07:   BVC $0990       ; 4 *!*
$0989  70 00:   BVS $098B       ; 4 *!*
$098B  10 09:   BPL $0996       ; 4 *!*
$098D  EA:      NOP             ; 2
$098E  30 09:   BMI $0999       ; 4 *!*
$0990  EA:      NOP             ; 2
$0991  30 03:   BMI $0996       ; 4 *!*
$0993  EA:      NOP             ; 2
$0994  10 03:   BPL $0999       ; 4 *!*
$0996  CD 30C0: CMP $C030       ; 4
$0999  C6 4F:   DEC $4F         ; 5
$099B  D0 11:   BNE $09AE       ; 4 *!*
$099D  C6 08:   DEC $08         ; 5
$099F  D0 0D:   BNE $09AE       ; 4 *!*
$09A1  50 03:   BVC $09A6       ; 4 *!*
$09A3  2C 30C0: BIT $C030       ; 4
$09A6  48:      PHA             ; 3
$09A7  8A:      TXA             ; 2
$09A8  48:      PHA             ; 3
$09A9  98:      TYA             ; 2
$09AA  48:      PHA             ; 3
$09AB  4C 1509: JMP $0915       ; 3
$09AE  CA:      DEX             ; 2
$09AF  D0 02:   BNE $09B3       ; 4 *!*
$09B1  F0 06:   BEQ $09B9       ; 4 *!*
$09B3  E0 00:   CPX #$00        ; 2
$09B5  F0 04:   BEQ $09BB       ; 4 *!*
$09B7  D0 04:   BNE $09BD       ; 4 *!*
$09B9  A6 07:   LDX $07         ; 3 *!*
$09BB  49 80:   EOR #$80        ; 2 *!*
$09BD  70 A3:   BVS $0962       ; 4 *!*
$09BF  EA:      NOP             ; 2
$09C0  50 A3:   BVC $0965       ; 4 *!*

You can get a commented version of the code (in french) here [GitHub]

  • Apple II PT3 Vortex Tracker Player - There is player coded in 6502 assembly which allows to play .pt3 (Vortex Tracker files). [GitHub] [post]
  • Apple II PT3 Vortex Tracker Library - Library for playing pt3 files generated by the Vortex Tracker on an Apple II with Mockingboard.. This allows you to play tracker files in your demo. [GitHub]
  • Vortex Tracker - This is a Windows tracker which can generate .pt3 files. [webpage] [source and othe resources]
  • Files in .pt3 format - ZXArt

Apple II Code to Disk

This great utility will create a DSK image that will automatically load your code and execute it without the need of having DOS or ProDOS on the dist. Here’s the GitHub [repo]