[TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.101

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2

Mensaje por m0skit0 »

Imagen

Avatar de Usuario
darkmonster
Habitual
Habitual
Mensajes: 182
Registrado: 08 Abr 2010, 20:28
PSN ID: darkmonster17
Ubicación: Mexico
Contactar:

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2

Mensaje por darkmonster »

oye moskito ya segui todo el tutorial letra por letra pero no consigo H.bin HBL.bin y el menu.bin

me marca muchos errores

Spoiler:
C:\Documents and Settings\Administrador>cd /valentine-hbl-read-only/eLoader

C:\Documents and Settings\Administrador\valentine-hbl-read-only\eLoader>make
psp-gcc -D DEBUG -D PSP -I C:/PSPDev/psp/sdk/include -W -Wall -O2 -G0 -fno-pic -
mno-abicalls -w -fomit-frame-pointer -S eloader.c -o eloader.s
In file included from elf.h:4,
from eloader.c:1:
sdk.h:1:24: error: pspdisplay.h: No such file or directory
sdk.h:2:21: error: pspctrl.h: No such file or directory
sdk.h:3:23: error: pspkernel.h: No such file or directory
sdk.h:4:22: error: pspdebug.h: No such file or directory
sdk.h:5:22: error: pspaudio.h: No such file or directory
In file included from eloader.c:1:
elf.h:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' tok
en
elf.h:35: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:107: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:125: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:150: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:169: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:204: error: expected specifier-qualifier-list before 'Elf32_Addr'
elf.h:223: error: expected ')' before 'elf_file'
elf.h:228: error: expected ')' before 'elf_file'
elf.h:232: error: expected ')' before 'elf_file'
elf.h:235: error: expected ')' before 'elf_file'
elf.h:238: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'elf_e
boot_extract_open'
elf.h:240: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'getGP
'
In file included from eloader.c:2:
eloader.h:39: error: expected specifier-qualifier-list before 'u32'
eloader.h:66: error: expected specifier-qualifier-list before 'u32'
In file included from eloader.c:4:
thread.h:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'find
_thread'
thread.h:8: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'find
_sema'
thread.h:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'fin
d_fpl'
In file included from eloader.c:6:
config.h:17: error: expected specifier-qualifier-list before 'SceOff'
config.h:49: error: expected ')' before '*' token
config.h:52: error: expected ')' before '*' token
config.h:67: error: expected ')' before '*' token
config.h:70: error: expected ')' before '*' token
config.h:73: error: expected ')' before '*' token
config.h:76: error: expected declaration specifiers or '...' before 'u32'
In file included from eloader.c:8:
graphics.h:4:22: error: psptypes.h: No such file or directory
In file included from eloader.c:8:
graphics.h:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'C
olor'
graphics.h:22: error: expected specifier-qualifier-list before 'Color'
graphics.h:26: error: expected ')' before 'color'
graphics.h:28: error: expected ')' before 'color'
graphics.h:39: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'g
etPixelScreen'
graphics.h:50: error: expected declaration specifiers or '...' before 'u32'
graphics.h:70: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*
' token
graphics.h:77: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*
' token
In file included from eloader.c:9:
utils.h:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'getF
irmwareVersion'
eloader.c:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'gp
'
eloader.c:20: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*'
token
eloader.c:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'hb
size'
eloader.c:25: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*'
token
eloader.c:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*'
token
eloader.c:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*'
token
eloader.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'db
glog'
eloader.c:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'au
x'
eloader.c:64: error: expected declaration specifiers or '...' before 'u32'
eloader.c: In function 'get_lib_nid':
eloader.c:89: error: 'pnid' undeclared (first use in this function)
eloader.c:89: error: (Each undeclared identifier is reported only once
eloader.c:89: error: for each function it appears in.)
eloader.c:89: error: too many arguments to function 'config_seek_nid'
eloader.c: In function 'resolve_missing_stubs':
eloader.c:106: error: 'u32' undeclared (first use in this function)
eloader.c:106: error: 'cur_stub' undeclared (first use in this function)
eloader.c:106: error: expected expression before ')' token
eloader.c:107: error: expected ';' before 'nid'
eloader.c:124: error: 'nid' undeclared (first use in this function)
eloader.c:124: error: too many arguments to function 'get_lib_nid'
eloader.c:129: error: 'syscall' undeclared (first use in this function)
eloader.c: At top level:
eloader.c:146: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'g
et_call_nidtable'
eloader.c: In function 'check_stub_entry':
eloader.c:166: error: 'tStubEntry' has no member named 'library_name'
eloader.c:167: error: 'tStubEntry' has no member named 'nid_pointer'
eloader.c:168: error: 'tStubEntry' has no member named 'jump_pointer'
eloader.c: At top level:
eloader.c:175: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'g
et_good_call'
eloader.c: In function 'complete_library':
eloader.c:187: error: 'SceUID' undeclared (first use in this function)
eloader.c:187: error: expected ';' before 'nid_file'
eloader.c:188: error: 'u32' undeclared (first use in this function)
eloader.c:188: error: expected ';' before 'nid'
eloader.c:197: error: 'nid_file' undeclared (first use in this function)
eloader.c:197: error: 'PSP_O_RDONLY' undeclared (first use in this function)
eloader.c:200: error: 'PSP_SEEK_END' undeclared (first use in this function)
eloader.c:201: error: 'PSP_SEEK_SET' undeclared (first use in this function)
eloader.c:205: error: 'nid' undeclared (first use in this function)
eloader.c:207: error: 'tSceLibrary' has no member named 'lowest_nid'
eloader.c:209: error: 'tSceLibrary' has no member named 'lowest_index'
eloader.c:220: error: 'NULL' undeclared (first use in this function)
eloader.c: At top level:
eloader.c:224: error: expected ')' before 'nid'
eloader.c: In function 'get_library_entry':
eloader.c:244: error: 'NULL' undeclared (first use in this function)
eloader.c: In function 'get_library_index':
eloader.c:264: error: 'NULL' undeclared (first use in this function)
eloader.c: In function 'build_nid_table':
eloader.c:285: error: 'u32' undeclared (first use in this function)
eloader.c:285: error: 'cur_nid' undeclared (first use in this function)
eloader.c:285: error: 'cur_call' undeclared (first use in this function)
eloader.c:285: error: 'syscall_num' undeclared (first use in this function)
eloader.c:285: error: 'good_call' undeclared (first use in this function)
eloader.c:285: error: 'aux1' undeclared (first use in this function)
eloader.c:285: error: 'aux2' undeclared (first use in this function)
eloader.c:285: error: 'nid' undeclared (first use in this function)
eloader.c:301: error: 'NULL' undeclared (first use in this function)
eloader.c:329: error: 'tStubEntry' has no member named 'nid_pointer'
eloader.c:330: error: 'tStubEntry' has no member named 'jump_pointer'
eloader.c:333: error: 'tStubEntry' has no member named 'library_name'
eloader.c:344: error: 'tStubEntry' has no member named 'library_name'
eloader.c:349: error: 'tSceLibrary' has no member named 'lowest_syscall'
eloader.c:350: error: 'tSceLibrary' has no member named 'lowest_nid'
eloader.c:353: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:363: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:370: error: 'tNIDResolver' has no member named 'nid'
eloader.c:371: error: 'tNIDResolver' has no member named 'call'
eloader.c:387: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:395: error: 'tNIDResolver' has no member named 'nid'
eloader.c:396: error: 'tNIDResolver' has no member named 'call'
eloader.c:399: error: 'tNIDResolver' has no member named 'call'
eloader.c:400: error: 'tSceLibrary' has no member named 'lowest_syscall'
eloader.c:402: error: 'tSceLibrary' has no member named 'lowest_syscall'
eloader.c:403: error: 'tSceLibrary' has no member named 'lowest_nid'
eloader.c:403: error: 'tNIDResolver' has no member named 'nid'
eloader.c:439: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:446: error: 'tNIDResolver' has no member named 'nid'
eloader.c:447: error: 'tNIDResolver' has no member named 'call'
eloader.c:468: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:476: error: 'tNIDResolver' has no member named 'nid'
eloader.c:477: error: 'tNIDResolver' has no member named 'call'
eloader.c:480: error: 'tNIDResolver' has no member named 'call'
eloader.c:481: error: 'tSceLibrary' has no member named 'lowest_syscall'
eloader.c:483: error: 'tSceLibrary' has no member named 'lowest_syscall'
eloader.c:484: error: 'tSceLibrary' has no member named 'lowest_nid'
eloader.c:484: error: 'tNIDResolver' has no member named 'nid'
eloader.c:520: error: expected ';' before 'syscall'
eloader.c:524: error: 'syscall' undeclared (first use in this function)
eloader.c:524: error: 'tNIDResolver' has no member named 'call'
eloader.c:525: error: 'tNIDResolver' has no member named 'nid'
eloader.c: At top level:
eloader.c:541: error: expected ')' before '*' token
eloader.c: In function 'main_loop':
eloader.c:604: error: 'isSet' undeclared (first use in this function)
eloader.c:611: error: 'ebootPath' undeclared (first use in this function)
eloader.c: At top level:
eloader.c:615: error: expected ')' before 'args'
eloader.c:624: error: expected '=', ',', ';', 'asm' or '__attribute__' before '_
hook_sceKernelCreateThread'
eloader.c: In function '_hook_sceKernelMaxFreeMemSize':
eloader.c:663: error: 'hbsize' undeclared (first use in this function)
eloader.c: At top level:
eloader.c:666: error: expected ')' before 'mid'
eloader.c:673: error: expected '=', ',', ';', 'asm' or '__attribute__' before '_
hook_sceKernelAllocPartitionMemory'
eloader.c: In function 'resolve_imports':
eloader.c:695: error: 'u32' undeclared (first use in this function)
eloader.c:695: error: 'cur_nid' undeclared (first use in this function)
eloader.c:696: error: 'cur_call' undeclared (first use in this function)
eloader.c:697: error: expected ';' before 'real_call'
eloader.c:707: error: 'tStubEntry' has no member named 'nid_pointer'
eloader.c:708: error: 'tStubEntry' has no member named 'jump_pointer'
eloader.c:711: error: 'tStubEntry' has no member named 'stub_size'
eloader.c:718: error: 'real_call' undeclared (first use in this function)
eloader.c:725: error: '_hook_sceKernelCreateThread' undeclared (first use in thi
s function)
eloader.c:737: error: 'NULL' undeclared (first use in this function)
eloader.c:742: error: '_hook_sceKernelGetBlockHeadAddr' undeclared (first use in
this function)
eloader.c:746: error: '_hook_sceKernelAllocPartitionMemory' undeclared (first us
e in this function)
eloader.c:793: error: 'tStubEntry' has no member named 'library_name'
eloader.c: In function 'relocate_entry':
eloader.c:845: error: 'u32' undeclared (first use in this function)
eloader.c:845: error: expected ';' before 'buffer'
eloader.c:857: error: 'offset_target' undeclared (first use in this function)
eloader.c:857: error: expected ';' before 'reloc_entry'
eloader.c:868: error: expected ';' before 'misalign'
eloader.c:869: error: 'misalign' undeclared (first use in this function)
eloader.c:870: error: expected ';' before 'array'
eloader.c:871: error: 'array' undeclared (first use in this function)
eloader.c:871: error: expected expression before ')' token
eloader.c:872: error: expected expression before ')' token
eloader.c:873: error: 'u8' undeclared (first use in this function)
eloader.c:873: error: 'array8' undeclared (first use in this function)
eloader.c:873: error: expected expression before ')' token
eloader.c:874: error: 'buffer8' undeclared (first use in this function)
eloader.c:874: error: expected expression before ')' token
eloader.c:875: error: 'i' undeclared (first use in this function)
eloader.c:879: error: 'buffer' undeclared (first use in this function)
eloader.c:879: error: expected expression before ')' token
eloader.c:891: error: 'tRelEntry' has no member named 'r_info'
eloader.c:904: error: 'code' undeclared (first use in this function)
eloader.c:905: error: 'offset' undeclared (first use in this function)
eloader.c:929: error: expected ';' before 'array'
eloader.c:930: error: expected expression before ')' token
eloader.c:931: error: expected expression before ')' token
eloader.c:932: error: expected expression before ')' token
eloader.c:933: error: expected expression before ')' token
eloader.c:937: error: expected expression before ')' token
eloader.c:938: error: expected expression before ')' token
eloader.c:940: error: expected expression before ')' token
eloader.c: At top level:
eloader.c:956: error: expected ')' before 'elf_file'
eloader.c:1035: error: expected ')' before 'args'
eloader.c:1042: error: expected ')' before 'size'
eloader.c: In function 'start_eloader':
eloader.c:1061: error: 'SceUID' undeclared (first use in this function)
eloader.c:1061: error: expected ';' before 'elf_file'
eloader.c:1063: error: 'u32' undeclared (first use in this function)
eloader.c:1063: error: expected ';' before 'offset'
eloader.c:1069: error: 'elf_file' undeclared (first use in this function)
eloader.c:1069: error: 'offset' undeclared (first use in this function)
eloader.c:1072: error: 'PSP_O_RDONLY' undeclared (first use in this function)
eloader.c:1079: error: 'gp' undeclared (first use in this function)
eloader.c:1085: error: 'NULL' undeclared (first use in this function)
eloader.c:1088: error: 'hbsize' undeclared (first use in this function)
eloader.c:1088: error: 'allocate_memory' undeclared (first use in this function)

eloader.c:1130: error: 'Elf32_Ehdr' has no member named 'e_entry'
eloader.c:1130: error: expected ';' before 'elf_header'
eloader.c:1131: error: expected ';' before numeric constant
eloader.c:1143: error: 'entry_point' undeclared (first use in this function)
eloader.c:1143: error: expected expression before ')' token
eloader.c:1144: error: 'thid' undeclared (first use in this function)
eloader.c:1144: error: 'runThread' undeclared (first use in this function)
eloader.c: In function 'loadMenu':
eloader.c:1162: error: 'SceUID' undeclared (first use in this function)
eloader.c:1162: error: expected ';' before 'id'
eloader.c:1164: error: expected ';' before 'menu_file'
eloader.c:1165: error: 'SceOff' undeclared (first use in this function)
eloader.c:1165: error: expected ';' before 'file_size'
eloader.c:1167: error: 'SceIoDirent' undeclared (first use in this function)
eloader.c:1167: error: expected ';' before 'entry'
eloader.c:1168: error: expected ';' before 'menuThread'
eloader.c:1209: error: 'menu_file' undeclared (first use in this function)
eloader.c:1209: error: 'PSP_O_RDONLY' undeclared (first use in this function)
eloader.c:1213: error: 'file_size' undeclared (first use in this function)
eloader.c:1213: error: 'PSP_SEEK_END' undeclared (first use in this function)
eloader.c:1214: error: 'PSP_SEEK_SET' undeclared (first use in this function)
eloader.c:1217: error: 'menu_pointer' undeclared (first use in this function)
eloader.c:1220: error: expected ')' before 'void'
eloader.c:1221: error: 'menuThread' undeclared (first use in this function)
eloader.c:1221: error: 'start_entry' undeclared (first use in this function)
eloader.c:1221: error: 'NULL' undeclared (first use in this function)
eloader.c: At top level:
eloader.c:1235: error: expected ')' before 'args'
eloader.c: In function '_start':
eloader.c:1279: error: 'SceUID' undeclared (first use in this function)
eloader.c:1279: error: expected ';' before 'thid'
eloader.c:1283: error: 'PSP_DISPLAY_PIXEL_FORMAT_8888' undeclared (first use in
this function)
eloader.c:1298: error: 'thid' undeclared (first use in this function)
eloader.c:1298: error: 'start_thread' undeclared (first use in this function)
eloader.c:1298: error: 'NULL' undeclared (first use in this function)
make: *** [eloader.o] Error 1

C:\Documents and Settings\Administrador\valentine-hbl-read-only\eLoader>


y no logro compilar que me recomiendas que haga
PSP 3010 > 5.51 > 5.55 > 6.00 > 6.20 > 6.20 TN-B Downgrade 5.01 -> 5.03 -> CFEnabler 3.70 :)

