• Home
  • Downloads
  • EBOOT Fixes
  • Forums
  • New Posts
  • Register
    • Welcome, Register Now! 
    • Premium VIP Membership
    • PS3 Sticky
      • PS3 CFW & MFW
      • PS3 Debug Firmware
      • PS3 Decrypted PSN Links for CFW
      • PS3 Downloads
      • PS3 EBOOT.BIN Original File Links
      • PS3 Firmware
      • PS3 Game Releases List
      • PS3 Guides & Tutorials
      • PS3 Hacking Guides and Tutorials
      • PS3 Hacks & JailBreak
      • PS3 Help & Support
      • PS3 JailBreak Game Compatibility List
      • PS3 JB2 / True Blue (TB) Game Links
      • PS3 multiMAN Updates
      • PS3 Resources
      • PS3 Reviews
      • PS3 Save Files Repository
      • PS3 Themes
      • PS3 Trophies List
      • PS3 Videos
      • PS Vita Trophies List
    • Quick Links
      • Affiliates
      • Contact Us
      • FAQ
      • Post News
      • Site Rules
      • Tag Cloud
 

PS3 Preloader Advance v3.1 by JaicraB Out for JFW DH 3.56 MA CFW

Category: PS3 CFW & MFW  By: Adriansfc92 - (demonhades.org)
Tags: ps3 preloader advance ps3 advance preloader jaicrab ps3 ps3 jfw dh 3.56 ma cfw ps3 cfw

53w ago - Following up on the MA BD Tool v0.8 for PS3 JFW DH 3.56 MA CFW, today JaicraB has updated the previous PS3 Preloader Advance 2 to version 3 followed by bugfix 3.1 alongside a guide by Chekco via DemonHades below.

Download: PS3 Preloader Advance 3.1 / PS3 Preloader Advance 3.1 (Mirror) / PS3 Preloader Advance 3.0 / PS3 Preloader Advance 3.0 (Mirror)

To quote, roughly translated: Hi all, as many know, when it published the JFW 3.56 MA-DH commented on the possibility of creating a virtual flasher to downgrade to 3.55 or less, well today is a fact that possibility so from now no one is "prisoner of MA", however it is a dangerous process, it is recommended to keep things clear and know what we are doing responsible are misuse said this. Let's begin:

The first is dump the data vital to our PS3, Aegean and we will use a configuration file download from the link below the pre3 (jaicrab.blogspot.com.es) and put in the root of the pen Archivo advanced.cfg, then rename the Lv2Diag.self to egea.self, create the following directory PS3/UPGRADE/egea.self.

Connecting to the USB port on the right and hope while reading the data from our ps3 "the process are between 3/5 minutes depending on the pen", when finished we will create the Backuprflash.bin. There are flash drives that are not compatible with egea, if we see that the ps3 starts normally change pendrive...

Good, the configuration file that will do is dump the rflash and flash1, flash2, flash3 once the reading process will turn off the ps3 and begins one of the most dangerous steps, we now have to patch the rflash with 3.55 core_os not chek, patch is recommended to follow the tutorials to dowgrades with physical flasher, but if you look confused or not know how. To be continued...

Thanks to:

JaiCraB, to create preloader 3 and include the MAD.
Varicela test this tool and give me a PS3 and which I used for this tool and other future purposes.
Kike for sacrificing your PS3.
Checko, to try all options.
Demonhades by atosigarme to do it.
M * D ** for the knowledge transmitted.
Black, to add the improvement of Service Mode

Sorry for my bad English

PS3 Preloader Advance 3 by JaicraB

I decided to make improvements to the previous Advance Preloader 2. A major improvement is the virtual controller (MAD). Can directly manipulate the NOR or NAND memories of our consoles without having a physical developer. This leads to a high risk of running out of console.

A bad patch and you would be required to settle a physical developer. It has been tested successfully in several models. This does not mean that there is any model that fails. I hope you will heap up head. I am not responsible for any damage. Another use is to make copies of data unique to each console.

This tool has been developed for systems and lower JFW 3.55 3.56 MA. It requires no external libraries. It works even without the dev_flash in the system. It can be launched as Lv2Diag.self, as in JFW EGEA MA SELF 3.56 or releasing from any FileManager that supports it. May soon be published as PKG.

1. Copy of rflash:

