array within a structure

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

array within a structure

Post by EdwardFMA »

Ok is it possible to have a multi-dimensional array within a structure? I've tried looking this up and can't find anything on it... please help
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
popcornx
Posts: 6
Joined: Tue Mar 14, 2006 7:56 am

Post by popcornx »

Code: Select all

struct blah {
int myarray[200];
};

you mean like that?
23BDFFFCAFB1000423BD0004

"nothing is impossible, not if you could imagen it"
User avatar
dot_blank
Posts: 498
Joined: Wed Sep 28, 2005 8:47 am
Location: Brasil

Post by dot_blank »

more like this

Code: Select all

typedef union MulArr23 {
    struct {
        float 	x;
        float 	y;
        float 	z;
    };
    float arr[2][3];
} MulArr23;

// etc...

// declare our variable
MulArr23 sample;

// axis
sample->x = 0.0f;
sample->y = 0.1f;
sample->z = 0.0f;

// first dimension arr[0][0]
sample->arr[0][0] = 1.0f;
sample->arr[0][1] = 2.0f;
sample->arr[0][2] = 3.0f;

// second dimension arr[1][0]
sample->arr[1][0] = 3.0f;
sample->arr[1][1] = 2.0f;
sample->arr[1][2] = 1.0f;

// continue your fun ... 
10011011 00101010 11010111 10001001 10111010
Viper8896
Posts: 110
Joined: Thu Jan 26, 2006 6:20 pm

Post by Viper8896 »

Code: Select all

struct blah {
int myarray[][][];
}; 
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

ok new problem (Completely unrelated) How do i compile MIPS Assembly Code with PSPSDK???

"psp-as main.s main.o" or do i need many more functions...

i get this when i just do that...
main.s:1080: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1081: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1082: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1083: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1084: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1085: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1086: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1087: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1088: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1089: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1090: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1091: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1092: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1093: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1094: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1095: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1096: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1097: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1098: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1099: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1100: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1101: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1102: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1103: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1104: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1105: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1106: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1107: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1108: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1109: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1110: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1111: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1112: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1113: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1114: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1115: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1116: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1117: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1118: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1119: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1120: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1121: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1122: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1123: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1124: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1125: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1126: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1127: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1128: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1129: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1130: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1131: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1132: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1133: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1134: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1135: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1136: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1137: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1138: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1139: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1140: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1141: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1142: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1143: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1144: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1145: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1146: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1147: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1148: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1149: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1150: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1151: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1152: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1153: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1154: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1155: Error: junk at end of line, first unrecognized character valued 0xd
main.s:1156: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1157: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1158: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1159: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1160: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1161: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1162: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1163: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1164: Error: junk at end of line, first unrecognized character valued 0xd
main.s:1165: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1166: Error: junk at end of line, first unrecognized character valued 0xd
main.s:1167: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1168: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1169: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1170: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1171: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1172: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1173: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1174: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1175: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1176: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1177: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1178: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1179: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1180: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1181: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1182: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1183: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1184: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1185: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1186: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1187: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1188: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1189: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1190: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1191: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1192: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1193: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1194: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1195: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1196: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1197: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1198: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1199: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1200: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1201: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1202: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1203: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1204: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1205: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1206: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1207: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1208: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1209: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1210: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1211: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1212: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1213: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1214: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1215: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1216: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1217: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1218: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1219: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1220: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1221: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1222: Error: junk at end of line, first unrecognized character valued 0xd
main.s:1223: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1224: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1225: Error: junk at end of line, first unrecognized character valued 0x9
main.s:1226: Error: junk at end of line, first unrecognized character is `:'
main.s:1227: Error: junk at end of line, first unrecognized character is `:'
main.s:1228: Error: junk at end of line, first unrecognized character is `:'
main.s:1229: Error: junk at end of line, first unrecognized character is `)'
main.s:1229: Can't open main.o for reading: No such file or directory
This is the file i'm trying to compile...
asm __volatile__("
.set noreorder
.set noat
syscall 0x20C7 #//flush cache
ori $a0,$0,111 #//set CPU to 111MHz
syscall 0x219e
ori $a0,$0,111 #//set Bus to 111MHz
syscall 0x219f
nop
bal gettxtaddr
nop
or $a0,$0,$v0
ori $a1,$0,1
ori $a2,$0,0x001f
addiu $a0,$a0,-32
syscall 0x0208f #// sceIoOpen
or $s5,$0,$v0
ori $a0,$v0,0
ori $a2,$0,0 #// set
ori $a1,$0,0x238
syscall 0x2097 #// seek32
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x4000
ori $a1,$a1,0x4000
syscall 0x2091 #// read 16kB
ori $a0,$s5,0
syscall 0x208d #// sceIoClose
lui $s0,0x0881
syscall 0x20C7 #//flush cache
ori $s0,$s0,0x4000
jr $s0
nop
# reloaded tif file from here, because data beyond ~4kB gets overwritten by system or sth.

ori $a0,$0,0
ori $a1,$0,480
ori $a2,$0,272
syscall 0x2142 #// sceDisplaySetMode
nop
lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)
lui $t5,0x0002
lui $t9,0x4400
lui $t7,0x003f
ori $t5,$t5,0x2000
ori $t7,$t7,0x6f2f
loopfill00:
addiu $t5,$t5,-1
sw $t7,0($t9)
bgtz $t5,loopfill00
addiu $t9,$t9,4

lui $t9,0x4400
lui $s3,0x0881
ori $t9,$t9,0x6220

lui $a1,0x007f
bal gettxtaddr
ori $a1,$a1,0xe01f
addiu $s4,$v0,0
bal settxt #// title
or $a0,$0,$v0

ori $a1,$0,1
ori $a2,$0,0x001f
addiu $a0,$s4,22
syscall 0x0208f #// sceIoOpen
or $s5,$0,$v0

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x0040
ori $a1,$a1,0xe01f
bal settxt #// filename
addiu $a0,$s4,22

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x6040
bltz $s5,fileerr00
ori $a1,$a1,0xe01f
bgezal $0,settxt #// loading...
addiu $a0,$s4,22+29
lui $s6,0x0001
lui $s1,0x464c
lui $s0,0x00ff
ori $s2,$0,0
ori $s0,$s0,0xffff
ori $s1,0x457f #//ELF magic
loadloop00:
lui $a1,0x0881
or $a0,$s5,$0
ori $a2,$0,0x100 #0x40
syscall 0x2091 #// read 256 bytes
lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0xc040
blez $v0,fileerr01
ori $a1,$a1,0xe01f
lui $t2,0x0881
ori $t1,$0,252 #60
lw $t0,0($t2)
addiu $t2,$t2,4
addiu $s2,$s2,4
addiu $s6,$s6,-1
loadloop01:
addiu $t1,$t1,-1
beq $t0,$s1,elffound00
lbu $v1,0($t2)
addiu $t2,$t2,1
srl $v0,$t0,8
sll $v1,$v1,24
and $v0,$v0,$s0
addiu $s2,$s2,1
bgtz $t1,loadloop01
or $t0,$v1,$v0


bgtz $s6,loadloop00
nop

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0xc040
bne $t0,$s1,fileerr01
ori $a1,$a1,0xe01f

elffound00:

addiu $s2,$s2,-4

lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)

ori $a0,$s5,0
ori $a2,$0,0 #// set
or $a1,$s2,$0
syscall 0x2097 #// seek32 (ELF hdr)
nop
# bltz $v0,fileerr01
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x34
syscall 0x2091 #// read 52 bytes (ELF Header)
nop
lw $t0,28($s3)
ori $a0,$s5,0
addu $a1,$s2,$t0
ori $a2,$0,0 #// set
syscall 0x2097 #// seek32 (program hdr)
nop
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x20
addiu $a1,$a1,0x34
syscall 0x2091 #// read 32 bytes (program Header)
nop

lw $t1,0x3c($s3)
lw $t0,0x48($s3)
crlloop00:
addiu $t0,$t0,-4
sw $0,0($t1)
bgtz $t0,crlloop00
addiu $t1,$t1,4

lw $t0,0x38($s3)
ori $a0,$s5,0
addu $a1,$s2,$t0
or $s0,$a1,$0
ori $a2,$0,0 #// set
syscall 0x2097 #// seek32 (program offset)
nop

lw $a1,0x3c($s3)
ori $a0,$s5,0
lw $a2,0x44($s3)
syscall 0x2091 #// read program
nop

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x61f0
ori $a1,$a1,0xe01f
bgezal $0,settxt #// (loading...) finished
addiu $a0,$s4,22+51

ori $a0,$s5,0
syscall 0x208d #// sceIoClose
nop

#beq $0,$0,nids_finished
lw $t7,0x3c($s3)
lui $t1,0xd632
lui $t2,0x0040
ori $t1,0xacdb
srchloop00:
lw $at,0($t7)
addiu $t7,$t7,4
addiu $t2,$t2,-1
beq $at,$t1,foundentrytab0 #? check
nop
bgtz $t2,srchloop00
nop
beq $0,$0,fileerr00
ori $a1,$0,0xff #red 'not found'
foundentrytab0:
lw $at,0($t7)
lui $t0,0xf01d
ori $t0,$t0,0x73a7
bne $at,$t0,srchloop00 #contiune
nop
lw $t0,8($t7) #get moduleinfo addr
lw $t7,0x2c($t0)

resolve_nids0:
lw $t0,0x00($t7) #module name str
lw $t1,0x08($t7)
beq $t0,$0,nids_finished
lw $a0,0x0c($t7) #stub_idtable
lw $a1,0x10($t7) #stub_text
srl $t1,$t1,16 #number of nids
resnids_loop0:
lw $at,0($a0) #nid to find
addiu $a2,$s4,1208
addiu $a0,$a0,4
addiu $t1,$t1,-1
resnids_loop1:
lw $t0,0($a2)
beq $t0,$at,nidfound00
lw $v0,4($a2)
bne $t0,$0,resnids_loop1
addiu $a2,$a2,8
nidfound00:
sw $v0,4($a1)
bgtz $t1,resnids_loop0
addiu $a1,$a1,8
beq $0,$0,resolve_nids0
addiu $t7,$t7,0x14
nids_finished:


syscall 0x20C7 #//flush cache
nop

beq $0,$0,hackstart01
lw $s7,0x3c($s3)

fileerr00:
bal settxt #// not found!
addiu $a0,$s4,22+40
beq $0,$0,hackstart01
nop

fileerr01:
bal settxt #// not found!
addiu $a0,$s4,22+40
ori $a0,$s5,0
syscall 0x208d #// sceIoClose

hackstart01:

lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)

lui $a0,0x0881
ori $a1,$0,1
or $s2,$a0,$0
syscall 0x215b #//sceCtrlRead
nop

syscall 0x2152
nop
syscall 0x2152

lui $t9,0x4402
lui $a1,0x005f
ori $t9,$t9,0x8000
ori $t5,$0,0x5a00
ori $a1,$a1,0x3f3f
loopfill03:
sw $a1,0x00($t9)
sw $a1,0x04($t9)
addiu $t5,$t5,-1
sw $a1,0x08($t9)
sw $a1,0x0c($t9)
bgtz $t5,loopfill03
addiu $t9,$t9,16


lui $s3,0x0881
lw $t0,4($s3)
andi $t1,$t0,0xf000

addiu $t2,$t2,0x20
addiu $s6,$s6,1

lui $t8,0x4402
lui $a1,0x009f
ori $t8,$t8,0xa040
ori $a1,$a1,0x5f5f
ori $a3,$0,16
or $t7,$s7,$0
disasmloop00:
or $t9,$t8,$0
bal sethex
ori $a0,$t7,0
addiu $t9,$t9,0x10
bal sethex
lw $a0,0x00($t7)
addiu $t9,$t9,0x40


lw $v0,0x00($t7)
lui $t2,0x0881
srl $s0,$v0,23
ori $t2,$t2,0x0020
andi $a0,$s0,0x1f8
srl $s0,$s0,3
addu $a0,$a0,$s4
addiu $a0,$a0,184
lw $s1,0($a0)
lw $v1,4($a0)
sw $s1,0($t2)
andi $s1,$v1,0xffff
sw $s1,4($t2)
ori $t3,$0,'?'
srl $s1,$v1,16
sw $t3,8($t2)
beq $v0,$0,nopmn00
ori $at,$0,1
beq $s0,$0,specialmn00
andi $s1,$s1,0xff
beq $s0,$at,regimmmn00
ori $t0,$0,4
beq $s1,$at,jumpmn00
ori $at,$0,5
beq $s1,$t0,i16mn00
ori $t0,$0,6
beq $s1,$at,luimn00
ori $at,$0,2
beq $s1,$t0,m16mn00
nop
beq $s1,$at,beqmn00
nop

writeasm:
addiu $at,$t2,8
bal settxt #// asm text
or $a0,$0,$t2
addiu $t9,$t8,0x2a0
bal settxt #// asm text
or $a0,$0,$at


addiu $a3,$a3,-1
addiu $t8,$t8,22528
bgtz $a3,disasmloop00
addiu $t7,$t7,4


lw $t1,0x04($s3)
andi $t0,$s6,1
srl $a0,$t1,6
srl $a1,$t1,4
andi $t1,$t1,8
and $a0,$t0,$a0
and $a1,$t0,$a1
sll $a0,$a0,2
sll $a1,$a1,2
addu $s7,$s7,$a0
subu $s7,$s7,$a1


bne $t1,$0,startprog00
lw $s0,0x18($s3) #entry point

andi $t0,$s6,0x1f
sltiu $t0,$t0,5
bne $t0,$0,hackstart01
lui $a1,0x00d0
lui $t9,0x4405
ori $a1,$a1,0x8f8f
ori $t9,$t9,0xb220
bal settxt
addiu $a0,$s4,82

beq $0,$0,hackstart01
nop

specialmn00:
andi $t0,$v0,0x3f
sll $t0,$t0,3
addu $t0,$t0,$s4
lw $s0,696($t0)
lw $s1,700($t0)
sw $s0,0($t2)
srl $t0,$s1,16
ori $t1,$0,'l'
andi $t0,$t0,0xff
ori $at,$0,9
beq $t0,$t1,syscall00
sh $s1,4($t2)
ori $t1,$0,10
beq $t0,$at,i3regmn00
ori $at,$0,8
beq $t0,$t1,jrmn00
nop
beq $t0,$at,shiftmn00
nop
beq $0,$0,writeasm
nop

syscall00:
addiu $a0,$t2,8
sb $t0,6($t2)
srl $t1,$v0,6
bal num2hex16
andi $at,$t1,0xffff
beq $0,$0,writeasm
nop

shiftmn00:
addiu $a0,$t2,14
andi $at,$v0,0x7c0
bal num2hex16
sll $at,$at,2
srl $t1,$v0,11
srl $t0,$v0,16
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
sb $at,13($t2)
beq $0,$0,writeasm
sb $0,18($t2)

