<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cc-wiki.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Flying_strawberries</id>
	<title>Flying strawberries - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://cc-wiki.duckdns.org/index.php?action=history&amp;feed=atom&amp;title=Flying_strawberries"/>
	<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Flying_strawberries&amp;action=history"/>
	<updated>2026-04-19T13:27:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Flying_strawberries&amp;diff=234&amp;oldid=prev</id>
		<title>Lordsnek: Added a little mention of emulated versions. I feel like my wording is getting clunky but cest la vie or whatever it&#039;s a small wiki read by nobody edit it if you want</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Flying_strawberries&amp;diff=234&amp;oldid=prev"/>
		<updated>2026-02-13T22:35:42Z</updated>

		<summary type="html">&lt;p&gt;Added a little mention of emulated versions. I feel like my wording is getting clunky but cest la vie or whatever it&amp;#039;s a small wiki read by nobody edit it if you want&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:35, 13 February 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l120&quot;&gt;Line 120:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 120:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Glitches ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Glitches ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When flying berries flap up and down, they don&#039;t follow a perfect cycle due to rounding errors and problems with [[PICO-8|pico-8]]&#039;s implementation of sin(). Over a very long time, these errors can accumulate and make the berry drift slowly upward. Since the berry&#039;s y position is an integer, it will underflow to a positive (lower) y position if the berry drifts any higher than y=-32768.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When flying berries flap up and down, they don&#039;t follow a perfect cycle due to rounding errors and problems with [[PICO-8|pico-8]]&#039;s implementation of sin(). Over a very long time, these errors can accumulate and make the berry drift slowly upward. Since the berry&#039;s y position is an integer, it will underflow to a positive (lower) y position if the berry drifts any higher than y=-32768&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. While flying berries also drift slightly in emuulated versions of the game, the drift is much slower, and eventually stops happening altogether; as a result, this is usually considered a PICO-8 only glitch&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This slow drift takes a &amp;#039;&amp;#039;very&amp;#039;&amp;#039; long time; it takes 9 years for the berry to underflow. If you can&amp;#039;t dash to make it rise back quickly, it takes another 9 years for the flying berry to drift back up into the main map. This glitch is used mainly in minimalist challenge runs, like getting the berry in 700m without jumping. It is also the primary technique in [[longleste]], a challenge to make the longest beatable level.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This slow drift takes a &amp;#039;&amp;#039;very&amp;#039;&amp;#039; long time; it takes 9 years for the berry to underflow. If you can&amp;#039;t dash to make it rise back quickly, it takes another 9 years for the flying berry to drift back up into the main map. This glitch is used mainly in minimalist challenge runs, like getting the berry in 700m without jumping. It is also the primary technique in [[longleste]], a challenge to make the longest beatable level.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lordsnek</name></author>
	</entry>
	<entry>
		<id>https://cc-wiki.duckdns.org/index.php?title=Flying_strawberries&amp;diff=233&amp;oldid=prev</id>
		<title>Lordsnek: Created the page, with a glitches section where I describe flying berry drift</title>
		<link rel="alternate" type="text/html" href="https://cc-wiki.duckdns.org/index.php?title=Flying_strawberries&amp;diff=233&amp;oldid=prev"/>
		<updated>2026-02-13T22:33:36Z</updated>

		<summary type="html">&lt;p&gt;Created the page, with a glitches section where I describe flying berry drift&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Flying Berry.png|thumb|A flying berry in 400m of Celeste Classic]]&lt;br /&gt;