For systems with NOR (16MB) and NAND (256MB) (no bootloader). Available two ways to copy. The first 16MB, 256MB or whole (for NAND) The process takes 50 sec (16MB NOR), 15 sec (16MB NAND), 1 min (256MB NAND). In rflash entire system is stored on the PS3. There we find:

  • Asecure_loader
  • EEID
  • CISD
  • CCSD
  • Trvk_prg
  • Trvk_pkg
  • Ros (CoreOS)
  • Cvtrm
  • Bootloader (NOR models only)

It will create a file called "Backuprflash.bin" in the USB000.

2. Restoring the rflash (MAD):

This step is dangerous, a bad change in the original can cause rflash BRICK. A bad usage can only be repaired only with physical developer. Also available in two modes (16MB, 256MB). Designed primarily for downgrading systems with "JFW MA" and for systems with problems downgrader. Has option to restore only different sectors. (Experimental). The process can take NOR, auque See not work on USB not quench. The "rflash" must be copied to the USB as "rflash.bin" But this safe to do so ... Do not!

3. Copy and Restore "/ dev_flashX"

To safely handle the file system used in GameOS. It will create a file called "Backupflash1.bin", "Backupflash2.bin", "Backupflash3.bin" USB000 depending on the number of dev_flash chosen. You can mount that image in your PC so you can change and then restore it. It is also useful when the system downgrade option 2 "Restoring rflash" and change your firmware with the file system. To restore is to copy the image of the "dev_flash" USB000 named the "flashX.bin".

4. Dump LV2, LV1

It is an extra unimportant. You just have to be installed in the system SC 6, 7, 11 for the process. The file created will be named on USB000 "DumpLv2.bin", "DumpLv1.bin".

5. Service Mode

We can enter / exit the service mode. To enter service mode from the pre3 need patched systems with LV1.

6. Out mode

When you finish the processes indicated in advance.cfg can do is shut down or reboot the system.

Configuration file

The tool will locate the file "advance.cfg" in "/ dev_usb000/advance.cfg" (Port closer to the reader) You can do all the actions triggered sequentially. That is, you can program the rflash and dev_flash at a time, out of service mode and reboot. In the configuration file is detailed the activation of each action. Flashing green LED means you are working.

Where it is that Red is complete. Writing in NOR models will seem to be blocked. But the led usb flash every 20 seconds so slightly. Do not put out until you do one or put the red LED.

JFW 3.56 downgrade MA:

The process will be detailed demonhades.org community.

Easy change version:

With well patched the rflash (CoreOS not check) with their respective "dev_flashX" can be changed in a matter of 4 minutes (NAND) of any firmware using this tool. Will address the issue soon on demonhades.org

Thanks to:

Chickenpox test this tool and give me a PS3 and which I used for this purpose and other future purposes.
Kike for sacrificing your PS3.
Checko, to test all future tutorials opciones.Y use of that tool.
Demonhades by atosigarme to do it.
M * D ** for the knowledge transmitted.
Black, to add the improvement of Service Mode.




Stay tuned for more PS3 Hacks and PS3 CFW news, follow us on Twitter and be sure to drop by the PS3 Hacks and PS3 Custom Firmware Forums for the latest PlayStation 3 scene updates and homebrew releases!

Comments 925 Comments - Go to Forum Thread »

Errors

The following errors occurred with your submission

Okay

Quick Reply Quick Reply

  • Decrease Size
    Increase Size
  • Wrap [QUOTE] tags around selected text
Posting Quick Reply - Please Wait Posting Quick Reply - Please Wait
xragel2478's Avatar
#20 - xragel2478 - 94w ago
Reply
shiny bricks?... really ? why would they purposely brick a console? i understand to weed out traitors, but why not let the beta be optional. another way of owning us like sony does.

shummyr's Avatar
#19 - shummyr - 94w ago
Reply
This is getting better and better of a firmware.

PS3 News's Avatar
#18 - PS3 News - 94w ago
Reply
Yea, that does seem a ways off if the JFW DH PS3 Custom Firmware Beta testing is 2 weeks... I guess time will tell for sure though.

Also below is some more details from blipi who is one of the developers working on OpenPStore: ps3crunch.net/forum/threads/353-JFW-?p=3377#post3377
Quote
Hey people. I've just heard you posted this here, and I just said to myself, let's post too. Atm I'm working on OpenPStore, which is part of the JFW. I've been working on it for many many hours, as all devs which are working on JFW, and it is just disgusting to read people saying JFW is a fake.