Avatar de Usuario
Riicho
Novato
Novato
Mensajes: 18
Registrado: 04 Abr 2010, 01:51

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2

Mensaje por Riicho »

Chavos alguien que me pueda decir como instalar :

los ebots
el hbl la rev 38
y ya he descargado el nuevo save data

solamente quisiera que me indicaran la estructura que debo tener en la memoria de mi psp



tengo una psp go 6.20
!!!! ¬¬Cuzztumiiza tuu viida¬_¬ !!!!

Imagen

Quee ya un CFW para PSP GO !!!! ¬¬ a noo qee lo soñee !!!!

JeFNDZ
Habitual
Habitual
Mensajes: 378
Registrado: 11 Sep 2009, 06:44

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2

Mensaje por JeFNDZ »

Copia la carpeta "hbl" y el "h.bin" a la raiz de la memory stick.
seria algo asi:
ms0:/hbl/

El hbl tiene un menu por lo que debes de poner los homebrews en la ruta ms0:/PSP/GAME/
EJEMPLO: ms0:/PSP/GAME/WAGIC/eboot.pbp (parecido al custom firmware).

En caso de que quieras cargar un eboot sin entrar al menu pon el eboot en la ruta: ms0:/hbl/game/eboot.pbp.

Avatar de Usuario
Riicho
Novato
Novato
Mensajes: 18
Registrado: 04 Abr 2010, 01:51

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2

