[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83228":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":9,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},83228,"Eric-Graham-1987-Juggler-Raytracer-1.0","AlphaPixel\u002FEric-Graham-1987-Juggler-Raytracer-1.0","AlphaPixel","Eric Graham's original 1987 Juggler Raytracer 1.0 source code and related data",null,"C",61,3,1,5,0,9,16,54.21,false,"main",true,[],"2026-06-12 04:01:40","# Eric-Graham-1987-Juggler-Raytracer-1.0\n\n![Original Juggler](.\u002Fmedia\u002FJuggler.png \"Juggler\")\n\n## Overview\n\nEric Graham's original 1987 Juggler Raytracer 1.0 source code and related data\n\nThis is the same data archived on archive.org at https:\u002F\u002Farchive.org\u002Fdetails\u002Fraytracer-1987-graham-source-code.adf.-7z\n\nI have extracted the ADF into portable files using my Pthon port ( https:\u002F\u002Fgithub.com\u002FAlphaPixel\u002FExtract-ADF-Python ) of Extract ADF ( https:\u002F\u002Fgithub.com\u002Fmist64\u002Fextract-adf ). I had OpenAI Codex create the Python port specifically for this task.\n\nErnie Wright also has copies of some of the files but his web site:\nhttp:\u002F\u002Fwww.etwright.org\u002Fcghist\u002Fjuggler.html\nhttp:\u002F\u002Fwww.etwright.org\u002Fcghist\u002Fjuggler_rt.html\nlinks to this copy of the ADF: https:\u002F\u002Fwww.dottyflowers.com\u002Findex.php?file=home&module=blog&page=viewpost&post=raytracer-1_0-%28plus-source%29\n\nwhich is no longer live.\n\nSince it's hard to actually find the textual C source online, I resolved to archive it here on GitHub for future programmers to learn and appreciate thier history.\n\nI contacted Eric Graham on Feb 10, 2026 to request permission to redistribute the code.\n\n> *I was hoping to put the code onto GitHub for posterity, and I realized there is no explicit license, or copyright release on the code. I'm wondering if you'd be willing to specifically declare a license or a release of copyright so it would be legitimate on GitHub.*\n\nEric replied the same day with\n> *Yes, I'd be happy to! It is ironic to be most known for something that I did in a day! As far as I am concerned anyone can do what they want with the code, so long as I get a mention!*\n\nSo, by Eric's directive, it is now declared under Public Domain, with an Attribution clause, which shouldn't be hard to abide by. I can't imagine anyone WOULDN'T want to acknowledge the contribution of Eric and his  Juggler and raytracing work which literally altered the careers and lives of many of us who saw it and saw the whole computing universe change in an instant. I have had a career in computer graphics because Juggler sold me on buying an Amiga.\n\nFor throughness, I will also catalog several other Juggler resources here:\n\nJuggler original animation output converted to animated GIF:\nhttps:\u002F\u002Farchive.org\u002Fdetails\u002Famiga-juggler\n\nScanned AmigaWorld Volume 3 Issue 3 (May\u002FJune 1987) on Archive.org (article pp 18-24):\nhttps:\u002F\u002Farchive.org\u002Fdownload\u002Famiga-world-1987-05\n\nThe news about the rediscovery of the RT disk:\nhttps:\u002F\u002Fcommodorefree.com\u002Fmagazine\u002Fvol8\u002Fissue79.html#NEWS-1.1\n\nErnie Wright web site:\nhttp:\u002F\u002Fwww.etwright.org\u002Fcghist\u002Fjuggler.html\nhttp:\u002F\u002Fwww.etwright.org\u002Fcghist\u002Fjuggler_rt.html\n\nWalter Randelshofer's Juggler web pages:\nhttps:\u002F\u002Fwww.randelshofer.ch\u002Fanimations\u002Fanims\u002Feric_graham\u002FJuggler.anim.html\n\nEnglish Amiga Board post about the recovery of the floppy and Alain Thellier getting it working again:\nhttps:\u002F\u002Feab.abime.net\u002Fshowthread.php?t=51911&page=1\n\nAlain Thellier's recompiled rt with built-in robot, ele and dragon scenes (source included):\nhttp:\u002F\u002Fthellier.free.fr\u002Frt-gcc.zip\n\nJuggler in Java by Meatfighter.com\nhttps:\u002F\u002Fmeatfighter.com\u002Fjuggler\u002F\n\nBen Hanke ( http:\u002F\u002F13h.org\u002F ) Real time WebGL Juggler\nhttp:\u002F\u002F13h.org\u002Fjuggler\u002F\n\nJuggler Encore demo party entry (Windows)\nhttps:\u002F\u002Fwww.reddit.com\u002Fr\u002Fraytracing\u002Fcomments\u002F13o7smc\u002Fmy_realtime_holographic_recreation_of_the_1986\u002F\n\nJuggler raytracer in ShaderToy by https:\u002F\u002Fwww.shadertoy.com\u002Fuser\u002Fpellicus (Dario Pelalla):\nhttps:\u002F\u002Fwww.shadertoy.com\u002Fview\u002FllXSWr\n\nJuggler in Rust:\nhttps:\u002F\u002Fgithub.com\u002Funfastener\u002Fjuggler-in-rust\n\n## Manifest of Files included\n\nRaytracer_1987_Graham_Source_Code.adf.7z : Original distribution of ADF file (7z compressed) from archive.org\n\nmedia\u002F : collected media of the Juggler output. Contents follow:\n- `Juggler.png` (24,296 bytes): One of the HAM frames from Juggler, converted to 24-bit, upscaled to 640x400 and saved as PNG.\n- `juggler.avi` (328,538 bytes): Ernie Wright's custom extraction and conversion of the whole Juggler animation to Windows AVI format. 320x200. Difficult for many modern media playback tools to decode.\n- `Juggler.mp4` (648,513 bytes): Ernie Wright's AVI format upscaled to 1462x1080 and transcoded to MP4.\n\nRaytracer_1987_Graham_Source_Code\u002F : folder containing all files found in the root of the extracted ADF. Contents follow:\n- `.info` (87 bytes): Workbench disk metadata\n- `dos.bmap` (426 bytes): Amiga DOS library call map\u002Fstub table with entries such as `Open`, `Close`, `Read`, `Write`, `Seek`, `DeleteFile`, and `Rename`.\n- `dos.bmap.info` (338 bytes): Workbench icon metadata for `dos.bmap`.\n- `dragon` (48,052 bytes): 320x200 HAM-style rendered still image data for the dragon scene, with dimensions and palette data at the file start.\n- `dragon.dat` (2,107 bytes): Plain-text scene description for the dragon render, including camera position, viewport angles, sphere colors\u002Ftypes, and lamp settings.\n- `ele` (48,052 bytes): 320x200 HAM-style rendered still image data for the elephant scene, with dimensions and palette data at the file start.\n- `ele.dat` (1,000 bytes): Plain-text scene description for the elephant render, defining grouped spheres, colors, camera\u002Fview settings, and lighting.\n- `graphics.bmap` (1,397 bytes): Amiga graphics library call map\u002Fstub table with entries such as `BltBitMap`, `ClearScreen`, `Text`, `SetFont`, and related graphics functions.\n- `graphics.bmap.info` (338 bytes): Workbench icon metadata for `graphics.bmap`.\n- `intuition.bmap` (1,145 bytes): Amiga Intuition library call map\u002Fstub table with entries such as `OpenIntuition`, `AddGadget`, `CloseScreen`, and `CloseWindow`.\n- `intuition.bmap.info` (338 bytes): Workbench icon metadata for `intuition.bmap`.\n- `movie` (14,220 bytes): Amiga executable movie player, version 1.5 dated 1986, which loads `movie.data`, displays raytraced HAM frames, and accepts digit speed keys plus ESC to exit.\n- `movie.data` (295,610 bytes): Compressed frame data used by the `movie` player; begins with frame\u002Fcount and 320x200 HAM palette\u002Fframe payload information.\n- `movie.info` (938 bytes): Workbench icon metadata for the `movie` executable.\n- `movie2` (14,368 bytes): Amiga executable movie player, version 2.0 dated 1987, which loads `movie2.data` and includes explanatory text about the raytraced images and 4096-color HAM display.\n- `movie2.data` (270,342 bytes): Compressed frame data used by the `movie2` player; begins with frame\u002Fcount and 320x200 HAM palette\u002Fframe payload information.\n- `movie2.info` (938 bytes): Workbench icon metadata for the `movie2` executable.\n- `raytrace.a` (13,119 bytes): Amiga BASIC raytracer program implementing the simple sphere\u002Fground\u002Fsky scene, HAM screen setup, ray intersection, shading, reflection, and display loop.\n- `raytrace.a.info` (354 bytes): Workbench icon metadata for `raytrace.a`.\n- `raytrace.BAK` (12,502 bytes): Backup copy of the BASIC raytracer source, similar to `raytrace.a` but without the opening REM copyright block.\n- `robot.dat` (810 bytes): Plain-text scene description for a robot\u002Fhumanoid render, defining camera\u002Fview settings, multiple colored spheres, and a lamp.\n- `rt1.c` (11,049 bytes): C source for the core raytracer: ray generation, sphere\u002Fground\u002Flamp intersection, sky gradient, diffuse lighting, highlights, mirror reflection, and vector math.\n- `rt2.c` (5,201 bytes): C source for scene setup and brightness-to-HAM output: observer configuration, one-sphere test scene, lamp exposure scaling, and `ham()` pixel conversion.\n- `rt3.c` (5,688 bytes): C source for Amiga-specific display support: opens graphics\u002Fintuition\u002Fdos libraries, creates a 320x200 HAM custom screen\u002Fwindow, manages palette allocation, writes pixels, and cleans up.\n- `ss` (22,432 bytes): Amiga Hunk executable identified internally as `SS: Ray Tracing Display Program`, a slideshow\u002Fdisplay tool for rendered illustrations with return-to-advance and ESC-to-exit prompts.\n- `ssg` (49,992 bytes): Amiga Hunk executable identified internally as `SSG: Scene Simulation Generator`, scene\u002Fraytrace generator that reads scene input, reports sphere counts, and writes output\u002Fdump\u002Fregister files.\n- `Trashcan.info` (430 bytes): Workbench icon metadata for the `Trashcan` drawer.\n\n## Future\n\nI will catalog additional work I've done with this code in this repository in the future. I have a WebGPU version of it that's kind of interesting.\n",2,"2026-06-11 04:10:29","CREATED_QUERY"]