Site hosted by Angelfire.com: Build your free website today!
crash
9 Apr, 12 > 15 Apr, 12
19 Mar, 12 > 25 Mar, 12
12 Mar, 12 > 18 Mar, 12
12 Dec, 11 > 18 Dec, 11
7 Feb, 11 > 13 Feb, 11
30 Nov, 09 > 6 Dec, 09
15 Jun, 09 > 21 Jun, 09
27 Apr, 09 > 3 May, 09
20 Apr, 09 > 26 Apr, 09
2 Feb, 09 > 8 Feb, 09
22 Dec, 08 > 28 Dec, 08
Entries by Topic
All topics
bleach trance private practice
CD images
disney lesbian star wars
Experimental christian
finnish gay leopard
free design god
home made Blowjob rpg
Open Source porn
PSX PS1 PS  «
Ravishankar fish Mystery
shemale country liebe
speed fuck
trash
xxx nude gta 4 guitar
Blog Tools
Edit your Blog
Build a Blog
RSS Feed
View Profile
Sugar and Spice
SomaFM
Snakes and Snails
redump.org
upyachka.ru
Lampas un Zvaigznes
IMDB
Anime-Planet
You are not logged in. Log in
08/04/2012
FILE0018.CHK
Now Playing: dumb
Topic: PSX PS1 PS
Roadkill Entertainment [RodEnt]

This is a project i've started about a year back but because of RL had little time for it since. My intention was to do JPN->ENG translations for PSX/SS and maybe some other consoles. I'm aware my English isn't good and i almost don't know Japanese. And that's exactly why i do this - to learn things. I would do everything on my own - hacking, reversing, coding, translating, image/video editing, etc. so it usually takes a while. Naturally i won't be doing any games that are text intensive or are just huge (RPGs). Main focus is on smaller low-budget releases, where original script quite often already contains (if not oozes with) Engrish and it fits - it adds to this, in analogy with cinema, 'B' title atmosphere. So, if somebody reports mistakes in translated text, i apologize in advance and i will note them but usually wont fix them, unless, perhaps, if it's something very important. How i hope this could be interesting to other people is - even though obscure, those are not just any games, i pick them carefully. I won't be doing, say 'Tetris', just because it's easy. Ther's something that speaks to me in each of those titles. Maybe you'll discover something for yourself too, something that interests you or maybe something you weren't aware of exists. And i'll be writing tutorials and putting out tools with sources, that i code along the way. This way i hope to get more people involved with PSX translations, it's kinda stagnate how it is now and it's sad - ther's many jewels unknown outside of Japan.

Bunmei Koro Koro Game - Egg [SLPS-01121]



