ну лад:))) 1 камп: Intel Core 2 Extreme QX9650 3.0GHz/1333MHz/12MB (BX80569QX9650SLAN3) s775 Box Asus EN8800GTX/HTDP/768M PCI-Ex 768MB Windows XP и Windows VISTA HDD 1160гб 2камп Pentium 4 3.0GHz Asus Gforce 5700 Windows XP HDD 200гб
Badboy999, ты не понял: ето встроеный плагин такой как стандартный музыкальный плеер, прога для открытий изображения, просмотр видео, и в етом вроде...
MIK1993, ето тем хто программы пишет на зызку, уроки:)
Весь код, написанный ранее, но с подробными комментариями.
// каллбеки и прочие необходимые для работы программы вещи // нечто вроде windows.h ;-) #include
// как ни странно, почти все функции для работы в текстовом режиме находятся именно там #include
// получение информации о состоянии кнопок и положении джойстика #include
// некий код на ассемблере, необходимый для индентификации программы или модуля системой PSP_MODULE_INFO("Hello World", 0, 1, 1);
// будет вызываться при закрытии программы, смотри функцию CallbackThread int ExitCallback(int Arg1, int Arg2, void *Common) { // "уходя - уходи" // ну, то есть закрывает программу // если не вставить эту строку, то при попытке закрыть игру через кнопку HOME // система зависнет на надписи "Пожалуйста, подождите..." // если решили попробовать ее не вставить, резет девайса произоводится // путем перевода штуки справа в положение "Power" на несколько (около 7) секунд // (пока лампочка не перестанет гореть). потом можно включать sceKernelExitGame(); return 0; }
// специальный поток int CallbackThread(SceSize Args, void *Argp) { // тут будет храниться ID нашего каллбэка // доступ к ним, значить, не по указателям всяким, а по номерам int CallbackId;
// создаем некий каллбэк // система еще не знает, что он для закрытия, название (первый аргумент) нужно, // похоже, для статистики :)
// регистрируем наш каллбэк как каллбэк для закрытия sceKernelRegisterExitCallback(CallbackId);
// поток больше не нужем, ложимся спать sceKernelSleepThreadCB();
return 0; }
// вопреки названию, в этой функции не создаются каллбэки, а создается поток, // выполняющий эту черную работу int SetupCallbacks(void) { // опять же, доступ к потокам осуществляется по ID int ThreadId = 0;
// Создаем поток. На имя всем наплевать, второй аргумент это функция // выполняемая потоком, третий - приоритет (меньше - приоритетнее), // четвертый - изначальный размер стека, потом идут аттрибуты и опции // на них нам плевать пока что, это вообще для отдельного туториала тема :) ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0); if (ThreadId >= 0) // если создался, то запускаем { sceKernelStartThread(ThreadId, 0, 0); // первый параметр - ID потока, второй - размер передаваемых функции аргументов, // указатель на которые содержится в третьем аргументе }
return ThreadId; }
SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).
int main(int argc, char ** argv) { // текстовый режим 34*68 pspDebugScreenInit();
// устанавливаем каллбеки // пока еще - только один (закрывания) SetupCallbacks();
sceCtrlSetSamplingCycle(0); sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика
while(1) // главный цикл программы { pspDebugScreenClear(); // чистим экран sceCtrlReadBufferPositive(&pad, 1); // читаем содержимое буфера э-э клавиатуры pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp if (pad.Buttons == 0) // ничего не нажато { pspDebugScreenPrintf("NONE "); } else { if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE "); if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE "); if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS "); if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE "); // какие кнопки нажаты? } pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly); // выводим координаты стика }
sceKernelSleepThread(); // поток засыпает // если уснули все потоки, то единственное, что может случиться - это каллбек // в этой программе эта строчка никогда не выполнится ;)
return 0; }
Добавлено спустя 3 минуты 46 секунд:
НЕ могу написать нормально!! Powered by TWSF 1.6 Воспринимает как скрипт!!!!!!!! /*
*/
Сообщение отредактировано 11 мая 2008 00:17. Редактировалось 1 раз(а)
Программируем для PSP: Часть II. Тотальный контроль
В прошлом туториале мы разобрались с "хелловорлдом", теперь пришло время к следующей, не менее важной вещи: вводе информации. Умея выводить что-то на экран и узнавать, что нажал пользователь, уже можно сделать полезную программу. Фактически, после этого урока уже можно будет начинать что-то свое, однако я бы посоветовал дождаться, хотя бы, спрайтов.
Создадим проект по шаблону, описанному в первой части. Найдем в фаиле функцию main() -- основную функцию программы, а в ней главный цикл ( while(1) { ... } ). Кстати, насчет while(1): в программировании для psp не считается дурным тоном делать бесконечные циклы внутри программы, т.к. выход все равно осуществляется по кнопке HOME, и только так.
Сделаем стандартный цикл обработки сообщений: получение и переваривание. Первое, что нужно сделать -- определить переменную, в которой будет хранится состояние клавиатуры:
SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).
Структура SceCtrlData хранит в себе TimeStamp - количество фреймов, похоже, от запуска программы (надо уточнить!), Buttons -- битовую маску состояния кнопок (учитываются кнопки Select, Start, крестик, треугольник, квадрат, шифты, стрелки, состояние Hold и Home. Все остальное учитывается только в Kernel Mode, за подробностями смотрите фаил devkitPSPpspsdkincludepspctrl.h) и координаты стика Lx и Ly. Поскольку она определена только в pspctrl.h, придется добавить в начало фаила
Эта функция заполняет структуру pad текущими значениями состояния кнопок и стика. Кстати, чтобы получить координаты стика удавалось, надо перед while'ом впихнуть 2 строки:
sceCtrlSetSamplingCycle(0); sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика
Иначе джойстик так и застынет на положении (128:128) (это -- середина, сами координаты меняются от 0 до 255).
Итак, мы считали информацию, теперь нужно ее вывести. Вот что получилось у меня:
pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp if (pad.Buttons == 0) // ничего не нажато { pspDebugScreenPrintf("NONE "); } else { if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE "); if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE "); if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS "); if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE "); // какие кнопки нажаты? } pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly); // выводим координаты стика
Как видите, я учитываю только состояние кнопок с картинками (ну, треугольника, круга, квадрата и крестика), дописать поддержку остальных легко, за константами обращайтесь к devkitPSPpspsdkincludepspctrl.h. Код в цикле будет выводить нечто такое:
SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).
int main(int argc, char ** argv) { pspDebugScreenInit(); SetupCallbacks();
sceCtrlSetSamplingCycle(0); sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика
while(1) // главный цикл программы { sceCtrlReadBufferPositive(&pad, 1); // читаем содержимое буфера э-э клавиатуры pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp if (pad.Buttons == 0) // ничего не нажато { pspDebugScreenPrintf("NONE "); } else { if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE "); if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE "); if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS "); if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE "); // какие кнопки нажаты? } pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly); // выводим координаты стика }
sceKernelSleepThread();
return 0; }
Теперь преобразовывайте в EBOOT, закидывайте на приставку и наслаждайтесь. Как домашнее задание можно попробовать сделать бродилку, или еще какую-нибудь невероятно полезную штуку; я думаю, что посвящу третюю часть всяким прочим фичам text mode, а потом перейду к графике. Удачи!
Трентон, Ты шутишь???? Если ты не знаешь то вобще то облажка на hd dvd 5***x****, короч в пять раз больше, с принтером в 1пикалитр ето какраз в самый раз
ppp12864, старкрафт прекрасно запускается:) в конфиг вписуй:(я те подробное описание функций написал ) щя напмшу точней:), и кстате я нашёл как увеличеть память:), щя всё зделаем:)
Добавлено спустя 5 минут 19 секунд:
[sdl] # fullscreen -- Запускать DosBox в полноэкранном режиме. # fulldouble -- Использовать двойную буферизацию в полноэкранном режиме. # fullresolution -- Указывает, какое разрешение будет использоваться в полноэкранном режиме. # Может быть: original или некое фиксированное (например, 1024x768). # windowresolution -- Растягивать окно DosBox на указанный размер (ТОЛЬКО В ТОМ СЛУЧАЕ, если устройства вывода поддерживает аппаратное масштабирование). # output -- Способ вывода изображения: surface,overlay,opengl,openglnb,ddraw. # autolock -- Курсор мыши автоматически захватывается, если вы щелкните на окне DosBox. # sensitiviy -- Чувствительность мыши. # waitonerror -- Ждать, перед тем, как закрыть консоль, если DosBox вывел ошибку. # priority -- Уровни приоритета процесса DosBox: lowest,lower,normal,higher,highest,pause (только для "не в фокусе"). # Параметр после запятой указывается для случая, когда DosBox свернут/не в фокусе. # mapperfile -- Файл, используемый для сохранения/загрузки параметров клавиш/событий. # usescancodes -- Избегать использования symkeys. Может не работать на некоторых операционных системах. # keyhint -- When set to true, the first button press will display a hint about what # key you will get with the second button press. # If the key you want isn't there you can cancel by pressing cross(БЕз понятия).
[dosbox] # language -- Указать другой файл языковых параметров интерфейса DosBox. # memsize -- Количество оперативной памяти, выделяемой для DosBox в мегабайтах. # machine -- Тип системы, который будет эмулироваться:hercules,cga,tandy,pcjr,vga. # captures -- Директория, в которую будут складываться wave,midi, скриншоты и пр.
language= machine=vga captures=capture memsize=10
[render] # frameskip -- Сколько кадров будет пропускать DosBox перед прорисовкой следующего. # aspect -- Выполнять коррекцию пропорций видео. Если указанный вами метод вывода не поддерживает этот параметр - возможно сильное замедление эмуляции! # scaler -- Способ масштабирования, используемый для того, чтобы увеличить/улучшить режимы низкого разрешения. # Поддерживаемые: none,normal2x,normal3x,advmame2x,advmame3x,hq2x,hq3x, # 2xsai,super2xsai,supereagle,advinterp2x,advinterp3x, # tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x. # Если добавлено принуждение (вроде scaler=hq2x forced), масштабирование будет # использовано, даже если результат может быть нежелательным.
frameskip=1 aspect=false scaler=normal2x
[cpu] # core -- Тип ядра процессора, используемый в эмуляции: normal,simple,dynamic,auto. # Параметр auto автоматически переключает режим normal на dynamic, если это возможно. # cycles -- Количество циклов процессора, которые DosBox пытается эмулировать в одну миллисекунду. # Установка этого значения слишком высоким может повлиять на производительность и привести к лагам и потере звука. # Вы так же можете позволить DosBox попытаться определить лучшее значение, установив данный параметр в max # Параметр auto устанавливает значение max, если это возможно. # cycleup -- Количество циклов, прибавляемое/отнимаемое нажатием горячих клавиш. # cycledown Установка этого значения ниже 100 будет считаться процентным числом.
[mixer] # nosound -- Включить режим "без звука". Обратите внимание, что звук продолжает эмулироваться, хотя и не слышен. # rate -- Темп микшера. Установка темпа других устройств выше, чем это значение, возможно, приведет к снижению качества звука этих устройств. # blocksize -- Размер блока микшера - бОльшие размеры блоков могут помочь справиться с заиканием звука, но # так же приведут к задержкам звука. # prebuffer -- Сколько миллисекунд данных DosBox будет кэшировать перед выводом блока микшера.
[midi] # mpu401 -- Тип MPU-401, который требуется эмулировать: none, uart или intelligent. # device -- Устройство, которое получит поток данных MIDI от MPU-401. # Может быть установлено: default,alsa,oss,win32,coreaudio,none. # config -- Особые конфигурационные параметры устройства. Для систем Windows укажите # ID устройства, которое планируете использовать. Прочтите Readme для более детальной информации.
mpu401=intelligent device=default config=
[sblaster] # sbtype -- Тип sblaster, который требуется эмулировать: none,sb1,sb2,sbpro1,sbpro2,sb16. # sbbase,irq,dma,hdma -- адреса IO/IRQ/DMA/High DMA устройства soundblaster. # mixer -- Позволять микшеру Soundblaster модифицировать микшер DosBox. # oplmode -- Тип эмуляции OPL: auto,cms,opl2,dualopl2,opl3. # Параметр auto режим эмуляции определяется типом SoundBlaster # Все режимы OPL являются 'Adlib', исключая для случая CMS. # oplrate -- Темп эмуляции музыки OPL.
[gus] # gus -- Включить эмуляцию Gravis Ultrasound. # gusbase,irq1,irq2,dma1,dma2 -- Адреса IO/IRQ/DMA устройства # Gravis Ultrasound. (Одинаковые значения IRQ и DMA - нормально). # gusrate -- Темп эмуляции Ultrasound. # ultradir -- Путь к директории Ultrasound. В этой директории должна находится директория MIDI, # которая содержит файлы-пути для воспроизведения GUS. # the patch files for GUS playback. Пути, настроенные с помощью Timidity должны # работать нормально.
[speaker] # pcspeaker -- Включить эмуляцию PC-Speaker. # pcrate -- Темп генерации звука устройства PC-Speaker. # tandy -- Включить эмуляцию Tandy Sound System (off,on,auto). # Для параметра auto режим эмуляции Tandysound подключается только в том случае, если тип системы указан tandy. # tandyrate -- Темп генерации звука устройства Tandy 3-Voice. # disney -- Включить эмуляцию Disney Sound Source. Совместимо с Covox Voice Master and Speech Thing.
pcspeaker=true pcrate=22050 tandy=auto tandyrate=22050 disney=true [joystick] # joysticktype -- Типы джойстиков для эмуляции: auto (установленно по умолчанию), none, # 2axis (поддерживается два джойстика), # 4axis (поддерживается один джойстик, используется первый), # 4axis_2 (поддерживается один джойстик, используется второй), # fcs (Thrustmaster), ch (CH Flightstick). # none отключает эмуляцию джойстика. # auto выбирает значение в зависимости от реально подключенного джойстика(ов) # timed - включить временные интервалы для осей (его отсутствие - работа в старом режиме) # autofire - кнопки продолжают нажиматься постоянно, пока вы их держите нажатыми # swap34 - меняет местами 3ю и 4ю оси джойстика (может быть полезно для некоторых моделей джойстиков) # buttonwrap - осуществляет подмену количества реальных кнопок на количество эмулируемых.
[serial] # serial1-4 -- устанавливает тип устройства, соединенного с COM портом. # Может быть: disabled, dummy, modem, nullmodem, directserial. # Дополнительные параметры должны быть на той же строке, в форме # параметр:значение. Параметры для всех типов: irq. # для directserial: realport (необходимо), rxdelay (необязательно). # для modem: listenport (необязательно). # для nullmodem: server, rxdelay, txdelay, telnet, usedtr, # transparent, port, inhsocket (все - необязательно). # Пример: serial1=modem listenport:5000
[dos] # xms -- Включить поддержку XMS. # ems -- Включить поддержку EMS. # umb -- Включить поддержку UMB. # keyboardlayout -- код клавиатурной раскладки (или none).
xms=true ems=true umb=true keyboardlayout=none
[ipx] # ipx -- Включает эмуляцию ipx over UDP/IP.
ipx=false
[autoexec] # Эти строки будут выполнены при загрузке. Здесь переводчиком добавлена строчка keyb ru для # инициализации русской кодовой страницы. Translator have added here command keyb ru to initialize # Russian code page at startup.
keyb ru
///тута вставляй код автозапуска///
Добавлено спустя 41 минуту 48 секунд:
етот туой dosbox не пашет если поставить больше чем 10мб мегабайт памяти
Сообщение отредактировано 10 мая 2008 11:34. Редактировалось 1 раз(а)
Volzer, Какой именно????? Дай ссылку на него, и я постараюсь:)
Добавлено спустя 18 минут 20 секунд:
ppp12864, запустить космитов я то смогу, да вот только емулятор dos придётся писать самому , надо время, прост в dosbos стоит ограничение в самом коде которое запрещяет использывать оперативную память больше чем 16мб+ он много берёт ресурсов:(, мне надо напсать простинький, главное чтоб работал как обычный, новый MS DOS тогда всё будет супер!!!!
Добавлено спустя 2 минуты 27 секунд:
Кстате не всё так плохо:))) авторы DOSBOX разпостраняют код
"" and "PlayStation" are registered trademarks of Sony Computer Entertainment Inc. "", PSP and "UMD" are trademarks of Sony Computer Entertainment Inc. "", "XMB", "Memory Stick Duo" and the "Memory Stick Duo" logotype are trademarks of Sony Corp. All product titles, publisher names, trademarks, artwork and associated imagery are trademarks, registered trademarks and/or copyright material of the respective owners. All rights reserved.