i3regmn00:
srl $at,$v0,11
srl $t1,$v0,16
srl $t0,$v0,21
andi $at,$at,0x1f
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $at,$at,1
sll $t1,$t1,1
sll $t0,$t0,1
addu $at,$at,$s4
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
lh $t0,120($at)
ori $at,$0,0x2c
sh $s0,14($t2)
sb $0,16($t2)
sb $at,10($t2)
sh $t0,8($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

jrmn00:
srl $t0,$v0,21
andi $t0,$t0,0x1f
sll $t0,$t0,1
addu $t0,$t0,$s4
lh $s1,120($t0)
sh $s1,8($t2)
beq $0,$0,writeasm
sb $0,10($t2)

regimmmn00:
ori $at,$0,'r'
beq $0,$0,writeasm
sw $at,8($t2)

jumpmn00:
addiu $a0,$t2,8
sll $at,$v0,6
bal num2hex32
srl $at,$at,4
beq $0,$0,writeasm
nop

i16mn00:
addiu $a0,$t2,14
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
srl $t0,$v0,21
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

beqmn00:
sll $at,$v0,16
addiu $a0,$t2,14
sra $at,$at,14
addiu $at,$at,4
bal num2hex32
addu $at,$at,$t7
srl $t1,$v0,21
and $at,$v0,0x8000
srl $t0,$v0,16
ori $s0,$0,'+'
ori $s1,$0,'-'
andi $t1,$t1,0x1f
movn $s0,$s1,$at
andi $t0,$t0,0x1f
sh $s0,24($t2)
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

luimn00:
addiu $a0,$t2,11
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
andi $t1,$t1,0x1f
sll $t1,$t1,1
addu $t1,$t1,$s4
lh $t0,120($t1)
ori $at,$0,0x2c
sh $t0,8($t2)
beq $0,$0,writeasm
sb $at,10($t2)

m16mn00:
addiu $a0,$t2,11
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
srl $t0,$v0,21
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
ori $s0,$0,0x28
sb $at,10($t2)
sb $s0,17($t2)
ori $at,$0,0x29
sh $s1,18($t2)
sb $at,20($t2)
beq $0,$0,writeasm
sb $0,21($t2)


nopmn00:
lui $at,'p'
sw $0,8($t2)
ori $at,$at,0x6f6e #'no'|'p'
beq $0,$0,writeasm
sw $at,0($t2)

num2hex32:
addiu $a0,$a0,9
addiu $s0,$0,8
num2hex32loop0:
andi $t0,$at,0x0f
srl $at,$at,4
sltiu $t1,$t0,10
addiu $s1,$t0,0x30
addiu $t0,$t0,0x57
movn $t0,$s1,$t1
addiu $s0,$s0,-1
sb $t0,0($a0)
bgtz $s0,num2hex32loop0
addiu $a0,$a0,-1
ori $at,$0,0x78
sb $0,9($a0)
addiu $a0,$a0,-1
ori $t0,$0,0x30
sb $at,1($a0)
jr $ra
sb $t0,0($a0)

num2hex16:
addiu $a0,$a0,5
addiu $s0,$0,4
num2hex16loop0:
andi $t0,$at,0x0f
srl $at,$at,4
sltiu $t1,$t0,10
addiu $s1,$t0,0x30
addiu $t0,$t0,0x57
movn $t0,$s1,$t1
addiu $s0,$s0,-1
sb $t0,0($a0)
bgtz $s0,num2hex16loop0
addiu $a0,$a0,-1
ori $at,$0,0x78
sb $0,5($a0)
addiu $a0,$a0,-1
ori $t0,$0,0x30
sb $at,1($a0)
jr $ra
sb $t0,0($a0)




startprog00:

jr $s0
nop


setchr00:
or $t0,$0,$t9
ori $t1,$0,5
setchr_l00:
ori $t2,$0,3
addiu $t1,$t1,-1
setchr_l01:
andi $t3,$a0,1
addiu $t2,$t2,-1
bne $t3,$0,setpix00
srl $a0,$a0,1
pixdone00:
bgtz $t2,setchr_l01
addiu $t0,$t0,4
bgtz $t1,setchr_l00
addiu $t0,$t0,2036
jr $ra
addiu $t9,$t9,20
setpix00:
beq $0,$0,pixdone00
sw $a1,0($t0)


sethex:
or $s0,$ra,$0
bal gethexaddr
or $v1,$a0,$0
ori $s1,$0,8
hexloop00:
srl $t4,$v1,28
sll $v1,$v1,4
andi $t4,$t4,0x0f
addiu $s1,$s1,-1
sll $t4,$t4,1
addu $t4,$v0,$t4
bal setchr00
lh $a0,0($t4)
bgtz $s1,hexloop00
nop
jr $s0
nop

setchr01:
or $t0,$0,$t9
ori $t1,$0,4
ori $t5,$0,1
setchr_l10:
ori $t2,$0,8
addiu $t1,$t1,-1
setchr_l11:
addiu $t2,$t2,-1
bltz $a0,setpix01
sll $a0,$a0,1
pixdone01:
bgtz $t2,setchr_l11
addiu $t0,$t0,4
bgtz $t1,setchr_l10
addiu $t0,$t0,2048-(4*8)
or $a0,$a2,$0
ori $t1,$0,4
bne $t5,$0,setchr_l10
addiu $t5,$t5,-1
beq $0,$0,settxtloop0
addiu $t9,$t9,9*4
setpix01:
beq $0,$0,pixdone01
sw $a1,0($t0)

settxt:
or $s0,$ra,$0
bal getascaddr
or $v1,$a0,$0
settxtloop0:
lbu $t0,0($v1)
addiu $v1,$v1,1
beq $t0,$0,endsettxt
sltiu $t1,$t0,0x21
addiu $t4,$t0,-33
sltiu $t2,$t0,0x7f
sll $t4,$t4,3
sll $t3,$t1,5
addu $t4,$t4,$v0
bne $t1,$0,settxtloop0
addu $t9,$t9,$t3
lw $a0,0($t4)
bne $t2,$0,setchr01
lw $a2,4($t4)
beq $0,$0,settxtloop0
nop
endsettxt:
jr $s0
nop

gettxtaddr:
or $t0,$ra,$0
bal gttxtaddr
nop
gttxtaddr:
jr $t0
addiu $v0,$ra,0x28

.byte 'm','s','0',':','/','P','S','P','/','P','H','O','T','O','/','p','s','p','0','1','.','t','i','f',0,0,0,0,0,0,0,0
.byte 'E','B','O','O','T',' ','L','o','a','d','e','r',' ','0','.','1',' ','b','e','t','a',0
.byte 'm','s','0',':','/','P','S','P','/','G','A','M','E','/','B','O','O','T','/','E','B','O','O','T','.','P','B','P',0
.byte 'l','o','a','d','i','n','g','.','.','.',0
.byte 'n','o','t',' ','f','o','u','n','d','!',0
.byte 'f','i','n','i','s','h','e','d',0
#82
.byte 'p','r','e','s','s',' ','s','t','a','r','t',' ','t','o',' ','r','u','n',' ','E','B','O','O','T',0
#107
.byte '-','-','-','-',0
#112
.byte 'z','e','r','o',0,0,0,0
#120
.byte '$','0'
.byte 'a','t'
.byte 'v','0'
.byte 'v','1'
.byte 'a','0'
.byte 'a','1'
.byte 'a','2'
.byte 'a','3'
.byte 't','0'
.byte 't','1'
.byte 't','2'
.byte 't','3'
.byte 't','4'
.byte 't','5'
.byte 't','6'
.byte 't','7'
.byte 's','0'
.byte 's','1'
.byte 's','2'
.byte 's','3'
.byte 's','4'
.byte 's','5'
.byte 's','6'
.byte 's','7'
.byte 't','8'
.byte 't','9'
.byte 'k','0'
.byte 'k','1'
.byte 'g','p'
.byte 's','p'
.byte 'f','p'
.byte 'r','a'
#184
.byte 0,0,0,0 # special
.word 0x00000000
.byte 0,0,0,0 # regimm
.word 0x00000000
.byte 'j',0,0,0
.word 0x00010000
.byte 'j','a','l',0
.word 0x00010000
.byte 'b','e','q',0
.word 0x00020000 #-> 0x00020000
.byte 'b','n','e',0
.word 0x00020000 #-> 0x00020000
.byte 'b','l','e','z'
.word 0x00030000
.byte 'b','g','t','z'
.word 0x00030000
.byte 'a','d','d','i'
.word 0x00040000
.byte 'a','d','d','i'
.byte 'u',0,0x04,0x10 # last 4 bit = additional byte to string
.byte 's','l','t','i'
.word 0x00040000
.byte 's','l','t','i'
.byte 'u',0,0x04,0x10
.byte 'a','n','d','i'
.word 0x00040000
.byte 'o','r','i',0
.word 0x00040000
.byte 'x','o','r','i'
.word 0x00040000
.byte 'l','u','i',0
.word 0x00050000
.byte 'c','o','p','0'
.word 0x00000000
.byte 'c','o','p','1'
.word 0x00000000
.byte 'c','o','p','2'
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'b','e','q','l'
.word 0x00000000
.byte 'b','n','e','l'
.word 0x00000000
.byte 'b','l','e','z'
.byte 'l',0,0x00,0x10
.byte 'b','g','t','z'
.byte 'l',0,0x00,0x10
.byte 'd','a','d','d'
.byte 'i',0,0x00,0x10
.byte 'd','a','d','d'
.byte 'i','u',0x00,0x20
.byte 'l','d','l',0
.word 0x00060000
.byte 'l','d','r',0
.word 0x00060000
.byte 'm','m','i',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'l','q',0,0
.word 0x00060000
.byte 's','q',0,0
.word 0x00060000
.byte 'l','b',0,0
.word 0x00060000
.byte 'l','h',0,0
.word 0x00060000
.byte 'l','w','l',0
.word 0x00060000
.byte 'l','w',0,0
.word 0x00060000
.byte 'l','b','u',0
.word 0x00060000
.byte 'l','h','u',0
.word 0x00060000
.byte 'l','w','r',0
.word 0x00060000
.byte 'l','w','u',0
.word 0x00060000
.byte 's','b',0,0
.word 0x00060000
.byte 's','h',0,0
.word 0x00060000
.byte 's','w','l',0
.word 0x00060000
.byte 's','w',0,0
.word 0x00060000
.byte 's','d','l',0
.word 0x00060000
.byte 's','d','r',0
.word 0x00060000
.byte 's','w','r',0
.word 0x00060000
.byte 'c','a','c','h'
.byte 'e',0,0x07,0x10
.byte 'l','l',0,0
.word 0x00000000
.byte 'l','w','c','1'
.word 0x00070000
.byte 'l','w','c','2
.word 0x00070000
.byte 'p','r','e','f'
.word 0x00070000
.byte 'l','l','d',0
.word 0x00000000
.byte 'l','d','c','1'
.word 0x00060000
.byte 'l','d','c','2'
.word 0x00060000
.byte 'l','d',0,0
.word 0x00060000
.byte 's','c',0,0
.word 0x00000000
.byte 's','w','c','1'
.word 0x00070000
.byte 's','w','c','2'
.word 0x00070000
.byte '-','-','-',0
.word 0x00000000
.byte 's','c','d',0
.word 0x00000000
.byte 's','d','c','1'
.word 0x00070000
.byte 's','d','c','2'
.word 0x00070000
.byte 's','d',0,0
.word 0x00060000

#696
.byte 's','l','l',0
.word 0x00080000
.byte '-','-','-',0
.word 0x00000000
.byte 's','r','l',0
.word 0x00080000
.byte 's','r','a',0
.word 0x00080000
.byte 's','l','l','v'
.word 0x00090000
.byte '-','-','-',0
.word 0x00000000
.byte 's','r','l','v'
.word 0x00090000
.byte 's','r','a','v'
.word 0x00090000
.byte 'j','r',0,0
.word 0x000a0000
.byte 'j','a','l','r'
.word 0x000b0000
.byte 'm','o','v','z'
.word 0x00090000
.byte 'm','o','v','n'
.word 0x00090000
.byte 's','y','s','c'
.byte 'a','l','l',0x10
.byte 'b','r','e','a'
.byte 'k',0x00,0x00,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 's','y','n','c'
.word 0x00000000
.byte 'm','f','h','i'
.word 0x00000000
.byte 'm','t','h','i'
.word 0x00000000
.byte 'm','f','l','o'
.word 0x000a0000
.byte 'm','t','l','o'
.word 0x000a0000
.byte 'd','s','l','l'
.byte 'v',0x00,0x09,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.byte 'v',0x00,0x09,0x10
.byte 'd','s','r','a'
.byte 'v',0x00,0x09,0x10
.byte 'm','u','l','t'
.word 0x00090000
.byte 'm','u','l','t'
.byte 'u',0x00,0x09,0x10
.byte 'd','i','v',0
.word 0x00000000
.byte 'd','i','v','u'
.word 0x00000000
.byte 'd','m','u','l'
.byte 't',0x00,0x09,0x10
.byte 'd','m','u','l'
.byte 't','u',0x09,0x20
.byte 'd','d','i','v'
.word 0x00000000
.byte 'd','d','i','v'
.byte 'u',0x00,0x00,0x10
.byte 'a','d','d',0
.word 0x00090000
.byte 'a','d','d','u'
.word 0x00090000
.byte 's','u','b',0
.word 0x00090000
.byte 's','u','b','u'
.word 0x00090000
.byte 'a','n','d',0
.word 0x00090000
.byte 'o','r',0,0
.word 0x00090000
.byte 'x','o','r',0
.word 0x00090000
.byte 'n','o','r',0
.word 0x00090000
.byte 'm','f','s','a'
.word 0x000a0000
.byte 'm','t','s','a'
.word 0x000a0000
.byte 's','l','t',0
.word 0x00090000
.byte 's','l','t','u'
.word 0x00090000
.byte 'd','a','d','d'
.word 0x00090000
.byte 'd','a','d','d'
.byte 'u',0x00,0x09,0x10
.byte 'd','s','u','b'
.word 0x00090000
.byte 'd','s','u','b'
.byte 'u',0x00,0x09,0x10
.byte 't','g','e',0
.word 0x00000000
.byte 't','g','e','u'
.word 0x00000000
.byte 't','l','t',0
.word 0x00000000
.byte 't','l','t','u'
.word 0x00000000
.byte 't','e','q',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 't','n','e',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','l','l'
.word 0x00080000
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.word 0x00080000
.byte 'd','s','r','a'
.word 0x00080000
.byte 'd','s','l','l'
.byte '3','2',0x08,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.byte '3','2',0x08,0x10
.byte 'd','s','r','a'
.byte '3','2',0x08,0x10

#1208 //known nids
.word 0xca04a2b9, (0x2000<<6)|0x0c #sceKernelRegisterSubIntrHandler
.word 0xd61e6961, (0x2001<<6)|0x0c #sceKernelReleaseSubIntrHandler
.word 0xfb8e22ec, (0x2002<<6)|0x0c #sceKernelEnableSubIntr
.word 0x278c0df5, (0x201a<<6)|0x0c #sceKernelWaitThreadEnd
.word 0xceadeb47, (0x201c<<6)|0x0c #sceKernelDelayThread
.word 0xd6da4ba1, (0x2020<<6)|0x0c #sceKernelCreateSema
.word 0x28b6489c, (0x2021<<6)|0x0c #sceKernelDeleteSema
.word 0x3f53e640, (0x2022<<6)|0x0c #sceKernelSignalSema
.word 0x4e3a1105, (0x2023<<6)|0x0c #sceKernelWaitSema
.word 0x58b1f937, (0x2025<<6)|0x0c #sceKernelPollSema
.word 0x8ffdf9a2, (0x2026<<6)|0x0c #sceKernelCancelSema
.word 0x55c20a00, (0x2028<<6)|0x0c #sceKernelCreateEventFlag
.word 0xef9e4c70, (0x2029<<6)|0x0c #sceKernelDeleteEventFlag
.word 0x1fb15a32, (0x202a<<6)|0x0c #sceKernelSetEventFlag
.word 0x812346e4, (0x202b<<6)|0x0c #sceKernelClearEventFlag
.word 0x402fcf22, (0x202c<<6)|0x0c #sceKernelWaitEventFlag
.word 0x30fd48f0, (0x202e<<6)|0x0c #sceKernelPollEventFlag
.word 0xcd203292, (0x202f<<6)|0x0c #sceKernelCancelEventFlag
.word 0x56c039b5, (0x2043<<6)|0x0c #sceKernelCreateVpl
.word 0x89b3d48c, (0x2044<<6)|0x0c #sceKernelDeleteVpl
.word 0xaf36d708, (0x2047<<6)|0x0c #sceKernelTryAllocateVpl
.word 0xb736e9ff, (0x2048<<6)|0x0c #sceKernelFreeVpl
.word 0x369ed59d, (0x205a<<6)|0x0c #sceKernelGetSystemTimeLow
.word 0x446d8de6, (0x206d<<6)|0x0c #sceKernelCreateThread
.word 0x9fa03cd3, (0x206e<<6)|0x0c #sceKernelDeleteThread
.word 0xf475845d, (0x206f<<6)|0x0c #sceKernelStartThread
.word 0xaa73c935, (0x2071<<6)|0x0c #sceKernelExitThread
.word 0x809ce29b, (0x2072<<6)|0x0c #sceKernelExitDeleteThread
.word 0x383f7bcc, (0x2074<<6)|0x0c #sceKernelTerminateDeleteThread
.word 0x3ad58b8c, (0x2075<<6)|0x0c #sceKernelSuspendDispatchThread
.word 0x27e22ec2, (0x2076<<6)|0x0c #sceKernelResumeDispatchThread
.word 0x293b45b8, (0x207b<<6)|0x0c #sceKernelGetThreadId
.word 0x810c4bc3, (0x208d<<6)|0x0c #sceIoClose
.word 0x109f50bc, (0x208f<<6)|0x0c #sceIoOpen
.word 0x6a638d83, (0x2091<<6)|0x0c #sceIoRead
.word 0x42ec03ac, (0x2093<<6)|0x0c #sceIoWrite
.word 0x27eb27b8, (0x2095<<6)|0x0c #sceIoLseek
.word 0x27eb27b8, (0x2097<<6)|0x0c #sceIoLseek32?
.word 0x63632449, (0x2099<<6)|0x0c #sceIoIoctl
.word 0xb29ddf9c, (0x209b<<6)|0x0c #sceIoDopen
.word 0xe3eb004c, (0x209c<<6)|0x0c #sceIoDread
.word 0xeb092469, (0x209d<<6)|0x0c #sceIoDclose
.word 0xace946e8, (0x20a2<<6)|0x0c #sceIoGetstat
.word 0x79d1c3fa, (0x20c6<<6)|0x0c #sceKernelDcacheWritebackAll
.word 0xb435dec5, (0x20c7<<6)|0x0c #sceKernelDcacheWritebackInvalidateAll
.word 0x3ee30821, (0x20c8<<6)|0x0c #sceKernelDcacheWritebackRange
.word 0x977de386, (0x20d2<<6)|0x0c #sceKernelLoadModule
.word 0x50f0c1ec, (0x20d6<<6)|0x0c #sceKernelStartModule
.word 0xd1ff982a, (0x20d7<<6)|0x0c #sceKernelStopModule
.word 0x2e0911aa, (0x20d8<<6)|0x0c #sceKernelUnloadModule
.word 0xeadb1bd7, (0x20ea<<6)|0x0c #sceKernelPowerLock
.word 0x3aee7261, (0x20eb<<6)|0x0c #sceKernelPowerUnlock
.word 0x617f3fe6, (0x20f0<<6)|0x0c #sceDmacMemcpy
.word 0xe47e40e4, (0x20f3<<6)|0x0c #sceGeEdramGetAddr
.word 0xab49e76a, (0x20f9<<6)|0x0c #sceGeListEnQueue
.word 0x1c0d95a6, (0x20fa<<6)|0x0c #sceGeListEnQueueHead
.word 0x03444eb4, (0x20fd<<6)|0x0c #sceGeListSync
.word 0xe0d68148, (0x20fc<<6)|0x0c #sceGeListUpdateStallAddr
.word 0xb287bd61, (0x20ff<<6)|0x0c #sceGeDrawSync
.word 0xb448ec0d, (0x2100<<6)|0x0c #sceGeBreak
.word 0x4c06e472, (0x2101<<6)|0x0c #sceGeContinue
.word 0x3f7ad767, (0x2105<<6)|0x0c #sceRtcGetCurrentTick
.word 0x4cfa57b0, (0x210a<<6)|0x0c #sceRtcGetCurrentClock
.word 0xe7c27d1b, (0x210b<<6)|0x0c #sceRtcGetCurrentClockLocalTime
.word 0x136caf51, (0x212d<<6)|0x0c #sceAudioOutputBlocking
.word 0xe2d56b2d, (0x212e<<6)|0x0c #sceAudioOutputPanned
.word 0x13f592bc, (0x212f<<6)|0x0c #sceAudioOutputPannedBlocking
.word 0x5ec81c55, (0x2130<<6)|0x0c #sceAudioChReserve
.word 0x6fc46853, (0x2131<<6)|0x0c #sceAudioChRelease
.word 0xcb2e439e, (0x2133<<6)|0x0c #sceAudioSetChannelDataLen
.word 0x95fd0c2d, (0x2134<<6)|0x0c #sceAudioChangeChannelConfig
.word 0xb7e1d8e7, (0x2135<<6)|0x0c #sceAudioChangeChannelVolume
.word 0x0E20F177, (0x2142<<6)|0x0c #pspDisplaySetMode
.word 0x289D82FE, (0x2148<<6)|0x0c #pspDisplaySetFrameBuf
.word 0x36cdfade, (0x2150<<6)|0x0c #sceDisplayWaitVblank
.word 0x984C27E7, (0x2152<<6)|0x0c #pspDisplayWaitVblankStart
.word 0x1f4011e6, (0x2159<<6)|0x0c #sceCtrlSetSamplingMode
.word 0xda6b76a1, (0x215a<<6)|0x0c #sceCtrlGetSamplingMode
.word 0x1f803938, (0x215b<<6)|0x0c #sceCtrlRead
.word 0x40d2f9f0, (0x2174<<6)|0x0c #sceHprmReadLatch
.word 0xdb62c9cf, (0x2193<<6)|0x0c #scePowerCancelRequest
.word 0x17768e14, (0x21e4<<6)|0x0c #sceRegSetKeyValue
.word 0xc5768d02, (0x21eb<<6)|0x0c #sceRegKickBackDiscover
.word 0,0 # //end of table


.align 3
gethexaddr:
or $t0,$ra,$0
bal gthexaddr
nop
gthexaddr:
jr $t0
addiu $v0,$ra,0x08

.word 0x249a2b6a,0x38a372a3,0x38cf4f74,0x12a72ace,0x39aa2aaa,0x3aeb5bea,0x3b6b624e,0x12cf72cf

getascaddr:
or $t0,$ra,$0
bal gtascaddr
nop
gtascaddr:
jr $t0
addiu $v0,$ra,0x08

.word 0x30787830,0x30003000,0x6C6C6C00,0x00000000 #// 0x21 , 0x22
.word 0x6C6CFE6C,0xFE6C6C00,0x307CC078,0x0CF83000
.word 0x00C6CC18,0x3066C600,0x386C3876,0xDCCC7600
.word 0x6060C000,0x00000000,0x18306060,0x60301800
.word 0x60301818,0x18306000,0x00663CFF,0x3C660000
.word 0x003030FC,0x30300000,0x00000000,0x00303060
.word 0x000000FC,0x00000000,0x00000000,0x00303000
.word 0x060C1830,0x60C08000,0x7CC6CEDE,0xF6E67C00
.word 0x30703030,0x3030FC00,0x78CC0C38,0x60CCFC00
.word 0x78CC0C38,0x0CCC7800,0x1C3C6CCC,0xFE0C1E00
.word 0xFCC0F80C,0x0CCC7800,0x3860C0F8,0xCCCC7800
.word 0xFCCC0C18,0x30303000,0x78CCCC78,0xCCCC7800
.word 0x78CCCC7C,0x0C187000,0x00303000,0x00303000
.word 0x00303000,0x00303060,0x183060C0,0x60301800
.word 0x0000FC00,0x00FC0000,0x6030180C,0x18306000
.word 0x78CC0C18,0x30003000,0x7CC6DEDE,0xDEC07800
.word 0x3078CCCC,0xFCCCCC00,0xFC66667C,0x6666FC00
.word 0x3C66C0C0,0xC0663C00,0xF86C6666,0x666CF800
.word 0xFE626878,0x6862FE00,0xFE626878,0x6860F000
.word 0x3C66C0C0,0xCE663E00,0xCCCCCCFC,0xCCCCCC00
.word 0x78303030,0x30307800,0x1E0C0C0C,0xCCCC7800
.word 0xE6666C78,0x6C66E600,0xF0606060,0x6266FE00
.word 0xC6EEFEFE,0xD6C6C600,0xC6E6F6DE,0xCEC6C600
.word 0x386CC6C6,0xC66C3800,0xFC66667C,0x6060F000
.word 0x78CCCCCC,0xDC781C00,0xFC66667C,0x6C66E600
.word 0x78CCE070,0x1CCC7800,0xFCB43030,0x30307800
.word 0xCCCCCCCC,0xCCCCFC00,0xCCCCCCCC,0xCC783000
.word 0xC6C6C6D6,0xFEEEC600,0xC6C66C38,0x386CC600
.word 0xCCCCCC78,0x30307800,0xFEC68C18,0x3266FE00
.word 0x78606060,0x60607800,0xC0603018,0x0C060200
.word 0x78181818,0x18187800,0x10386CC6,0x00000000
.word 0x00000000,0x000000FF,0x30301800,0x00000000
.word 0x0000780C,0x7CCC7600,0xE060607C,0x6666DC00
.word 0x000078CC,0xC0CC7800,0x1C0C0C7C,0xCCCC7600
.word 0x000078CC,0xFCC07800,0x386C60F0,0x6060F000
.word 0x000076CC,0xCC7C0CF8,0xE0606C76,0x6666E600
.word 0x30007030,0x30307800,0x0C000C0C,0x0CCCCC78
.word 0xE060666C,0x786CE600,0x70303030,0x30307800
.word 0x0000CCFE,0xFED6C600,0x0000F8CC,0xCCCCCC00
.word 0x000078CC,0xCCCC7800,0x0000DC66,0x667C60F0
.word 0x000076CC,0xCC7C0C1E,0x0000DC76,0x6660F000
.word 0x00007CC0,0x780CF800,0x10307C30,0x30341800
.word 0x0000CCCC,0xCCCC7600,0x0000CCCC,0xCC783000
.word 0x0000C6D6,0xFEFE6C00,0x0000C66C,0x386CC600
.word 0x0000CCCC,0xCC7C0CF8,0x0000FC98,0x3064FC00
.word 0x1C3030E0,0x30301C00,0x18181800,0x18181800
.word 0xE030301C,0x3030E000,0x76DC0000,0x00000000

.set at
.set reorder
"
:
:
: "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "memory"
);
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
User avatar
Jim
Posts: 476
Joined: Sat Jul 02, 2005 10:06 pm
Location: Sydney
Contact:

