<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[DC-SWAT Forum - Programming]]></title>
		<link>http://www.dc-swat.ru/forum/</link>
		<description><![CDATA[DC-SWAT Forum - http://www.dc-swat.ru/forum]]></description>
		<pubDate>Wed, 13 May 2026 01:59:32 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Automatically generated documentation based on repository code]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4170.html</link>
			<pubDate>Mon, 28 Apr 2025 17:49:16 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4170.html</guid>
			<description><![CDATA[Automatically generated documentation based on repository code.<br />
<br />
<a href="https://deepwiki.com/DC-SWAT/DreamShell" target="_blank">https://deepwiki.com/DC-SWAT/DreamShell</a>]]></description>
			<content:encoded><![CDATA[Automatically generated documentation based on repository code.<br />
<br />
<a href="https://deepwiki.com/DC-SWAT/DreamShell" target="_blank">https://deepwiki.com/DC-SWAT/DreamShell</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[XDP Browser с ярлыком на рабочий стол DreamShell]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4158.html</link>
			<pubDate>Tue, 04 Mar 2025 20:39:01 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4158.html</guid>
			<description><![CDATA[XDP Browser с ярлыком на рабочий стол DreamShell. Вырезано лишнее меню, стартует прямиком в сам браузер. Поддерживает настройки модема и BBA. Есть встроенные мелодии, игры, небольшие программы. Папку из архива нужно положить в папку DS\apps\<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1422" target="_blank">ds_scr_001.png</a> (Размер: 83.25 Кб / Загрузок: 9)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1424" target="_blank">2.png</a> (Размер: 302.99 Кб / Загрузок: 8)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1423" target="_blank">1.png</a> (Размер: 336.99 Кб / Загрузок: 6)
<!-- end: postbit_attachments_attachment --><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<a href="https://mega.nz/file/Cg4XCIiY#fesBNbZqKnyKwKTXP4Cq3l7BlFUPzRxqGtfJt44QstY" target="_blank">https://mega.nz/file/Cg4XCIiY#fesBNbZqKn...tfJt44QstY</a></div></div>]]></description>
			<content:encoded><![CDATA[XDP Browser с ярлыком на рабочий стол DreamShell. Вырезано лишнее меню, стартует прямиком в сам браузер. Поддерживает настройки модема и BBA. Есть встроенные мелодии, игры, небольшие программы. Папку из архива нужно положить в папку DS\apps\<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1422" target="_blank">ds_scr_001.png</a> (Размер: 83.25 Кб / Загрузок: 9)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1424" target="_blank">2.png</a> (Размер: 302.99 Кб / Загрузок: 8)
<!-- end: postbit_attachments_attachment --><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/image.gif" border="0" alt=".png" />&nbsp;&nbsp;<a href="attachment.php?aid=1423" target="_blank">1.png</a> (Размер: 336.99 Кб / Загрузок: 6)
<!-- end: postbit_attachments_attachment --><br />
<div><div class="spoiler_header">Spoiler <a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='(Click to View)';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='(Click to Hide)';}">(Click to View)</a></div><div class="spoiler_body" style="display: none;">
<a href="https://mega.nz/file/Cg4XCIiY#fesBNbZqKnyKwKTXP4Cq3l7BlFUPzRxqGtfJt44QstY" target="_blank">https://mega.nz/file/Cg4XCIiY#fesBNbZqKn...tfJt44QstY</a></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[MainMenu Retrodream icon app]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4149.html</link>
			<pubDate>Sun, 19 Jan 2025 02:09:23 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4149.html</guid>
			<description><![CDATA[Собрал небольшой скриптик с иконкой в виде приложения для запуска Retrodream с рабочего стола. В фале main.lua прописан путь /ide/RD/retrodream.bin по умолчанию, для того что бы из Retrodream можно было обратно вернутся в DreamShell скопируйте dc_core.bin в ту же папку DS с названием ds.bin.<br />
По такой же схеме можно создать и другие ярлыки заменив иконку и пути к файлам.<br />
Надеюсь кому то пригодится <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".zip" />&nbsp;&nbsp;<a href="attachment.php?aid=1414" target="_blank">retrodream.zip</a> (Размер: 8.01 Кб / Загрузок: 6)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Собрал небольшой скриптик с иконкой в виде приложения для запуска Retrodream с рабочего стола. В фале main.lua прописан путь /ide/RD/retrodream.bin по умолчанию, для того что бы из Retrodream можно было обратно вернутся в DreamShell скопируйте dc_core.bin в ту же папку DS с названием ds.bin.<br />
По такой же схеме можно создать и другие ярлыки заменив иконку и пути к файлам.<br />
Надеюсь кому то пригодится <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".zip" />&nbsp;&nbsp;<a href="attachment.php?aid=1414" target="_blank">retrodream.zip</a> (Размер: 8.01 Кб / Загрузок: 6)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Help with LUA scripting.]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4103.html</link>
			<pubDate>Wed, 07 Aug 2024 08:31:24 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4103.html</guid>
			<description><![CDATA[Hi threre gang,<br />
<br />
I'd like to offer my Dreamcast for helping out with some automated test cases.<br />
For that I'd like DreamShell to download an iso file from a plain http server and run it at startup instead of showing the main menu.<br />
<br />
So I'm trying to edit the DS/lua/startup.lua file:<br />
<br />
<div class="codeblock">
<div class="title">Код:<br />
</div><div class="body" dir="ltr"><code>-----------------------------------------<br />
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-- @name:&nbsp;&nbsp;&nbsp;&nbsp; Startup script&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-- @author:&nbsp;&nbsp; SWAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;--<br />
-- @url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.dc-swat.ru&nbsp;&nbsp;&nbsp;&nbsp;--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-----------------------------------------<br />
--<br />
-- Internal DreamShell lua functions:<br />
-- <br />
--&nbsp;&nbsp;&nbsp;&nbsp;OpenModule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open module file and return ID<br />
--&nbsp;&nbsp;&nbsp;&nbsp;CloseModule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close module by ID<br />
--&nbsp;&nbsp;&nbsp;&nbsp;GetModuleByName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get module ID by module NAME<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;AddApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add app by XML file, return app NAME<br />
--&nbsp;&nbsp;&nbsp;&nbsp;OpenApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open app by NAME (second argument for args)<br />
--&nbsp;&nbsp;&nbsp;&nbsp;CloseApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Close app by NAME (second argument for change unload flag)<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;ShowConsole<br />
--&nbsp;&nbsp;&nbsp;&nbsp;HideConsole<br />
--&nbsp;&nbsp;&nbsp;&nbsp;SetDebugIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set the debug output (scif, dclsocket, fb, ds, sd). By default is ds.<br />
--&nbsp;&nbsp;&nbsp;&nbsp;Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep in current thread (in ms)<br />
--&nbsp;&nbsp;&nbsp;&nbsp;MapleAttached&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check for attached maple device<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;Bit library:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bit.or, bit.and, bit.not, bit.xor<br />
--&nbsp;&nbsp;&nbsp;&nbsp;File system library:&nbsp;&nbsp; lfs.chdir, lfs.currentdir, lfs.dir, lfs.mkdir, lfs.rmdir<br />
--&nbsp;&nbsp;&nbsp;&nbsp;<br />
------------------------------------------<br />
<br />
local DreamShell = {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;initialized = false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;modules = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"tolua",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"tolua_2plus",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaDS",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaKOS",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSDL",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaGUI",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaMXML",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSTD",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"sqlite3",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSQL",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: sqlite3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"luaSocket",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaTask",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bzip2",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"minilzo",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"zip",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: bzip2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"httpd",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"telnetd",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"mongoose",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ppp",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"mpg123",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"oggvorbis",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"adx",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"s3m",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"wav",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"xvid",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"SDL_mixer",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: oggvorbis<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ffmpeg",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: oggvorbis, mpg123, bzip2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"opengl",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isofs",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: minilzo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isoldr"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: isofs<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"SDL_net",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"opkg",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: minilzo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"aicaos",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"gumbo",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ini",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bflash",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"openssl",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bitcoin",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"quirc",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ftpd"<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Initialize = function(self)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.execute("env USER Default");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local path = os.getenv("PATH");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(os.getenv("HOST") .. " " .. os.getenv("VERSION") .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(os.getenv("ARCH") .. ": " .. os.getenv("BOARD_ID") .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Date: " .. os.date() .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Base path: " .. path .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("User: " .. os.getenv("USER") .. "&#92;n");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local emu = os.getenv("EMU");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if emu ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Emulator: " .. emu .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("&#92;n");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not MapleAttached("Keyboard") then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(self.modules, "vkb");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.foreach(self.modules, function(k, name)&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_PROCESS: Loading module " .. name .. "...&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not OpenModule(path .. "/modules/" .. name .. ".klf") then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_ERROR: Can't load module " .. path .. "/modules/" .. name .. ".klf&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self:InstallingApps(path .. "/apps");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.initialized = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Setup network<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.execute("net --init");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# disable FTP server for now<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--os.execute("ftpd -s -p 21 -d /");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# try and download my file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket = require("socket")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http = require("socket.http")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ltn12 = require("ltn12")<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local file = ltn12.sink.file(io.open('/ide/GAMES/mygame/game.iso', 'w'))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http.request {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url = 'http://myserver/myfile.iso',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sink = file,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Run isoloader but I don't know how...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenApp(os.getenv("APP"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;end,<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;InstallingApps = function(self, path)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_PROCESS: Installing apps...&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local name = nil;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local list = {};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ent in lfs.dir(path) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ent ~= nil and ent.name ~= ".." and ent.name ~= "." and ent.attr ~= 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(list, ent.name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.sort(list, function(a, b) return a &gt; b end);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for index, directory in ipairs(list) do<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name = AddApp(path .. "/" .. directory .. "/app.xml");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not name then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_ERROR: " .. directory .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_OK: " .. name .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
};<br />
<br />
if not DreamShell.initialized then<br />
&nbsp;&nbsp;&nbsp;&nbsp;DreamShell:Initialize();<br />
end</code></div></div>
<br />
As you can see I didn't got very far.<br />
<br />
Any help would be greatly appreciated.]]></description>
			<content:encoded><![CDATA[Hi threre gang,<br />
<br />
I'd like to offer my Dreamcast for helping out with some automated test cases.<br />
For that I'd like DreamShell to download an iso file from a plain http server and run it at startup instead of showing the main menu.<br />
<br />
So I'm trying to edit the DS/lua/startup.lua file:<br />
<br />
<div class="codeblock">
<div class="title">Код:<br />
</div><div class="body" dir="ltr"><code>-----------------------------------------<br />
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-- @name:&nbsp;&nbsp;&nbsp;&nbsp; Startup script&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-- @author:&nbsp;&nbsp; SWAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;--<br />
-- @url:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.dc-swat.ru&nbsp;&nbsp;&nbsp;&nbsp;--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --<br />
-----------------------------------------<br />
--<br />
-- Internal DreamShell lua functions:<br />
-- <br />
--&nbsp;&nbsp;&nbsp;&nbsp;OpenModule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open module file and return ID<br />
--&nbsp;&nbsp;&nbsp;&nbsp;CloseModule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close module by ID<br />
--&nbsp;&nbsp;&nbsp;&nbsp;GetModuleByName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get module ID by module NAME<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;AddApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add app by XML file, return app NAME<br />
--&nbsp;&nbsp;&nbsp;&nbsp;OpenApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open app by NAME (second argument for args)<br />
--&nbsp;&nbsp;&nbsp;&nbsp;CloseApp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Close app by NAME (second argument for change unload flag)<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;ShowConsole<br />
--&nbsp;&nbsp;&nbsp;&nbsp;HideConsole<br />
--&nbsp;&nbsp;&nbsp;&nbsp;SetDebugIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set the debug output (scif, dclsocket, fb, ds, sd). By default is ds.<br />
--&nbsp;&nbsp;&nbsp;&nbsp;Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep in current thread (in ms)<br />
--&nbsp;&nbsp;&nbsp;&nbsp;MapleAttached&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Check for attached maple device<br />
--<br />
--&nbsp;&nbsp;&nbsp;&nbsp;Bit library:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bit.or, bit.and, bit.not, bit.xor<br />
--&nbsp;&nbsp;&nbsp;&nbsp;File system library:&nbsp;&nbsp; lfs.chdir, lfs.currentdir, lfs.dir, lfs.mkdir, lfs.rmdir<br />
--&nbsp;&nbsp;&nbsp;&nbsp;<br />
------------------------------------------<br />
<br />
local DreamShell = {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;initialized = false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;modules = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"tolua",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"tolua_2plus",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaDS",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaKOS",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSDL",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaGUI",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaMXML",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSTD",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: tolua<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"sqlite3",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaSQL",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: sqlite3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"luaSocket",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"luaTask",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bzip2",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"minilzo",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"zip",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: bzip2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"httpd",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"telnetd",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"mongoose",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ppp",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"mpg123",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"oggvorbis",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"adx",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"s3m",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"wav",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"xvid",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"SDL_mixer",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: oggvorbis<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ffmpeg",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: oggvorbis, mpg123, bzip2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"opengl",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isofs",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: minilzo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isoldr"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Depends: isofs<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"SDL_net",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"opkg",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Depends: minilzo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"aicaos",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"gumbo",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ini",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bflash",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"openssl",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"bitcoin",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"quirc",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--"ftpd"<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Initialize = function(self)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.execute("env USER Default");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local path = os.getenv("PATH");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(os.getenv("HOST") .. " " .. os.getenv("VERSION") .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(os.getenv("ARCH") .. ": " .. os.getenv("BOARD_ID") .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Date: " .. os.date() .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Base path: " .. path .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("User: " .. os.getenv("USER") .. "&#92;n");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local emu = os.getenv("EMU");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if emu ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("Emulator: " .. emu .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("&#92;n");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not MapleAttached("Keyboard") then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(self.modules, "vkb");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.foreach(self.modules, function(k, name)&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_PROCESS: Loading module " .. name .. "...&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not OpenModule(path .. "/modules/" .. name .. ".klf") then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_ERROR: Can't load module " .. path .. "/modules/" .. name .. ".klf&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self:InstallingApps(path .. "/apps");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.initialized = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Setup network<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.execute("net --init");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# disable FTP server for now<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--os.execute("ftpd -s -p 21 -d /");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# try and download my file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;socket = require("socket")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http = require("socket.http")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ltn12 = require("ltn12")<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local file = ltn12.sink.file(io.open('/ide/GAMES/mygame/game.iso', 'w'))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http.request {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url = 'http://myserver/myfile.iso',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sink = file,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Run isoloader but I don't know how...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenApp(os.getenv("APP"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;end,<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;InstallingApps = function(self, path)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_PROCESS: Installing apps...&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local name = nil;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local list = {};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ent in lfs.dir(path) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ent ~= nil and ent.name ~= ".." and ent.name ~= "." and ent.attr ~= 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(list, ent.name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.sort(list, function(a, b) return a &gt; b end);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for index, directory in ipairs(list) do<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name = AddApp(path .. "/" .. directory .. "/app.xml");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not name then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_ERROR: " .. directory .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("DS_OK: " .. name .. "&#92;n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
};<br />
<br />
if not DreamShell.initialized then<br />
&nbsp;&nbsp;&nbsp;&nbsp;DreamShell:Initialize();<br />
end</code></div></div>
<br />
As you can see I didn't got very far.<br />
<br />
Any help would be greatly appreciated.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Need help building Dreamshell]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4095.html</link>
			<pubDate>Tue, 25 Jun 2024 20:30:43 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4095.html</guid>
			<description><![CDATA[Привет Сват! Long time no see, надеюсь у тебя все в порядке!<br />
<br />
Пытаюсь собрать дримшел.<br />
Все делал по инструкции, валится на линковке символов, но порт libbzip2 собран.<br />
<br />
<blockquote><cite>Цитата:</cite>root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# source ../environ.sh <br />
root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# make<br />
rm -f 1DS_CORE.BIN DS_CORE.BIN DS.elf DS.cdi<br />
rm -f /usr/local/dc/kos/kos/ds/src/main.o<br />
rm -f romdisk.*<br />
rm -rf romdisk/.* 2&gt; /dev/null || true<br />
kos-cc  -c /usr/local/dc/kos/kos/ds/src/main.c -o /usr/local/dc/kos/kos/ds/src/main.o<br />
/usr/local/dc/kos/kos/utils/genromfs/genromfs -f romdisk.img -d romdisk -v -x .svn -x .keepme<br />
0    rom 1719346980       [0xffffffff, 0xffffffff] 37777777777, sz     0, at 0x0     <br />
1    .                    [0x860     , 0x60e3    ] 0040775, sz     0, at 0x20    <br />
1    ..                   [0x860     , 0xbd3     ] 0040775, sz     0, at 0x40     [link to 0x20    ]<br />
1    logo.kmg.gz          [0x860     , 0x60e4    ] 0100664, sz 31403, at 0x60    <br />
1    startup.raw.gz       [0x860     , 0x60e5    ] 0100664, sz 205731, at 0x7b30  <br />
/usr/local/dc/kos/kos/utils/bin2o/bin2o romdisk.img romdisk romdisk_tmp.o<br />
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -o romdisk.o -r romdisk_tmp.o -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -Wl,--whole-archive -lromdiskbase<br />
rm romdisk_tmp.o<br />
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec  -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g -I/usr/local/dc/kos/kos/ds/sdk/include -I/usr/local/dc/kos/kos/ds/sdk/include/SDL -DTARGET_NAME=DreamShell_v4.0.0_Release -DDS_ARCH_DC -Wno-nonnull-compare -Wno-stringop-truncation -Wno-stringop-overflow -Wno-format-truncation -Wno-format-overflow -Wno-restrict -I/usr/local/dc/kos/kos/ds/include -I/usr/local/dc/kos/kos/ds/include/SDL -I/usr/local/dc/kos/kos/ds/include/fatfs -DHAVE_SDLIMAGE -DVER_MAJOR=4 -DVER_MINOR=0 -DVER_MICRO=0 -DVER_BUILD=0x30 -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec  -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g  -m4-single-only -ml -Wl,-Ttext=0x8c010000 -Wl,--gc-sections -T/usr/local/dc/kos/kos/utils/ldscripts/shlelf.xc -nodefaultlibs -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/lib -o DS.elf \<br />
        /usr/local/dc/kos/kos/ds/src/main.o /usr/local/dc/kos/kos/ds/src/video.o /usr/local/dc/kos/kos/ds/src/console.o /usr/local/dc/kos/kos/ds/src/gui/gui.o /usr/local/dc/kos/kos/ds/src/commands.o /usr/local/dc/kos/kos/ds/src/module.o /usr/local/dc/kos/kos/ds/src/events.o /usr/local/dc/kos/kos/ds/src/fs/fs.o /usr/local/dc/kos/kos/ds/src/lua/lua.o /usr/local/dc/kos/kos/ds/src/lua/lua_ds.o /usr/local/dc/kos/kos/ds/src/lua/packlib.o /usr/local/dc/kos/kos/ds/src/app/app.o /usr/local/dc/kos/kos/ds/src/app/load.o /usr/local/dc/kos/kos/ds/src/list.o /usr/local/dc/kos/kos/ds/src/img/pvr.o /usr/local/dc/kos/kos/ds/src/cmd_elf.o /usr/local/dc/kos/kos/ds/src/vmu/vmu.o /usr/local/dc/kos/kos/ds/src/irq/exceptions.o /usr/local/dc/kos/kos/ds/src/irq/setjmp.o /usr/local/dc/kos/kos/ds/src/settings.o /usr/local/dc/kos/kos/ds/src/sfx.o /usr/local/dc/kos/kos/ds/src/drivers/spi.o /usr/local/dc/kos/kos/ds/src/drivers/sd.o /usr/local/dc/kos/kos/ds/src/drivers/enc28j60.o /usr/local/dc/kos/kos/ds/src/drivers/asic.o /usr/local/dc/kos/kos/ds/src/drivers/rtc.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/SDL_gui.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Exception.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Object.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Surface.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Font.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Callback.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Drawable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Screen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Widget.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Container.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TrueTypeFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Layout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Panel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/CardStack.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastLabel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Label.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Picture.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TextEntry.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Button.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ToggleButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ProgressBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractTable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ListBox.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/VBoxLayout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RealScreen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollPanel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RTF.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Window.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FileManager.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/SDL_console.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/DT_drawtext.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/internal.o /usr/local/dc/kos/kos/ds/src/utils.o /usr/local/dc/kos/kos/ds/src/utils/gmtime.o /usr/local/dc/kos/kos/ds/src/utils/strftime.o /usr/local/dc/kos/kos/ds/src/utils/debug_console.o /usr/local/dc/kos/kos/ds/src/utils/memcpy.op /usr/local/dc/kos/kos/ds/src/utils/memset.op /usr/local/dc/kos/kos/ds/src/utils/memmove.op /usr/local/dc/kos/kos/ds/src/fs/fat/utils.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/ccsbcs.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/syscall.o /usr/local/dc/kos/kos/ds/src/fs/fat/ff.o /usr/local/dc/kos/kos/ds/src/fs/fat/dc.o /usr/local/dc/kos/kos/ds/src/exports.o /usr/local/dc/kos/kos/ds/src/exports_gcc.o romdisk.o  -lcfg -lmxml -lparallax -lSDL_1.2.13 -lSDL_image_1.2.12 -lSDL_ttf_2.0.11 -lSDL_rtf_0.1.1 -lSDL_gfx_2.0.25 -lfreetype -lkmg -ljpeg -lpng -lz -llua_5.1.4-2 -lkosext2fs -lkosutils -lstdc++ -lm -Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_stream_close':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:440<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_close+0x50): undefined reference to `BZ2_bzDecompressEnd'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_fill_input':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:262<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_file_fill_output+0xd0): undefined reference to `BZ2_bzDecompress'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_io':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_io+0x110): undefined reference to `BZ2_bzDecompressEnd'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_io+0x114): undefined reference to `BZ2_bzDecompressInit'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `FT_Stream_OpenBzip2':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:493<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.FT_Stream_OpenBzip2+0x118): undefined reference to `BZ2_bzDecompressInit'<br />
collect2: error: ld returned 1 exit status</blockquote>
]]></description>
			<content:encoded><![CDATA[Привет Сват! Long time no see, надеюсь у тебя все в порядке!<br />
<br />
Пытаюсь собрать дримшел.<br />
Все делал по инструкции, валится на линковке символов, но порт libbzip2 собран.<br />
<br />
<blockquote><cite>Цитата:</cite>root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# source ../environ.sh <br />
root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# make<br />
rm -f 1DS_CORE.BIN DS_CORE.BIN DS.elf DS.cdi<br />
rm -f /usr/local/dc/kos/kos/ds/src/main.o<br />
rm -f romdisk.*<br />
rm -rf romdisk/.* 2&gt; /dev/null || true<br />
kos-cc  -c /usr/local/dc/kos/kos/ds/src/main.c -o /usr/local/dc/kos/kos/ds/src/main.o<br />
/usr/local/dc/kos/kos/utils/genromfs/genromfs -f romdisk.img -d romdisk -v -x .svn -x .keepme<br />
0    rom 1719346980       [0xffffffff, 0xffffffff] 37777777777, sz     0, at 0x0     <br />
1    .                    [0x860     , 0x60e3    ] 0040775, sz     0, at 0x20    <br />
1    ..                   [0x860     , 0xbd3     ] 0040775, sz     0, at 0x40     [link to 0x20    ]<br />
1    logo.kmg.gz          [0x860     , 0x60e4    ] 0100664, sz 31403, at 0x60    <br />
1    startup.raw.gz       [0x860     , 0x60e5    ] 0100664, sz 205731, at 0x7b30  <br />
/usr/local/dc/kos/kos/utils/bin2o/bin2o romdisk.img romdisk romdisk_tmp.o<br />
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -o romdisk.o -r romdisk_tmp.o -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -Wl,--whole-archive -lromdiskbase<br />
rm romdisk_tmp.o<br />
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec  -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g -I/usr/local/dc/kos/kos/ds/sdk/include -I/usr/local/dc/kos/kos/ds/sdk/include/SDL -DTARGET_NAME=DreamShell_v4.0.0_Release -DDS_ARCH_DC -Wno-nonnull-compare -Wno-stringop-truncation -Wno-stringop-overflow -Wno-format-truncation -Wno-format-overflow -Wno-restrict -I/usr/local/dc/kos/kos/ds/include -I/usr/local/dc/kos/kos/ds/include/SDL -I/usr/local/dc/kos/kos/ds/include/fatfs -DHAVE_SDLIMAGE -DVER_MAJOR=4 -DVER_MINOR=0 -DVER_MICRO=0 -DVER_BUILD=0x30 -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec  -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g  -m4-single-only -ml -Wl,-Ttext=0x8c010000 -Wl,--gc-sections -T/usr/local/dc/kos/kos/utils/ldscripts/shlelf.xc -nodefaultlibs -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/lib -o DS.elf \<br />
        /usr/local/dc/kos/kos/ds/src/main.o /usr/local/dc/kos/kos/ds/src/video.o /usr/local/dc/kos/kos/ds/src/console.o /usr/local/dc/kos/kos/ds/src/gui/gui.o /usr/local/dc/kos/kos/ds/src/commands.o /usr/local/dc/kos/kos/ds/src/module.o /usr/local/dc/kos/kos/ds/src/events.o /usr/local/dc/kos/kos/ds/src/fs/fs.o /usr/local/dc/kos/kos/ds/src/lua/lua.o /usr/local/dc/kos/kos/ds/src/lua/lua_ds.o /usr/local/dc/kos/kos/ds/src/lua/packlib.o /usr/local/dc/kos/kos/ds/src/app/app.o /usr/local/dc/kos/kos/ds/src/app/load.o /usr/local/dc/kos/kos/ds/src/list.o /usr/local/dc/kos/kos/ds/src/img/pvr.o /usr/local/dc/kos/kos/ds/src/cmd_elf.o /usr/local/dc/kos/kos/ds/src/vmu/vmu.o /usr/local/dc/kos/kos/ds/src/irq/exceptions.o /usr/local/dc/kos/kos/ds/src/irq/setjmp.o /usr/local/dc/kos/kos/ds/src/settings.o /usr/local/dc/kos/kos/ds/src/sfx.o /usr/local/dc/kos/kos/ds/src/drivers/spi.o /usr/local/dc/kos/kos/ds/src/drivers/sd.o /usr/local/dc/kos/kos/ds/src/drivers/enc28j60.o /usr/local/dc/kos/kos/ds/src/drivers/asic.o /usr/local/dc/kos/kos/ds/src/drivers/rtc.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/SDL_gui.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Exception.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Object.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Surface.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Font.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Callback.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Drawable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Screen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Widget.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Container.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TrueTypeFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Layout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Panel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/CardStack.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastLabel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Label.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Picture.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TextEntry.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Button.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ToggleButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ProgressBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractTable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ListBox.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/VBoxLayout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RealScreen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollPanel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RTF.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Window.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FileManager.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/SDL_console.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/DT_drawtext.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/internal.o /usr/local/dc/kos/kos/ds/src/utils.o /usr/local/dc/kos/kos/ds/src/utils/gmtime.o /usr/local/dc/kos/kos/ds/src/utils/strftime.o /usr/local/dc/kos/kos/ds/src/utils/debug_console.o /usr/local/dc/kos/kos/ds/src/utils/memcpy.op /usr/local/dc/kos/kos/ds/src/utils/memset.op /usr/local/dc/kos/kos/ds/src/utils/memmove.op /usr/local/dc/kos/kos/ds/src/fs/fat/utils.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/ccsbcs.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/syscall.o /usr/local/dc/kos/kos/ds/src/fs/fat/ff.o /usr/local/dc/kos/kos/ds/src/fs/fat/dc.o /usr/local/dc/kos/kos/ds/src/exports.o /usr/local/dc/kos/kos/ds/src/exports_gcc.o romdisk.o  -lcfg -lmxml -lparallax -lSDL_1.2.13 -lSDL_image_1.2.12 -lSDL_ttf_2.0.11 -lSDL_rtf_0.1.1 -lSDL_gfx_2.0.25 -lfreetype -lkmg -ljpeg -lpng -lz -llua_5.1.4-2 -lkosext2fs -lkosutils -lstdc++ -lm -Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_stream_close':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:440<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_close+0x50): undefined reference to `BZ2_bzDecompressEnd'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_fill_input':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:262<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_file_fill_output+0xd0): undefined reference to `BZ2_bzDecompress'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_io':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_io+0x110): undefined reference to `BZ2_bzDecompressEnd'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.ft_bzip2_stream_io+0x114): undefined reference to `BZ2_bzDecompressInit'<br />
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `FT_Stream_OpenBzip2':<br />
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:493<img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />.text.FT_Stream_OpenBzip2+0x118): undefined reference to `BZ2_bzDecompressInit'<br />
collect2: error: ld returned 1 exit status</blockquote>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Development of a new menu]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4089.html</link>
			<pubDate>Wed, 05 Jun 2024 00:09:06 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4089.html</guid>
			<description><![CDATA[Hi Swat,<br />
<br />
I made a menu with tsunami libraries by Dan Potter, I can create the cdi and test it in the emulator but when I try to create an application in DreamShell it hits and errors, because they are "cpp" files that I have not been able to compile it, I do it with:<br />
<br />
kos-c++ -o &#36;(TARGET) &#36;(OBJS) -ltsunami -lstdc++ -lparallax -lpng -ljpeg -lkmg -lz -lkosutils -lm<br />
<br />
(I put the tsunami library and compiled it inside the libs folder, I had no problems with this, it was fast.)<br />
<br />
but dreamshell only uses C <img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />, can you help me?<br />
<br />
I already moved it to the Makefile application and Makefile.loadable many times.<br />
<br />
This is the menu, it is a prototype.<br />
<a href="https://youtu.be/cdckXFmu0Mg" target="_blank">https://youtu.be/cdckXFmu0Mg</a>]]></description>
			<content:encoded><![CDATA[Hi Swat,<br />
<br />
I made a menu with tsunami libraries by Dan Potter, I can create the cdi and test it in the emulator but when I try to create an application in DreamShell it hits and errors, because they are "cpp" files that I have not been able to compile it, I do it with:<br />
<br />
kos-c++ -o &#36;(TARGET) &#36;(OBJS) -ltsunami -lstdc++ -lparallax -lpng -ljpeg -lkmg -lz -lkosutils -lm<br />
<br />
(I put the tsunami library and compiled it inside the libs folder, I had no problems with this, it was fast.)<br />
<br />
but dreamshell only uses C <img src="images/smilies/sad.gif" style="vertical-align: middle;" border="0" alt="Sad" title="Sad" />, can you help me?<br />
<br />
I already moved it to the Makefile application and Makefile.loadable many times.<br />
<br />
This is the menu, it is a prototype.<br />
<a href="https://youtu.be/cdckXFmu0Mg" target="_blank">https://youtu.be/cdckXFmu0Mg</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DreamShell dev environment setup on macOS]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4035.html</link>
			<pubDate>Sun, 20 Aug 2023 19:27:40 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4035.html</guid>
			<description><![CDATA[Hi @Swat,<br />
<br />
I am trying to install Dreamshell Setup Environment on MacOs but in the "Packages" and "SDK" section it shows an error.<br />
<br />
<span style="font-weight: bold;">Packages</span>, does not exists:<br />
genisoimage squashfs-tools, libpng-dev libjpeg-dev liblzo2-dev liblua5.2-dev<br />
I'm trying to install them with Brew but it can't find them.<br />
<br />
<span style="font-weight: bold;">Code</span> section it's OK<br />
<span style="font-weight: bold;">Toolchain</span> section it's OK<br />
<br />
<span style="font-weight: bold;">SDK</span> in this instruction: "make &amp;&amp; cd ../kos-ports &amp;&amp; ./utils/build-all.sh"<br />
<br />
Building /usr/local/dc/kos/kos/../kos-ports/freetype...<br />
freetype is not currently installed.<br />
freetype requires zlib to be installed. Building...<br />
zlib is not currently installed.<br />
Finished processing dependencies for zlib.<br />
File "zlib-1.2.13.tar.gz" is incorrect size (expected 1497445)<br />
make[1]: *** [validate-dist] Error 1<br />
make: *** [depends-check] Error 1<br />
<br />
I have installed freetype with Brew manually but still the error.<br />
<br />
Please help.. <img src="images/smilies/biggrin.gif" style="vertical-align: middle;" border="0" alt="Big Grin" title="Big Grin" />]]></description>
			<content:encoded><![CDATA[Hi @Swat,<br />
<br />
I am trying to install Dreamshell Setup Environment on MacOs but in the "Packages" and "SDK" section it shows an error.<br />
<br />
<span style="font-weight: bold;">Packages</span>, does not exists:<br />
genisoimage squashfs-tools, libpng-dev libjpeg-dev liblzo2-dev liblua5.2-dev<br />
I'm trying to install them with Brew but it can't find them.<br />
<br />
<span style="font-weight: bold;">Code</span> section it's OK<br />
<span style="font-weight: bold;">Toolchain</span> section it's OK<br />
<br />
<span style="font-weight: bold;">SDK</span> in this instruction: "make &amp;&amp; cd ../kos-ports &amp;&amp; ./utils/build-all.sh"<br />
<br />
Building /usr/local/dc/kos/kos/../kos-ports/freetype...<br />
freetype is not currently installed.<br />
freetype requires zlib to be installed. Building...<br />
zlib is not currently installed.<br />
Finished processing dependencies for zlib.<br />
File "zlib-1.2.13.tar.gz" is incorrect size (expected 1497445)<br />
make[1]: *** [validate-dist] Error 1<br />
make: *** [depends-check] Error 1<br />
<br />
I have installed freetype with Brew manually but still the error.<br />
<br />
Please help.. <img src="images/smilies/biggrin.gif" style="vertical-align: middle;" border="0" alt="Big Grin" title="Big Grin" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Lua 5.4]]></title>
			<link>http://www.dc-swat.ru/forum/thread-4008.html</link>
			<pubDate>Sat, 18 Feb 2023 13:50:02 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-4008.html</guid>
			<description><![CDATA[Greetings! First of all, I'm a big fan of DreamShell as both a user who has enjoyed its features and as a developer who has a lot of respect for how ambitious and impressive the project and its codebase are! The module system is really very well architected, and I find it really impressive work too.<br />
<br />
I'm also a fellow Lua developer and enthusiast and wanted to run something by you. I noticed that the Lua version included within DreamShell is only version 5.1, I believe. I'm not sure if you've ever considered upgrading or have had any interest in it. It's true that a few things might have to change, involving how the ENV variable works for sandboxed scripts, but I wanted to make you aware of a few things that I've found really beneficial with current Lua 5.4 and Dreamcast:<br />
<br />
1) <span style="font-weight: bold;">Performance</span><br />
It's actually quite hard to find any good benchmarks between Lua versions that aren't just LuaJIT, but in my research, it seems as though Lua5.4 performs the best of the modern Lua revisions, and is definitely the faster than 5.2 and 5.3: <a href="https://eklausmeier.goip.de/blog/2020/05-14-performance-comparison-pallene-vs-lua-5-1-5-2-5-3-5-4-vs-c/" target="_blank">https://eklausmeier.goip.de/blog/2020/05...-5-4-vs-c/</a><br />
<br />
2) <span style="font-weight: bold;">Builtin Integral Types</span><br />
Starting with Lua5.3, Lua now supports integers as first-party types, so all numbers no longer have to be floats. This has performance and precision implications, but for us its also very useful for when you're binding low-level code that tends to require bitwise operation and arithmetic. Bitwise operators are now supported within the language itself: <a href="https://www.lua.org/manual/5.4/manual.html#3.4.2" target="_blank">https://www.lua.org/manual/5.4/manual.html#3.4.2</a> and don't require external libraries or bindings to do it in C. <br />
<br />
3) <span style="font-weight: bold;">List of New Features</span><br />
Here's a high-level list of new features for each revision from Lua's site which you might be interested in:<br />
<br />
<span style="text-decoration: underline;">Lua 5.2</span>:<ul>
<li>yieldable pcall and metamethods</li>
<li>new lexical scheme for globals</li>
<li>ephemeron tables</li>
<li>light C functions</li>
<li>emergency garbage collector</li>
<li>goto statement</li>
<li>finalizers for tables</li></ul>
<br />
<span style="text-decoration: underline;">Lua 5.3</span>:<ul>
<li>integers (64-bit by default)</li>
<li>official support for 32-bit numbers</li>
<li>bitwise operators</li>
<li>basic utf-8 support</li>
<li>functions for packing and unpacking values<br />
</li></ul>
<br />
<span style="text-decoration: underline;">Lua 5.4</span>:<ul>
<li>new generational mode for garbage collection</li>
<li>to-be-closed variables</li>
<li>const variables</li>
<li>userdata can have multiple user values</li>
<li>new implementation for math.random</li>
<li>warning system</li>
<li>debug information about function arguments and returns</li>
<li>new semantics for the integer 'for' loop</li>
<li>optional 'init' argument to 'string.gmatch'</li>
<li>new functions 'lua_resetthread' and 'coroutine.close'</li>
<li>string-to-number coercions moved to the string library</li>
<li>allocation function allowed to fail when shrinking a memory block</li>
<li>new format '%p' in 'string.format'</li>
<li>utf8 library accepts codepoints up to 2^31<br />
</li></ul>
<br />
4) <span style="font-weight: bold;">Emergency Garbage Collection Sweep</span><br />
One thing that I think is really useful and cool for us on DC and embedded devices is the "emergency GC sweeping" that as introduced in Lua5.2. Now, if the device ever runs out of memory (malloc() call fails and returns NULL), Lua will gracefully attempt to free any unused memory before trying again.<br />
<br />
KOS actually had a problem with this not working previously, because we were always aborting the system when we ran out of memory, but we just pushed a PR to stop doing that, so that malloc() will return NULL in C, C++ will raise its std::bad_alloc exceptions, Lua will do its emergency sweeps, etc. Here's the PR on the KOS repo with the change as well as a new KOS example I wrote illustrating gracefully handling allocation failure in C++: <a href="https://github.com/KallistiOS/KallistiOS/commit/352cb529d8f192a327e74bbf8e3fea8e8693f9ea" target="_blank">https://github.com/KallistiOS/KallistiOS...8e8693f9ea</a><br />
<br />
Anyway, I wasn't sure if you had any compelling reasons to stick to Lua 5.1, or if you just hadn't really look into what the new revisions have to offer. Definitely a few things will have to change from 5.1 to 5.2, but virtually nothing has changed from 5.2 to 5.4 in terms of the C API and user libs. I do believe it could bring you runtime performance improvements and other benefits, but I'm not sure if perhaps the binary file size for the VM might be larger now. <br />
<br />
Thank you for your time, and as always, please keep up the amazing work! I'm both a user and a fan!]]></description>
			<content:encoded><![CDATA[Greetings! First of all, I'm a big fan of DreamShell as both a user who has enjoyed its features and as a developer who has a lot of respect for how ambitious and impressive the project and its codebase are! The module system is really very well architected, and I find it really impressive work too.<br />
<br />
I'm also a fellow Lua developer and enthusiast and wanted to run something by you. I noticed that the Lua version included within DreamShell is only version 5.1, I believe. I'm not sure if you've ever considered upgrading or have had any interest in it. It's true that a few things might have to change, involving how the ENV variable works for sandboxed scripts, but I wanted to make you aware of a few things that I've found really beneficial with current Lua 5.4 and Dreamcast:<br />
<br />
1) <span style="font-weight: bold;">Performance</span><br />
It's actually quite hard to find any good benchmarks between Lua versions that aren't just LuaJIT, but in my research, it seems as though Lua5.4 performs the best of the modern Lua revisions, and is definitely the faster than 5.2 and 5.3: <a href="https://eklausmeier.goip.de/blog/2020/05-14-performance-comparison-pallene-vs-lua-5-1-5-2-5-3-5-4-vs-c/" target="_blank">https://eklausmeier.goip.de/blog/2020/05...-5-4-vs-c/</a><br />
<br />
2) <span style="font-weight: bold;">Builtin Integral Types</span><br />
Starting with Lua5.3, Lua now supports integers as first-party types, so all numbers no longer have to be floats. This has performance and precision implications, but for us its also very useful for when you're binding low-level code that tends to require bitwise operation and arithmetic. Bitwise operators are now supported within the language itself: <a href="https://www.lua.org/manual/5.4/manual.html#3.4.2" target="_blank">https://www.lua.org/manual/5.4/manual.html#3.4.2</a> and don't require external libraries or bindings to do it in C. <br />
<br />
3) <span style="font-weight: bold;">List of New Features</span><br />
Here's a high-level list of new features for each revision from Lua's site which you might be interested in:<br />
<br />
<span style="text-decoration: underline;">Lua 5.2</span>:<ul>
<li>yieldable pcall and metamethods</li>
<li>new lexical scheme for globals</li>
<li>ephemeron tables</li>
<li>light C functions</li>
<li>emergency garbage collector</li>
<li>goto statement</li>
<li>finalizers for tables</li></ul>
<br />
<span style="text-decoration: underline;">Lua 5.3</span>:<ul>
<li>integers (64-bit by default)</li>
<li>official support for 32-bit numbers</li>
<li>bitwise operators</li>
<li>basic utf-8 support</li>
<li>functions for packing and unpacking values<br />
</li></ul>
<br />
<span style="text-decoration: underline;">Lua 5.4</span>:<ul>
<li>new generational mode for garbage collection</li>
<li>to-be-closed variables</li>
<li>const variables</li>
<li>userdata can have multiple user values</li>
<li>new implementation for math.random</li>
<li>warning system</li>
<li>debug information about function arguments and returns</li>
<li>new semantics for the integer 'for' loop</li>
<li>optional 'init' argument to 'string.gmatch'</li>
<li>new functions 'lua_resetthread' and 'coroutine.close'</li>
<li>string-to-number coercions moved to the string library</li>
<li>allocation function allowed to fail when shrinking a memory block</li>
<li>new format '%p' in 'string.format'</li>
<li>utf8 library accepts codepoints up to 2^31<br />
</li></ul>
<br />
4) <span style="font-weight: bold;">Emergency Garbage Collection Sweep</span><br />
One thing that I think is really useful and cool for us on DC and embedded devices is the "emergency GC sweeping" that as introduced in Lua5.2. Now, if the device ever runs out of memory (malloc() call fails and returns NULL), Lua will gracefully attempt to free any unused memory before trying again.<br />
<br />
KOS actually had a problem with this not working previously, because we were always aborting the system when we ran out of memory, but we just pushed a PR to stop doing that, so that malloc() will return NULL in C, C++ will raise its std::bad_alloc exceptions, Lua will do its emergency sweeps, etc. Here's the PR on the KOS repo with the change as well as a new KOS example I wrote illustrating gracefully handling allocation failure in C++: <a href="https://github.com/KallistiOS/KallistiOS/commit/352cb529d8f192a327e74bbf8e3fea8e8693f9ea" target="_blank">https://github.com/KallistiOS/KallistiOS...8e8693f9ea</a><br />
<br />
Anyway, I wasn't sure if you had any compelling reasons to stick to Lua 5.1, or if you just hadn't really look into what the new revisions have to offer. Definitely a few things will have to change from 5.1 to 5.2, but virtually nothing has changed from 5.2 to 5.4 in terms of the C API and user libs. I do believe it could bring you runtime performance improvements and other benefits, but I'm not sure if perhaps the binary file size for the VM might be larger now. <br />
<br />
Thank you for your time, and as always, please keep up the amazing work! I'm both a user and a fan!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Memory Layout]]></title>
			<link>http://www.dc-swat.ru/forum/thread-3799.html</link>
			<pubDate>Fri, 27 Nov 2020 19:55:23 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-3799.html</guid>
			<description><![CDATA[Reproducing below <a href="http://www.dc-swat.ru/forum/thread-2646-post-41048.html#pid41048" target="_blank">a post</a> by @swat<br />
which is a treasure trove of information when it comes to memory addressing on Dreamcast.<br />
<br />
I have a few follow up questions, but I presume many users will be uninterested by these technical details,<br />
so it felt more appropriate in the "programmer" section.<br />
<br />
<blockquote><cite><span> (27.11.2020 07:42)</span>SWAT писал(а): <a href="http://www.dc-swat.ru/forum/post-41048.html#pid41048" class="quick_jump">&nbsp;</a></cite><span style="font-weight: bold;">Loader memory usage:</span><br />
params (1KB) + loader code (nKB) + buffer (32KB - params - loader). Max 32KB.<br />
<br />
In best case, for buffer need 2KB (one sector). This buffer uses only for non-optimized images and little for CDDA (track name). So the loader should be less than 29KB.<br />
In future this buffer I will made as *dynamic* too, but it's working not in all games yet.<br />
<br />
Also loader uses additional memory (up to 32KB) for CDDA and/or CISO buffers.<br />
For CDDA now supported dynamic, for CISO still not, it uses only hardcoded addresses.<br />
And CDDA can use hardcoded addresses if dynamic disabled (not supported).<br />
You can see here:<br />
<a href="https://github.com/DC-SWAT/DreamShell/blob/master/firmware/isoldr/loader/cdda.c?ts=4#L220" target="_blank">https://github.com/DC-SWAT/DreamShell/bl...?ts=4#L220</a><br />
<br />
<span style="font-weight: bold;">Application (KATANA game) memory usage:</span><br />
Params: 0x8c000000 - 0x8c000100 (also here vectors for syscalls)<br />
Syscalls: 0x8c000100 - 0x8c004000<br />
Stack: 0x8c004000 - 0x8c00f400 (in some cases at 0x8d000000)<br />
VBR: 0x8c00f400 - 0x8c010000 (in some cases in heap)<br />
App binary: 0x8c010000 - ???<br />
Heap: ??? - 0x8d000000<br />
<br />
So we can place loader (and buffers) in the heap (carefully with stack if it's at the end) or at 0x8c000100 - 0x8c004000 because loader can emulate all syscalls.<br />
Best choice it's a 0x8c004000, we don't touch original syscalls (just change some vectors) and don't conflict with game, because stack here is usually does not grow much and VBR code block is 3KB, so we should have ~ 32KB for free.<br />
But some games can write in this memory area some "loaders" or stack grow so much and do damage loader code. So we should move loader at high memory (heap) and hopes we are lucky <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /></blockquote>
<br />
First, thanks @swat for these details, it clarified so much.<br />
<br />
Now, "of course", as a programmer understanding more generally means having new questions.<br />
Many are probably well known by dreamcast programmers, and may seem basic to you, sorry in advance, they are just not obvious from a general programmer perspective with no specific knowledge of Dreamcast platform.<br />
<br />
<blockquote><cite>Цитата:</cite>b]Application (KATANA game) memory usage:[/b]<br />
Params: 0x8c000000 - 0x8c000100 (also here vectors for syscalls)<br />
(...)<br />
Heap: ??? - 0x8d000000</blockquote>
<br />
These few lines are packed with information, much of which seems implied. So here are some questions:<br />
<br />
- KATANA game : I presume it means games that use the KATANA game development kit from Sega. It's probably a majority of games, but it also means that games using a different toolkit and set of conventions can work quite differently when it comes to memory layout. For example, maybe Window CE games. And maybe also more modern production using KallistiOS ? Anyway, this merely helps to understand that this is not a "universal" design.<br />
- Params: 0x8c000000 - 0x8c000100 : nit-picking here : this seems to represent 256 bytes ( &lt; 1 KB). Still, likely large enough for parameters (I have no idea how much space "vectors for syscalls" is using, but that's probably irrelevant anyway)<br />
- The entire memory design seems to imply an MMU-less scheme, where memory addresses are directly mapped to the physical RAM<br />
- It seems to imply that 0x8c000000 is "address zero" ?<br />
- The Dreamcast (normal) features 16 MB of RAM, or 0x1000000 in hexadecimal. In a direct addressing scheme, it seems it would go from 0x8c000000 to 0x8d000000. Yet, later in the list, 0x8d000000 is mentioned as a start (?) address for heap (and maybe sometimes for stack). This seems contradictory, unless heap allocation goes _down_ from 0x8d000000.<br />
<br />
<blockquote><cite>Цитата:</cite>Stack: 0x8c004000 - 0x8c00f400 </blockquote>
<br />
This seems to represent a memory space of 64KB - 16 KB (syscalls) - 3 KB (VBR) = 45 KB .<br />
<br />
What initially was unclear to me was "a stack space for _who_?", and I guess it means stack space for the KATANA program.<br />
<br />
<blockquote><cite>Цитата:</cite>So we can place loader (and buffers) (...)<br />
Best choice it's a 0x8c004000, (...) because stack here is usually does not grow much and VBR code block is 3KB, so we should have ~ 32KB for free.</blockquote>
<br />
So the idea here is to "steal away" memory space from the stack, on the ground that it's not entirely used in most cases.<br />
It implies that stack space growth _downward_, from 0x8c00f400 towards 0x8c004000.<br />
I presume this is generally true : in such an environment, programmers should not "toy" with stack space limits, and keep the stack for very basic structures and variables, thus pushing any table or large structure into heap space instead. In the end, they may only need a handful for KB. <br />
But by the very nature of this bet, it's a bit "random", meaning that some games use more stack than others, so some games will overwrite the loader during gameplay. So now it becomes a "by game" setting.<br />
<br />
I guess it explains why 0x8c004000 is "generally fine", except in some cases.<br />
<br />
It also explains why the loader should remain small, although I don't see any hard 32 KB limit here. It seems more like a rule of thumb : using 32 KB for the loader only leaves 13 KB for the game itself, so now it becomes more and more probable that the game will overwrite the loader during gameplay.<br />
<br />
Is that a correct assessment ?]]></description>
			<content:encoded><![CDATA[Reproducing below <a href="http://www.dc-swat.ru/forum/thread-2646-post-41048.html#pid41048" target="_blank">a post</a> by @swat<br />
which is a treasure trove of information when it comes to memory addressing on Dreamcast.<br />
<br />
I have a few follow up questions, but I presume many users will be uninterested by these technical details,<br />
so it felt more appropriate in the "programmer" section.<br />
<br />
<blockquote><cite><span> (27.11.2020 07:42)</span>SWAT писал(а): <a href="http://www.dc-swat.ru/forum/post-41048.html#pid41048" class="quick_jump">&nbsp;</a></cite><span style="font-weight: bold;">Loader memory usage:</span><br />
params (1KB) + loader code (nKB) + buffer (32KB - params - loader). Max 32KB.<br />
<br />
In best case, for buffer need 2KB (one sector). This buffer uses only for non-optimized images and little for CDDA (track name). So the loader should be less than 29KB.<br />
In future this buffer I will made as *dynamic* too, but it's working not in all games yet.<br />
<br />
Also loader uses additional memory (up to 32KB) for CDDA and/or CISO buffers.<br />
For CDDA now supported dynamic, for CISO still not, it uses only hardcoded addresses.<br />
And CDDA can use hardcoded addresses if dynamic disabled (not supported).<br />
You can see here:<br />
<a href="https://github.com/DC-SWAT/DreamShell/blob/master/firmware/isoldr/loader/cdda.c?ts=4#L220" target="_blank">https://github.com/DC-SWAT/DreamShell/bl...?ts=4#L220</a><br />
<br />
<span style="font-weight: bold;">Application (KATANA game) memory usage:</span><br />
Params: 0x8c000000 - 0x8c000100 (also here vectors for syscalls)<br />
Syscalls: 0x8c000100 - 0x8c004000<br />
Stack: 0x8c004000 - 0x8c00f400 (in some cases at 0x8d000000)<br />
VBR: 0x8c00f400 - 0x8c010000 (in some cases in heap)<br />
App binary: 0x8c010000 - ???<br />
Heap: ??? - 0x8d000000<br />
<br />
So we can place loader (and buffers) in the heap (carefully with stack if it's at the end) or at 0x8c000100 - 0x8c004000 because loader can emulate all syscalls.<br />
Best choice it's a 0x8c004000, we don't touch original syscalls (just change some vectors) and don't conflict with game, because stack here is usually does not grow much and VBR code block is 3KB, so we should have ~ 32KB for free.<br />
But some games can write in this memory area some "loaders" or stack grow so much and do damage loader code. So we should move loader at high memory (heap) and hopes we are lucky <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /></blockquote>
<br />
First, thanks @swat for these details, it clarified so much.<br />
<br />
Now, "of course", as a programmer understanding more generally means having new questions.<br />
Many are probably well known by dreamcast programmers, and may seem basic to you, sorry in advance, they are just not obvious from a general programmer perspective with no specific knowledge of Dreamcast platform.<br />
<br />
<blockquote><cite>Цитата:</cite>b]Application (KATANA game) memory usage:[/b]<br />
Params: 0x8c000000 - 0x8c000100 (also here vectors for syscalls)<br />
(...)<br />
Heap: ??? - 0x8d000000</blockquote>
<br />
These few lines are packed with information, much of which seems implied. So here are some questions:<br />
<br />
- KATANA game : I presume it means games that use the KATANA game development kit from Sega. It's probably a majority of games, but it also means that games using a different toolkit and set of conventions can work quite differently when it comes to memory layout. For example, maybe Window CE games. And maybe also more modern production using KallistiOS ? Anyway, this merely helps to understand that this is not a "universal" design.<br />
- Params: 0x8c000000 - 0x8c000100 : nit-picking here : this seems to represent 256 bytes ( &lt; 1 KB). Still, likely large enough for parameters (I have no idea how much space "vectors for syscalls" is using, but that's probably irrelevant anyway)<br />
- The entire memory design seems to imply an MMU-less scheme, where memory addresses are directly mapped to the physical RAM<br />
- It seems to imply that 0x8c000000 is "address zero" ?<br />
- The Dreamcast (normal) features 16 MB of RAM, or 0x1000000 in hexadecimal. In a direct addressing scheme, it seems it would go from 0x8c000000 to 0x8d000000. Yet, later in the list, 0x8d000000 is mentioned as a start (?) address for heap (and maybe sometimes for stack). This seems contradictory, unless heap allocation goes _down_ from 0x8d000000.<br />
<br />
<blockquote><cite>Цитата:</cite>Stack: 0x8c004000 - 0x8c00f400 </blockquote>
<br />
This seems to represent a memory space of 64KB - 16 KB (syscalls) - 3 KB (VBR) = 45 KB .<br />
<br />
What initially was unclear to me was "a stack space for _who_?", and I guess it means stack space for the KATANA program.<br />
<br />
<blockquote><cite>Цитата:</cite>So we can place loader (and buffers) (...)<br />
Best choice it's a 0x8c004000, (...) because stack here is usually does not grow much and VBR code block is 3KB, so we should have ~ 32KB for free.</blockquote>
<br />
So the idea here is to "steal away" memory space from the stack, on the ground that it's not entirely used in most cases.<br />
It implies that stack space growth _downward_, from 0x8c00f400 towards 0x8c004000.<br />
I presume this is generally true : in such an environment, programmers should not "toy" with stack space limits, and keep the stack for very basic structures and variables, thus pushing any table or large structure into heap space instead. In the end, they may only need a handful for KB. <br />
But by the very nature of this bet, it's a bit "random", meaning that some games use more stack than others, so some games will overwrite the loader during gameplay. So now it becomes a "by game" setting.<br />
<br />
I guess it explains why 0x8c004000 is "generally fine", except in some cases.<br />
<br />
It also explains why the loader should remain small, although I don't see any hard 32 KB limit here. It seems more like a rule of thumb : using 32 KB for the loader only leaves 13 KB for the game itself, so now it becomes more and more probable that the game will overwrite the loader during gameplay.<br />
<br />
Is that a correct assessment ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[cso support]]></title>
			<link>http://www.dc-swat.ru/forum/thread-3694.html</link>
			<pubDate>Wed, 18 Mar 2020 06:47:40 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-3694.html</guid>
			<description><![CDATA[I've been looking for *.cso (compressed iso) support on DreamShell.<br />
This capability is mentioned here and there, in a few places, and more importantly, there are traces of this support in many places throughout the code base.<br />
<br />
However, every time I tried to load a .cso file, it resulted in a crash.<br />
<br />
I was lucky enough to receive a hint from @ChristinaDreamcustDC, stating that .cso support might have been dropped in recent versions of DreamShell.<br />
There is, indeed, one short line on the topic in the middle of RC4 release note, firmware section :<br />
<br />
&gt; Removed support for CSO in IDE loader to save memory =(<br />
<br />
So that's interesting for a few reasons : <br />
<br />
1) I'm not using IDE, but a SD Card reader on serial port. From the spelling, one could believe that it should not be impacted by the change on IDE, since after all, within `DS/firmware/isoldr`, there are distinct `ide.bin` and `sd.bin` files.<br />
<br />
Well, the Serial Port config is clearly impacted. To confirm, I downloaded RC3, and attempted again to load the *.cso file. This time it worked.<br />
<br />
So something broke support of *.cso files for all storage types in RC4.<br />
<br />
2) "to save memory"<br />
<br />
OK, this one is even more interesting. I've been looking at the code in `modules/isofs` pretty closely, and, provided that the *.cso file is using LZO compression, there is nothing that makes it consume more memory than a direct read on *.iso file. LZO decompression only costs a handful of stack variables, nothing significant.<br />
<br />
Note that this is fairly different from zlib compression, where there is a state, which costs memory. I want to underline that I'm targeting LZO-compressed *.cso file as my primary application, precisely because it costs less memory and cpu at decompression time.<br />
<br />
3) The code is still there.<br />
<br />
As mentioned, I've been looking pretty closely at the code in `isofs`, and a little bit at `isoldr` and `firmware/sd`.<br />
It's pretty clear that the ciso code is still here.<br />
More than that, it's still active, it's not gated, and it ends in the produced binary file, meaning it consumes space, and exposes all expected symbols.<br />
<br />
Yet, I've not found where exactly the *.cso support is disabled, if it is.<br />
<br />
Presuming I would like to re-enable this support, is there a place to look at ?<br />
Can this support be enabled with a simple build flag at compilation time ?<br />
<br />
I'm interested in this topic, and may even provide some patches to improve performance of this code path. That is, if there is a way to test the code changes ....]]></description>
			<content:encoded><![CDATA[I've been looking for *.cso (compressed iso) support on DreamShell.<br />
This capability is mentioned here and there, in a few places, and more importantly, there are traces of this support in many places throughout the code base.<br />
<br />
However, every time I tried to load a .cso file, it resulted in a crash.<br />
<br />
I was lucky enough to receive a hint from @ChristinaDreamcustDC, stating that .cso support might have been dropped in recent versions of DreamShell.<br />
There is, indeed, one short line on the topic in the middle of RC4 release note, firmware section :<br />
<br />
&gt; Removed support for CSO in IDE loader to save memory =(<br />
<br />
So that's interesting for a few reasons : <br />
<br />
1) I'm not using IDE, but a SD Card reader on serial port. From the spelling, one could believe that it should not be impacted by the change on IDE, since after all, within `DS/firmware/isoldr`, there are distinct `ide.bin` and `sd.bin` files.<br />
<br />
Well, the Serial Port config is clearly impacted. To confirm, I downloaded RC3, and attempted again to load the *.cso file. This time it worked.<br />
<br />
So something broke support of *.cso files for all storage types in RC4.<br />
<br />
2) "to save memory"<br />
<br />
OK, this one is even more interesting. I've been looking at the code in `modules/isofs` pretty closely, and, provided that the *.cso file is using LZO compression, there is nothing that makes it consume more memory than a direct read on *.iso file. LZO decompression only costs a handful of stack variables, nothing significant.<br />
<br />
Note that this is fairly different from zlib compression, where there is a state, which costs memory. I want to underline that I'm targeting LZO-compressed *.cso file as my primary application, precisely because it costs less memory and cpu at decompression time.<br />
<br />
3) The code is still there.<br />
<br />
As mentioned, I've been looking pretty closely at the code in `isofs`, and a little bit at `isoldr` and `firmware/sd`.<br />
It's pretty clear that the ciso code is still here.<br />
More than that, it's still active, it's not gated, and it ends in the produced binary file, meaning it consumes space, and exposes all expected symbols.<br />
<br />
Yet, I've not found where exactly the *.cso support is disabled, if it is.<br />
<br />
Presuming I would like to re-enable this support, is there a place to look at ?<br />
Can this support be enabled with a simple build flag at compilation time ?<br />
<br />
I'm interested in this topic, and may even provide some patches to improve performance of this code path. That is, if there is a way to test the code changes ....]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Подтверждение запуская ярлыки на декстопе]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2358.html</link>
			<pubDate>Wed, 27 Jan 2016 19:25:55 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2358.html</guid>
			<description><![CDATA[Как добавить подтверждение запуская ярлык на декстопе? Как в Файловым менеджере когда удаляешь сейв.<br />
<br />
Хочу копировать и останавливать вму сейвы с ярлыком, но боюсь случайно не запустить.]]></description>
			<content:encoded><![CDATA[Как добавить подтверждение запуская ярлык на декстопе? Как в Файловым менеджере когда удаляешь сейв.<br />
<br />
Хочу копировать и останавливать вму сейвы с ярлыком, но боюсь случайно не запустить.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Приложение для DreamShell]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2173.html</link>
			<pubDate>Tue, 26 Aug 2014 18:56:27 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2173.html</guid>
			<description><![CDATA[Вопрос туповатый, но на голимом XML с подключением модулей реально написать работающую программу, которая будет работать с интерфейсом файловой системы и редактировать текстовые файлы? <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
Просто есть идея, и если это возможно, я могу попробовать написать мелкие программки для удобства, которые будут менять фоновую картинку, шрифт, еще что-нибудь - чисто ради удобства.]]></description>
			<content:encoded><![CDATA[Вопрос туповатый, но на голимом XML с подключением модулей реально написать работающую программу, которая будет работать с интерфейсом файловой системы и редактировать текстовые файлы? <img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><img src="images/smilies/smile.gif" style="vertical-align: middle;" border="0" alt="Smile" title="Smile" /><br />
Просто есть идея, и если это возможно, я могу попробовать написать мелкие программки для удобства, которые будут менять фоновую картинку, шрифт, еще что-нибудь - чисто ради удобства.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ярлыки для образов и бинарников на рабочий стол]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2157.html</link>
			<pubDate>Mon, 07 Jul 2014 07:10:00 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2157.html</guid>
			<description><![CDATA[ждём инструкции от SWAT]]></description>
			<content:encoded><![CDATA[ждём инструкции от SWAT]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Визуальная модификация DS 4 rc1 filemanager]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2109.html</link>
			<pubDate>Fri, 14 Mar 2014 13:19:18 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2109.html</guid>
			<description><![CDATA[Как сделать вертикальный сплит вместо горизонтального?<br />
<br />
Как увеличить резолюцию - чтобы всё стало по меньше?  <br />
  <br />
это всё было сделано в filemanager DreamShell 4.0 Beta 4 (Form SD Loader)]]></description>
			<content:encoded><![CDATA[Как сделать вертикальный сплит вместо горизонтального?<br />
<br />
Как увеличить резолюцию - чтобы всё стало по меньше?  <br />
  <br />
это всё было сделано в filemanager DreamShell 4.0 Beta 4 (Form SD Loader)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[скрипт для копирования всех сеивов из дц вму в сд карту]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2108.html</link>
			<pubDate>Thu, 13 Mar 2014 21:00:27 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2108.html</guid>
			<description><![CDATA[Привет любителям DC.<br />
<br />
Нигде не могу найти как это сделать. <br />
код: <br />
you can dump it from VMU to SD card using Dreamshell. Just type in console following command<br />
    Code:<br />
    vmu -d -a A1 -o /sd/vmu.bin<br />
<br />
делает думп всей партиции вму, а я хочу считать каждый отделенный сейв в сд карту. <br />
Патом на компьютере добавить или удалить сейвы с сд карты, и скопировать обратно всё в вму.<br />
<br />
Нужна какая то проверка хватает ли места в вму.<br />
Сейвы с сд должны переписать сейвы на вму. <br />
Эти скрипты хочу положит на десктопе дц (как это делается?), нажнуть на иконку, увидеть инфо что всё удалось или нет. <br />
<br />
пробовал искать в dreamshell 4 rc1 filemanager main.lua но ничего не нашёл.<br />
<br />
Я уже долго делаю это в ручную с dreamshell 4 rc1 filemanager, но это так долго и неудобно...  <br />
у меня только одно вму так как ... очень нужно.]]></description>
			<content:encoded><![CDATA[Привет любителям DC.<br />
<br />
Нигде не могу найти как это сделать. <br />
код: <br />
you can dump it from VMU to SD card using Dreamshell. Just type in console following command<br />
    Code:<br />
    vmu -d -a A1 -o /sd/vmu.bin<br />
<br />
делает думп всей партиции вму, а я хочу считать каждый отделенный сейв в сд карту. <br />
Патом на компьютере добавить или удалить сейвы с сд карты, и скопировать обратно всё в вму.<br />
<br />
Нужна какая то проверка хватает ли места в вму.<br />
Сейвы с сд должны переписать сейвы на вму. <br />
Эти скрипты хочу положит на десктопе дц (как это делается?), нажнуть на иконку, увидеть инфо что всё удалось или нет. <br />
<br />
пробовал искать в dreamshell 4 rc1 filemanager main.lua но ничего не нашёл.<br />
<br />
Я уже долго делаю это в ручную с dreamshell 4 rc1 filemanager, но это так долго и неудобно...  <br />
у меня только одно вму так как ... очень нужно.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[вызов функции на С]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2096.html</link>
			<pubDate>Wed, 25 Dec 2013 04:30:19 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2096.html</guid>
			<description><![CDATA[<div class="codeblock">
<div class="title">Код:<br />
</div><div class="body" dir="ltr"><code>#include "ds.h"<br />
<br />
int main(int argc, char *argv[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;uint32 fd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;char *toc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;fd=cdrom_locate_data_track (*toc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ds_printf("log=%d ", fd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return CMD_OK;<br />
}</code></div></div>
это одна из сотни попыток вызвать функцию cdrom_locate_data_track (CDROM_TOC *toc), подскажите как правильно]]></description>
			<content:encoded><![CDATA[<div class="codeblock">
<div class="title">Код:<br />
</div><div class="body" dir="ltr"><code>#include "ds.h"<br />
<br />
int main(int argc, char *argv[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;uint32 fd;<br />
&nbsp;&nbsp;&nbsp;&nbsp;char *toc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;fd=cdrom_locate_data_track (*toc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ds_printf("log=%d ", fd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return CMD_OK;<br />
}</code></div></div>
это одна из сотни попыток вызвать функцию cdrom_locate_data_track (CDROM_TOC *toc), подскажите как правильно]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Delphi]]></title>
			<link>http://www.dc-swat.ru/forum/thread-2033.html</link>
			<pubDate>Tue, 18 Jun 2013 10:42:13 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-2033.html</guid>
			<description><![CDATA[Если я напишу программу на Delphi, то можно будет её портировать на DreamShell со всеми библиотеками(к примеру с DirectShow)?]]></description>
			<content:encoded><![CDATA[Если я напишу программу на Delphi, то можно будет её портировать на DreamShell со всеми библиотеками(к примеру с DirectShow)?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SDL_FreeSurface ?]]></title>
			<link>http://www.dc-swat.ru/forum/thread-1732.html</link>
			<pubDate>Tue, 01 Nov 2011 08:56:56 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-1732.html</guid>
			<description><![CDATA[i still got problems getting my isoBrowser app to work.<br />
at least i made some progress: i am pretty sure now that i fill up the ram with all the button instances i create until the app freezes. <br />
<br />
so my question is: how to free up some ram again?<br />
i create buttons and load images into my buttons like:<br />
<br />
b = DS.GUI_ButtonCreate(.....);<br />
s = DS.GUI_SurfaceLoad(self.currentpath .. appname .. "/icon.jpg");<br />
DS.GUI_ButtonSetNormalImage(b, s);<br />
...etc...<br />
<br />
then i add the button to a container named 'panel' on the screen:<br />
DS.GUI_ContainerAdd(self.apps.panel, b);<br />
<br />
this works well. <br />
<br />
but i got NO IDEA how to free the ram i used for loading the images.<br />
can anyone point me to the right direction here?<br />
is there a way to "DS.SDL_FreeSurface( s );" somehow  ?<br />
<br />
"GUI_ContainerRemove" removes the container but doesn't free the ram right?<br />
"GUI_WidgetErase" ?<br />
"GUI_WidgetUpdate" ?<br />
<br />
i am lost in endless loops of trial and error. <img src="images/smilies/confused.gif" style="vertical-align: middle;" border="0" alt="Confused" title="Confused" /><br />
any help is highly appreciated!!]]></description>
			<content:encoded><![CDATA[i still got problems getting my isoBrowser app to work.<br />
at least i made some progress: i am pretty sure now that i fill up the ram with all the button instances i create until the app freezes. <br />
<br />
so my question is: how to free up some ram again?<br />
i create buttons and load images into my buttons like:<br />
<br />
b = DS.GUI_ButtonCreate(.....);<br />
s = DS.GUI_SurfaceLoad(self.currentpath .. appname .. "/icon.jpg");<br />
DS.GUI_ButtonSetNormalImage(b, s);<br />
...etc...<br />
<br />
then i add the button to a container named 'panel' on the screen:<br />
DS.GUI_ContainerAdd(self.apps.panel, b);<br />
<br />
this works well. <br />
<br />
but i got NO IDEA how to free the ram i used for loading the images.<br />
can anyone point me to the right direction here?<br />
is there a way to "DS.SDL_FreeSurface( s );" somehow  ?<br />
<br />
"GUI_ContainerRemove" removes the container but doesn't free the ram right?<br />
"GUI_WidgetErase" ?<br />
"GUI_WidgetUpdate" ?<br />
<br />
i am lost in endless loops of trial and error. <img src="images/smilies/confused.gif" style="vertical-align: middle;" border="0" alt="Confused" title="Confused" /><br />
any help is highly appreciated!!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dreamshell BETA3/BETA4 Direct Swap]]></title>
			<link>http://www.dc-swat.ru/forum/thread-1712.html</link>
			<pubDate>Thu, 08 Sep 2011 04:39:46 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-1712.html</guid>
			<description><![CDATA[So I am not sure where to put this but I figured here and I would post in the English section as well. I use this OS quite a lot as it allows for me to fool with textures in games without wasting disc, emulation is awesome and since I have it hooked to my PC and it shares the same speakers I just use my VCD dongle and remote as a media center. Really neat stuff from my beloved DC and I will show you just how much I treasure my system by the end of this post. <br />
<br />
Anyhow back to the topic at hand. BETA 4 works good for the most part but it did break some compatibility with games that worked on BETA 3. Kinda of something like this that Red Squirrel coded for the PSP the D3-D4 switching applicaiton.<br />
<br />
<a href="http://www.redsquirrel87.com/D2-D3Switcher.html" target="_blank">D2-D3 Switcher</a><br />
<br />
Sonic Adventure 1 works great on BETA 3 but no dice on BETA 4 so this would be ever so useful. I am attempting to see if a manual swap with my mouse and keyboard would work but I don't think so by reading the translation but then again google translation sucks. <br />
<br />
Anyhow looking forward to anything from you guys as it is great not for emulation and some non-intensive games are very much playable if you work with them. I mean bring down bitrates in video and even mono audio and you will be surprised at what will work. I know we are very limited by the speed of the serial port but we can still get enough done. <br />
<br />
Here are a couple quick clips of my baby and thanks for all your work and I hope something like this can be done and if easy enough just please pass it along to me so I can set it up that way please.<br />
<br />
<!-- start: video_youtube_embed --><br />
<object type="application/x-shockwave-flash" class="video_embed" style="width: 450px; height: 366px;" data="http://www.youtube.com/v/VN0TujgCj-U"><param name="movie" value="http://www.youtube.com/v/VN0TujgCj-U" /></object><br />
<!-- end: video_youtube_embed --><br />
<br />
And I converted my NTSC-U Sega Sports system to a PAL blue swirl<br />
<br />
<!-- start: video_youtube_embed --><br />
<object type="application/x-shockwave-flash" class="video_embed" style="width: 450px; height: 366px;" data="http://www.youtube.com/v/lJmwB58Ht_U"><param name="movie" value="http://www.youtube.com/v/lJmwB58Ht_U" /></object><br />
<!-- end: video_youtube_embed -->]]></description>
			<content:encoded><![CDATA[So I am not sure where to put this but I figured here and I would post in the English section as well. I use this OS quite a lot as it allows for me to fool with textures in games without wasting disc, emulation is awesome and since I have it hooked to my PC and it shares the same speakers I just use my VCD dongle and remote as a media center. Really neat stuff from my beloved DC and I will show you just how much I treasure my system by the end of this post. <br />
<br />
Anyhow back to the topic at hand. BETA 4 works good for the most part but it did break some compatibility with games that worked on BETA 3. Kinda of something like this that Red Squirrel coded for the PSP the D3-D4 switching applicaiton.<br />
<br />
<a href="http://www.redsquirrel87.com/D2-D3Switcher.html" target="_blank">D2-D3 Switcher</a><br />
<br />
Sonic Adventure 1 works great on BETA 3 but no dice on BETA 4 so this would be ever so useful. I am attempting to see if a manual swap with my mouse and keyboard would work but I don't think so by reading the translation but then again google translation sucks. <br />
<br />
Anyhow looking forward to anything from you guys as it is great not for emulation and some non-intensive games are very much playable if you work with them. I mean bring down bitrates in video and even mono audio and you will be surprised at what will work. I know we are very limited by the speed of the serial port but we can still get enough done. <br />
<br />
Here are a couple quick clips of my baby and thanks for all your work and I hope something like this can be done and if easy enough just please pass it along to me so I can set it up that way please.<br />
<br />
<!-- start: video_youtube_embed --><br />
<object type="application/x-shockwave-flash" class="video_embed" style="width: 450px; height: 366px;" data="http://www.youtube.com/v/VN0TujgCj-U"><param name="movie" value="http://www.youtube.com/v/VN0TujgCj-U" /></object><br />
<!-- end: video_youtube_embed --><br />
<br />
And I converted my NTSC-U Sega Sports system to a PAL blue swirl<br />
<br />
<!-- start: video_youtube_embed --><br />
<object type="application/x-shockwave-flash" class="video_embed" style="width: 450px; height: 366px;" data="http://www.youtube.com/v/lJmwB58Ht_U"><param name="movie" value="http://www.youtube.com/v/lJmwB58Ht_U" /></object><br />
<!-- end: video_youtube_embed -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[WIP] IsoBrowser DC]]></title>
			<link>http://www.dc-swat.ru/forum/thread-1708.html</link>
			<pubDate>Sun, 04 Sep 2011 11:39:38 +0000</pubDate>
			<guid isPermaLink="false">http://www.dc-swat.ru/forum/thread-1708.html</guid>
			<description><![CDATA[hi there.<br />
first of all: THANKS A TON for DreamShell!<br />
i am using DreamShell to power my (half baked) Dreamcast Arcade Machine. and i wanted a simple 'front end' to launch my isos and emulators easily.<br />
So i tried my best to develop and app for DreamShell to browse folders on my SD card, show the icon.png from each folder and launch a boot.iso from that folder.<br />
<!-- start: video_vimeo_embed --><br />
<object width="400" height="230"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=28571048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=28571048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="230"></embed></object><br />
<!-- end: video_vimeo_embed --><br />
It works so far and i am quite happy with it!<br />
it still crashes a lot though!<br />
after about 8 pages the app freezes. it is pretty possible that i just fill up the RAM with all the icons. is it? these are my frst steps with lua and sdl and i got no idea what i am doing (wrong) here <img src="images/smilies/blush.gif" style="vertical-align: middle;" border="0" alt="Blush" title="Blush" />. i delete the container containing all buttons on every page refresh, recreate it and add the new buttons/icons. maybe there is a better way to accomplish that?<br />
i attached the app. can you guys take a look at it and point me to the right direction here? i'd really appreciate your help!<br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".zip" />&nbsp;&nbsp;<a href="attachment.php?aid=81" target="_blank">isobrowser_alpha.zip</a> (Размер: 219.76 Кб / Загрузок: 67)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[hi there.<br />
first of all: THANKS A TON for DreamShell!<br />
i am using DreamShell to power my (half baked) Dreamcast Arcade Machine. and i wanted a simple 'front end' to launch my isos and emulators easily.<br />
So i tried my best to develop and app for DreamShell to browse folders on my SD card, show the icon.png from each folder and launch a boot.iso from that folder.<br />
<!-- start: video_vimeo_embed --><br />
<object width="400" height="230"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=28571048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=28571048&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="230"></embed></object><br />
<!-- end: video_vimeo_embed --><br />
It works so far and i am quite happy with it!<br />
it still crashes a lot though!<br />
after about 8 pages the app freezes. it is pretty possible that i just fill up the RAM with all the icons. is it? these are my frst steps with lua and sdl and i got no idea what i am doing (wrong) here <img src="images/smilies/blush.gif" style="vertical-align: middle;" border="0" alt="Blush" title="Blush" />. i delete the container containing all buttons on every page refresh, recreate it and add the new buttons/icons. maybe there is a better way to accomplish that?<br />
i attached the app. can you guys take a look at it and point me to the right direction here? i'd really appreciate your help!<br /><!-- start: postbit_attachments_attachment -->
<br /><img src="images/attachtypes/zip.gif" border="0" alt=".zip" />&nbsp;&nbsp;<a href="attachment.php?aid=81" target="_blank">isobrowser_alpha.zip</a> (Размер: 219.76 Кб / Загрузок: 67)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>