7/13/2006

開放美工圖庫

http://www.openclipart.org/index.php

一個非常棒的想法得到了 Google 的支持,
這個計劃讓四百多位藝術家能夠將他們的
成果免費提供給全世界~ I love it!

7/12/2006

SWF Header Format


Offset Value Meaning
---------------------------- --------------------- ----------------------------
0x00 0x46 = 'F' Uncompressed
0x43 = 'C' Compressed using ZLIB
(SWF 6 or later)

0x01 0x57 = 'W' Always 'W'

0x02 0x53 = 'S' Always 'S'

0x03 0x06 Version Number (SWF 6)
0x07 Version Number (SWF 7)

0x04 - 0x07 FileLength FWS -> Entire file size in bytes.
CWS -> Indicate the decompressed file size
in bytes.


0x08 (bit[7:3]) nBits nBits need by the following four field

depend on nBits Xmin(Signed Integer) Xmin of Frame Size (Always 0)

depend on nBits Xmax(Signed Integer) Xmax of Frame Size

depend on nBits Ymin(Signed Integer) Ymin of Frame Size (Always 0)

depend on nBits Ymax(Signed Integer) Ymax of Frame Size

After Ymax (2 Bytes) FrameRate (U16) Desired playback rate in fps.

After FrameRate (2 Bytes) FrameCount(U16) Total number of frames in this SWF.

7/09/2006

PARAM.SFO Header Format


PARAM.SFO (Space Flight Operations? Similar meanning with what this file for.)

PARAM.SFO 是執行 .PSP 時的各種設定值, 例如: 可執行的地區(Region), 此程式的種類等等
下圖為其主要格式:



PARAM.SFO 是以 Key Name -> Key Value 為一組 Key Pair 的方式來儲存這些設定值的

現在以 2.71 Updater 的 PARAM.SFO 為例子, 來介紹其 Header 格式:

一開始 20 bytes 如下:

00000000h: 00 50 53 46 = .PSF -> File Identifier
00000004h: 01 01 00 00 = 0x00000101 -> PSF Version Number (Version 5 ?)
00000008h: 44 01 00 00 = 0x00000144 -> Offset of Key Name Table
0000000Ch: f0 01 00 00 = 0x000001f0 -> Offset of Key Value Table
00000010h: 13 00 00 00 = 0x00000013 -> Number of Key Pairs
(0x00000013 = 19組 Key)

接著以每16 bytes來描述一組 Key 的實際長度與類別, 所以 19組 Key 共有
304 Bytes(= 19 * 16 Bytes), 下面只介紹第一組為範例說明這 16 Bytes 的定義:

00000014h: 00 00 -> Offset of the Key Name in the Key Table
=> 第一組 Key 的 Key Name 是從 Key Name Table 的第 0 個 byte 開始
00000016h: 04 -> Unknown, always 4. (Maybe alignment? Or bitmask?)
=> 這個 Byte 可能是為了 Alignment, 但目前都是 4, 但是我個人認為這應該是 bitmask.
00000017h: 04 -> Datatype of the Key Value
=> 0x00 -> Binary data
=> 0x02 -> Text data (UTF-8 string with null-terminated)
=> 0x04 -> Signed Integer data (32bits)
00000018h: 04 00 00 00 -> Length of the Key Value
=> Key Value 的長度, 未加上 padding (in bytes)
0000001Ch: 04 00 00 00 -> Length of (Key Value + Padding)
=> Key Value + Padding 的長度 (in bytes)
00000020h: 00 00 00 00 -> Offset of the Key Value in the Key Value Table
=> 第一組 Key 的 Key Value 是從 Key Value Table 的第 0 個 byte 開始

7/08/2006

PBP Header Format

PBP = Playstation Binary Package?

Use EBOOT.PBP of 2.71 Updater as example:
(All data was saved in Little Endian format)



00 50 42 50 = 0x50425000 -> File Identifier

00 00 01 00 = 0x00010000 -> Version Number?

00 00 00 28 = 0x00000028 -> Offset of PARAM.SFO

48 08 00 00 = 0x00000848 -> Offset of ICON0.PNG

45 34 00 00 = 0x00003445 -> Offset of ICON1.PMF

45 34 00 00 = 0x00003445 -> Offset of UNKNOWN.PNG

45 34 00 00 = 0x00003445 -> Offset of PIC1.PNG

45 34 00 00 = 0x00003445 -> Offset of SND0.AT3

45 34 00 00 = 0x00003445 -> Offset of UNKNOWN.PSP

85 DB 4D 00 = 0x004DDB85 -> Offset of UNKNOWN.PSAR



檔案功能說明:

1. PARAM.SFO

儲存各種 UNKNOWN.PSP 執行時的相關資訊, 例如: UNKNOWN.PSP 為 UMD GAME/UMD Video/UMD Audio/Memeory Stick Game/Wireless Game 等等其中一種, 以及支援何種 Region(地區)等等必要的資訊

2. ICON0.PNG (Thumbnail Icon)

在 PSP 中選擇此 EBOOT.PBP 時, 秀給使用者看的小圖式

3. ICON1.PNG (Movie Icon Highlighted)

4. UNKNOWN.PNG (Thumbnail Icon Highlighted)

5. PIC1.PNG (Background Image)

在 PSP 中選擇此 EBOOT.PBP 時的背景圖