Post by Jim »

Character 0x9 is tab character.

Jim
User avatar
groepaz
Posts: 305
Joined: Thu Sep 01, 2005 7:44 am
Contact:

Post by groepaz »

and that file is in C inline asm format too, why not use plain assembly?
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

because this is not my file this is one of the first the 2.00 Eboot Loader.... SO how would i go about compiling it if it is in C inline assembly format... I'm guessing psp-gcc
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
User avatar
Saotome
Posts: 182
Joined: Sat Apr 03, 2004 3:45 am

Post by Saotome »

edward:
Actually I used the ps2-toolchain to compile that code in C (yes, thats my code from the tiff eboot-loader concept for 2.00 FW that could only run nem's hello world eboot ;P). The resulting ps2-program then generated (yes, on the PS2 :P) the tiff-file from that code.
So you would need the rest of the code (not included here) that loads a tiff-template, appends the code and stores to a new tiff-file. But I think it's not realy worth it, why not just use fanjita's eboot loader? ;)
infj
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

I want to find a exploit in 2.70, but before i do that i want to learn about past exploits. I know how 1.50 works, but i don't know how the TIFF Exploit works other than the PSP is exploited when the TIFF is processed into the VRAM. Also wouldn't this load many more games if i were to add all the syscalls... I figured as i'm looking over this code i could see if maybe i could get Flashmod to completely work...

Here is the new code with all the syscalls and some words changed
asm __volatile__("
.set noreorder
.set noat
syscall 0x20C7 #//flush cache
ori $a0,$0,111 #//set CPU to 111MHz
syscall 0x219e
ori $a0,$0,111 #//set Bus to 111MHz
syscall 0x219f
nop
bal gettxtaddr
nop
or $a0,$0,$v0
ori $a1,$0,1
ori $a2,$0,0x001f
addiu $a0,$a0,-32
syscall 0x0208f #// sceIoOpen
or $s5,$0,$v0
ori $a0,$v0,0
ori $a2,$0,0 #// set
ori $a1,$0,0x238
syscall 0x2097 #// seek32
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x4000
ori $a1,$a1,0x4000
syscall 0x2091 #// read 16kB
ori $a0,$s5,0
syscall 0x208d #// sceIoClose
lui $s0,0x0881
syscall 0x20C7 #//flush cache
ori $s0,$s0,0x4000
jr $s0
nop
# reloaded tif file from here, because data beyond ~4kB gets overwritten by system or sth.

ori $a0,$0,0
ori $a1,$0,480
ori $a2,$0,272
syscall 0x2142 #// sceDisplaySetMode
nop
lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)
lui $t5,0x0002
lui $t9,0x4400
lui $t7,0x003f
ori $t5,$t5,0x2000
ori $t7,$t7,0x6f2f
loopfill00:
addiu $t5,$t5,-1
sw $t7,0($t9)
bgtz $t5,loopfill00
addiu $t9,$t9,4

lui $t9,0x4400
lui $s3,0x0881
ori $t9,$t9,0x6220

lui $a1,0x007f
bal gettxtaddr
ori $a1,$a1,0xe01f
addiu $s4,$v0,0
bal settxt #// title
or $a0,$0,$v0

ori $a1,$0,1
ori $a2,$0,0x001f
addiu $a0,$s4,22
syscall 0x0208f #// sceIoOpen
or $s5,$0,$v0

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x0040
ori $a1,$a1,0xe01f
bal settxt #// filename
addiu $a0,$s4,22

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x6040
bltz $s5,fileerr00
ori $a1,$a1,0xe01f
bgezal $0,settxt #// loading...
addiu $a0,$s4,22+29
lui $s6,0x0001
lui $s1,0x464c
lui $s0,0x00ff
ori $s2,$0,0
ori $s0,$s0,0xffff
ori $s1,0x457f #//ELF magic
loadloop00:
lui $a1,0x0881
or $a0,$s5,$0
ori $a2,$0,0x100 #0x40
syscall 0x2091 #// read 256 bytes
lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0xc040
blez $v0,fileerr01
ori $a1,$a1,0xe01f
lui $t2,0x0881
ori $t1,$0,252 #60
lw $t0,0($t2)
addiu $t2,$t2,4
addiu $s2,$s2,4
addiu $s6,$s6,-1
loadloop01:
addiu $t1,$t1,-1
beq $t0,$s1,elffound00
lbu $v1,0($t2)
addiu $t2,$t2,1
srl $v0,$t0,8
sll $v1,$v1,24
and $v0,$v0,$s0
addiu $s2,$s2,1
bgtz $t1,loadloop01
or $t0,$v1,$v0


bgtz $s6,loadloop00
nop

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0xc040
bne $t0,$s1,fileerr01
ori $a1,$a1,0xe01f

elffound00:

addiu $s2,$s2,-4

lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)

ori $a0,$s5,0
ori $a2,$0,0 #// set
or $a1,$s2,$0
syscall 0x2097 #// seek32 (ELF hdr)
nop
# bltz $v0,fileerr01
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x34
syscall 0x2091 #// read 52 bytes (ELF Header)
nop
lw $t0,28($s3)
ori $a0,$s5,0
addu $a1,$s2,$t0
ori $a2,$0,0 #// set
syscall 0x2097 #// seek32 (program hdr)
nop
ori $a0,$s5,0
lui $a1,0x0881
ori $a2,$0,0x20
addiu $a1,$a1,0x34
syscall 0x2091 #// read 32 bytes (program Header)
nop

lw $t1,0x3c($s3)
lw $t0,0x48($s3)
crlloop00:
addiu $t0,$t0,-4
sw $0,0($t1)
bgtz $t0,crlloop00
addiu $t1,$t1,4

lw $t0,0x38($s3)
ori $a0,$s5,0
addu $a1,$s2,$t0
or $s0,$a1,$0
ori $a2,$0,0 #// set
syscall 0x2097 #// seek32 (program offset)
nop

lw $a1,0x3c($s3)
ori $a0,$s5,0
lw $a2,0x44($s3)
syscall 0x2091 #// read program
nop

lui $t9,0x4401
lui $a1,0x007f
ori $t9,$t9,0x61f0
ori $a1,$a1,0xe01f
bgezal $0,settxt #// (loading...) finished
addiu $a0,$s4,22+51

ori $a0,$s5,0
syscall 0x208d #// sceIoClose
nop

#beq $0,$0,nids_finished
lw $t7,0x3c($s3)
lui $t1,0xd632
lui $t2,0x0040
ori $t1,0xacdb
srchloop00:
lw $at,0($t7)
addiu $t7,$t7,4
addiu $t2,$t2,-1
beq $at,$t1,foundentrytab0 #? check
nop
bgtz $t2,srchloop00
nop
beq $0,$0,fileerr00
ori $a1,$0,0xff #red 'not found'
foundentrytab0:
lw $at,0($t7)
lui $t0,0xf01d
ori $t0,$t0,0x73a7
bne $at,$t0,srchloop00 #contiune
nop
lw $t0,8($t7) #get moduleinfo addr
lw $t7,0x2c($t0)

