Difference between revisions of "Resources"

From SizeCoding
Jump to: navigation, search
(References)
(References)
(38 intermediate revisions by 8 users not shown)
Line 2: Line 2:
  
 
Pouet's [http://www.pouet.net/topic.php?which=8791&page=1 Tiny Intro Toolbox Thread] was one of sizecoding.org's main inspirations.
 
Pouet's [http://www.pouet.net/topic.php?which=8791&page=1 Tiny Intro Toolbox Thread] was one of sizecoding.org's main inspirations.
 +
 +
We also have an active discord server dedicated to sizecoding at: https://discord.gg/pZE5rAQrHx
 +
 +
== Seminars ==
 +
 +
Seminars on various sizecoding topics have been presented at the Lovebyte demoparty, and can be watched here: [https://www.youtube.com/playlist?list=PLr4JCYhdWe8mq3aDvAtL0ooO7hAC9gU2s Lovebyte seminars on YouTube]
 +
 +
In recent years 256b intro coding has been covered in presentation sessions at other demo parties. The recordings are available on YouTube. There are
 +
[https://www.youtube.com/watch?v=WbWYBE9vjdk part 1] and [https://www.youtube.com/watch?v=51BOp5Pi4mU part 2] of Řrřola's talk "Magic of 256-byte x86 intros" held at Demobit 2017 and 2018 respectively. A similar talk [https://www.youtube.com/watch?v=V_ntnQKemWA "256 byte intros on modern PCs"] was held by TomCat/Abaddon at the Function 2017 party. Supplemental files can be downloaded from [http://www.pouet.net/prod.php?which=72454 Pouet.net]. The presentations cover everything from setting up the coding environment to all kinds of code optimization, constant reuse, flag tricks, palette generation, and how to get from an idea to the final intro. TomCat also provides a [https://www.abaddon.hu/usbdos/ dev tools page] and his [https://www.abaddon.hu/256b/ SizeCoding Blog] with lots of optimization ideas.
  
 
== References ==
 
== References ==
  
The Hugi demoscene diskmag has been kind to the sizecoding movement.  They included [http://www.hugi.scene.org/online/coding/hugi%20se%204%20-%20index%20sorted%20by%20topic.htm many programming articles] since it started in 1996.  Additionally, the [http://www.hugi.scene.org/compo/compoold.htm Hugi Size Coding Competition Series] is the gold standard for learning how to sizecode:  Each competition was given a specific task, then participants submitted their results.  ([http://retrolandia.net/hugi/showthread.php?tid=7&pid=13#pid13 All of the entries with their source code] are available, as are [http://retrolandia.net/hugi/showthread.php?tid=7&pid=396#pid396 the rules for each challenge].)  Hugi #35 also provided a [http://hugi.scene.org/online/hugi35/hugi%2035%20-%20demoscene%20forum%20adok%20256b%20intros%20round-table.htm 256b intros round-table] between Baze, Digimind, Rrrola, Pirx, Optimus, and Seven.
+
The Hugi demoscene diskmag has been kind to the sizecoding movement.  They included [http://www.hugi.scene.org/online/coding/hugi%20se%204%20-%20index%20sorted%20by%20topic.htm many programming articles] since it started in 1996.  Additionally, the [http://www.hugi.scene.org/compo/compoold.htm Hugi Size Coding Competition Series] is the gold standard for learning how to sizecode:  Each competition was given a specific task, then participants submitted their results.  ([http://retrolandia.net/hugi/showthread.php?tid=7&pid=13#pid13 All of the entries with their source code] are available, as are [http://retrolandia.net/hugi/showthread.php?tid=7&pid=396#pid396 the rules for each challenge].)  Hugi #35 also provided a [http://hugi.scene.org/online/hugi35/hugi%2035%20-%20demoscene%20forum%20adok%20256b%20intros%20round-table.htm 256b intros round-table] between Baze, Digimind, Řrřola, Pirx, Optimus, and Seven.
  
fysnet.net has an extensive [http://www.fysnet.net/yourhelp.htm list of DOS .COM register starting values].  If your environment isn't listed, [http://www.fysnet.net/yourhelp.com a program] is also available that can print out all of the starting register values.
+
fysnet.net has an extensive [http://www.fysnet.net/yourhelp.htm list of DOS .COM register starting values].  If your environment isn't listed, [http://www.fysnet.net/yourhelp.com a program] is also available that can print out all of the register starting values.  See also [https://web.archive.org/web/20170418182707/http://pferrie.host22.com/misc/lowlevel12.htm DOS Register Starting Values] to understand why the register starting values for .COM files are set the way that they are.
  
 
The [http://sparksandflames.com/files/x86InstructionChart.html Sparks And Flames x86 Instruction Chart] is awesome, once you can "read" it. Find out what the bright green (1-byte) commands do, and use them. For the extreme sizecoding (<=32 bytes) it's also very useful to have the HEX value in sight.
 
The [http://sparksandflames.com/files/x86InstructionChart.html Sparks And Flames x86 Instruction Chart] is awesome, once you can "read" it. Find out what the bright green (1-byte) commands do, and use them. For the extreme sizecoding (<=32 bytes) it's also very useful to have the HEX value in sight.
  
The [http://ref.x86asm.net/geek.html Geek Edition x86asm-ref] is comprehensive and dense.  It might be the only reference you'll need.  The last part covers modr/m bytes, which is useful.
+
The [http://ref.x86asm.net/geek.html Geek Edition x86asm-ref] is comprehensive and dense.  It might be the only reference you'll need.  The [http://ref.x86asm.net/geek.html#modrm_byte_16 last part] covers modr/m bytes, which is useful.
  
[http://x86.renejeschke.de/ Rene Jeschke's preservation of siyobik.com's x86 Documentation] is one of the most compact and understandable references to the x86 instruction set you'll ever see.
+
[https://www.felixcloutier.com/x86/ Yet another reference] by Félix Cloutier.
 +
 
 +
[http://www.techhelpmanual.com/2-main_menu.html Tech Help Manual] includes a dense reference of DOS interrupts and x86 instructions.
 +
 
 +
[http://c9x.me/x86/ c9x.me]: A x86 instruction reference
 +
 
 +
[https://kernfunny.org/x86/ Rene Jeschke's preservation of siyobik.com's x86 Documentation] is one of the most compact and understandable references to the x86 instruction set you'll ever see.
 +
 
 +
Intel IA-32 Software Developer's Manual Instruction Set Reference [http://www.jaist.ac.jp/iscenter-new/mpc/altix/altixdata/opt/intel/vtune/doc/users_guide/mergedProjects/analyzer_ec/mergedProjects/reference_olh/mergedProjects/instructions/whgdata/whlstt2.htm hypertext version].
  
 
[http://www.rcollins.org/secrets/OpCodes.html Robert Collins' Undocumented Opcodes] page has some gems you can exploit depending on your target environment.
 
[http://www.rcollins.org/secrets/OpCodes.html Robert Collins' Undocumented Opcodes] page has some gems you can exploit depending on your target environment.
 +
 +
[http://wiki.osdev.org/PC_Speaker PC Speaker Basics] For everything from simple bleeps to sophisticated synthesizers.
 +
 +
[https://en.wikipedia.org/wiki/Program_Segment_Prefix Program Segment Prefix] : what's in front of our .COM code, and why.
  
 
Never underestimate [http://www.hugi.scene.org/online/coding/hugi%2017%20-%20coaax.htm The Hidden Power of BCD Instructions].
 
Never underestimate [http://www.hugi.scene.org/online/coding/hugi%2017%20-%20coaax.htm The Hidden Power of BCD Instructions].
 +
 +
[http://www.agner.org/optimize/optimizing_assembly.pdf An optimization guide for x86 platforms By Agner Fog] Chapter 10: Optimizing for size.
 +
 +
[http://home.sch.bme.hu/~ervin/codegems.html Code Gems by Ervin/AbaddoN] Nice collection based on the Imphobia diskmagazine article.
 +
 +
[http://wiki.osdev.org/Programmable_Interval_Timer Programmable Interval Timer]: Timing is everything, if you're targeting a slow system. Very old but good text [http://www.phatcode.net/res/246/files/pctim003.txt PCTIM003.TXT]
 +
 +
[http://stanislavs.org/helppc/bios_data_area.html BIOS data area]: Direct system communication overview.  There are environment values here you may be able to utilize.
 +
 +
[https://www.midi.org/specifications/item/table-1-summary-of-midi-message Summary of MIDI messages] : Summary of all basic MIDI messages.
 +
 +
[http://www.voidaudio.net/percussion.html Roland GS/GM2 Drum Set List and Note Map] : Detailed Description of all MIDI drumkits.
 +
 +
[http://www.h-schmidt.net/FloatConverter/IEEE754.html Online IEEE 754 Converter] : Excellent tool for optimizing/reusing FPU constants
 +
 +
[https://www.reddit.com/r/tinycode Tinycode on Reddit]: Collection of many different size coding productions incl. x86 based ones with discussion (mostly provided by [https://www.reddit.com/user/Hell__Mood/ HellMood] himself)
 +
 +
[https://marquee.revival-studios.com/blog Superogue's sizecoding microblog]: Collection of demoscene and sizecoding related articles and development writeups up [https://www.pouet.net/groups.php?which=14389 various Marquee Design tiny intros]
 +
 +
[https://www.xtof.info/Timing-on-PC-familly-under-DOS.html Timing-on-PC-familly-under-DOS] A complete and very detailed guide about timing, timers, callbacks, interrupts in conjunction with MSDOS
  
 
== Repositories ==
 
== Repositories ==
Line 27: Line 68:
 
[http://hardcode.untergrund.net/ HardCode] is a repository of 7800 64KB and smaller intros.
 
[http://hardcode.untergrund.net/ HardCode] is a repository of 7800 64KB and smaller intros.
  
[http://www.256b.com/ 256b.com] used to be a website dedicated to 256b releases, but has been down since 2009.  A [https://web.archive.org/web/20080723115129/http://www.256b.com/home.php mangled archive] is available at archive.org.
+
* [https://files.scene.org/get/demos/compilations/hardcode/hardcode.zip Scene.org link] to this archive
 +
 
 +
* [https://files.scene.org/get/demos/compilations/hardcode/hc_update.zip Scene.org link] to an archive update from 2017 to 2022
 +
 
 +
[http://256bytes.untergrund.net 256b.com] is a website dedicated primarily to 256b and smaller releases.

Revision as of 12:33, 7 September 2022

Discussions

Pouet's Tiny Intro Toolbox Thread was one of sizecoding.org's main inspirations.

We also have an active discord server dedicated to sizecoding at: https://discord.gg/pZE5rAQrHx

Seminars

Seminars on various sizecoding topics have been presented at the Lovebyte demoparty, and can be watched here: Lovebyte seminars on YouTube

In recent years 256b intro coding has been covered in presentation sessions at other demo parties. The recordings are available on YouTube. There are part 1 and part 2 of Řrřola's talk "Magic of 256-byte x86 intros" held at Demobit 2017 and 2018 respectively. A similar talk "256 byte intros on modern PCs" was held by TomCat/Abaddon at the Function 2017 party. Supplemental files can be downloaded from Pouet.net. The presentations cover everything from setting up the coding environment to all kinds of code optimization, constant reuse, flag tricks, palette generation, and how to get from an idea to the final intro. TomCat also provides a dev tools page and his SizeCoding Blog with lots of optimization ideas.

References

The Hugi demoscene diskmag has been kind to the sizecoding movement. They included many programming articles since it started in 1996. Additionally, the Hugi Size Coding Competition Series is the gold standard for learning how to sizecode: Each competition was given a specific task, then participants submitted their results. (All of the entries with their source code are available, as are the rules for each challenge.) Hugi #35 also provided a 256b intros round-table between Baze, Digimind, Řrřola, Pirx, Optimus, and Seven.

fysnet.net has an extensive list of DOS .COM register starting values. If your environment isn't listed, a program is also available that can print out all of the register starting values. See also DOS Register Starting Values to understand why the register starting values for .COM files are set the way that they are.

The Sparks And Flames x86 Instruction Chart is awesome, once you can "read" it. Find out what the bright green (1-byte) commands do, and use them. For the extreme sizecoding (<=32 bytes) it's also very useful to have the HEX value in sight.

The Geek Edition x86asm-ref is comprehensive and dense. It might be the only reference you'll need. The last part covers modr/m bytes, which is useful.

Yet another reference by Félix Cloutier.

Tech Help Manual includes a dense reference of DOS interrupts and x86 instructions.

c9x.me: A x86 instruction reference

Rene Jeschke's preservation of siyobik.com's x86 Documentation is one of the most compact and understandable references to the x86 instruction set you'll ever see.

Intel IA-32 Software Developer's Manual Instruction Set Reference hypertext version.

Robert Collins' Undocumented Opcodes page has some gems you can exploit depending on your target environment.

PC Speaker Basics For everything from simple bleeps to sophisticated synthesizers.

Program Segment Prefix : what's in front of our .COM code, and why.

Never underestimate The Hidden Power of BCD Instructions.

An optimization guide for x86 platforms By Agner Fog Chapter 10: Optimizing for size.

Code Gems by Ervin/AbaddoN Nice collection based on the Imphobia diskmagazine article.

Programmable Interval Timer: Timing is everything, if you're targeting a slow system. Very old but good text PCTIM003.TXT

BIOS data area: Direct system communication overview. There are environment values here you may be able to utilize.

Summary of MIDI messages : Summary of all basic MIDI messages.

Roland GS/GM2 Drum Set List and Note Map : Detailed Description of all MIDI drumkits.

Online IEEE 754 Converter : Excellent tool for optimizing/reusing FPU constants

Tinycode on Reddit: Collection of many different size coding productions incl. x86 based ones with discussion (mostly provided by HellMood himself)

Superogue's sizecoding microblog: Collection of demoscene and sizecoding related articles and development writeups up various Marquee Design tiny intros

Timing-on-PC-familly-under-DOS A complete and very detailed guide about timing, timers, callbacks, interrupts in conjunction with MSDOS

Repositories

Tinyprogs are so small that you sometimes don't need the source code to understand them: Just pop them into a disassembler (like IDA) or a debugger and look at them. If you want to grab specimens for study, here are some places to start.

Pouet can be searched for the latest tinyprogs: 256b, 128b, 64b, and even 32b and smaller.

HardCode is a repository of 7800 64KB and smaller intros.

256b.com is a website dedicated primarily to 256b and smaller releases.