6. SND0.AT3 (Ambient Sound)

在 PSP 中選擇此 EBOOT.PBP 時, 播放的背景音樂

5. UNKNOWN.PSP (PlayStation Program?)

當使用者確定執行此 EBOOT.PBP 時, 所要執行的程式

6. UNKNOWN.PSAR (PlayStation ARchive?)

執行 UNKNOWN.PSP 時, 所需要先載入的 Library?

7/05/2006

FAT12 Document

PSP is using FAT12 as the file system of flash0 and flash1.
http://www.mega-tokyo.com/osfaq/FAT12%20document

7/04/2006

K5E5658HCM-D060 Note


1 Page = 512 Bytes(Data) + 16 Bytes(Spare Area)

1 Block = 32 Pages
= 16 KBytes(Data) + 512 Bytes (= 32 * 16 Bytes) (Spare Area)

1 Device = 2048 Blocks
= 64K Pages (= 2048 * 32 Pages)
= 32 MBytes (= 2048 * 16KBtes) (Data) +
1 MBytes (= 2048 * 512Bytes) (Spare Area)

A Page can be devided to 1st half page and 2nd half page.


Address Mapping:

A24 - A9 : (16 bits = 2^16 = 64K) Used to address the Page. (= Page Address)

A8 : Used to indicate the 1st half page or 2nd half page. A8 is set to "Low" or "High" by the 00h or 01h Command. (If using word-level addressing, 01h command is not available.)

A0 - A7 : (8 bits = 2^8 = 256), used to address which byte in the half page indicated by A8.


I/O bus : 16 bits bus (Provide byte-level or word-level data transfer/addressing)


Valid Block:
  1. may include invalid blocks(bad blocks) when first ship.
  2. The 1st block of the device is guaranteed to be a valid block(16KBytes). No need ECC upto 1K Program/Erase cycles.
  3. The 2nd and 3rd blocks are good upon shipping.
  4. Minimun 1004 valid blocks are guaranteed for each continus 128Mb(=16MBytes) memory space. (This seems not so important.)

Misc:
  1. Read operations are executed in page basis.
  2. Erase operations are executed in block basis.
  3. Include one block sized OTP (One Time Programmable).

PSP內部規格簡單的介紹

Brief Introduction of Handheld Game Machine
http://www.inf.ufrgs.br/~rbmotta/Playstation%20Portable%20PSP.ppt

K5E5658HCM-D060 Datasheet

K5E5658HCM-D060 Datasheet
http://unbricker.com/downloads/k5e5658hcm-d060%20data%20sheet.pdf

2.5/2.6 降級程式詳細說明

電玩巴士
http://psp.tgbus.com/pspdg/jc/200607/20060703141028.html

7/03/2006

2.5/2.6 Downgrader FINAL Released!

2.5/2.6 Downgrader Final Released

此一版本與 v5 beta 不同之處僅在於會自動偵測系統版本 (2.5/2.6)

消息來源: http://pspupdates.qj.net/2-5-2-6-Downgrader-FINAL-Released-/pg/49/aid/57717

7/02/2006

0okm: 06.2006

0okm: 06.2006

很厲害的 PSP Hardware Hacker 的 Blog 喔!

基本判斷版本的方法

在外盒的 110V(PSP-1007) 或 120V(PSP-1000) 下方,

A = 1.5
B = 1.51
C, D, E = 1.52
F = 2.0
G = 2.01
H = 2.50
I = 2.60

1.5 Helper 程式分析

程式運作原理:

1. 建立 ms0:/DOWNDATER/ 目錄結構, 用以存放 downgrader v5 beta 所需要的程式及檔案.
目錄建立結構如下:
sceIoMkdir("ms0:/DOWNDATER", 0777);
sceIoMkdir("ms0:/DOWNDATER/PRX", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/data", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/data/cert", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/dic", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/font", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/kd", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/kd/resource", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/vsh", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/vsh/etc", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/vsh/module", 0777);
sceIoMkdir("ms0:/DOWNDATER/DUMP/vsh/resource", 0777);

2. 將 1.5 updater 中的重要相關程式讀出後寫入 ms0:/DOWNDATER/PRX/目錄中, 以提供 downgrader v5 beta 來使用, 其中重要的程式如下
"ms0:/DOWNDATER/PRX/libpsar.prx",
"ms0:/DOWNDATER/PRX/chkuppkg.prx",
"ms0:/DOWNDATER/PRX/lflash_fatfmt.prx",
"ms0:/DOWNDATER/PRX/testmode.prx",
"ms0:/DOWNDATER/PRX/lepton_update.prx",
"ms0:/DOWNDATER/PRX/ipl_update.prx",
"ms0:/DOWNDATER/PRX/suspend_canceler.prx"

3. 將目前 1.5 版 flash0 中的所有目錄及檔案複製到 ms0:/DOWNDATER/DUMP/目錄中, 以提供
downgrader v5 beta 用以取代 2.5/2.6 版的 flah0

(flash0 : 為 kernel mode access only 的 FAT12 partition)

4. 完成 ms0:/DOWNDATER/

PSP 2.6 -> 1.5 降本程式發佈了

http://pspupdates.qj.net/-Breaking-News-2-50-2-60-Downgrader-v5-Beta-Released/pg/49/aid/57594