resolve_nids0:
lw $t0,0x00($t7) #module name str
lw $t1,0x08($t7)
beq $t0,$0,nids_finished
lw $a0,0x0c($t7) #stub_idtable
lw $a1,0x10($t7) #stub_text
srl $t1,$t1,16 #number of nids
resnids_loop0:
lw $at,0($a0) #nid to find
addiu $a2,$s4,1208
addiu $a0,$a0,4
addiu $t1,$t1,-1
resnids_loop1:
lw $t0,0($a2)
beq $t0,$at,nidfound00
lw $v0,4($a2)
bne $t0,$0,resnids_loop1
addiu $a2,$a2,8
nidfound00:
sw $v0,4($a1)
bgtz $t1,resnids_loop0
addiu $a1,$a1,8
beq $0,$0,resolve_nids0
addiu $t7,$t7,0x14
nids_finished:


syscall 0x20C7 #//flush cache
nop

beq $0,$0,hackstart01
lw $s7,0x3c($s3)

fileerr00:
bal settxt #// not found!
addiu $a0,$s4,22+40
beq $0,$0,hackstart01
nop

fileerr01:
bal settxt #// not found!
addiu $a0,$s4,22+40
ori $a0,$s5,0
syscall 0x208d #// sceIoClose

hackstart01:

lui $a0,0x0400
ori $a1,$0,512
ori $a2,$0,3
ori $a3,$0,1
syscall 0x2148 #// sceDisplaySetFrameBuf (old 0x213f)

lui $a0,0x0881
ori $a1,$0,1
or $s2,$a0,$0
syscall 0x215b #//sceCtrlRead
nop

syscall 0x2152
nop
syscall 0x2152

lui $t9,0x4402
lui $a1,0x005f
ori $t9,$t9,0x8000
ori $t5,$0,0x5a00
ori $a1,$a1,0x3f3f
loopfill03:
sw $a1,0x00($t9)
sw $a1,0x04($t9)
addiu $t5,$t5,-1
sw $a1,0x08($t9)
sw $a1,0x0c($t9)
bgtz $t5,loopfill03
addiu $t9,$t9,16


lui $s3,0x0881
lw $t0,4($s3)
andi $t1,$t0,0xf000

addiu $t2,$t2,0x20
addiu $s6,$s6,1

lui $t8,0x4402
lui $a1,0x009f
ori $t8,$t8,0xa040
ori $a1,$a1,0x5f5f
ori $a3,$0,16
or $t7,$s7,$0
disasmloop00:
or $t9,$t8,$0
bal sethex
ori $a0,$t7,0
addiu $t9,$t9,0x10
bal sethex
lw $a0,0x00($t7)
addiu $t9,$t9,0x40


lw $v0,0x00($t7)
lui $t2,0x0881
srl $s0,$v0,23
ori $t2,$t2,0x0020
andi $a0,$s0,0x1f8
srl $s0,$s0,3
addu $a0,$a0,$s4
addiu $a0,$a0,184
lw $s1,0($a0)
lw $v1,4($a0)
sw $s1,0($t2)
andi $s1,$v1,0xffff
sw $s1,4($t2)
ori $t3,$0,'?'
srl $s1,$v1,16
sw $t3,8($t2)
beq $v0,$0,nopmn00
ori $at,$0,1
beq $s0,$0,specialmn00
andi $s1,$s1,0xff
beq $s0,$at,regimmmn00
ori $t0,$0,4
beq $s1,$at,jumpmn00
ori $at,$0,5
beq $s1,$t0,i16mn00
ori $t0,$0,6
beq $s1,$at,luimn00
ori $at,$0,2
beq $s1,$t0,m16mn00
nop
beq $s1,$at,beqmn00
nop

writeasm:
addiu $at,$t2,8
bal settxt #// asm text
or $a0,$0,$t2
addiu $t9,$t8,0x2a0
bal settxt #// asm text
or $a0,$0,$at


addiu $a3,$a3,-1
addiu $t8,$t8,22528
bgtz $a3,disasmloop00
addiu $t7,$t7,4


lw $t1,0x04($s3)
andi $t0,$s6,1
srl $a0,$t1,6
srl $a1,$t1,4
andi $t1,$t1,8
and $a0,$t0,$a0
and $a1,$t0,$a1
sll $a0,$a0,2
sll $a1,$a1,2
addu $s7,$s7,$a0
subu $s7,$s7,$a1


bne $t1,$0,startprog00
lw $s0,0x18($s3) #entry point

andi $t0,$s6,0x1f
sltiu $t0,$t0,5
bne $t0,$0,hackstart01
lui $a1,0x00d0
lui $t9,0x4405
ori $a1,$a1,0x8f8f
ori $t9,$t9,0xb220
bal settxt
addiu $a0,$s4,82

beq $0,$0,hackstart01
nop

specialmn00:
andi $t0,$v0,0x3f
sll $t0,$t0,3
addu $t0,$t0,$s4
lw $s0,696($t0)
lw $s1,700($t0)
sw $s0,0($t2)
srl $t0,$s1,16
ori $t1,$0,'l'
andi $t0,$t0,0xff
ori $at,$0,9
beq $t0,$t1,syscall00
sh $s1,4($t2)
ori $t1,$0,10
beq $t0,$at,i3regmn00
ori $at,$0,8
beq $t0,$t1,jrmn00
nop
beq $t0,$at,shiftmn00
nop
beq $0,$0,writeasm
nop

syscall00:
addiu $a0,$t2,8
sb $t0,6($t2)
srl $t1,$v0,6
bal num2hex16
andi $at,$t1,0xffff
beq $0,$0,writeasm
nop

shiftmn00:
addiu $a0,$t2,14
andi $at,$v0,0x7c0
bal num2hex16
sll $at,$at,2
srl $t1,$v0,11
srl $t0,$v0,16
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
sb $at,13($t2)
beq $0,$0,writeasm
sb $0,18($t2)