Mensaje por Riicho »

JeF-G escribió:Copia la carpeta "hbl" y el "h.bin" a la raiz de la memory stick.
seria algo asi:
ms0:/hbl/

El hbl tiene un menu por lo que debes de poner los homebrews en la ruta ms0:/PSP/GAME/
EJEMPLO: ms0:/PSP/GAME/WAGIC/eboot.pbp (parecido al custom firmware).

En caso de que quieras cargar un eboot sin entrar al menu pon el eboot en la ruta: ms0:/hbl/game/eboot.pbp.




Val Val , cualquier duda , te estoy molestando

grax muchas grax despues de casi 4 dias y nadie me explica ,

-- Doble Post --

No me corre ninguno


mas que el

tetrisportable .. al intento 4

use la rev 38 ,PSPgo 6.20

es normal que no me corra casi ningun homebrew ?
!!!! ¬¬Cuzztumiiza tuu viida¬_¬ !!!!

Imagen

Quee ya un CFW para PSP GO !!!! ¬¬ a noo qee lo soñee !!!!

Avatar de Usuario
alejandro50082
Habitual
Habitual
Mensajes: 467
Registrado: 03 Sep 2009, 03:24
Ubicación: Guatemala

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.51

Mensaje por alejandro50082 »

Actualizado el tutorial.
Actualizada la Descarga
Half Byte Loader Rev. 52
Actualizado el Savedata
Savedata Patapon 2

