Никак не могу заставить работать таймеры/часы. Нужна библиотека. А еще хотелось бы повтыкать в ассемблер allegrex и работу с периферией, в частности, - нужен доступ к таймерам и часам реального времени.
В общем, нужна помощь.
Хм. Магическим образом нашел ф-ии sceKernelGetSystemTime, sceKernelStartVTimer ... странно что я их не видел вчера. Интересно, а сколько может быть таймеров, как они работают и что из себя представляют.
еще есть sceRtcGetCurrentTick
bada
У меня нет для них библиотек. Первоначально я нашел эти ф-ии и обломался. Вот и написал. Кстати, смотрю, они в SDK с ps2dev.org как-то импортируются, через pspimport.s, но там не понятно откуда что куда и зачем.
ну если ты юзаешь сдк с ps2dev.org то проблем быть не должно, а если нет - то можно просто взять исходники сдк и выцарапть адрес функции и по нему обращаться.....типа такого
#ifdef F_sceRtc_0002
IMPORT_FUNC "sceRtc",0x3F7AD767,sceRtcGetCurrentTick
#endif
Для меня это не просто, т.к. используется CodeWarrior. И даже глядя на те макросы из pspimport.s, я не могу импортировать нужные ф-ии, опыта не хватает. Только если кто покажет...
я не пробовал - первое что бы я сделал - напрямую обратился по адресу.....
int (*func)(u64 * time);
func = (int(*)(u64*))0x3F7AD767;
int time;
func(&time);
может и сработает а может и нет ))
Я делал импорт по аналогии pspsdk, но используя CodeWarrior, пришлось переписать макросы IMPORT_START, IMPORT_FUNC
pspimport.s
.macro IMPORT_START module, flags_ver .set noreorder .section .rodata.sceResident, 4 .word 0 _StubModuleName_\module: .asciz "\module" .align 2 .section .lib.stub, 4 _StubModule_\module: .word _StubModuleName_\module .word \flags_ver .word 0x00000005 .word 0 .word 0 .set reorder .endm .macro IMPORT_FUNC module, funcid, funcname .set noreorder .section .rodata.sceNid,4 .word \funcid .section .sceStub.text.\module,4 .global \funcname \funcname: .word _StubModule_\module .word \funcid .set reorder .endm
само использование выглядело так:
ThreadManForKernel.S
#include "pspimport.s" IMPORT_START "ThreadManForKernel" 0x40010000 IMPORT_FUNC "ThreadManForKernel" 0x8FD9F70C "sceKernelSuspendAllUserThreads"
В файл LinkSegment_PSP.lcf добавлено было следующее:
в разделе .sceStub.Text:
* (.sceStub.text.ExceptionManagerForKernel)
Это все делалось в рамках нашего лоадера.
const
Большое спасибо.
Тема в архиве.