i3regmn00:
srl $at,$v0,11
srl $t1,$v0,16
srl $t0,$v0,21
andi $at,$at,0x1f
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $at,$at,1
sll $t1,$t1,1
sll $t0,$t0,1
addu $at,$at,$s4
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
lh $t0,120($at)
ori $at,$0,0x2c
sh $s0,14($t2)
sb $0,16($t2)
sb $at,10($t2)
sh $t0,8($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

jrmn00:
srl $t0,$v0,21
andi $t0,$t0,0x1f
sll $t0,$t0,1
addu $t0,$t0,$s4
lh $s1,120($t0)
sh $s1,8($t2)
beq $0,$0,writeasm
sb $0,10($t2)

regimmmn00:
ori $at,$0,'r'
beq $0,$0,writeasm
sw $at,8($t2)

jumpmn00:
addiu $a0,$t2,8
sll $at,$v0,6
bal num2hex32
srl $at,$at,4
beq $0,$0,writeasm
nop

i16mn00:
addiu $a0,$t2,14
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
srl $t0,$v0,21
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

beqmn00:
sll $at,$v0,16
addiu $a0,$t2,14
sra $at,$at,14
addiu $at,$at,4
bal num2hex32
addu $at,$at,$t7
srl $t1,$v0,21
and $at,$v0,0x8000
srl $t0,$v0,16
ori $s0,$0,'+'
ori $s1,$0,'-'
andi $t1,$t1,0x1f
movn $s0,$s1,$at
andi $t0,$t0,0x1f
sh $s0,24($t2)
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
sb $at,10($t2)
srl $s0,$s1,8
sb $s1,11($t2)
sb $s0,12($t2)
beq $0,$0,writeasm
sb $at,13($t2)

luimn00:
addiu $a0,$t2,11
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
andi $t1,$t1,0x1f
sll $t1,$t1,1
addu $t1,$t1,$s4
lh $t0,120($t1)
ori $at,$0,0x2c
sh $t0,8($t2)
beq $0,$0,writeasm
sb $at,10($t2)

m16mn00:
addiu $a0,$t2,11
bal num2hex16
andi $at,$v0,0xffff
srl $t1,$v0,16
srl $t0,$v0,21
andi $t1,$t1,0x1f
andi $t0,$t0,0x1f
sll $t1,$t1,1
sll $t0,$t0,1
addu $t1,$t1,$s4
addu $t0,$t0,$s4
lh $s0,120($t1)
lh $s1,120($t0)
ori $at,$0,0x2c
sh $s0,8($t2)
ori $s0,$0,0x28
sb $at,10($t2)
sb $s0,17($t2)
ori $at,$0,0x29
sh $s1,18($t2)
sb $at,20($t2)
beq $0,$0,writeasm
sb $0,21($t2)


nopmn00:
lui $at,'p'
sw $0,8($t2)
ori $at,$at,0x6f6e #'no'|'p'
beq $0,$0,writeasm
sw $at,0($t2)

num2hex32:
addiu $a0,$a0,9
addiu $s0,$0,8
num2hex32loop0:
andi $t0,$at,0x0f
srl $at,$at,4
sltiu $t1,$t0,10
addiu $s1,$t0,0x30
addiu $t0,$t0,0x57
movn $t0,$s1,$t1
addiu $s0,$s0,-1
sb $t0,0($a0)
bgtz $s0,num2hex32loop0
addiu $a0,$a0,-1
ori $at,$0,0x78
sb $0,9($a0)
addiu $a0,$a0,-1
ori $t0,$0,0x30
sb $at,1($a0)
jr $ra
sb $t0,0($a0)

num2hex16:
addiu $a0,$a0,5
addiu $s0,$0,4
num2hex16loop0:
andi $t0,$at,0x0f
srl $at,$at,4
sltiu $t1,$t0,10
addiu $s1,$t0,0x30
addiu $t0,$t0,0x57
movn $t0,$s1,$t1
addiu $s0,$s0,-1
sb $t0,0($a0)
bgtz $s0,num2hex16loop0
addiu $a0,$a0,-1
ori $at,$0,0x78
sb $0,5($a0)
addiu $a0,$a0,-1
ori $t0,$0,0x30
sb $at,1($a0)
jr $ra
sb $t0,0($a0)




startprog00:

jr $s0
nop


setchr00:
or $t0,$0,$t9
ori $t1,$0,5
setchr_l00:
ori $t2,$0,3
addiu $t1,$t1,-1
setchr_l01:
andi $t3,$a0,1
addiu $t2,$t2,-1
bne $t3,$0,setpix00
srl $a0,$a0,1
pixdone00:
bgtz $t2,setchr_l01
addiu $t0,$t0,4
bgtz $t1,setchr_l00
addiu $t0,$t0,2036
jr $ra
addiu $t9,$t9,20
setpix00:
beq $0,$0,pixdone00
sw $a1,0($t0)


sethex:
or $s0,$ra,$0
bal gethexaddr
or $v1,$a0,$0
ori $s1,$0,8
hexloop00:
srl $t4,$v1,28
sll $v1,$v1,4
andi $t4,$t4,0x0f
addiu $s1,$s1,-1
sll $t4,$t4,1
addu $t4,$v0,$t4
bal setchr00
lh $a0,0($t4)
bgtz $s1,hexloop00
nop
jr $s0
nop

setchr01:
or $t0,$0,$t9
ori $t1,$0,4
ori $t5,$0,1
setchr_l10:
ori $t2,$0,8
addiu $t1,$t1,-1
setchr_l11:
addiu $t2,$t2,-1
bltz $a0,setpix01
sll $a0,$a0,1
pixdone01:
bgtz $t2,setchr_l11
addiu $t0,$t0,4
bgtz $t1,setchr_l10
addiu $t0,$t0,2048-(4*8)
or $a0,$a2,$0
ori $t1,$0,4
bne $t5,$0,setchr_l10
addiu $t5,$t5,-1
beq $0,$0,settxtloop0
addiu $t9,$t9,9*4
setpix01:
beq $0,$0,pixdone01
sw $a1,0($t0)

settxt:
or $s0,$ra,$0
bal getascaddr
or $v1,$a0,$0
settxtloop0:
lbu $t0,0($v1)
addiu $v1,$v1,1
beq $t0,$0,endsettxt
sltiu $t1,$t0,0x21
addiu $t4,$t0,-33
sltiu $t2,$t0,0x7f
sll $t4,$t4,3
sll $t3,$t1,5
addu $t4,$t4,$v0
bne $t1,$0,settxtloop0
addu $t9,$t9,$t3
lw $a0,0($t4)
bne $t2,$0,setchr01
lw $a2,4($t4)
beq $0,$0,settxtloop0
nop
endsettxt:
jr $s0
nop

gettxtaddr:
or $t0,$ra,$0
bal gttxtaddr
nop
gttxtaddr:
jr $t0
addiu $v0,$ra,0x28

.byte 'm','s','0',':','/','P','S','P','/','P','H','O','T','O','/','p','s','p','0','1','.','t','i','f',0,0,0,0,0,0,0,0
.byte 'E','B','O','O','T',' ','L','o','a','d','e','r',' ','0','.','1',' ','b','e','t','a',0
.byte 'm','s','0',':','/','P','S','P','/','G','A','M','E','/','F','L','A','S','H','M','O','D','/','E','B','O','O','T','.','P','B','P',0
.byte 'l','o','a','d','i','n','g','.','.','.',0
.byte 'n','o','t',' ','f','o','u','n','d','!',0
.byte 'f','i','n','i','s','h','e','d',0
#82
.byte 'p','r','e','s','s',' ','s','t','a','r','t',' ','t','o',' ','r','u','n',' ','F','l','a','s','h','m','o'.'d',0
#107
.byte '-','-','-','-',0
#112
.byte 'z','e','r','o',0,0,0,0
#120
.byte '$','0'
.byte 'a','t'
.byte 'v','0'
.byte 'v','1'
.byte 'a','0'
.byte 'a','1'
.byte 'a','2'
.byte 'a','3'
.byte 't','0'
.byte 't','1'
.byte 't','2'
.byte 't','3'
.byte 't','4'
.byte 't','5'
.byte 't','6'
.byte 't','7'
.byte 's','0'
.byte 's','1'
.byte 's','2'
.byte 's','3'
.byte 's','4'
.byte 's','5'
.byte 's','6'
.byte 's','7'
.byte 't','8'
.byte 't','9'
.byte 'k','0'
.byte 'k','1'
.byte 'g','p'
.byte 's','p'
.byte 'f','p'
.byte 'r','a'
#184
.byte 0,0,0,0 # special
.word 0x00000000
.byte 0,0,0,0 # regimm
.word 0x00000000
.byte 'j',0,0,0
.word 0x00010000
.byte 'j','a','l',0
.word 0x00010000
.byte 'b','e','q',0
.word 0x00020000 #-> 0x00020000
.byte 'b','n','e',0
.word 0x00020000 #-> 0x00020000
.byte 'b','l','e','z'
.word 0x00030000
.byte 'b','g','t','z'
.word 0x00030000
.byte 'a','d','d','i'
.word 0x00040000
.byte 'a','d','d','i'
.byte 'u',0,0x04,0x10 # last 4 bit = additional byte to string
.byte 's','l','t','i'
.word 0x00040000
.byte 's','l','t','i'
.byte 'u',0,0x04,0x10
.byte 'a','n','d','i'
.word 0x00040000
.byte 'o','r','i',0
.word 0x00040000
.byte 'x','o','r','i'
.word 0x00040000
.byte 'l','u','i',0
.word 0x00050000
.byte 'c','o','p','0'
.word 0x00000000
.byte 'c','o','p','1'
.word 0x00000000
.byte 'c','o','p','2'
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'b','e','q','l'
.word 0x00000000
.byte 'b','n','e','l'
.word 0x00000000
.byte 'b','l','e','z'
.byte 'l',0,0x00,0x10
.byte 'b','g','t','z'
.byte 'l',0,0x00,0x10
.byte 'd','a','d','d'
.byte 'i',0,0x00,0x10
.byte 'd','a','d','d'
.byte 'i','u',0x00,0x20
.byte 'l','d','l',0
.word 0x00060000
.byte 'l','d','r',0
.word 0x00060000
.byte 'm','m','i',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'l','q',0,0
.word 0x00060000
.byte 's','q',0,0
.word 0x00060000
.byte 'l','b',0,0
.word 0x00060000
.byte 'l','h',0,0
.word 0x00060000
.byte 'l','w','l',0
.word 0x00060000
.byte 'l','w',0,0
.word 0x00060000
.byte 'l','b','u',0
.word 0x00060000
.byte 'l','h','u',0
.word 0x00060000
.byte 'l','w','r',0
.word 0x00060000
.byte 'l','w','u',0
.word 0x00060000
.byte 's','b',0,0
.word 0x00060000
.byte 's','h',0,0
.word 0x00060000
.byte 's','w','l',0
.word 0x00060000
.byte 's','w',0,0
.word 0x00060000
.byte 's','d','l',0
.word 0x00060000
.byte 's','d','r',0
.word 0x00060000
.byte 's','w','r',0
.word 0x00060000
.byte 'c','a','c','h'
.byte 'e',0,0x07,0x10
.byte 'l','l',0,0
.word 0x00000000
.byte 'l','w','c','1'
.word 0x00070000
.byte 'l','w','c','2
.word 0x00070000
.byte 'p','r','e','f'
.word 0x00070000
.byte 'l','l','d',0
.word 0x00000000
.byte 'l','d','c','1'
.word 0x00060000
.byte 'l','d','c','2'
.word 0x00060000
.byte 'l','d',0,0
.word 0x00060000
.byte 's','c',0,0
.word 0x00000000
.byte 's','w','c','1'
.word 0x00070000
.byte 's','w','c','2'
.word 0x00070000
.byte '-','-','-',0
.word 0x00000000
.byte 's','c','d',0
.word 0x00000000
.byte 's','d','c','1'
.word 0x00070000
.byte 's','d','c','2'
.word 0x00070000
.byte 's','d',0,0
.word 0x00060000

#696
.byte 's','l','l',0
.word 0x00080000
.byte '-','-','-',0
.word 0x00000000
.byte 's','r','l',0
.word 0x00080000
.byte 's','r','a',0
.word 0x00080000
.byte 's','l','l','v'
.word 0x00090000
.byte '-','-','-',0
.word 0x00000000
.byte 's','r','l','v'
.word 0x00090000
.byte 's','r','a','v'
.word 0x00090000
.byte 'j','r',0,0
.word 0x000a0000
.byte 'j','a','l','r'
.word 0x000b0000
.byte 'm','o','v','z'
.word 0x00090000
.byte 'm','o','v','n'
.word 0x00090000
.byte 's','y','s','c'
.byte 'a','l','l',0x10
.byte 'b','r','e','a'
.byte 'k',0x00,0x00,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 's','y','n','c'
.word 0x00000000
.byte 'm','f','h','i'
.word 0x00000000
.byte 'm','t','h','i'
.word 0x00000000
.byte 'm','f','l','o'
.word 0x000a0000
.byte 'm','t','l','o'
.word 0x000a0000
.byte 'd','s','l','l'
.byte 'v',0x00,0x09,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.byte 'v',0x00,0x09,0x10
.byte 'd','s','r','a'
.byte 'v',0x00,0x09,0x10
.byte 'm','u','l','t'
.word 0x00090000
.byte 'm','u','l','t'
.byte 'u',0x00,0x09,0x10
.byte 'd','i','v',0
.word 0x00000000
.byte 'd','i','v','u'
.word 0x00000000
.byte 'd','m','u','l'
.byte 't',0x00,0x09,0x10
.byte 'd','m','u','l'
.byte 't','u',0x09,0x20
.byte 'd','d','i','v'
.word 0x00000000
.byte 'd','d','i','v'
.byte 'u',0x00,0x00,0x10
.byte 'a','d','d',0
.word 0x00090000
.byte 'a','d','d','u'
.word 0x00090000
.byte 's','u','b',0
.word 0x00090000
.byte 's','u','b','u'
.word 0x00090000
.byte 'a','n','d',0
.word 0x00090000
.byte 'o','r',0,0
.word 0x00090000
.byte 'x','o','r',0
.word 0x00090000
.byte 'n','o','r',0
.word 0x00090000
.byte 'm','f','s','a'
.word 0x000a0000
.byte 'm','t','s','a'
.word 0x000a0000
.byte 's','l','t',0
.word 0x00090000
.byte 's','l','t','u'
.word 0x00090000
.byte 'd','a','d','d'
.word 0x00090000
.byte 'd','a','d','d'
.byte 'u',0x00,0x09,0x10
.byte 'd','s','u','b'
.word 0x00090000
.byte 'd','s','u','b'
.byte 'u',0x00,0x09,0x10
.byte 't','g','e',0
.word 0x00000000
.byte 't','g','e','u'
.word 0x00000000
.byte 't','l','t',0
.word 0x00000000
.byte 't','l','t','u'
.word 0x00000000
.byte 't','e','q',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 't','n','e',0
.word 0x00000000
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','l','l'
.word 0x00080000
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.word 0x00080000
.byte 'd','s','r','a'
.word 0x00080000
.byte 'd','s','l','l'
.byte '3','2',0x08,0x10
.byte '-','-','-',0
.word 0x00000000
.byte 'd','s','r','l'
.byte '3','2',0x08,0x10
.byte 'd','s','r','a'
.byte '3','2',0x08,0x10

#1208 //known nids
.word 0x5c2be2cc, (0x20ab<<6)|0x0c #IoFileMgrForUser_5C2BE2CC
.word 0xd8b73127, (0x20de<<6)|0x0c #ModuleMgrForUser_D8B73127
.word 0xf0a26395, (0x20dd<<6)|0x0c #ModuleMgrForUser_F0A26395
.word 0xd2e8363f, (0x2007<<6)|0x0c #QueryIntrHandlerInfo
.word 0x432d8f5c, (0x20b2<<6)|0x0c #StdioForUser_432D8F5C
.word 0x6f797e03, (0x20b3<<6)|0x0c #StdioForUser_6F797E03
.word 0x13a5abef, (0x20e7<<6)|0x0c #SysMemUserForUser_13A5ABEF
.word 0x7591c7db, (0x20e5<<6)|0x0c #SysMemUserForUser_7591C7DB
.word 0xa6848df8, (0x20e9<<6)|0x0c #SysMemUserForUser_A6848DF8
.word 0xf77d77cb, (0x20e6<<6)|0x0c #SysMemUserForUser_F77D77CB
.word 0xfc114573, (0x20e4<<6)|0x0c #SysMemUserForUser_FC114573
.word 0x0e927aed, (0x2053<<6)|0x0c #ThreadManForUser_0E927AED
.word 0x77dff087, (0x20cb<<6)|0x0c #UtilsForUser_77DFF087
.word 0x532a522e, (0x2070<<6)|0x0c #sceKernelExitThread
.word 0x6e9ea350, (0x2009<<6)|0x0c #sceKernelReturnFromCallback
.word 0x6fc46853, (0x2131<<6)|0x0c #sceAudioChRelease
.word 0x5ec81c55, (0x2130<<6)|0x0c #sceAudioChReserve
.word 0x95fd0c2d, (0x2134<<6)|0x0c #sceAudioChangeChannelConfig
.word 0xb7e1d8e7, (0x2135<<6)|0x0c #sceAudioChangeChannelVolume
.word 0xe9d97901, (0x2140<<6)|0x0c #sceAudioGetChannelRestLen
.word 0xa708c6a6, (0x213b<<6)|0x0c #sceAudioGetInputLength
.word 0x6d4bec68, (0x213a<<6)|0x0c #sceAudioInput
.word 0x086e5895, (0x2139<<6)|0x0c #sceAudioInputBlocking
.word 0x7de61688, (0x213d<<6)|0x0c #sceAudioInputInit
.word 0x41efade7, (0x2141<<6)|0x0c #sceAudioOneshotOutput
.word 0x8c1009b2, (0x212c<<6)|0x0c #sceAudioOutput
.word 0x136caf51, (0x212d<<6)|0x0c #sceAudioOutputBlocking
.word 0xe2d56b2d, (0x212e<<6)|0x0c #sceAudioOutputPanned
.word 0x13f592bc, (0x212f<<6)|0x0c #sceAudioOutputPannedBlocking
.word 0xcb2e439e, (0x2133<<6)|0x0c #sceAudioSetChannelDataLen
.word 0x87b2e651, (0x213c<<6)|0x0c #sceAudioWaitInputEnd
.word 0x38553111, (0x2136<<6)|0x0c #sceAudio_38553111
.word 0x5c37c0ae, (0x2137<<6)|0x0c #sceAudio_5C37C0AE
.word 0xa633048e, (0x213f<<6)|0x0c #sceAudio_A633048E
.word 0xb011922f, (0x2132<<6)|0x0c #sceAudio_B011922F
.word 0xe0727056, (0x2138<<6)|0x0c #sceAudio_E0727056
.word 0xe926d3fb, (0x213e<<6)|0x0c #sceAudio_E926D3FB
.word 0x02baad91, (0x2158<<6)|0x0c #sceCtrlGetSamplingCycle
.word 0xda6b76a1, (0x215a<<6)|0x0c #sceCtrlGetSamplingMode
.word 0xc152080a, (0x215c<<6)|0x0c #sceCtrlPeekBufferNegative
.word 0xb1d0e5cd, (0x215f<<6)|0x0c #sceCtrlPeekLatch
.word 0x60b81f86, (0x215e<<6)|0x0c #sceCtrlReadBufferNegative
.word 0x1f803938, (0x215d<<6)|0x0c #sceCtrlReadBufferPositive
.word 0x0b588501, (0x2160<<6)|0x0c #sceCtrlReadLatch
.word 0x6a2774f3, (0x2157<<6)|0x0c #sceCtrlSetSamplingCycle
.word 0x1f4011e6, (0x2159<<6)|0x0c #sceCtrlSetSamplingMode
.word 0x6841be1a, (0x2166<<6)|0x0c #sceCtrl_6841BE1A
.word 0x687660fa, (0x2162<<6)|0x0c #sceCtrl_687660FA
.word 0xa7144800, (0x2161<<6)|0x0c #sceCtrl_A7144800
.word 0xaf5960f3, (0x2164<<6)|0x0c #sceCtrl_AF5960F3
.word 0x210eab3a, (0x2155<<6)|0x0c #sceDisplayGetAccumulatedHcount
.word 0x31c4baa8, (0x214b<<6)|0x0c #sceDisplayGetBrightness
.word 0x773dd3a3, (0x2154<<6)|0x0c #sceDisplayGetCurrentHcount
.word 0xeeda2e54, (0x2149<<6)|0x0c #sceDisplayGetFrameBuf
.word 0xdba6c4c4, (0x2144<<6)|0x0c #sceDisplayGetFramePerSec
.word 0xdea197d4, (0x2143<<6)|0x0c #sceDisplayGetMode
.word 0x69b53541, (0x214e<<6)|0x0c #sceDisplayGetVblankRest
.word 0x9c6eaad7, (0x214c<<6)|0x0c #sceDisplayGetVcount
.word 0xb4f378fa, (0x214a<<6)|0x0c #sceDisplayIsForeground
.word 0x4d4e10ec, (0x214d<<6)|0x0c #sceDisplayIsVblank
.word 0x289d82fe, (0x2148<<6)|0x0c #sceDisplaySetFrameBuf
.word 0x7ed59bc4, (0x2145<<6)|0x0c #sceDisplaySetHoldMode
.word 0x0e20f177, (0x2142<<6)|0x0c #sceDisplaySetMode
.word 0xa544c486, (0x2146<<6)|0x0c #sceDisplaySetResumeMode
.word 0x36cdfade, (0x2150<<6)|0x0c #sceDisplayWaitVblank
.word 0x8eb9ec49, (0x2151<<6)|0x0c #sceDisplayWaitVblankCB
.word 0x984c27e7, (0x2152<<6)|0x0c #sceDisplayWaitVblankStart
.word 0x46f186c3, (0x2153<<6)|0x0c #sceDisplayWaitVblankStartCB
.word 0x21038913, (0x214f<<6)|0x0c #sceDisplay_21038913
.word 0xa83ef139, (0x2156<<6)|0x0c #sceDisplay_A83EF139
.word 0xbf79f646, (0x2147<<6)|0x0c #sceDisplay_BF79F646
.word 0x617f3fe6, (0x20f0<<6)|0x0c #sceDmacMemcpy
.word 0xd97f94d8, (0x20f1<<6)|0x0c #sceDmacTryMemcpy
.word 0xb448ec0d, (0x2100<<6)|0x0c #sceGeBreak
.word 0x4c06e472, (0x2101<<6)|0x0c #sceGeContinue
.word 0xb287bd61, (0x20ff<<6)|0x0c #sceGeDrawSync
.word 0xe47e40e4, (0x20f3<<6)|0x0c #sceGeEdramGetAddr
.word 0x1f6752ad, (0x20f2<<6)|0x0c #sceGeEdramGetSize
.word 0xb77905ea, (0x20f4<<6)|0x0c #sceGeEdramSetAddrTranslation
.word 0xdc93cfef, (0x20f5<<6)|0x0c #sceGeGetCmd
.word 0x57c8945b, (0x20f6<<6)|0x0c #sceGeGetMtx
.word 0x5fb86ab0, (0x20fb<<6)|0x0c #sceGeListDeQueue
.word 0xab49e76a, (0x20f9<<6)|0x0c #sceGeListEnQueue
.word 0x1c0d95a6, (0x20fa<<6)|0x0c #sceGeListEnQueueHead
.word 0x03444eb4, (0x20fd<<6)|0x0c #sceGeListSync
.word 0xe0d68148, (0x20fc<<6)|0x0c #sceGeListUpdateStallAddr
.word 0x0bf608fb, (0x20f8<<6)|0x0c #sceGeRestoreContext
.word 0x438a385a, (0x20f7<<6)|0x0c #sceGeSaveContext
.word 0xa4fc06a4, (0x2102<<6)|0x0c #sceGeSetCallback
.word 0x05db22ce, (0x2103<<6)|0x0c #sceGeUnsetCallback
.word 0xe66cb92e, (0x20fe<<6)|0x0c #sceGe_user_E66CB92E
.word 0x7e69eda4, (0x2170<<6)|0x0c #sceHprmIsHeadphoneExist
.word 0x219c58f1, (0x2171<<6)|0x0c #sceHprmIsMicrophoneExist
.word 0x208db1bd, (0x216f<<6)|0x0c #sceHprmIsRemoteExist
.word 0x1910b327, (0x2172<<6)|0x0c #sceHprmPeekCurrentKey
.word 0x2bcec83e, (0x2173<<6)|0x0c #sceHprmPeekLatch
.word 0x40d2f9f0, (0x2174<<6)|0x0c #sceHprmReadLatch
.word 0xc7154136, (0x216c<<6)|0x0c #sceHprmRegisterCallback
.word 0x444ed0b7, (0x216d<<6)|0x0c #sceHprmUnregisterCallback
.word 0x71b5fb67, (0x216e<<6)|0x0c #sceHprm_71B5FB67
.word 0xb2a628c1, (0x20a8<<6)|0x0c #sceIoAssign
.word 0xe8bc6571, (0x20aa<<6)|0x0c #sceIoCancel
.word 0xb293727f, (0x208b<<6)|0x0c #sceIoChangeAsyncPriority
.word 0x55f4717d, (0x20a1<<6)|0x0c #sceIoChdir
.word 0xb8a740f4, (0x20a3<<6)|0x0c #sceIoChstat
.word 0x810c4bc3, (0x208d<<6)|0x0c #sceIoClose
.word 0xff5940b6, (0x208e<<6)|0x0c #sceIoCloseAsync
.word 0xeb092469, (0x209d<<6)|0x0c #sceIoDclose
.word 0x54f5fb11, (0x20a5<<6)|0x0c #sceIoDevctl
.word 0xb29ddf9c, (0x209b<<6)|0x0c #sceIoDopen
.word 0xe3eb004c, (0x209c<<6)|0x0c #sceIoDread
.word 0xcb05f8d6, (0x208a<<6)|0x0c #sceIoGetAsyncStat
.word 0x08bd7374, (0x20a7<<6)|0x0c #sceIoGetDevType
.word 0xace946e8, (0x20a2<<6)|0x0c #sceIoGetstat
.word 0x63632449, (0x2099<<6)|0x0c #sceIoIoctl
.word 0xe95a012b, (0x209a<<6)|0x0c #sceIoIoctlAsync
.word 0x27eb27b8, (0x2095<<6)|0x0c #sceIoLseek
.word 0x68963324, (0x2097<<6)|0x0c #sceIoLseek32
.word 0x1b385d8f, (0x2098<<6)|0x0c #sceIoLseek32Async
.word 0x71b19e77, (0x2096<<6)|0x0c #sceIoLseekAsync
.word 0x06a70004, (0x209f<<6)|0x0c #sceIoMkdir
.word 0x109f50bc, (0x208f<<6)|0x0c #sceIoOpen
.word 0x89aa9906, (0x2090<<6)|0x0c #sceIoOpenAsync
.word 0x3251ea56, (0x2087<<6)|0x0c #sceIoPollAsync
.word 0x6a638d83, (0x2091<<6)|0x0c #sceIoRead
.word 0xa0b5a7c2, (0x2092<<6)|0x0c #sceIoReadAsync
.word 0xf27a9c51, (0x209e<<6)|0x0c #sceIoRemove
.word 0x779103a0, (0x20a4<<6)|0x0c #sceIoRename
.word 0x1117c65f, (0x20a0<<6)|0x0c #sceIoRmdir
.word 0xa12a0514, (0x208c<<6)|0x0c #sceIoSetAsyncCallback
.word 0xab96437f, (0x20a6<<6)|0x0c #sceIoSync
.word 0x6d08a871, (0x20a9<<6)|0x0c #sceIoUnassign
.word 0xe23eec33, (0x2088<<6)|0x0c #sceIoWaitAsync
.word 0x35dbd746, (0x2089<<6)|0x0c #sceIoWaitAsyncCB
.word 0x42ec03ac, (0x2093<<6)|0x0c #sceIoWrite
.word 0x0facab19, (0x2094<<6)|0x0c #sceIoWriteAsync
.word 0x237dbd4f, (0x20e1<<6)|0x0c #sceKernelAllocPartitionMemory
.word 0xd979e9bf, (0x204d<<6)|0x0c #sceKernelAllocateFpl
.word 0xe7282cb6, (0x204e<<6)|0x0c #sceKernelAllocateFplCB
.word 0xbed27435, (0x2045<<6)|0x0c #sceKernelAllocateVpl
.word 0xec0a693f, (0x2046<<6)|0x0c #sceKernelAllocateVplCB
.word 0x7e65b999, (0x205d<<6)|0x0c #sceKernelCancelAlarm
.word 0xba4051d6, (0x2010<<6)|0x0c #sceKernelCancelCallback
.word 0xcd203292, (0x202f<<6)|0x0c #sceKernelCancelEventFlag
.word 0xa8aa591f, (0x2051<<6)|0x0c #sceKernelCancelFpl
.word 0x349b864d, (0x2041<<6)|0x0c #sceKernelCancelMsgPipe
.word 0x87d4dd36, (0x2037<<6)|0x0c #sceKernelCancelReceiveMbx
.word 0x8ffdf9a2, (0x2026<<6)|0x0c #sceKernelCancelSema
.word 0xd2d615ef, (0x206b<<6)|0x0c #sceKernelCancelVTimerHandler
.word 0x1d371b8a, (0x2049<<6)|0x0c #sceKernelCancelVpl
.word 0xfccfad26, (0x2017<<6)|0x0c #sceKernelCancelWakeupThread
.word 0xea748e31, (0x2077<<6)|0x0c #sceKernelChangeCurrentThreadAttr
.word 0x71bc9871, (0x2078<<6)|0x0c #sceKernelChangeThreadPriority
.word 0x349d6d6c, (0x2012<<6)|0x0c #sceKernelCheckCallback
.word 0xd13bde95, (0x207e<<6)|0x0c #sceKernelCheckThreadStack
.word 0x812346e4, (0x202b<<6)|0x0c #sceKernelClearEventFlag
.word 0xe81caf8f, (0x200d<<6)|0x0c #sceKernelCreateCallback
.word 0x55c20a00, (0x2028<<6)|0x0c #sceKernelCreateEventFlag
.word 0xc07bb470, (0x204b<<6)|0x0c #sceKernelCreateFpl
.word 0x8125221d, (0x2031<<6)|0x0c #sceKernelCreateMbx
.word 0x7c0dc2a0, (0x2039<<6)|0x0c #sceKernelCreateMsgPipe
.word 0xd6da4ba1, (0x2020<<6)|0x0c #sceKernelCreateSema
.word 0x446d8de6, (0x206d<<6)|0x0c #sceKernelCreateThread
.word 0x20fff560, (0x205f<<6)|0x0c #sceKernelCreateVTimer
.word 0x56c039b5, (0x2043<<6)|0x0c #sceKernelCreateVpl
.word 0xbfa98062, (0x20b7<<6)|0x0c #sceKernelDcacheInvalidateRange
.word 0x80001c4c, (0x20ca<<6)|0x0c #sceKernelDcacheProbe
.word 0x16641d70, (0x20cc<<6)|0x0c #sceKernelDcacheReadTag
.word 0x79d1c3fa, (0x20c6<<6)|0x0c #sceKernelDcacheWritebackAll
.word 0xb435dec5, (0x20c7<<6)|0x0c #sceKernelDcacheWritebackInvalidateAll
.word 0x34b9fa9e, (0x20c9<<6)|0x0c #sceKernelDcacheWritebackInvalidateRange
.word 0x3ee30821, (0x20c8<<6)|0x0c #sceKernelDcacheWritebackRange
.word 0xbd123d9e, (0x201e<<6)|0x0c #sceKernelDelaySysClockThread
.word 0x1181e963, (0x201f<<6)|0x0c #sceKernelDelaySysClockThreadCB
.word 0xceadeb47, (0x201c<<6)|0x0c #sceKernelDelayThread
.word 0x68da9e36, (0x201d<<6)|0x0c #sceKernelDelayThreadCB
.word 0xedba5844, (0x200e<<6)|0x0c #sceKernelDeleteCallback
.word 0xef9e4c70, (0x2029<<6)|0x0c #sceKernelDeleteEventFlag
.word 0xed1410e0, (0x204c<<6)|0x0c #sceKernelDeleteFpl
.word 0x86255ada, (0x2032<<6)|0x0c #sceKernelDeleteMbx
.word 0xf0b7da1c, (0x203a<<6)|0x0c #sceKernelDeleteMsgPipe
.word 0x28b6489c, (0x2021<<6)|0x0c #sceKernelDeleteSema
.word 0x9fa03cd3, (0x206e<<6)|0x0c #sceKernelDeleteThread
.word 0x328f9e52, (0x2060<<6)|0x0c #sceKernelDeleteVTimer
.word 0x89b3d48c, (0x2044<<6)|0x0c #sceKernelDeleteVpl
.word 0x3fc9ae6a, (0x20e8<<6)|0x0c #sceKernelDevkitVersion
.word 0x8a389411, (0x2003<<6)|0x0c #sceKernelDisableSubIntr
.word 0xfb8e22ec, (0x2002<<6)|0x0c #sceKernelEnableSubIntr
.word 0x809ce29b, (0x2072<<6)|0x0c #sceKernelExitDeleteThread
.word 0x05572a5f, (0x2169<<6)|0x0c #sceKernelExitGame
.word 0x2ac9954b, (0x2168<<6)|0x0c #sceKernelExitGameWithStatus
.word 0xaa73c935, (0x2071<<6)|0x0c #sceKernelExitThread
.word 0xf6414a71, (0x2050<<6)|0x0c #sceKernelFreeFpl
.word 0xb6d61d02, (0x20e2<<6)|0x0c #sceKernelFreePartitionMemory
.word 0xb736e9ff, (0x2048<<6)|0x0c #sceKernelFreeVpl
.word 0x9d9a5ba1, (0x20e3<<6)|0x0c #sceKernelGetBlockHeadAddr
.word 0x2a3d44ff, (0x2011<<6)|0x0c #sceKernelGetCallbackCount
.word 0x37fb5c42, (0x20d0<<6)|0x0c #sceKernelGetGPI
.word 0x644395e2, (0x20db<<6)|0x0c #sceKernelGetModuleIdList?
.word 0xdb738f35, (0x2058<<6)|0x0c #sceKernelGetSystemTime
.word 0x369ed59d, (0x205a<<6)|0x0c #sceKernelGetSystemTimeLow
.word 0x82bc5777, (0x2059<<6)|0x0c #sceKernelGetSystemTimeWide
.word 0x94aa61ee, (0x207c<<6)|0x0c #sceKernelGetThreadCurrentPriority
.word 0x3b183e26, (0x207d<<6)|0x0c #sceKernelGetThreadExitStatus
.word 0x293b45b8, (0x207b<<6)|0x0c #sceKernelGetThreadId
.word 0x52089ca1, (0x207f<<6)|0x0c #sceKernelGetThreadStackFreeSize
.word 0x94416130, (0x2083<<6)|0x0c #sceKernelGetThreadmanIdList
.word 0x57cf62dd, (0x2084<<6)|0x0c #sceKernelGetThreadmanIdType
.word 0xb3a59970, (0x2061<<6)|0x0c #sceKernelGetVTimerBase
.word 0xb7c18b77, (0x2062<<6)|0x0c #sceKernelGetVTimerBaseWide
.word 0x034a921f, (0x2063<<6)|0x0c #sceKernelGetVTimerTime
.word 0xc0b3ffd2, (0x2064<<6)|0x0c #sceKernelGetVTimerTimeWide
.word 0x920f104a, (0x20cd<<6)|0x0c #sceKernelIcacheInvalidateAll
.word 0xc2df770e, (0x20b8<<6)|0x0c #sceKernelIcacheInvalidateRange
.word 0x4fd31c9d, (0x20ce<<6)|0x0c #sceKernelIcacheProbe
.word 0xfb05fad0, (0x20cf<<6)|0x0c #sceKernelIcacheReadTag
.word 0xfc4374b8, (0x2006<<6)|0x0c #sceKernelIsSubInterruptOccurred
.word 0x91e4f6a7, (0x20c3<<6)|0x0c #sceKernelLibcClock
.word 0x71ec4271, (0x20c5<<6)|0x0c #sceKernelLibcGettimeofday
.word 0x27cc57f0, (0x20c4<<6)|0x0c #sceKernelLibcTime
.word 0xbd2f1094, (0x2167<<6)|0x0c #sceKernelLoadExec
.word 0x977de386, (0x20d2<<6)|0x0c #sceKernelLoadModule
.word 0xf9275d98, (0x20d5<<6)|0x0c #sceKernelLoadModuleBufferUsbWlan
.word 0xb7f46618, (0x20d3<<6)|0x0c #sceKernelLoadModuleByID
.word 0x710f61b5, (0x20d4<<6)|0x0c #sceKernelLoadModuleMs
.word 0xa291f107, (0x20df<<6)|0x0c #sceKernelMaxFreeMemSize
.word 0xc11ba8c4, (0x200f<<6)|0x0c #sceKernelNotifyCallback
.word 0x30fd48f0, (0x202e<<6)|0x0c #sceKernelPollEventFlag
.word 0x0d81716a, (0x2036<<6)|0x0c #sceKernelPollMbx
.word 0x58b1f937, (0x2025<<6)|0x0c #sceKernelPollSema
.word 0xeadb1bd7, (0x20ea<<6)|0x0c #sceKernelPowerLock
.word 0x090ccb3f, (0x20ec<<6)|0x0c #sceKernelPowerTick
.word 0x3aee7261, (0x20eb<<6)|0x0c #sceKernelPowerUnlock
.word 0x748cbed9, (0x20dc<<6)|0x0c #sceKernelQueryModuleInfo
.word 0x18260574, (0x2034<<6)|0x0c #sceKernelReceiveMbx
.word 0xf3986382, (0x2035<<6)|0x0c #sceKernelReceiveMbxCB
.word 0x74829b76, (0x203e<<6)|0x0c #sceKernelReceiveMsgPipe
.word 0xfbfa697d, (0x203f<<6)|0x0c #sceKernelReceiveMsgPipeCB
.word 0xdaa3f564, (0x205e<<6)|0x0c #sceKernelReferAlarmStatus
.word 0x730ed8bc, (0x2013<<6)|0x0c #sceKernelReferCallbackStatus
.word 0xa66b0120, (0x2030<<6)|0x0c #sceKernelReferEventFlagStatus
.word 0xd8199e4c, (0x2052<<6)|0x0c #sceKernelReferFplStatus
.word 0x8218b4dd, (0x2086<<6)|0x0c #sceKernelReferGlobalProfiler
.word 0xa8e8c846, (0x2038<<6)|0x0c #sceKernelReferMbxStatus
.word 0x33be4024, (0x2042<<6)|0x0c #sceKernelReferMsgPipeStatus
.word 0xbc6febc5, (0x2027<<6)|0x0c #sceKernelReferSemaStatus
.word 0x627e6f3a, (0x2082<<6)|0x0c #sceKernelReferSystemStatus
.word 0x369eeb6b, (0x200c<<6)|0x0c #sceKernelReferThreadEventHandlerStatus
.word 0x64d4540e, (0x2085<<6)|0x0c #sceKernelReferThreadProfiler
.word 0xffc36a14, (0x2081<<6)|0x0c #sceKernelReferThreadRunStatus
.word 0x17c1684e, (0x2080<<6)|0x0c #sceKernelReferThreadStatus
.word 0x5f32beaa, (0x206c<<6)|0x0c #sceKernelReferVTimerStatus
.word 0x39810265, (0x204a<<6)|0x0c #sceKernelReferVplStatus
.word 0x4ac57943, (0x216a<<6)|0x0c #sceKernelRegisterExitCallback
.word 0xca04a2b9, (0x2000<<6)|0x0c #sceKernelRegisterSubIntrHandler
.word 0x0c106e53, (0x200a<<6)|0x0c #sceKernelRegisterThreadEventHandler
.word 0xeee43f47, (0x2008<<6)|0x0c #sceKernelRegisterUserSpaceIntrStack
.word 0xd61e6961, (0x2001<<6)|0x0c #sceKernelReleaseSubIntrHandler
.word 0x72f3c145, (0x200b<<6)|0x0c #sceKernelReleaseThreadEventHandler
.word 0x2c34e053, (0x207a<<6)|0x0c #sceKernelReleaseWaitThread
.word 0x27e22ec2, (0x2076<<6)|0x0c #sceKernelResumeDispatchThread
.word 0x7860e0dc, (0x2005<<6)|0x0c #sceKernelResumeSubIntr
.word 0x75156e8f, (0x2019<<6)|0x0c #sceKernelResumeThread
.word 0x912354a7, (0x2079<<6)|0x0c #sceKernelRotateThreadReadyQueue
.word 0xd675ebb8, (0x20d9<<6)|0x0c #sceKernelSelfStopUnloadModule
.word 0xe9b3061e, (0x2033<<6)|0x0c #sceKernelSendMbx
.word 0x876dbfad, (0x203b<<6)|0x0c #sceKernelSendMsgPipe
.word 0x7c41f2c2, (0x203c<<6)|0x0c #sceKernelSendMsgPipeCB
.word 0x6652b8ca, (0x205b<<6)|0x0c #sceKernelSetAlarm
.word 0x1fb15a32, (0x202a<<6)|0x0c #sceKernelSetEventFlag
.word 0x6ad345d7, (0x20d1<<6)|0x0c #sceKernelSetGPO
.word 0xb2c25152, (0x205c<<6)|0x0c #sceKernelSetSysClockAlarm
.word 0xd8b299ae, (0x2069<<6)|0x0c #sceKernelSetVTimerHandler
.word 0x53b00e9a, (0x206a<<6)|0x0c #sceKernelSetVTimerHandlerWide
.word 0x542ad630, (0x2065<<6)|0x0c #sceKernelSetVTimerTime
.word 0xfb6425c3, (0x2066<<6)|0x0c #sceKernelSetVTimerTimeWide
.word 0x3f53e640, (0x2022<<6)|0x0c #sceKernelSignalSema
.word 0x9ace131e, (0x2014<<6)|0x0c #sceKernelSleepThread
.word 0x82826f70, (0x2015<<6)|0x0c #sceKernelSleepThreadCB
.word 0x50f0c1ec, (0x20d6<<6)|0x0c #sceKernelStartModule
.word 0xf475845d, (0x206f<<6)|0x0c #sceKernelStartThread
.word 0xc68d9437, (0x2067<<6)|0x0c #sceKernelStartVTimer
.word 0xf78ba90a, (0x20b6<<6)|0x0c #sceKernelStderr
.word 0x172d316e, (0x20b4<<6)|0x0c #sceKernelStdin
.word 0x9d061c19, (0x20b0<<6)|0x0c #sceKernelStdioClose
.word 0x0cbb0571, (0x20ad<<6)|0x0c #sceKernelStdioLseek
.word 0x924aba61, (0x20b1<<6)|0x0c #sceKernelStdioOpen
.word 0x3054d478, (0x20ac<<6)|0x0c #sceKernelStdioRead
.word 0xa46785c9, (0x20ae<<6)|0x0c #sceKernelStdioSendChar
.word 0xa3b931db, (0x20af<<6)|0x0c #sceKernelStdioWrite
.word 0xa6bab2e9, (0x20b5<<6)|0x0c #sceKernelStdout
.word 0xd1ff982a, (0x20d7<<6)|0x0c #sceKernelStopModule
.word 0xcc1d3699, (0x20da<<6)|0x0c #sceKernelStopUnloadSelfModule
.word 0xd0aeee87, (0x2068<<6)|0x0c #sceKernelStopVTimer
.word 0x3ad58b8c, (0x2075<<6)|0x0c #sceKernelSuspendDispatchThread
.word 0x5cb5a78b, (0x2004<<6)|0x0c #sceKernelSuspendSubIntr
.word 0x9944f31f, (0x2018<<6)|0x0c #sceKernelSuspendThread
.word 0xba6b92e2, (0x2056<<6)|0x0c #sceKernelSysClock2USec
.word 0xe1619d7c, (0x2057<<6)|0x0c #sceKernelSysClock2USecWide
.word 0x383f7bcc, (0x2074<<6)|0x0c #sceKernelTerminateDeleteThread
.word 0x616403ba, (0x2073<<6)|0x0c #sceKernelTerminateThread
.word 0xf919f628, (0x20e0<<6)|0x0c #sceKernelTotalFreeMemSize
.word 0x623ae665, (0x204f<<6)|0x0c #sceKernelTryAllocateFpl
.word 0xaf36d708, (0x2047<<6)|0x0c #sceKernelTryAllocateVpl
.word 0xdf52098f, (0x2040<<6)|0x0c #sceKernelTrySendMsgPipe
.word 0x884c9f90, (0x203d<<6)|0x0c #sceKernelTrySendMsgPipe
.word 0x110dec9a, (0x2054<<6)|0x0c #sceKernelUSec2SysClock
.word 0xc8cd158c, (0x2055<<6)|0x0c #sceKernelUSec2SysClockWide
.word 0x2e0911aa, (0x20d8<<6)|0x0c #sceKernelUnloadModule
.word 0x9e5c5086, (0x20ba<<6)|0x0c #sceKernelUtilsMd5BlockInit
.word 0xb8d24e78, (0x20bc<<6)|0x0c #sceKernelUtilsMd5BlockResult
.word 0x61e1e525, (0x20bb<<6)|0x0c #sceKernelUtilsMd5BlockUpdate
.word 0xc8186a58, (0x20b9<<6)|0x0c #sceKernelUtilsMd5Digest
.word 0xe860e75e, (0x20c1<<6)|0x0c #sceKernelUtilsMt19937Init
.word 0x06fb8a63, (0x20c2<<6)|0x0c #sceKernelUtilsMt19937UInt
.word 0xf8fcd5ba, (0x20be<<6)|0x0c #sceKernelUtilsSha1BlockInit
.word 0x585f1c09, (0x20c0<<6)|0x0c #sceKernelUtilsSha1BlockResult
.word 0x346f6da8, (0x20bf<<6)|0x0c #sceKernelUtilsSha1BlockUpdate
.word 0x840259f1, (0x20bd<<6)|0x0c #sceKernelUtilsSha1Digest
.word 0x402fcf22, (0x202c<<6)|0x0c #sceKernelWaitEventFlag
.word 0x328c546a, (0x202d<<6)|0x0c #sceKernelWaitEventFlagCB
.word 0x4e3a1105, (0x2023<<6)|0x0c #sceKernelWaitSema
.word 0x6d212bac, (0x2024<<6)|0x0c #sceKernelWaitSemaCB
.word 0x278c0df5, (0x201a<<6)|0x0c #sceKernelWaitThreadEnd
.word 0x840e8133, (0x201b<<6)|0x0c #sceKernelWaitThreadEndCB
.word 0xd59ead2f, (0x2016<<6)|0x0c #sceKernelWakeupThread
.word 0xb6cee597, (0x21fd<<6)|0x0c #sceNetplayDialogGetStatus
.word 0x3ad50ae7, (0x21fa<<6)|0x0c #sceNetplayDialogInitStart
.word 0xbc6b6296, (0x21fb<<6)|0x0c #sceNetplayDialogShutdownStart
.word 0x417bed54, (0x21fc<<6)|0x0c #sceNetplayDialogUpdate
.word 0x27f3292c, (0x217b<<6)|0x0c #scePowerBatteryUpdateInfo
.word 0xdb62c9cf, (0x2193<<6)|0x0c #scePowerCancelRequest
.word 0x3951af53, (0x2199<<6)|0x0c #scePowerEncodeUBattery
.word 0xb4432bc8, (0x2181<<6)|0x0c #scePowerGetBatteryChargingStatus
.word 0x862ae1a6, (0x2189<<6)|0x0c #scePowerGetBatteryElec
.word 0x2085d15d, (0x2186<<6)|0x0c #scePowerGetBatteryLifePercent
.word 0x8efb3fa2, (0x2187<<6)|0x0c #scePowerGetBatteryLifeTime
.word 0x94f5a53f, (0x2184<<6)|0x0c #scePowerGetBatteryRemainCapacity
.word 0x28e12023, (0x2188<<6)|0x0c #scePowerGetBatteryTemp
.word 0x483ce86b, (0x218a<<6)|0x0c #scePowerGetBatteryVolt
.word 0x478fe6f5, (0x21a1<<6)|0x0c #scePowerGetBusClockFrequency
.word 0x9badb3eb, (0x21a6<<6)|0x0c #scePowerGetBusClockFrequencyFloat
.word 0xbd681969, (0x21a3<<6)|0x0c #scePowerGetBusClockFrequencyInt
.word 0xfee03a2f, (0x21a0<<6)|0x0c #scePowerGetCpuClockFrequency
.word 0xb1a52c83, (0x21a5<<6)|0x0c #scePowerGetCpuClockFrequencyFloat
.word 0xfdb5bfe9, (0x21a2<<6)|0x0c #scePowerGetCpuClockFrequencyInt
.word 0xedc13fe5, (0x2178<<6)|0x0c #scePowerGetIdleTimer
.word 0xb999184c, (0x217d<<6)|0x0c #scePowerGetLowBatteryCapacity
.word 0x0074ef9b, (0x219a<<6)|0x0c #scePowerGetResumeCount
.word 0x972ce941, (0x217a<<6)|0x0c #scePowerIdleTimerDisable
.word 0x7f30b3b1, (0x2179<<6)|0x0c #scePowerIdleTimerEnable
.word 0x1e490401, (0x2180<<6)|0x0c #scePowerIsBatteryCharging
.word 0x0afd0d8b, (0x217f<<6)|0x0c #scePowerIsBatteryExist
.word 0xd3075926, (0x2182<<6)|0x0c #scePowerIsLowBattery
.word 0x87440f5e, (0x217e<<6)|0x0c #scePowerIsPowerOnline
.word 0x7fa406dd, (0x2194<<6)|0x0c #scePowerIsRequest
.word 0xd6d016ef, (0x2191<<6)|0x0c #scePowerLock
.word 0x04b7766e, (0x219b<<6)|0x0c #scePowerRegisterCallback
.word 0x2b7c7cf4, (0x2195<<6)|0x0c #scePowerRequestStandby
.word 0xac32c9cc, (0x2196<<6)|0x0c #scePowerRequestSuspend
.word 0xb8d7b3fb, (0x219f<<6)|0x0c #scePowerSetBusClockFrequency
.word 0x737486f2, (0x21a8<<6)|0x0c #scePowerSetClockFrequency
.word 0x843fbf43, (0x219e<<6)|0x0c #scePowerSetCpuClockFrequency
.word 0xefd3c963, (0x2177<<6)|0x0c #scePowerTick
.word 0xca3d34c1, (0x2192<<6)|0x0c #scePowerUnlock
.word 0xdfa8baf8, (0x219c<<6)|0x0c #scePowerUnregisterCallback
.word 0xdb9d28dd, (0x219d<<6)|0x0c #scePowerUnregitserCallback
.word 0x0442d852, (0x2198<<6)|0x0c #scePower_0442D852
.word 0x0cd21b1f, (0x218c<<6)|0x0c #scePower_0CD21B1F
.word 0x165ce085, (0x218d<<6)|0x0c #scePower_165CE085
.word 0x23436a4a, (0x218b<<6)|0x0c #scePower_23436A4A
.word 0x23c31ffe, (0x218e<<6)|0x0c #scePower_23C31FFE
.word 0x2875994b, (0x2197<<6)|0x0c #scePower_2875994B
.word 0x34f9c463, (0x21a4<<6)|0x0c #scePower_34F9C463
.word 0x442bfbac, (0x2176<<6)|0x0c #scePower_442BFBAC
.word 0x78a1a796, (0x2183<<6)|0x0c #scePower_78A1A796
.word 0xb3edd801, (0x2190<<6)|0x0c #scePower_B3EDD801
.word 0xe8e4e204, (0x217c<<6)|0x0c #scePower_E8E4E204
.word 0xea382a27, (0x21a7<<6)|0x0c #scePower_EA382A27
.word 0xfa97a599, (0x218f<<6)|0x0c #scePower_FA97A599
.word 0xfd18a0ff, (0x2185<<6)|0x0c #scePower_FD18A0FF
.word 0xfa8a5739, (0x21dd<<6)|0x0c #sceRegCloseRegistry
.word 0x57641a81, (0x21e3<<6)|0x0c #sceRegCreateKey
.word 0x9b25edf1, (0x21db<<6)|0x0c #sceRegExit
.word 0x39461b4d, (0x21e1<<6)|0x0c #sceRegFlushRegistry
.word 0xd4475aa8, (0x21e5<<6)|0x0c #sceRegGetKeyInfo
.word 0x28a8e98a, (0x21e6<<6)|0x0c #sceRegGetKeyValue
.word 0x30be0259, (0x21ec<<6)|0x0c #sceRegGetKeyValueByName
.word 0x2d211135, (0x21e8<<6)|0x0c #sceRegGetKeys
.word 0x2c0db9dd, (0x21e7<<6)|0x0c #sceRegGetKeysNum
.word 0xc5768d02, (0x21eb<<6)|0x0c #sceRegKickBackDiscover
.word 0x92e41280, (0x21dc<<6)|0x0c #sceRegOpenRegistry
.word 0x3615bc87, (0x21ea<<6)|0x0c #sceRegRemoveKey
.word 0xdeda92bf, (0x21de<<6)|0x0c #sceRegRemoveRegistry
.word 0x17768e14, (0x21e4<<6)|0x0c #sceRegSetKeyValue
.word 0x0cae832b, (0x21e0<<6)|0x0c #sceReg_0CAE832B
.word 0x0d69bf40, (0x21e2<<6)|0x0c #sceReg_0D69BF40
.word 0x1d8a762e, (0x21df<<6)|0x0c #sceReg_1D8A762E
.word 0x4ca16893, (0x21e9<<6)|0x0c #sceReg_4CA16893
.word 0x9dc14891, (0x216b<<6)|0x0c #sceResmgr_9DC14891
.word 0x4b1b5e82, (0x2111<<6)|0x0c #sceRtcCheckValid
.word 0x9ed0ae87, (0x211c<<6)|0x0c #sceRtcCompareTick
.word 0x779242a2, (0x210d<<6)|0x0c #sceRtcConvertLocalTimeToUTC
.word 0x34885e0d, (0x210c<<6)|0x0c #sceRtcConvertUtcToLocalTime
.word 0xc663b3b9, (0x2126<<6)|0x0c #sceRtcFormatRFC2822
.word 0x7de6711b, (0x2127<<6)|0x0c #sceRtcFormatRFC2822LocalTime
.word 0x0498fb3c, (0x2128<<6)|0x0c #sceRtcFormatRFC3339
.word 0x27f98543, (0x2129<<6)|0x0c #sceRtcFormatRFC3339LocalTime
.word 0x4cfa57b0, (0x210a<<6)|0x0c #sceRtcGetCurrentClock
.word 0xe7c27d1b, (0x210b<<6)|0x0c #sceRtcGetCurrentClockLocalTime
.word 0x3f7ad767, (0x2105<<6)|0x0c #sceRtcGetCurrentTick
.word 0x57726bc1, (0x2110<<6)|0x0c #sceRtcGetDayOfWeek
.word 0x05ef322c, (0x210f<<6)|0x0c #sceRtcGetDaysInMonth
.word 0x36075567, (0x2117<<6)|0x0c #sceRtcGetDosTime
.word 0x6ff40acc, (0x211b<<6)|0x0c #sceRtcGetTick
.word 0xc41c2853, (0x2104<<6)|0x0c #sceRtcGetTickResolution
.word 0x27c4594c, (0x2114<<6)|0x0c #sceRtcGetTime_t
.word 0xcf561893, (0x2119<<6)|0x0c #sceRtcGetWin32FileTime
.word 0x42307a17, (0x210e<<6)|0x0c #sceRtcIsLeapYear
.word 0xdfbc5f16, (0x212a<<6)|0x0c #sceRtcParseDateTime
.word 0x28e1e988, (0x212b<<6)|0x0c #sceRtcParseRFC3339
.word 0xf006f264, (0x2116<<6)|0x0c #sceRtcSetDosTime
.word 0x7ed29e40, (0x211a<<6)|0x0c #sceRtcSetTick
.word 0x3a807cc8, (0x2112<<6)|0x0c #sceRtcSetTime_t
.word 0x7ace4c04, (0x2118<<6)|0x0c #sceRtcSetWin32FileTime
.word 0xe51b4b7a, (0x2122<<6)|0x0c #sceRtcTickAddDays
.word 0x26d7a24a, (0x2121<<6)|0x0c #sceRtcTickAddHours
.word 0x26d25a5d, (0x211e<<6)|0x0c #sceRtcTickAddMicroseconds
.word 0xe6605bca, (0x2120<<6)|0x0c #sceRtcTickAddMinutes
.word 0xdbf74f1b, (0x2124<<6)|0x0c #sceRtcTickAddMonths
.word 0xf2a4afe5, (0x211f<<6)|0x0c #sceRtcTickAddSeconds
.word 0x44f45e05, (0x211d<<6)|0x0c #sceRtcTickAddTicks
.word 0xcf3a2ca8, (0x2123<<6)|0x0c #sceRtcTickAddWeeks
.word 0x42842c77, (0x2125<<6)|0x0c #sceRtcTickAddYears
.word 0x011f03c1, (0x2106<<6)|0x0c #sceRtc_011F03C1
.word 0x029ca3b3, (0x2107<<6)|0x0c #sceRtc_029CA3B3
.word 0x1909c99b, (0x2113<<6)|0x0c #sceRtc_1909C99B
.word 0x203ceb0d, (0x2108<<6)|0x0c #sceRtc_203CEB0D
.word 0x62685e98, (0x2109<<6)|0x0c #sceRtc_62685E98
.word 0xe1c93e47, (0x2115<<6)|0x0c #sceRtc_E1C93E47
.word 0x3e0271d3, (0x20ed<<6)|0x0c #sceSuspendForUser_3E0271D3
.word 0xa14f40b2, (0x20ee<<6)|0x0c #sceSuspendForUser_A14F40B2
.word 0xa569e425, (0x20ef<<6)|0x0c #sceSuspendForUser_A569E425
.word 0xc6183d47, (0x21b4<<6)|0x0c #sceUmdActivate
.word 0x6af9b50a, (0x21b9<<6)|0x0c #sceUmdCancelWaitDriveStat?
.word 0x46ebb729, (0x21b3<<6)|0x0c #sceUmdCheckMedium
.word 0xe83742ba, (0x21b5<<6)|0x0c #sceUmdDeactivate
.word 0x340b7686, (0x21bc<<6)|0x0c #sceUmdGetDiscInfo
.word 0x6b4a146c, (0x21ba<<6)|0x0c #sceUmdGetDriveStat
.word 0x20628e6f, (0x21bb<<6)|0x0c #sceUmdGetErrorStat
.word 0xaee7404d, (0x21bd<<6)|0x0c #sceUmdRegisterUMDCallBack
.word 0xbd2bde07, (0x21be<<6)|0x0c #sceUmdUnRegisterUMDCallBack
.word 0x8ef08fce, (0x21b6<<6)|0x0c #sceUmdWaitDriveStat
.word 0x4a9e5e29, (0x21b8<<6)|0x0c #sceUmdWaitDriveStatCB
.word 0x56202973, (0x21b7<<6)|0x0c #sceUmdWaitDriveStatWithTimer
.word 0x586db82c, (0x21ae<<6)|0x0c #sceUsbActivate
.word 0xc572a9c8, (0x21af<<6)|0x0c #sceUsbDeactivate
.word 0x4e537366, (0x21ac<<6)|0x0c #sceUsbGetDrvList
.word 0x112cc951, (0x21ad<<6)|0x0c #sceUsbGetDrvState
.word 0xc21645a4, (0x21ab<<6)|0x0c #sceUsbGetState
.word 0xae5de6af, (0x21a9<<6)|0x0c #sceUsbStart
.word 0xc2464fa0, (0x21aa<<6)|0x0c #sceUsbStop
.word 0x1c360735, (0x21b2<<6)|0x0c #sceUsbWaitCancel
.word 0x5be0e002, (0x21b0<<6)|0x0c #sceUsbWaitState
.word 0x5eee6548, (0x2222<<6)|0x0c #sceUtilityCheckNetParam
.word 0xfb0c4840, (0x224a<<6)|0x0c #sceUtilityCopyNetParam
.word 0x072debf2, (0x2248<<6)|0x0c #sceUtilityCreateNetParam
.word 0x9ce50172, (0x2249<<6)|0x0c #sceUtilityDeleteNetParam
.word 0x4f2206bc, (0x222f<<6)|0x0c #sceUtilityDialogGetParam
.word 0xe01fe32a, (0x2231<<6)|0x0c #sceUtilityDialogGetSpeed
.word 0xb222e887, (0x222e<<6)|0x0c #sceUtilityDialogGetType
.word 0xa5168a5d, (0x2234<<6)|0x0c #sceUtilityDialogLoadModule
.word 0x3ceae1df, (0x2235<<6)|0x0c #sceUtilityDialogPowerLock
.word 0x56bedca4, (0x2236<<6)|0x0c #sceUtilityDialogPowerUnlock
.word 0x680c0ea8, (0x222d<<6)|0x0c #sceUtilityDialogSetStatus
.word 0x6f923bd3, (0x2233<<6)|0x0c #sceUtilityDialogSetThreadId
.word 0x946963f3, (0x21f9<<6)|0x0c #sceUtilityGameSharingGetStatus
.word 0xc492f751, (0x21f6<<6)|0x0c #sceUtilityGameSharingInitStart
.word 0xefc6f80f, (0x21f7<<6)|0x0c #sceUtilityGameSharingShutdownStart
.word 0x7853182d, (0x21f8<<6)|0x0c #sceUtilityGameSharingUpdate
.word 0x434d4b3a, (0x2223<<6)|0x0c #sceUtilityGetNetParam
.word 0xa5da2406, (0x2220<<6)|0x0c #sceUtilityGetSystemParamInt
.word 0x34b78343, (0x2221<<6)|0x0c #sceUtilityGetSystemParamString
.word 0x9a1c91d7, (0x220d<<6)|0x0c #sceUtilityMsgDialogGetStatus
.word 0x2ad8e239, (0x220a<<6)|0x0c #sceUtilityMsgDialogInitStart
.word 0x67af3428, (0x220b<<6)|0x0c #sceUtilityMsgDialogShutdownStart
.word 0x95fc253b, (0x220c<<6)|0x0c #sceUtilityMsgDialogUpdate
.word 0x6332aa39, (0x2201<<6)|0x0c #sceUtilityNetconfGetStatus
.word 0x4db1e739, (0x21fe<<6)|0x0c #sceUtilityNetconfInitStart
.word 0xf88155f6, (0x21ff<<6)|0x0c #sceUtilityNetconfShutdownStart
.word 0x91e70e35, (0x2200<<6)|0x0c #sceUtilityNetconfUpdate
.word 0xf3f76017, (0x2211<<6)|0x0c #sceUtilityOskGetStatus
.word 0xf6269b82, (0x220e<<6)|0x0c #sceUtilityOskInitStart
.word 0x3dfaeba9, (0x220f<<6)|0x0c #sceUtilityOskShutdownStart
.word 0x4b85c861, (0x2210<<6)|0x0c #sceUtilityOskUpdate
.word 0x8874dbe0, (0x2205<<6)|0x0c #sceUtilitySavedataGetStatus
.word 0x50c4cd57, (0x2202<<6)|0x0c #sceUtilitySavedataInitStart
.word 0x9790b33c, (0x2203<<6)|0x0c #sceUtilitySavedataShutdownStart
.word 0xd4b95ffb, (0x2204<<6)|0x0c #sceUtilitySavedataUpdate
.word 0xfc4516f3, (0x224b<<6)|0x0c #sceUtilitySetNetParam
.word 0x45c18506, (0x221e<<6)|0x0c #sceUtilitySetSystemParamInt
.word 0x41e30674, (0x221f<<6)|0x0c #sceUtilitySetSystemParamString
.word 0x2995d020, (0x2206<<6)|0x0c #sceUtility_2995D020
.word 0x88bc7406, (0x2209<<6)|0x0c #sceUtility_88BC7406
.word 0xb62a4061, (0x2207<<6)|0x0c #sceUtility_B62A4061
.word 0xed0fad38, (0x2208<<6)|0x0c #sceUtility_ED0FAD38
.word 0x17cb4d96, (0x2227<<6)|0x0c #sceUtility_private_17CB4D96
.word 0x19461966, (0x2232<<6)|0x0c #sceUtility_private_19461966
.word 0x1dfa62ef, (0x222c<<6)|0x0c #sceUtility_private_1DFA62EF
.word 0x4405ba38, (0x222b<<6)|0x0c #sceUtility_private_4405BA38
.word 0x5ff96ed3, (0x2229<<6)|0x0c #sceUtility_private_5FF96ED3
.word 0x9c9dd5bc, (0x222a<<6)|0x0c #sceUtility_private_9C9DD5BC
.word 0xee7ac503, (0x2228<<6)|0x0c #sceUtility_private_EE7AC503
.word 0xef5bc2d1, (0x2230<<6)|0x0c #sceUtility_private_EF5BC2D1
.word 0x67585dfd, (0x21f4<<6)|0x0c #sceVaudioChRelease
.word 0x03b6807d, (0x21f3<<6)|0x0c #sceVaudioChReserve
.word 0x8986295e, (0x21f2<<6)|0x0c #sceVaudioOutputBlocking
.word 0x346fbe94, (0x21f5<<6)|0x0c #sceVaudio_346FBE94
.word 0x482cae9a, (0x21c4<<6)|0x0c #sceWlanDevAttach
.word 0xc9a8cab7, (0x21c5<<6)|0x0c #sceWlanDevDetach
.word 0x05fe320c, (0x21d6<<6)|0x0c #sceWlanDevGetStateGPIO
.word 0x5e7c8d94, (0x21c7<<6)|0x0c #sceWlanDevIsGameMode
.word 0x93440b11, (0x21c1<<6)|0x0c #sceWlanDevIsPowerOn
.word 0x7ff54bd2, (0x21d5<<6)|0x0c #sceWlanDevSetGPIO
.word 0x19e51f54, (0x21c6<<6)|0x0c #sceWlanDrv_lib_19E51F54
.word 0x2d0fae4e, (0x21d1<<6)|0x0c #sceWlanDrv_lib_2D0FAE4E
.word 0x40b0aa4a, (0x21d4<<6)|0x0c #sceWlanDrv_lib_40B0AA4A
.word 0x4c14baca, (0x21d0<<6)|0x0c #sceWlanDrv_lib_4C14BACA
.word 0x56f467ca, (0x21d2<<6)|0x0c #sceWlanDrv_lib_56F467CA
.word 0x5baa1fe5, (0x21cf<<6)|0x0c #sceWlanDrv_lib_5BAA1FE5
.word 0x81579d36, (0x21ce<<6)|0x0c #sceWlanDrv_lib_81579D36
.word 0x8d5f551b, (0x21d7<<6)|0x0c #sceWlanDrv_lib_8D5F551B
.word 0xfe8a0b46, (0x21d3<<6)|0x0c #sceWlanDrv_lib_FE8A0B46
.word 0x5ed4049a, (0x21c8<<6)|0x0c #sceWlanGPPrevEstablishActive
.word 0xa447103a, (0x21cb<<6)|0x0c #sceWlanGPRecv
.word 0x9658c9f7, (0x21cc<<6)|0x0c #sceWlanGPRegisterCallback
.word 0xb4d7cb74, (0x21ca<<6)|0x0c #sceWlanGPSend
.word 0x4c7f62e0, (0x21cd<<6)|0x0c #sceWlanGPUnRegisterCallback
.word 0x0c622081, (0x21c3<<6)|0x0c #sceWlanGetEtherAddr
.word 0xd7763699, (0x21c2<<6)|0x0c #sceWlanGetSwitchState
.word 0,0 # //end of table


.align 3
gethexaddr:
or $t0,$ra,$0
bal gthexaddr
nop
gthexaddr:
jr $t0
addiu $v0,$ra,0x08

.word 0x249a2b6a,0x38a372a3,0x38cf4f74,0x12a72ace,0x39aa2aaa,0x3aeb5bea,0x3b6b624e,0x12cf72cf

getascaddr:
or $t0,$ra,$0
bal gtascaddr
nop
gtascaddr:
jr $t0
addiu $v0,$ra,0x08

.word 0x30787830,0x30003000,0x6C6C6C00,0x00000000 #// 0x21 , 0x22
.word 0x6C6CFE6C,0xFE6C6C00,0x307CC078,0x0CF83000
.word 0x00C6CC18,0x3066C600,0x386C3876,0xDCCC7600
.word 0x6060C000,0x00000000,0x18306060,0x60301800
.word 0x60301818,0x18306000,0x00663CFF,0x3C660000
.word 0x003030FC,0x30300000,0x00000000,0x00303060
.word 0x000000FC,0x00000000,0x00000000,0x00303000
.word 0x060C1830,0x60C08000,0x7CC6CEDE,0xF6E67C00
.word 0x30703030,0x3030FC00,0x78CC0C38,0x60CCFC00
.word 0x78CC0C38,0x0CCC7800,0x1C3C6CCC,0xFE0C1E00
.word 0xFCC0F80C,0x0CCC7800,0x3860C0F8,0xCCCC7800
.word 0xFCCC0C18,0x30303000,0x78CCCC78,0xCCCC7800
.word 0x78CCCC7C,0x0C187000,0x00303000,0x00303000
.word 0x00303000,0x00303060,0x183060C0,0x60301800
.word 0x0000FC00,0x00FC0000,0x6030180C,0x18306000
.word 0x78CC0C18,0x30003000,0x7CC6DEDE,0xDEC07800
.word 0x3078CCCC,0xFCCCCC00,0xFC66667C,0x6666FC00
.word 0x3C66C0C0,0xC0663C00,0xF86C6666,0x666CF800
.word 0xFE626878,0x6862FE00,0xFE626878,0x6860F000
.word 0x3C66C0C0,0xCE663E00,0xCCCCCCFC,0xCCCCCC00
.word 0x78303030,0x30307800,0x1E0C0C0C,0xCCCC7800
.word 0xE6666C78,0x6C66E600,0xF0606060,0x6266FE00
.word 0xC6EEFEFE,0xD6C6C600,0xC6E6F6DE,0xCEC6C600
.word 0x386CC6C6,0xC66C3800,0xFC66667C,0x6060F000
.word 0x78CCCCCC,0xDC781C00,0xFC66667C,0x6C66E600
.word 0x78CCE070,0x1CCC7800,0xFCB43030,0x30307800
.word 0xCCCCCCCC,0xCCCCFC00,0xCCCCCCCC,0xCC783000
.word 0xC6C6C6D6,0xFEEEC600,0xC6C66C38,0x386CC600
.word 0xCCCCCC78,0x30307800,0xFEC68C18,0x3266FE00
.word 0x78606060,0x60607800,0xC0603018,0x0C060200
.word 0x78181818,0x18187800,0x10386CC6,0x00000000
.word 0x00000000,0x000000FF,0x30301800,0x00000000
.word 0x0000780C,0x7CCC7600,0xE060607C,0x6666DC00
.word 0x000078CC,0xC0CC7800,0x1C0C0C7C,0xCCCC7600
.word 0x000078CC,0xFCC07800,0x386C60F0,0x6060F000
.word 0x000076CC,0xCC7C0CF8,0xE0606C76,0x6666E600
.word 0x30007030,0x30307800,0x0C000C0C,0x0CCCCC78
.word 0xE060666C,0x786CE600,0x70303030,0x30307800
.word 0x0000CCFE,0xFED6C600,0x0000F8CC,0xCCCCCC00
.word 0x000078CC,0xCCCC7800,0x0000DC66,0x667C60F0
.word 0x000076CC,0xCC7C0C1E,0x0000DC76,0x6660F000
.word 0x00007CC0,0x780CF800,0x10307C30,0x30341800
.word 0x0000CCCC,0xCCCC7600,0x0000CCCC,0xCC783000
.word 0x0000C6D6,0xFEFE6C00,0x0000C66C,0x386CC600
.word 0x0000CCCC,0xCC7C0CF8,0x0000FC98,0x3064FC00
.word 0x1C3030E0,0x30301C00,0x18181800,0x18181800
.word 0xE030301C,0x3030E000,0x76DC0000,0x00000000

.set at
.set reorder
"
:
:
: "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25", "memory"
);
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
Fanjita
Posts: 217
Joined: Wed Sep 28, 2005 9:31 am