Mejoras Rev. 52

Código: Seleccionar todo

- Added kernel memory dump for PSPGo at the start of the loader, because
otherwise accessing kmem will fail (i dont know why)
--> This can be improved dumping only necessary offsets and not the whole
partition
- Added finding lowest syscall from kernel memory for some libraries -only for
PSP Go, and using the kmem dump-
- Got rid of intermediate static buffer for loading HBL into memory
- Changed tool "umem dumper" to do a kernel dump as well (only works on PSP Go)
and changed the linker address to the new one on the new savedata (new!)

Perdón por no haber estado actualizándolo pero me he estado un poco ocupado.... :roll: :mrgreen:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Alejandro50082

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.51

Mensaje por m0skit0 »

darkmonster escribió:oye moskito ya segui todo el tutorial letra por letra pero no consigo H.bin HBL.bin y el menu.bin
me marca muchos errores

No tienes exportadas las variables de entorno del PSPSDK.

darkmonster escribió:y no logro compilar que me recomiendas que haga

Usa Linux.
Imagen

Avatar de Usuario
jjblanco93
Experto
Experto
Mensajes: 1090
Registrado: 11 Abr 2010, 18:20
PSN ID: jjblanco93
Gamertag Xbox Live: jjblanco1993
Steam ID: jjblanco93
Twitter: jjblanco1993
Ubicación: Gran Canaria-Islas Canarias

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.51