Flying strawberries, also called winged berries, are a collectible that first appeared in [[Celeste Classic]]. They are similar to [[Strawberry|non-flying strawberries]], but they have wings and fly upward once the player dashes.&lt;br /&gt;
&lt;br /&gt;
== Original Code ==&lt;br /&gt;
fly_fruit={&lt;br /&gt;
&lt;br /&gt;
    tile=28,&lt;br /&gt;
&lt;br /&gt;
    if_not_fruit=true,&lt;br /&gt;
&lt;br /&gt;
    init=function(this) &lt;br /&gt;
&lt;br /&gt;
        this.start=this.y&lt;br /&gt;
&lt;br /&gt;
        this.fly=false&lt;br /&gt;
&lt;br /&gt;
        this.step=0.5&lt;br /&gt;
&lt;br /&gt;
        this.solids=false&lt;br /&gt;
&lt;br /&gt;
        this.sfx_delay=8&lt;br /&gt;
&lt;br /&gt;
    end,&lt;br /&gt;
&lt;br /&gt;
    update=function(this)&lt;br /&gt;
&lt;br /&gt;
        --fly away&lt;br /&gt;
&lt;br /&gt;
        if this.fly then&lt;br /&gt;
&lt;br /&gt;
         if this.sfx_delay&amp;gt;0 then&lt;br /&gt;
&lt;br /&gt;
          this.sfx_delay-=1&lt;br /&gt;
&lt;br /&gt;
          if this.sfx_delay&amp;lt;=0 then&lt;br /&gt;
&lt;br /&gt;
           sfx_timer=20&lt;br /&gt;
&lt;br /&gt;
           sfx(14)&lt;br /&gt;
&lt;br /&gt;
          end&lt;br /&gt;
&lt;br /&gt;
         end&lt;br /&gt;
&lt;br /&gt;
            this.spd.y=appr(this.spd.y,-3.5,0.25)&lt;br /&gt;
&lt;br /&gt;
            if this.y&amp;lt;-16 then&lt;br /&gt;
&lt;br /&gt;
                destroy_object(this)&lt;br /&gt;
&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        -- wait&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
&lt;br /&gt;
            if has_dashed then&lt;br /&gt;
&lt;br /&gt;
                this.fly=true&lt;br /&gt;
&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            this.step+=0.05&lt;br /&gt;
&lt;br /&gt;
            this.spd.y=sin(this.step)*0.5&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- collect&lt;br /&gt;
&lt;br /&gt;
        local hit=this.collide(player,0,0)&lt;br /&gt;
&lt;br /&gt;
        if hit~=nil then&lt;br /&gt;
&lt;br /&gt;
         hit.djump=max_djump&lt;br /&gt;
&lt;br /&gt;
            sfx_timer=20&lt;br /&gt;
&lt;br /&gt;
            sfx(13)&lt;br /&gt;
&lt;br /&gt;
            got_fruit[1+level_index()] = true&lt;br /&gt;
&lt;br /&gt;
            init_object(lifeup,this.x,this.y)&lt;br /&gt;
&lt;br /&gt;
            destroy_object(this)&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    end,&lt;br /&gt;
&lt;br /&gt;
    draw=function(this)&lt;br /&gt;
&lt;br /&gt;
        local off=0&lt;br /&gt;
&lt;br /&gt;
        if not this.fly then&lt;br /&gt;
&lt;br /&gt;
            local dir=sin(this.step)&lt;br /&gt;
&lt;br /&gt;
            if dir&amp;lt;0 then&lt;br /&gt;
&lt;br /&gt;
                off=1+max(0,sign(this.y-this.start))&lt;br /&gt;
&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
&lt;br /&gt;
            off=(off+0.25)%3&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        spr(45+off,this.x-6,this.y-2,1,1,true,false)&lt;br /&gt;
&lt;br /&gt;
        spr(this.spr,this.x,this.y)&lt;br /&gt;
&lt;br /&gt;
        spr(45+off,this.x+6,this.y-2)&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Glitches ==&lt;br /&gt;
When flying berries flap up and down, they don&amp;#039;t follow a perfect cycle due to rounding errors and problems with [[PICO-8|pico-8]]&amp;#039;s implementation of sin(). Over a very long time, these errors can accumulate and make the berry drift slowly upward. Since the berry&amp;#039;s y position is an integer, it will underflow to a positive (lower) y position if the berry drifts any higher than y=-32768.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This slow drift takes a &amp;#039;&amp;#039;very&amp;#039;&amp;#039; long time; it takes 9 years for the berry to underflow. If you can&amp;#039;t dash to make it rise back quickly, it takes another 9 years for the flying berry to drift back up into the main map. This glitch is used mainly in minimalist challenge runs, like getting the berry in 700m without jumping. It is also the primary technique in [[longleste]], a challenge to make the longest beatable level.&lt;/div&gt;</summary>
		<author><name>Lordsnek</name></author>
	</entry>
</feed>