Post by Fanjita »

In order:

- you're getting an error because you're compiling this inline, but you don't have a proper line terminator so the parser is carrying on into the tab characters on the next line. For inline assembly, I seem to remember the
line separator is ";". Alternatively, put this into a proper .s file (without those headers) and use psp-as.

- If you want to learn about the TIFF exploit, this is the wrong place to start. Search these forums for details about the TIFF exploit, including code. The EBOOT loader is executed long after the TIFF exploit has been done.

- As you might expect for something that's taken about 6 months to develop, there's a lot more to making Saotome's EBOOT loader fully compatible with all EBOOTs, than just updating the syscall table. For a start, the syscalls are different between GAME and VSH mode, and across all different firmwares. To be quite honest it's not that interesting a project, just one (and now 2) people going through the necessary pain is probably enough...
Got a v2.0-v2.80 firmware PSP? Download the eLoader here to run homebrew on it!
The PSP Homebrew Database needs you!
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

Fanjita wrote:In order:

- you're getting an error because you're compiling this inline, but you don't have a proper line terminator so the parser is carrying on into the tab characters on the next line. For inline assembly, I seem to remember the
line separator is ";". Alternatively, put this into a proper .s file (without those headers) and use psp-as.


Ok *pulls up google to search meanings* lol i'm learning as i go ^^
Fanjita wrote:- If you want to learn about the TIFF exploit, this is the wrong place to start. Search these forums for details about the TIFF exploit, including code. The EBOOT loader is executed long after the TIFF exploit has been done.
Yea now that i think of it this is executed by the the TIFF exploit...
Fanjita wrote:- As you might expect for something that's taken about 6 months to develop, there's a lot more to making Saotome's EBOOT loader fully compatible with all EBOOTs, than just updating the syscall table. For a start, the syscalls are different between GAME and VSH mode, and across all different firmwares. To be quite honest it's not that interesting a project, just one (and now 2) people going through the necessary pain is probably enough...
Ok, but updating the syscall table is a start... I didn't know they were different between GAME and VSH, but i did use the ones from 2.00. and i find this stuff very interesting...
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

