consoledevФорум

Таймеры в PSP

#0
1:11, 13 июля 2006

Никак не могу заставить работать таймеры/часы. Нужна библиотека. А еще хотелось бы повтыкать в ассемблер allegrex и работу с периферией, в частности, - нужен доступ к таймерам и часам реального времени.

В общем, нужна помощь.

#1
10:31, 13 июля 2006

Хм. Магическим образом нашел ф-ии sceKernelGetSystemTime, sceKernelStartVTimer ... странно что я их не видел вчера. Интересно, а сколько может быть таймеров, как они работают и что из себя представляют.

#2
12:41, 13 июля 2006

еще есть sceRtcGetCurrentTick

#3
13:21, 13 июля 2006

bada
У меня нет для них библиотек. Первоначально я нашел эти ф-ии и обломался. Вот и написал. Кстати, смотрю, они в SDK с ps2dev.org как-то импортируются, через pspimport.s, но там не понятно откуда что куда и зачем.

#4
13:45, 13 июля 2006

ну если ты юзаешь сдк с ps2dev.org то проблем быть не должно, а если нет - то можно просто взять исходники сдк и выцарапть адрес функции и по нему обращаться.....типа такого
#ifdef F_sceRtc_0002
  IMPORT_FUNC  "sceRtc",0x3F7AD767,sceRtcGetCurrentTick
#endif

#5
14:24, 13 июля 2006

Для меня это не просто, т.к. используется CodeWarrior. И даже глядя на те макросы из pspimport.s, я не могу импортировать нужные ф-ии, опыта не хватает. Только если кто покажет...

#6
17:30, 13 июля 2006

я не пробовал - первое что бы я сделал - напрямую обратился по адресу.....

int (*func)(u64 * time);

func = (int(*)(u64*))0x3F7AD767;
int time;
func(&time);


может и сработает а может и нет ))

#7
11:12, 14 июля 2006

Я делал импорт по аналогии 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)


Это все делалось в рамках нашего лоадера.

#8
11:36, 14 июля 2006

const

Большое спасибо.

consoledevФорум

Тема в архиве.