I've seen pics of JFW running, not all of its features though, so it's not fake. There is a whole team working hard every day to bring this to you, and I've actually talked to all of them and I do know their work is real. Just for you to know, now it is 2 am where I live, I've been working till now just to have it all ready for the beta test and not to delay it anymore.

We want to verify everything is working without any problems before releasing it, to avoid things such as bricks or weird bugs. That's why the beta and further release will take so long. So far it is all progressing fine, and I do have proofs of, at least, my work.

Here I bring you 2 proofs of how hard we are working (OpenPStore).

1- We had a problem with a pre-made library to read .xml files (mxml), which was solved by manually coding a new .xml parser.

xml_parser.h : http://pastebin.com/bqQr1YG5


//XML PARSER BY BLIPI
//Feel free to distribute and use it on any plattform and projects

#ifndef XMLPARSER_H
#define XMLPARSER_H

#include
#include
#include
#include

typedef struct xml_node_attr{
char *name;
char *value;

struct xml_node_attr *next;
}xml_node_attr;

typedef struct xml_node{
char *name;
char *value;
int level;
long start_pos;
long end_pos;
char closed;


struct xml_node_attr *attrs;
struct xml_node *next;
struct xml_node *last;
struct xml_node *child;
struct xml_node *parent;
}xml_node;

int XML_Open(char *path);

struct xml_node *XML_ParseAll();
struct xml_node *XML_SearchNodeFrom(char *name, struct xml_node *start);
struct xml_node *XML_SearchNode(char *name);
struct xml_node *XML_GetChild(struct xml_node *node);
struct xml_node *XML_GetNextNode(struct xml_node *node);

struct xml_node_attr *XML_GetNodeAttr(struct xml_node *node, char *name);
char *XML_GetNodeValue(struct xml_node *node);

void XML_EndParse(char free_tree);

#endif

xml_parser.c : http://pastebin.com/A7DsysUJ


#include "xmlparser.h"


// ----- DEFINES ----- //
#define XML_UNKNOW -1
#define XML_DUNNOHANDLE -2
#define XML_OPEN_NODE 1
#define XML_CLOSE_NODE 2
#define XML_NODE_NAME 3
#define XML_SPECIAL_NODE 4
#define XML_NAME_DELIMITER 5
#define XML_ATTR_START 6
#define XML_ATTR_DELIMITER 7
#define XML_NODE_END 8
#define XML_CLOSE_END_NODE 9


// ----- STRUCTS ----- //
typedef struct xml_reader_{
char reading_tag;
char quote_read;
char node_ending;

int lvl;

long cur_pos;

char read_buffer[1024];
char name_buffer[1024];
}xml_reader_;

xml_reader_ xml_reader = {0};

typedef struct ret_{
int ret;
char ch;
}ret_;


// ----- PROTOTYPES ----- //
void XML_FreeList( void );
struct ret_ XML_GetChar( void );
struct xml_node *XML_RecursiveSearchNode(char *name, struct xml_node *node);


// ----- VARIABLES -----//
char xml_path[1024];

char *xml_buffer = NULL;
long xml_size = 0;


struct xml_node *main_tree = NULL;
struct xml_node *current_node = NULL;

// ----- CODE ----- //

//! Abrir el archivo para parsear posteriormente
//! path: Ruta relativa o hard coded hacia el xml
//TODO: No guardar en buffer, leer char a char!
int XML_Open(char *path){
FILE *fp = fopen(path, "r");
if(!fp)
return -1;

strcpy(xml_path, path);

fseek(fp, 0, SEEK_END);
xml_size = ftell(fp);
rewind(fp);

xml_buffer = (char*)malloc(xml_size+1);
if(!xml_buffer)
return -2;

fread(xml_buffer, 1, xml_size, fp);

fclose(fp);

return 0;
}