Something intresting maybe it's me, but even the most simpliest assembly code won't compile with my PSP-AS
.text
.globl __start

__start:
la $a0, hello
li $v0, 4
syscall

.data
hello:
.ascii "Hello World\n"
.asciiz "Orbis PSP Development - Assembly Example\n"
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
popcornx
Posts: 6
Joined: Tue Mar 14, 2006 7:56 am

Post by popcornx »

are you still using inline ASM?
23BDFFFCAFB1000423BD0004

"nothing is impossible, not if you could imagen it"
User avatar
EdwardFMA
Posts: 40
Joined: Wed Jul 06, 2005 11:47 am

Post by EdwardFMA »

popcornx wrote:are you still using inline ASM?
No i don't think so... Thats my code up there... Here is my BASH terminal

Administrator@soul-society ~/HelloworldASM
$ psp-as main.s
main.s: Assembler messages:
main.s:5: Error: illegal operands `la $a0,hello'
main.s:6: Error: illegal operands `li $v0,4'
EdwardFMA/IchigoKurosaki - PSP Expert
Athlon 64 - Socket 939 - 3000+
1GB 333 DDR-Ram
Geforce 6600 GT PCI-Express

Orbis PSP Development
Open-Source Development
Fanjita
Posts: 217
Joined: Wed Sep 28, 2005 9:31 am

Post by Fanjita »

The assembler doesn't know the aliases for the registers by default.

Use $2 instead of $v0, $4 instead of $a0. The rest you'll need to look up, they're not hard to find. There's also an alias.s or similarly-named file in the PSPSDK that you can use.
Got a v2.0-v2.80 firmware PSP? Download the eLoader here to run homebrew on it!
The PSP Homebrew Database needs you!
Post Reply