18.03.2009, 13:02
18.06.2011, 13:04
The module dev, it will be posted one day? XD XD
18.06.2011, 15:48
Sorry no time for now. But I'll try to write at least an example.
19.06.2011, 14:59
thanks SWAT youre the best!!, i hope it
23.12.2013, 04:19
SWAT в sdk есть функция
не мог бы ты написать пример консольного приложения на си, чтоб вызывалась эта функция и выдавала в консоль полученный результат
Код:
/* Return the status of the drive as two integers (see constants) */
int cdrom_get_status(int *status, int *disc_type);
23.12.2013, 08:02
А чего тут писать то? Если тебе просто внешняя команда для консоли нужна (не модуль с командой, а просто команда), то выглядит это точно так же как и на любой другой платформе:
Расшифровку статусов можешь посмотреть здесь (ну и добавить в код по желанию):
http://gamedev.allusion.net/docs/kos-cur...om_8h.html
Если нужен именно модуль с командой, то тут конечно немного по другому, если надо, напишу как.
Код:
#include "ds.h"
int main(int argc, char *argv[]) {
int status, disc_type;
if(cdrom_get_status(&status, &disc_type) < 0) {
return CMD_ERROR;
}
ds_printf("CDROM: status=%d disc=%02x\n", status, disc_type);
return CMD_OK;
}
Расшифровку статусов можешь посмотреть здесь (ну и добавить в код по желанию):
http://gamedev.allusion.net/docs/kos-cur...om_8h.html
Если нужен именно модуль с командой, то тут конечно немного по другому, если надо, напишу как.
23.12.2013, 08:04
огромное спасибо. для начала изучений этого более чем достаточно, если дойдет дело до модуля и не будет получаться, то обязательно спрошу.
23.12.2013, 11:33
А в чём разница между модулем и командой? приведённый пример это какаято подпрограмка? как потом компилиться и вызывается? я думал команда это типа в строке набираешь, и исполняется заведомо встроенный код в дримшелл? а тут типа экзешник или ? потом вызывается в консоли типа испольнить (такаоето имя файла) и дримшел грузит с карты этот файл и испоняет?
23.12.2013, 13:20
В целом ты сам ответил на свой вопрос Я лишь разверну этот ответ.
Есть команды встроенные, они находятся в самом ядре и доступны всегда. А есть команды внешние, это как у любой другой ОС скомпилированный, исполняемый файл или скрипт. Так как система *nix style, то исполняемые файлы в этом случае являются elf файлами, а скрипты в случае с DS - это lua.
С точки зрения сборки, между модулем и командой разницы нет. Разница только в некотором содержимом и в их использовании.
Модуль загружается один раз и весит в памяти пока его не выгрузить. Он может добавить в консоль команду по необходимости. И у него есть 4 спец. функции для работы с ним:
lib_get_name
lib_get_version
lib_open
lib_close
Думаю пояснять о каждой смысла нет и так понятно.
В командах же нет этих спец. функций, там используется только одна - main.
Собираются внешние команды точно так же как и модули, просто загружаются и выполняются в консоли только при вызове. После окончания работы, они выгружаются из памяти.
Это работает конечно несколько медленней, чем если загрузить модуль один раз и потом дергать эту команду, но в некоторых случаях эта скорость и не так важна, лучше пусть будет больше свободной памяти, особенно если команда не часто используемая.
Ну а модуль с командой, делается в следующем случае.
Если в модуле содержится какая-то библиотека, API которой будет доступно при его загрузке. И вместе с этим идет и команда для ее использования из консоли.
Как пример модуля с командой, можно взять bzip2, это и API самой библиотеки и команда для работы с архивами.
А как пример модуля только с API, можно взять допустим модуль tolua. Он не содержит в себе никаких команд, так как это вспомогательный модуль для luaDS, luaKOS и т.п., которые к слову тоже не содержат в себе никаких команд, они просто дополняют lua окружение всякими функциями.
Вот как то так
Есть команды встроенные, они находятся в самом ядре и доступны всегда. А есть команды внешние, это как у любой другой ОС скомпилированный, исполняемый файл или скрипт. Так как система *nix style, то исполняемые файлы в этом случае являются elf файлами, а скрипты в случае с DS - это lua.
С точки зрения сборки, между модулем и командой разницы нет. Разница только в некотором содержимом и в их использовании.
Модуль загружается один раз и весит в памяти пока его не выгрузить. Он может добавить в консоль команду по необходимости. И у него есть 4 спец. функции для работы с ним:
lib_get_name
lib_get_version
lib_open
lib_close
Думаю пояснять о каждой смысла нет и так понятно.
В командах же нет этих спец. функций, там используется только одна - main.
Собираются внешние команды точно так же как и модули, просто загружаются и выполняются в консоли только при вызове. После окончания работы, они выгружаются из памяти.
Это работает конечно несколько медленней, чем если загрузить модуль один раз и потом дергать эту команду, но в некоторых случаях эта скорость и не так важна, лучше пусть будет больше свободной памяти, особенно если команда не часто используемая.
Ну а модуль с командой, делается в следующем случае.
Если в модуле содержится какая-то библиотека, API которой будет доступно при его загрузке. И вместе с этим идет и команда для ее использования из консоли.
Как пример модуля с командой, можно взять bzip2, это и API самой библиотеки и команда для работы с архивами.
А как пример модуля только с API, можно взять допустим модуль tolua. Он не содержит в себе никаких команд, так как это вспомогательный модуль для luaDS, luaKOS и т.п., которые к слову тоже не содержат в себе никаких команд, они просто дополняют lua окружение всякими функциями.
Вот как то так