Mensaje por jjblanco93 »

Yo tenía el mismo fallo y no me compilaba esos tres, abrí el .bat de compilar y les quite la terminación .bin , así me funciono ;)
Imagen

Spoiler:
Imagen

Avatar de Usuario
alejandro50082
Habitual
Habitual
Mensajes: 467
Registrado: 03 Sep 2009, 03:24
Ubicación: Guatemala

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.51

Mensaje por alejandro50082 »

Actualizado Rev. 70
wololo escribió:- More functions overrides
- Automatic SVN version number through makefile (tested on cygwin and dos
command line, hopefully will work on linux too)
- Some cleanup. Removed some dead code related to thread/modules.
- Fixed a nid bug in eLoaderconf.rb

Descarga
Alejandro50082

Avatar de Usuario
Dark_House
Experto
Experto
Mensajes: 1155
Registrado: 17 Sep 2009, 20:18
Ubicación: En algun lugar de GTA V Online

Re: [TUTORIAL]-Utilizar Half Byte Loader en Patapon 2 Rev.70

Mensaje por Dark_House »

Pues bueno, viendo que ya se puede cargar homebrew en 6.20, esto requiere un instalador, intentare hacerlo.

Buen trabajo a todos y gracias especialmente a Moskit0, por dar paso al loader.
Dark House - Creador de autoinstaladores.
Si necesitais un instalador o un TEU personalizado contacten conmigo por privado.

Responder