| Home :: XML Feed :: Files :: Forums :: Bookmark site :: Terms of use :: Privacy policy :: Submit News :: Advertise :: Contact us |
|
Hey Guest!
Not Registered? Join today!
Registration allows you too: Post on our Forums. Take part in games and registered user benefits! Get rid of this ad.... |
|
|
|
#1 |
Developer
|
Here's a major update from previous version.
This version almost all problems that existed in the previous 0.8 SWC "SomeWhatCrippled" version. You can also try the LocoRoco demo's; you donot have to own the game to try this. ![]() Requirements: ------------- 1) Neo Motion Kit 2) CFW atleast v3.71 - due to NID compatibility. Changelog: ---------- 1) Added audio Fix; Audio works perfectly along with motion for perfect LocoRoco game experience. Thanks to ps2dev members. 2) Added a check, wherein the plugin self-terminates with a message, if Motion Kit is unplugged or not plugged in before the game begins or due to failure in initialization; hence if anything fails, you can still play the game unlike previous version which caused "unusably sluggish behaviour". 3) Added a Jump function but something isn't right. Tilt forward and then backward. [This will most probably be removed in next version if I can't figure out the problem] 4) Substantially improved chances of succesfull initialization. Failure rate - 1 in 10 times. 5) Reduced CPU usage - removed unused stuff / Z axis reading / other calculations Videos Illustrations: ------------------ Latest Video with audio & initialization failure / disconnection notification Tutorial / How to use the plugin Fast Paced action video Additional Notes: ----------------- 1) After muting and disabling by using Note button, audio doesn't re-enable, Press Vol Up or Down. 2) You'll see a slight delay when you change the volume -- it's normal. Any suggestions for improvement welcome. Enjoy. Note: Put "REAL USER" in your post let me know you have actually tried this. Download v0.99 Donate
__________________
Releases: Hardware Alarm Interface 1.3.359|SRC/Open Alarm Lib 3.xx Kernel|Academic Aid Suite 6.R769 w/ Motion (4th place in Neoflash for 2 consecutive times)|LocoRoco Motion Plugin .99|XmbController 1.61|More/Older... Last edited by Mr305; 02-28-2008 at 05:22 PM. |
|
|
|
|
#2 |
Elite
|
You know, you make it really hard not to spend all of my X-mas cash on buying that peripheral and game.
__________________
With love out of life and sleep out of mind, death approaches with me in mind. |
|
|
|
|
#3 | |
Developer
|
Quote:
You can also try the demo.
__________________
Releases: Hardware Alarm Interface 1.3.359|SRC/Open Alarm Lib 3.xx Kernel|Academic Aid Suite 6.R769 w/ Motion (4th place in Neoflash for 2 consecutive times)|LocoRoco Motion Plugin .99|XmbController 1.61|More/Older... |
|
|
|
|
|
#4 |
Journeyman
|
This plugins is so cool
Can i know where you buy your Black Motion kit ?
__________________
PSP Fat 3.90M33-2 + Kernel 1.50-2 + MS Patch
iPod Touch 1.1.2 Jailbreaké + iTunes 7.6 Mozilla FireFox + Windows XP SP2 Québécois |
|
|
|
|
#5 | |
Developer
|
Quote:
__________________
Releases: Hardware Alarm Interface 1.3.359|SRC/Open Alarm Lib 3.xx Kernel|Academic Aid Suite 6.R769 w/ Motion (4th place in Neoflash for 2 consecutive times)|LocoRoco Motion Plugin .99|XmbController 1.61|More/Older... |
|
|
|
|
|
#6 |
Journeyman
|
I wish they would make a slim version
|
|
|
|
|
#7 |
Developer
|
Pity you didn't include the code - especially since you stitched most of it up from various apps. I like the way you *reused* the SceCtrlData structure in conjunction with count to initialize your function
Good job!Here is a quick and dirty reverse of it. Not compilable as is, and contains a few volountary errors to make it QJ-proof. ![]() Code:
#include <pspdebug.h>
#include "psplink/util.h"
#include "psplink/apihook.h"
#include "graphics.h"
int module_stop(){
return 0;
}
int module_start(int argc, void* argv){
pspDebugSioInit();
pspDebugSioSetBaud(510416);
th_id = sceKernelCreateThread("main_thread", main, 0x20, 0x10000, 0, 0);
if (th_id >= 0){
sceKernelStartThread(th_id, argc, argv);
}
return 0;
}
SceCtrlData old_pad; //0x000020EC
SceCtrlData new_pad; //0x0000210C
SceCtrlData fake_pad; //0x0000211C
int fake_buttons;
int old_btn; //0x00002100
int initialized; //0x000020BC
int last_peek_ret; //0x000020C0
int *fake_btn_ptr; //0x000020B8
int jmp_counter; //0x000020B4
int jmp_state; //0x000020B0
int sceCtrlReadBufferPositive_fake(SceCtrlData *pad_data, int count){
int cnt;
if ((initialized != 1) && (count == 0x1FEA3F)){
initialized = 1;
fake_btn_ptr = pad_data.Buttons;
g_counter = 0x3C;
jmp_state = 0;
}
last_peek_ret = sceCtrl_driver_454455AC(pad_data, count);
if (initialized != 1) return last_peek_ret;
if (*fake_btn_ptr == 0x1F4){
pad_data.Buttons |= PSP_CTRL_LTRIGGER;
}
if (*fake_btn_ptr == 0x1F5){
pad_data.Buttons |= PSP_CTRL_RTRIGGER;
}
if (*fake_btn_ptr == 0x1F7){
if (jmp_state == 0){
jmp_state = 2;
jmp_counter = 1;
pad_data.Buttons |= (PSP_CTRL_LTRIGGER|PSP_CTRL_RTRIGGER);
*fake_btn_ptr = 0;
return last_peek_ret;
}
}
if (jmp_state == 1){
jmp_state = 2;
jmp_counter = 1;
pad_data.Buttons |= (PSP_CTRL_LTRIGGER|PSP_CTRL_RTRIGGER);
*fake_btn_ptr = 0;
return last_peek_ret;
} else if (jmp_state == 2){
cnt = g_counter;
if (cnt < 0xB){
cnt++;
if (cnt < 0xB){
jmp_counter = cnt;
pad_data.Buttons |= (PSP_CTRL_LTRIGGER|PSP_CTRL_RTRIGGER);
*fake_btn_ptr = 0;
return last_peek_ret;
}
}
if (cnt == 0xB){
jmp_counter = 0x3C;
jmp_state = 0;
}
}
*fake_btn_ptr = 0;
return last_peek_ret;
}
int main(int argc, void* argv){
char c1; //r16
char c2; //r17
int modid;
int tries; //r20
int deadthread; //r19
int unk; //r18
sceKernelDelayThread(3500000);
fake_buttons = 0;
modid = refer_module_by_name("sceController_Service", 0);
apiHookByNid(modid, "sceCtrl", 0x1F803938, sceCtrlReadBufferPositive_fake);
fake_pad.Buttons = &fake_buttons;
sceCtrl_driver_454455AC(&fake_pad, 0x1FEA3F);
sceCtrlReadBufferPositive_fake(&fake_pad, 0x1FEA3F);
sceCodecOutputEnable(0, 1);
tries = 0;
unk = 0;
deadthread = 0;
while(1){
sceCtrl_driver_C4AAD55F(&new_pad, 1);
old_pad.TimeStamp = new_pad.TimeStamp;
old_pad.Ly = new_pad.Ly;
old_btn = old_pad.Buttons;
old_pad.Buttons = new_pad.Buttons;
old_pad.Lx = new_pad.Lx;
if ((old_btn & ~new_pad.Buttons) & (PSP_CTRL_VOLDOWN|PSP_CTRL_VOLUP)){
sceKernelDelayThread(50000);
sceCodecOutputEnable(0, 1);
}
pspDebugSioPutchar(0x31);
c1 = pspDebugSioWaitGetchar();
pspDebugSioPutchar(0x32);
c2 = pspDebugSioWaitGetchar();
if ((c1 == 0x500) || (c2 == 0x500)){
printTextScreen(0, 0, "Motion Kit not detected. Terminating...", 0, 0xFFFFFF);
tries++;
if (tries == 100){
sceKernelExitDeleteThread(0);
}
deadthread = 0;
}
if (c1 < 0x73){
fake_pad.TimeStamp = 0x1F5;
}
if (c1 < 0xC8){
if (c1 < 0x92){
fake_pad.TimeStamp = 0x1F4;
}
}
if (c2 >= 0x96) && (unk != 0){
if ((unk == 1) && (c2 >= 0xA7)){
fake_pad.TimeStamp = 0x1F7;
unk = 0;
}
}
if (deadthread != 1){
sceKernelDelayThread(0x3e8);
} else {
sceKernelDelayThread(1);
}
}
__________________
Adrahil - Software architect and specialist in Reverse Engineering. Spoiler for Guilt of a Dev:
Spoiler for me:
|
|
|
|
|
#8 | |
Developer
|
Quote:
Anyway, Great skill ya got EDIT: Before you claim "Stitch", Ofcourse it uses Psplink's ApiHook sources & vshblit.c/h
__________________
Releases: Hardware Alarm Interface 1.3.359|SRC/Open Alarm Lib 3.xx Kernel|Academic Aid Suite 6.R769 w/ Motion (4th place in Neoflash for 2 consecutive times)|LocoRoco Motion Plugin .99|XmbController 1.61|More/Older... Last edited by Mr305; 12-26-2007 at 04:35 PM. |
|
|
|
|
|
#9 |
Developer
|
The code is far less complex than I had imagined :P
@adrahil: Would like to know if you're able to reverse my motion kit driver too when I release it first :P Nah, don't want to waste your time, I know you could ![]() PS: Not much left before the first release, only one minor bug and writing a readme
__________________
Raphs board rules #31: Excessive use of punctuation is either a sign of a lesser ego or a small mind. Avoid it if you don't want to look like a total moron. Raphs board rules #17: When you need to ask whether you are capable of doing something, you are not. Raphs board rules #2: Exploits aren't found by changing version numbers, blindly merging data into a file or turning your PSP upside down. Raphs board rules #1: If you have no clue how exploits work, don't come up with ideas about them. |
|
|