struct ret_ XML_GetChar(){
char ch = xml_buffer[xml_reader.cur_pos++];
struct ret_ ret;
ret.ch = ch;

if(xml_reader.quote_read == 1 && ch != '"'){
ret.ret = XML_NODE_NAME;
goto endfunc;
}
if(xml_reader.reading_tag == 0){
switch(ch){
case '':
xml_reader.reading_tag = 0;
if(xml_buffer[xml_reader.cur_pos-2] == '/')
ret.ret = XML_CLOSE_END_NODE;
else
ret.ret = XML_CLOSE_NODE;
goto endfunc;
case '?':
ret.ret = XML_SPECIAL_NODE;
goto endfunc;
case ' ':
ret.ret = XML_NAME_DELIMITER;
goto endfunc;
case '=':
ret.ret = XML_ATTR_START;
goto endfunc;
case '"':
xml_reader.quote_read = !xml_reader.quote_read;
ret.ret = XML_ATTR_DELIMITER;
goto endfunc;
}
}
}


endfunc:
return ret;
}

struct xml_node *XML_ParseAll(){
char action = 0;
char ignore = 0;
int buffer_pos = 0;

memset(xml_reader.read_buffer, 0, 1024);
memset(xml_reader.name_buffer, 0, 1024);
xml_reader.reading_tag = 0;
xml_reader.quote_read = 0;

struct xml_node_attr *last_attr = NULL;
struct xml_node_attr *first_attr = NULL;

while(xml_reader.cur_pos < xml_size){
struct ret_ ret = XML_GetChar();

if(ignore && ret.ret != XML_SPECIAL_NODE)
continue;

switch(ret.ret){
case XML_SPECIAL_NODE:
ignore = !ignore;
break;
case XML_OPEN_NODE:

if(!main_tree){
main_tree = current_node = (struct xml_node*)malloc(sizeof(struct xml_node));
memset(current_node, 0, sizeof(struct xml_node));
}else if(current_node->closed){
current_node->next = (struct xml_node*)malloc(sizeof(struct xml_node));
memset(current_node->next, 0, sizeof(struct xml_node));
current_node->next->parent = current_node->parent;
current_node->next->last = current_node;
current_node = current_node->next;
}else{
current_node->child = (struct xml_node*)malloc(sizeof(struct xml_node));
memset(current_node->child, 0, sizeof(struct xml_node));
current_node->child->parent = current_node;
current_node = current_node->child;
}

action = 0;
break;
case XML_NODE_NAME:
xml_reader.read_buffer[buffer_pos++] = ret.ch;
break;
case XML_NAME_DELIMITER:{
if(buffer_pos > 0){

if(action == 0)
strcpy(xml_reader.name_buffer, xml_reader.read_buffer);

memset(xml_reader.read_buffer, 0, 1024);
buffer_pos = 0;

}
}break;

case XML_ATTR_START:{
struct xml_node_attr *temp_attr = (struct xml_node_attr*)malloc(sizeof(struct xml_node_attr));
memset(temp_attr, 0, sizeof(struct xml_node_attr));

temp_attr->name = (char*)malloc(buffer_pos);
strcpy(temp_attr->name, xml_reader.read_buffer);

if(last_attr != NULL)
last_attr->next = temp_attr;
last_attr = temp_attr;

if(first_attr == NULL)
first_attr = last_attr;

memset(xml_reader.read_buffer, 0, 1024);
buffer_pos = 0;
}break;

case XML_ATTR_DELIMITER:
if(xml_reader.quote_read == 0){

last_attr->value = (char*)malloc(buffer_pos);
strcpy(last_attr->value, xml_reader.read_buffer);

memset(xml_reader.read_buffer, 0, 1024);
buffer_pos = 0;
}
break;

case XML_CLOSE_END_NODE:
case XML_CLOSE_NODE:
if(xml_reader.node_ending == 0){
current_node->name = (char*)malloc(buffer_pos);
if(strlen(xml_reader.name_buffer) > 0)
strcpy(current_node->name, xml_reader.name_buffer);
else
strcpy(current_node->name, xml_reader.read_buffer);

current_node->level = xml_reader.lvl;
current_node->attrs = first_attr;
current_node->start_pos = xml_reader.cur_pos;
}

memset(xml_reader.name_buffer, 0, 1024);
memset(xml_reader.read_buffer, 0, 1024);
buffer_pos = 0;

first_attr = NULL;
last_attr = NULL;

if(ret.ret == XML_CLOSE_END_NODE){
current_node->closed = 1;
current_node->end_pos = xml_reader.cur_pos;
}

break;

case XML_NODE_END:
while(current_node->closed == 1)
current_node = current_node->parent;

current_node->closed = 1;
current_node->end_pos = xml_reader.cur_pos;

memset(xml_reader.name_buffer, 0, 1024);
memset(xml_reader.read_buffer, 0, 1024);
buffer_pos = 0;

break;

default:
break;
}
}

return main_tree;
}