Puzzle/Strategy game. You compete with opponent by rolling eggs. Civilizations are born in their trail. You must protect your own civilization and destroy opponent. Game has two modes: Mission, where your opponent is computer and VS, where up to 4 players, either human (this is nice feature, quite rare for PSX) or AI, can compete against each other. It's theme/atmosphere that fascinates me in this game. It's reminiscent to 'Tenshi no Tamago' (Angel's Egg), one of my favorite Anime movies. Creation and destruction; existance; religion (slow-paced/sci-fi). Naturally such little game doesn't discuss it, doesn't try to find answers, but it touches these themes - triggers thought chain. Also interesting thing to note is that artist behind 'Angel's Egg' Yoshitaka Amano would later work on 'Final Fantasy' franchise, 'Kartia' and some other games. I would suggest you to see anime first, if you haven't.


Things i've done:
- rewrote text function to read ASCII characters
- added smaller font for civilization selection screen and redesigned it to hold more characters/lines
- translated text strings
- translated graphical text (those are mainly stage intros)
- translated text in movies / replaced translated frames, leaving rest untouched (for quality/size)

There weren't much text to translate, but variety of challenges made it interesting and good practice when you're starting out.

Controls:
cir    - Action
X    - Cancel
tri    - Show land height
L1    - Menu
L2    - Boost game speed
R1    - Status
START    - Quit

Future

Summer - Deep Freeze [SLPS-01817] (~85% done - all coding/reversing, some translating/image editing left)
Fall - ???????? (~60% done - coding/hacking; some image editing left, but it's tough)
Winter - something, hopefully, if all goes well; nothing done yet.

Patching

Execute 'JPN2ENG.bat' with original image file name as parameter. e.g.:
JPN2ENG.bat "Bunmei Koro Koro Game - Egg (Japan).bin"

20120408 v1.0 | IN: ccd9650c | OUT: af623ace | tested with Xebra 11/04/25 / SCPH-5502
themabus[at]inbox[dot]lv


Posted by themabus at 22:26 EEST
Updated: 09/04/2012 22:21 EEST
Post Comment | Permalink | Share This Post
18/03/2012
FILE0017.CHK
Now Playing: Sun Devoured Earth
Topic: PSX PS1 PS

Shattered Memories / History of Violence

 

Following is an compilation from numerous posts i made @redump.org concerning PSX dating from 2008 till 2011, which i tried, to best of my abilities, dress in somewhat coherent narration. The thing is, i did some interesting stuff during last few years, but it's all scattered across this electronic wasteland. I kinda do regreat it now, should have noted those things in one place. So, what i'll do now, i will try to bring it over here, what i still remember, and write guides and shit. Reason behind this is - currently i'm working on some PSX JPN->ENG translations, a project of a sort. You'll see. I just wanted to give a kind of a background to that - how things got started and what could be interesting to other people relating to those translations.

I was messing around Saturn's protection at that time but weren't really interested that much in this system itself. And so, as time passes, i realize, that i actually know little about PSX, which on the other hand i used and liked a lot. Even though this was the system that startet redump.org and we worked with it for quite some time there still were many questions left without answers. So i started looking for information on it and eventually stumbled into this thread, where some of redump.org members were dumping and cataloguing PSX BIOSes, which was neat, i though. But i didn't have hardware to do this, and was low on cash then. But thing is, i was really into CRCs, since i was doing algorithm reversing on LiteOn's firmware (i'll probably write a guide on CRC reversing too, sometime, when i'll take a break from those translations). So, even though i haven't previously done any programming for consoles, i was programming in assembler and thought maybe i could write a program that would just calculate CRCs on the flight, without a necessity to physically transfer BIOS to PC. And so i did. I found SDK and some guides and i did. But what i also found was this, this and this. CDINFO.TXT described undocumented service commands one can access in PSX CD unit. And that was so interesting i hand to try it, so i expanded this PSX program to have ability to send those commands.


3rd page (Japanese) was for relatively new PSX emulator XEBRA, where it's author Dr.Hell would document results of his research. Now, with this program i could test PSX CD unit on quite low level and compare results between hardware & emulators. And what i noticed was, how XEBRA was different from rest of the emulators. It acts really close to hardware, whereas usually emulators would go for simplest solution, e.g. just return some constants and such - skipping a lot of processing. And i thought at first this was issue with plugins. So i decide to make my own CD plugin. And i did. Though, i had quite some plans for it, but as i made it, i came to understanding how limited those plugins really are. Issue was with emulator architecture. They are hackish - made of shortcuts - layers upon layers of shortcuts. And with this realization i lost interest in developing it further. I did quite a lot of fine-tuning for it, though, and it might be, it's the best for certain situations: it's the only one that works with physical drives connected to my motherboard (IDE2USB); overall catching strategy is good, comparable to cdrsapu and it gave best results reading scratched CDs on PCs i tested. So, you could give it a try, maybe, if you use plugin-based emulators. What i would suggest, though, is: stick with XEBRA. It's the best PSX emulator there is, hands down.

What i did with this plugin, though, since i could recompile it as i liked, i made it so it would ease examination of LibCrypt protected titles. I disassembled / modified them and ran through this plugin to log certain routines. And what i found was, how this protection really works. It turns out actual subchannel content doesn't matter at all - it can't even be read fully. There just have to be error in frame, so it would get replaced with previous frame - that's how this system is built. Always same 16 pairs of addresses are read. From those pairs 16bit key is formed. If both frames from pair are moded, bit is set.

Reading sector 13955... original sector \ bitF = 0
Reading sector 13960... original sector /
Reading sector 14081... original sector \ bitE = 0
Reading sector 14086... original sector /
Reading sector 14335... LibCrypt, LC1 sector \ bitD = 1
Reading sector 14340... LibCrypt, LC1 sector /
Reading sector 14429... LibCrypt, LC1 sector \ bitC = 1
Reading sector 14434... LibCrypt, LC1 sector /
Reading sector 14499... LibCrypt, LC1 sector \ bitB = 1
Reading sector 14504... LibCrypt, LC1 sector /
Reading sector 14749... original sector \ bitA = 0
Reading sector 14754... original sector /
Reading sector 14906... LibCrypt, LC1 sector \ 1
Reading sector 14911... LibCrypt, LC1 sector /
Reading sector 14980... original sector \ 0
Reading sector 14985... original sector /
Reading sector 15092... original sector \ 0
Reading sector 15097... original sector /
Reading sector 15162... LibCrypt, LC1 sector \ 1
Reading sector 15167... LibCrypt, LC1 sector /
Reading sector 15228... LibCrypt, LC1 sector \ 1
Reading sector 15233... LibCrypt, LC1 sector /
Reading sector 15478... original sector \ 0
Reading sector 15483... unknown         /
Reading sector 15769... LibCrypt, LC1 sector \ 1
Reading sector 15774... LibCrypt, LC1 sector /
Reading sector 15881... LibCrypt, LC1 sector \ 1
Reading sector 15886... LibCrypt, LC1 sector /
Reading sector 15951... original sector \ 0
Reading sector 15956... original sector /
Reading sector 16017... original sector \ bit0 = 0
Reading sector 16022... original sector /

So for given example key would be: 0011 1010 0110 1100 = 0x3a6c (it's PAL 'Dino Crisis' btw). Also it's pretty easy to derive those values from redump.org DB: those kept would be ones and missing sectors would be 0, e.g. it's cec1 for 'Ape Escape', 89ea for 'Mulan', 096f for 'Speed Freaks', e728 - 'Crash Bash', 90af - 'Italian Job', and so on.

Also it became apperant that there is a problem with .sbi files. They work but this format, it's clumsy - not thought out well. They store only part of Q channel frame. So it's not good for preservation. Data gets lost in DB to .sbi file transfer.

Another interesting thing to note is that some anti-mod chip protections would branch depending on console region. For example this routine checks letter @ BIOS offset 0x7ff52 and bails out from following checks if it's 'E' (Europe).

It's curious. Haven't explored it further though.

 


Posted by themabus at 20:34 EEST
Updated: 23/03/2012 12:11 EEST
Post Comment | Permalink | Share This Post
FILE0016.CHK
Now Playing: Sun Devoured Earth
Topic: PSX PS1 PS

Extraction of PSX CD images from PSP EBOOT.PBP container.

 

Definition of problem: We need to extract one or several PSX CD images that are encapsulated inside of PSP EBOOT.PBP file.

It's straightforward with files containing single image. You'll need latest version of PSX2PSP [i'm working with v.1.4.2.] Launch this application with 'PSX2PSP.exe' and you should see dialog similar to this:


So, what you'd do, you'd click on ellipsis following 'ISO/PBP File' combobox and select .pbp file. [You might receive 'I/O error 998.' warning now. If so, some of textboxes might not fill properly, but, despite this, extraction should carry out just fine afterwards.] Then click 'Extract ISO', fill in output file name and click 'Save'. You should see extraction progress reported at the bottom of dialog now. Wait until it reaches 100% and you're done.

For extraction of multiple images you'll need hex editor as well [For actual editing i use MadEdit, as it supports SHIFT-JIS encoding, which is useful for translations. Otherwise it's quite basic editor. But most of the time it's enought with just FAR manager's built-in viewer. So, just stick with your favorite one.]. And some means to binary manipulate (split/join) files [being more comfortable with command-line than GUIs, i use my own programs for this purpose but your hex editor probably has this functionality].

Example 1: Strider Hiryuu 1 & 2 (SLPS-02620/SLPS-02621) Size: 284448402 CRC32: e75392d3

Extract 1st image just the same as single image. Search for 'PSTITLEIMG' in .pbp container and cut this file here (before this string), to separate header [remove --size=$10000 --direction=left hdr EBOOT.PBP]. Search and cut before each 'PSISOIMG' [remove --size=$8000 --direction=left crap EBOOT.PBP; remove --size=$1cf0000 --direction=left cd1 EBOOT.PBP]. What's left in .pbp now is CD2 and footer. Join it with header [copy /b hdr+EBOOT.PBP CD2.PBP] and extract as single image container.

Example 2: Dancing Blade Katte ni Momotenshi II: Tears of Eden (SLPM-86210/SLPM-86211/SLPM-86212) Size: 1343468306 CRC32: 94125c2e

Extract 1st image. Separate header [remove --size=$10000 --direction=left hdr EBOOT.PBP]. Cut at each 'PSISOIMG' [remove --size=$8000 --direction=left crap EBOOT.PBP; remove --size=$1eec0000 --direction=left cd1 EBOOT.PBP; remove --size=$19ba8000 --direction=left cd2 EBOOT.PBP]. Prepend header to remaining .pbp file (last CD + footer) [copy /b hdr+EBOOT.PBP CD3.PBP] and extract it. Search EBOOT.PBP file for 'STARTDAT' and separate footer from there [sextract --offset=$176baac0 EBOOT.PBP]. Add header + cd2 + footer [copy /b hdr + cd2 + EBOOT.xtr CD2.PBP] and extract it.

Would there be some difficulties extracting middle CDs this way, try removing trailing null characters (0x00) from data fragments containing images so, that last meaningful byte would be followed by just enought null characters to reach first round hex offset (one, that ends with 0 - divides with 16 without remainder) and hex-edit those null characters to zeroes (0x30) [for an example take a look at last .pbp fragment, how footer is attached to last CD image.].


Posted by themabus at 01:23 EEST
Updated: 18/03/2012 09:44 EEST
Post Comment | Permalink | Share This Post

Newer | Latest | Older