<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wowcube.com/index.php?action=history&amp;feed=atom&amp;title=SDK_6.3%2FChangelog</id>
	<title>SDK 6.3/Changelog - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wowcube.com/index.php?action=history&amp;feed=atom&amp;title=SDK_6.3%2FChangelog"/>
	<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/Changelog&amp;action=history"/>
	<updated>2026-07-26T23:41:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://wiki.wowcube.com/index.php?title=SDK_6.3/Changelog&amp;diff=16929&amp;oldid=prev</id>
		<title>WowBot: Content refresh: games catalog with artwork, Rubik's WOWCube milestones, specs, store info, legacy notices (WowBot)</title>
		<link rel="alternate" type="text/html" href="https://wiki.wowcube.com/index.php?title=SDK_6.3/Changelog&amp;diff=16929&amp;oldid=prev"/>
		<updated>2026-07-25T20:18:02Z</updated>

		<summary type="html">&lt;p&gt;Content refresh: games catalog with artwork, Rubik&amp;#039;s WOWCube milestones, specs, store info, legacy notices (WowBot)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{notice|'''Official WOWCube SDK changelog''' — as shipped with the WOWCube Development Kit. SDK '''6.3''' is the current version; see [[SDK 6.3]] for the API reference.}}&lt;br /&gt;
&lt;br /&gt;
{{SDK 6.3 nav}}&lt;br /&gt;
&lt;br /&gt;
''Note: version 6.3 introduced no PAWN API additions over 6.2 apart from removals (&amp;lt;code&amp;gt;GFX_drawParticles&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;GFX_drawParticlesXY&amp;lt;/code&amp;gt; were removed in 6.3).''&lt;br /&gt;
&lt;br /&gt;
== SDK Version 6.2 ==&lt;br /&gt;
&lt;br /&gt;
=== Pawn ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawSubImage(const center[GFX_POINT], winX, winY, winW, winH, opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawSubImageXY(x, y, winX, winY, winW, winH, opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reworked splashscreen &lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;PlayRandomSound(const snd[], const volume, const bool: stopPlaying = true, size = sizeof(snd))&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;PlayLoopRandomSound(const snd[], const volume, const delayMin, const delayMax, dt, size = sizeof(snd))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_drawSubImage(spriteID_t id,i32_t x,i32_t y,u32_t rect_x,u32_t rect_y,u32_t rect_w,u32_t rect_h,u32_t opacity,u32_t colorKey,u32_t scale_x, u32_t scale_y,u32_t angle, u32_t mirror)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Reworked splashscreen &lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection(std::vector&amp;lt;&amp;lt;std::string&amp;gt;&amp;gt;&amp;amp; names)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection(std::vector&amp;lt;&amp;lt;Cubios::Sound*&amp;gt;&amp;gt;&amp;amp; sounds)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection::PlayRandomSound(uint8_t volume = 100, bool stopCurrent = true)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection::RepeatRandomSounds(uint8_t volume, int delayMin, int delayMax, int deltaTime)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection::Stop()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::SoundCollection::IsPlaying()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::Gfx::SpriteAtlas class&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Cubios::Gfx::SpriteAtlasElement class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK Version 6.0 ==&lt;br /&gt;
&lt;br /&gt;
=== Pawn ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;getAppVersion(version[APP_VERSION])&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;ON_Packet(type, size, const pkt[])&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_setFillShader(color)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_setLinearGradientShader(const start[GFX_POINT], const end[GFX_POINT], color0, color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_setLinearGradientShaderXY(x0, y0, x1, y1, color0, color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_setRadialGradientShader(const center[GFX_POINT], radius, color0, color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_setRadialGradientShaderXY(x, y, radius, color0, color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_removeShader()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_removeBakedImage(id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawQrCode(const center[GFX_POINT], size, color0, color1, angle, id, const text[])&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawQrCodeXY(x,y, size, color0, color1, angle, id, const text[])&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_getAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;GFX_drawImage(const center[GFX_POINT], opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;GFX_drawImageXY(x, y, opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;GFX_drawBakedImage(const center[GFX_POINT], opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;GFX_drawBakedImageXY(x, y, opacity, colorKey, scaleX, scaleY, angle, GFX_mirror: mirror, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;GFX_bakeImage(const id, const width, const height, const GFX_format: format, bool: overwrite = true)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;SND_stop()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;SND_isPlaying()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;SND_getAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t getAppVersion(Cubios::AppVersion_t&amp;lt;/code&amp;gt;* &amp;lt;code&amp;gt;version)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_drawQrCodeXY(i32_t x, i32_t y, u32_t size, u32_t color0, u32_t color1, u32_t angle, u32_t id, const char&amp;lt;/code&amp;gt;* &amp;lt;code&amp;gt;text)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_removeBakedImage(spriteID_t id)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_getAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_setFillShader(u32_t color)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_setLinearGradientShader(u32_t x0, u32_t y0, u32_t x1, u32_t y1, u32_t color0, u32_t color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_setRadialGradientShader(u32_t x0, u32_t y0, u32_t radius, u32_t color0, u32_t color1)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_removeShader()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;i32_t GFX_drawCircle(u32_t x, u32_t y, u32_t radius, u32_t width, u32_t color)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;i32_t GFX_drawRectangle(i32_t x0, i32_t y0, i32_t width, i32_t height, u32_t color)&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;i32_t GFX_bakeImage(spriteID_t id, u32_t width, u32_t height, GFX_PixelFormat firmat, bool overwrite )&amp;lt;/code&amp;gt;&lt;br /&gt;
* ''Modified'' &amp;lt;code&amp;gt;i32_t GFX_drawImage(spriteID_t id, i32_t x, i32_t y, u32_t opacity, u32_t colorKey, u32_t scaleX, u32_t scaleY, u32_t angle, u32_t mirror  )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t SND_stop()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t SND_isPlaying()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t SND_getAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;virtual void Application::on_ExternalMessage(uint8_t&amp;lt;/code&amp;gt;* &amp;lt;code&amp;gt;pkt, u32_t size)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;void Application::SendExternalMessage(uint32_t type, uint8_t&amp;lt;/code&amp;gt;* &amp;lt;code&amp;gt;data, size_t size)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;int Application::GetImageAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;int Application::GetSoundAssetsCount()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;static void Sound::Stop()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;static void Sound::IsPlaying()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;SaveMessage class&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;Scramble class&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;QRCode class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK Version 5.1 ==&lt;br /&gt;
&lt;br /&gt;
=== Pawn ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawSector(const center[GFX_POINT], radius, from, to, color)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;GFX_drawSectorXY(x, y, radius, from, to, color)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;i32_t GFX_drawSector(i32_t x, i32_t y, u32_t radius, u32_t angle0, u32_t angle1, u32_t color)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;bool Application::IsMasterModule()&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;void Color::SetAfSafe(float a)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;SceneObject\* SceneObject::SetAfSafe(float a)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;const Math::Vec2 SceneObject::ScreenPosition()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;void NetworkMessage::WriteSignedInt(int value, int bits)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Added''' &amp;lt;code&amp;gt;int NetworkMessage::ReadSignedInt(int bits)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Improved support for negative rotation angles &lt;br /&gt;
&lt;br /&gt;
* '''Removed''' &amp;lt;code&amp;gt;SceneObject\* SceneObject::SetScreenPosition(const Math::Vec2&amp;amp; pos)&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''Removed''' &amp;lt;code&amp;gt;SceneObject\* SceneObject::SetScreenPosition(float x, float y)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SDK 6.3]]&lt;/div&gt;</summary>
		<author><name>WowBot</name></author>
		
	</entry>
</feed>