struct xml_node *XML_RecursiveSearchNode(char *name, struct xml_node *node){
if(strcmp(name, node->name) == 0)
return node;

struct xml_node *ret = NULL;

if(node->child)
ret = XML_RecursiveSearchNode(name, node->child);

if(ret)
return ret;

if(node->next)
ret = XML_RecursiveSearchNode(name, node->next);

if(ret)
return ret;

return NULL;
}

struct xml_node *XML_SearchNodeFrom(char *name, struct xml_node *start){
return XML_RecursiveSearchNode(name, start);
}
struct xml_node *XML_SearchNode(char *name){
return XML_RecursiveSearchNode(name, main_tree);
}

struct xml_node *XML_GetChild(struct xml_node *node){
return node->child;
}

struct xml_node *XML_GetNextNode(struct xml_node *node){
return node->next;
}

struct xml_node_attr *XML_GetNodeAttr(struct xml_node *node, char *name){
struct xml_node_attr *iterator = node->attrs;
while(iterator != NULL){
if(strcmp(iterator->name, name) == 0)
return iterator;
iterator = iterator->next;
}

return NULL;
}

char *XML_GetNodeValue(struct xml_node *node){
if(node->value == NULL){
int len = node->end_pos - node->start_pos - 1;
char *buffer =(char*)malloc(len);
memcpy(buffer, &xml_buffer[node->start_pos], len);
buffer[len] = '\0';
node->value = buffer;
}
return node->value;
}

void XML_RecursiveFreeNode(xml_node *node){
if(node->child)
XML_RecursiveFreeNode(node->child);

if(node->next)
XML_RecursiveFreeNode(node->next);

free(node);
node = NULL;
}

//! Liberar la memoria ocupada por xml_buffer
void XML_EndParse(char free_tree){
free(xml_buffer);

if(free_tree)
XML_RecursiveFreeNode(main_tree);

main_tree = current_node = NULL;
}

(Don't expect to find any OpenPStore here, as it is only a .xml parser)

2- Final GUI design of OpenPStore (Not a pic of a ps3, but from a PC. Though PS3 is exactly the same):
It will come in multiple colors, with an autochanger (to random color) feature.


If you want to I can keep you updated. JFW is real, and we are putting all our effort into it. Do not trust any fake release/leak! I don't know if the brick thing is true, but having seen all the work which has been done here, I would just trust it and not mess around.

Nobody is going to brick nobody's console unless someone leaks the JFW. And, even if it is leaked, if you don't use the leaked beta, you dont' have to worry about anything. And ofcourse, the final release won't have this anti-leak feature.

I also have to say thanks to everyone of you who do trust in us and give us support, as support and opinions is our only pay back for the work

Blipi

PS: If it was for me, I would translate JFW and it's homebrew to English and more languages, but as I am not the only one who works in this project, I don't know when English support will come or whether it will come or not. Sorry.

PS2: For those claiming evidence... Beta will be here soon, just wait. You cant trust us or not. I know what I'm doing, and I do know that it is real. I don't even have a ps3 to test OpenPStore too, and I have to keep asking for testers. More than 5 people have already tried OpenPStore, and every one of them could tell you that it is real.

Baller786's Avatar
#17 - Baller786 - 94w ago
Reply
not long till it gets leaked.

"The estimated date for the publication of the JFW-DH is October 1, 2011"

We're probably gonna have 3.80 firmware by then. and 3.60 custom firmware should defo be out by then.

doctorwho05's Avatar
#16 - doctorwho05 - 94w ago
Reply
Originally Posted by dayv View Post
Quote What is the minimum firmware needed for this. new here, thanks

Well to jailbreak you need at least 3.41 FW and a USB Dongle, from there the skies the limit (upgrade-downgrade, CFW).

I hope it helps.
Originally Posted by DAXGr View Post
Quote Ps1 emulation capability applies to every known model.

Sent from my X10mini using Tapatalk.

People are wondering if their PS1 Eboots they made for PSP will work on CFW.

Page 182 of 185 «‹180181182183184›LAST »

Related PS3 News and PS3 CFW Hacks or JailBreak Articles

• PS3 4.40 CFW MiralaTijera: System Manager 1.1, 3.2.0 Integrated Core
• Iris Manager v2.42 PS3 Backup Game Manager Updated By Estwald
• Tiny Tokens Empires and Star Wars Pinball PSN / PS3 By Duplex Out
• Iris Manager v2.41 PS3 Backup Game Manager Updated By Estwald
• PS3ITA Manager v1.00 (Iris Manager PS3 Fork) By Rancid-o Arrives
• Metro Last Light Limited Edition PS3 DLC Unlocker by Duplex Out
Affiliates  NewsNow  Privacy  PS3 CFW & MFW  PS3 Hacks & JailBreak  PS3 Reviews  PS3 Videos  © 2013 PlayStation 3 News

PlayStation 3 Links

• Contact Us E-Mail
• PS3 Affiliates
• PS3 CFW & MFW
• PS3 Debug Firmware
• PS3 Decrypted PSN Links for CFW
• PS3 Downloads
• PS3 EBOOT.BIN Original File Links
• PS3 Firmware
• PS3 Game Releases List
• PS3 Guides & Tutorials
• PS3 Hacking Guides and Tutorials
• PS3 Hacks & JailBreak
• PS3 Help & Support
• PS3 JailBreak Game Compatibility List
• PS3 JB2 / True Blue (TB) Game Links
• PS3 multiMAN Updates
• PS3 News Forums
• PS3 News Site FAQ
• PS3 News Site Advertising FAQ
• PS3 News Site Posting FAQ
• PS3 News Site Privacy FAQ
• PS3 News Site Rules
• PS3 News Site Tag Cloud
• PS3 News Site Terms
• PS3 Resources
• PS3 Reviews
• PS3 Save Files Repository
• PS3 Themes
• PS3 Trophies List
• PS3 Videos
• PS Vita Trophies List

PlayStation 3 News Discussions
Introductions: Hello Everyone, I'm New at PS3News.com! - 4m ago

CommChief's Avatar
Quote Hi all! I'm a total PS3 n00bie but I hope to learn a lot from the bright folks up here. I have the old 60GB PS3 with a 500GB drive in it. I wanted th...
By CommChief with
 7012 Comments »
backup games from internal hdd after update from cfw3.55 to ofw3.72 - 27m ago

nishad's Avatar
Quote hi guys. my nephew updated my ps3 from 3.55 to 3.72. i'll get that downgraded from the market but i have a doubt. is all of my data will be deleted li...
By nishad with
 0 Comments »
Introductions: Hello Everyone, I'm New at PS3News.com! - 1h ago

Assburger's Avatar
Quote Hello, I've been lurking around the PS3homebrew/jailbreak scene for a while and now I decided to start being more active. The forums seems serious...
By Assburger with
 7012 Comments »
PS3 Debug / Test Firmware 3.50 - 3.60 Updates Leaked - 2h ago

Nnoitra's Avatar
Quote i have the ofw 4.41 can i use this cfw?...
By Nnoitra with
 267 Comments »

Latest PlayStation 3 Trophies
Ratchet: Deadlocked HD: Gut Wrencher
Ratchet: Deadlocked HD: Landstalker Talkin'
Ratchet: Deadlocked HD: Death From Above
Ratchet: Deadlocked HD: Spotless

Latest PlayStation Vita Trophies
Men's Room Mayhem: Toilet Trouble
Men's Room Mayhem: Mayhem Master
Men's Room Mayhem: Hygiene Award
Men's Room Mayhem: Sand in the Face

Latest PlayStation 3 Releases
Kamen Rider Battlide War JPN PS3-Caravan - 05-21-2013
Resident Evil Revelations PS3-ANTiDOTE - 05-19-2013
Muvluv Alternative Total Eclipse JPN PS3-HR - 05-17-2013
Skate 2 EUR PS3-Googlecus - 05-16-2013

Latest PlayStation 3 Themes
Wolverine Origins PS3 Theme - 05-19-2013
Heavy Rain (Official) Dynamic PS3 Theme - 05-09-2013
Wipeout HD Fury Dynamic PS3 Theme - 05-06-2013
Batman Arkham City Dynamic PS3 Theme - 05-04-2013
  • Contact Us
  • -
  • PS3 News