PlayView

From Vita Developer wiki
Jump to navigation Jump to search

PlayView[edit | edit source]

PlayViewDefault.jpeg

PlayView on PS3

Description[edit | edit source]

Generic[edit | edit source]

Game used to advertise PlayView

PlayView can be described as guide book for games. Using "ultra- high resolution (4K) digital data", PSP or PS3 will display the images with no effort. It can be compatible 3D and PS Move+EYE Camera on PS3 and can include possible extra content(themes, DLC).

Most of the time, each full screen page display is equivalent to 2 paper pages of an art book/game manual. Specific background music, sound and videos per page can be apply.

There are various kind of content, but it can be distinguish as for PS3 or PSP (Some games titles are present in both category). However, it work on the same way (with specific encryption/security, resolution/more sub element such sound channel etc...). Few full free content for PS3 & PSP are available online.

PS3 games can contain embebed Playview (e.g. the "wizard book" inside "Ni No Kuni" uses a custom game module named libTGV_v1.45.07.sprx)

Playview might required PSP FW 6.39+, and PS3 FW around 3.70+.

Icon psp psv.png

Transfer from PSP PlayView to PS VITA (and export to PS3) is possible for some PlayView titles,

PSP/PS3 Digital comic/strategy/guide/manual are not PlayView.

Codename of playview is TGV (Tiny Gigantic Viewer) and his derivates with an added or removed letter (TG, GV, etc...)

example structure PSP(/PS3)[edit | edit source]

PlayView image layers for 1 page

Structure and display on both device PS3/PSP can be like flipping the pages of a book (see youtube game link and XML structure content.dat.edat) with specific background music for each page.

For one page (one page equivalent of 2 paper pages):

  • Each page contain 6 (or 5) layers with the same graphical content, the layer display is according to the level you zoom.
  • Aspect ratio is 1.77 (16:9) (all PSP models).
  • The demo video linked/image show a little different structure (tile sizes only as 256x256 and grid) . Described as"authoring", it s easy to understand/manipulate/modulate.


Level Layer visual Atelier Meruru Guide Book  : Number Image Note Grid (WxH) Other example: Atelier Totori Plus(PSP&PS3) or Atelier Meruru Plus Other example: Atelier Ayesha Guide Book
Zoom in ∇
0 1(sum: 180x101) (180x101) "thumbnail" when slide 1x1 1 image (240x135) 1 (200x112)
1 2(sum: 360x202) Left: 256x202 Right: 104x202 2x1 4 images (480x270) 2 (400x225)
2 6(sum: 720x405) 3x2 12 images (960x540) 8 (800x450)
3 24(sum: 1440x810) 6x4 40 images (1920x1080) 28 (1600x900)
4 84(sum: 2880x1620) 12x7 135 images (3840x2160) 104 (3200x1800)
5 299(sum: 5760x3240) Max_Zoom, the "deepest" into the page 23x13 no 375 (6400x3600)
  • Level Layer order are reversed (layer 0 being the max_zoom) on the file who contain the image: gvd.dat.edat file (see DATA BASE Viewer) and effect as double page flip are defined into the content.dat.edat (second part contan the structure XML) .

Game Data[edit | edit source]

Can be slightly different and for convenience description, this term of "1.01" (based on disc_version from PSP title) is used for wikify but it not meant to be strict since there are not strictly two different model at this level of files (neither as PS3/PSP)

However, PlayView version "1.00" and "1.01" difference are cosmetic order (or divided file on some PS3 title) until content.dat.edat XML structure (to be picky) and PlayView setting (format +warning/logo/user interface screen...).

*Tgvtools-v0.81 (FW 3.70.001) and v.1.10 (FW 410.001)
*Ni No Kuni internal PlayVew book use Tgvtools-v0.81 (FW 3.70.001)

See note for JPG extractor tool.

gvd.dat(.edat):[edit | edit source]

1.00 1.01
TGDT0100 header 0x400 TGDT0100 header 0x400
Image ID.gvd for the first page all name file.gvd+ padding
second image id.gvd DATA BASE Viewer +padding
End Of File: 00 End Of File: 00

The file contain the image embedded as well as "database". Can be divided in 2 parts:

  • "TGDT0100"
  • "Image ID.gvd"


TGDT0100[edit | edit source]

Offset Length Value & note
0000 8 "TGDT0100"
0008 4 Total data entry (next 0x10) in hex
000C 4 Total Length first part/start second part (first image id.gvd)
0010 4 Offset file name.gvd (without header TGDT0100)
0014 4 Length file name.gvd (00 is not counted)
0018 4 Offset Data Base Viewer
001C 4 Length Data base Viewer file
0020 xx Repeat last 0x10 for page
0XXX xx Filled with 00 until the first image ID.gvd start


Image ID.gvd:[edit | edit source]

Repeat for each page referenced. Can be divide into 3 part: Name file referenced into XML, data base utility and the embedded images.


Name file.gvd[edit | edit source]
Offset Length Value & note
0000 10 .name file.gvd
0010 00 Padding with zero for alignment (if variable per page: DATA BASE Viewer start at next offset 0X00 or according to the structure used)


DATA BASE Viewer[edit | edit source]
Offset Length Value Note
0000 10 47 56 45 57 30 31 30 30 4A 50 45 47 30 31 30 30 "GVEW0100JPEG0100" (Note:"GV3D0100GVMP0100" when 3D?)
0010 4 00 00 xx xx Length Width (hex) total layer 0 (variable per game)
0014 4 00 00 xx xx Length Height (hex) total layer 0 (variable per game)
0018 4 42 4C 4B 5F "BLK_"
001C 4 00 00 xx xx Length Data Base (variable per game structure)
0020 8 00 00 00 01 00 00 00 00 Start
Data Base
0028 4 00 00 00 20 each entrance length: 0X20
002C 4 00 00 00 04 each parameter length: 0X04
0030 4 00 00 00 xx Grid position Width (hex): as horizontal line, left to right.
0034 4 00 00 00 xx Grid position Height (hex): next position after each horizontal line.
0038 4 00 00 00 0x Layer level: layer 0 (max zoom) appear first.
003C 4 00 00 xx xx Length of the image (hex)
0040 4 00 00 00 xx Length padding of the image (hex)
0044 4 00 00 00 00 Not used?
0048 4 00 00 0x xx Width image (hex)
004C 4 00 00 0x xx Height image (hex)
0050 ... ... Repeat last 0x20 for each image on the page
XXXX 4 42 4C 4B 5F "BLK_"
XXXX 4 xx xx xx xx Total length embedded images (with FF padding)
Data Base
XXXX 8 00 00 00 02 00 00 00 00 End
XXXX xx FF D8 ... First JPEG (first from level layer on file 0, top left to right)
XXXX xx Padding with FF (16 bytes alignment)
XXXX xx Second JPEG until last image for the page. Start either next name file.gvd/data base viewer
XXXX xx xx xx Padding with 00 for alignment if next is data base viewer
Images JPG[edit | edit source]

Embedded image (JPEG JFIF) per page. The second page start.


content.dat(.edat):[edit | edit source]

The file contains a file list, and XML files giving the structure to transport elements such video, music background etc... (thiis file format can vary up to PlayView version)

  • First part header:
Offset Length Value & Note
0000 8 "TGDT0100"
0008 4 Total data entry (next 0x10) in hex
000C 4 Total Length first part/start second part
0010 4 Offset (without header) on file list
0014 4 Length filename (without 0x00)
0018 4 Offset (without this header) of the file (XML)
001C 4 Length file (XML) without 0x00
0020 xx Repeat last 0x10

Then come the file list

  • Second part XML:

On 1.01:

Source Code
<!--contain all the name file.gvd as XML in order of file appearance-->
content.flst page00.xml page01.xml page02.xml ...page09.xml
0A<?xml version="1.0" encoding="utf-8"?>
<gigantic_image_content version="1.0">
    <image_files>
        <archive source="gvd.dat">
<!--See other example structure for W & H and Other tile_type as Multiplane and Stereoscopy?-->
            <image width="3840" height="2160" id="i0001" source="page00.gvd" tile_type="normal"/> 
            <image width="3840" height="2160" id="i0002" source="page01.gvd" tile_type="normal"/>
            <image width="3840" height="2160" id="i0003" source="page02.gvd" tile_type="normal"/>
                  ...
            <image width="3840" height="2160" id="i0010" source="page09.gvd" tile_type="normal"/> 
        </archive>
    </image_files>
    <structure>
        <root ref="i0001"/>
        <sequence transition="double_page_flip" id="s0001"> <!--visual effect as turning the page of paper book-->
            <item ref="i0002"/>  <!--Not all page need to have this double page flip effect-->
            <item ref="i0003"/>
        </sequence>
    </structure>
</gigantic_image_content>


<!--One page example-->

0A<?xml version="1.0" encoding="utf-8"?>
<gigantic_image version="1.0">
<!--Define when opening the page, limited by value below.-->
    <home>
        <view offset_x="0.000000" offset_y="0.000000" zoom="1.000000"/>   
    </home>

<!--Limit of the values (ZOOM IN:limited by the images). Here you can adjust/unlock/lock the level of max/min_zoom (between 1 to 0 ∞)-->
    <limit>
        <boundary offset_x="0.000000" max_overshoot="0.000000" offset_y="0.000000" scale="1.000000" 
        max_zoom="2.000000" max_invisibility="INF" min_zoom="1.000000"/>
    </limit>

<!--Links to other pages. Here you create 2 links, enter by selector (ID_YYYYMMDDHHMMSSSSS 
for internal use/(not checked on file attribute or only if file list XML don t load properly?)-->
    <link width="3840.000000" crossfade_range="1.000000" target="page01.xml" center_x="1920.000000" 
	center_y="1080.000000" height="2160.000000" separate="true" id="ID_YYYYMMDDHHMMSSSSS" name="[l]link(1)">
        <boundary offset_x="0.000000" max_overshoot="0.500000" offset_y="0.000000" scale="1.000000" 
	max_zoom="INF" action="enable" max_invisibility="INF" min_zoom="0.500000" max_stretch="INF"/>
    </link>
		
    <link width="3840.000000" crossfade_range="1.000000" target="page02.xml" center_x="1920.000000" 
	center_y="1080.000000" height="2160.000000" separate="true" id="ID_YYYYMMDDHHMMSS002" name="[l]link(2)">
        <boundary offset_x="0.000000" max_overshoot="0.500000" offset_y="0.000000" scale="1.000000" 
	max_zoom="INF" action="enable" max_invisibility="INF" min_zoom="0.500000" max_stretch="INF"/>
    </link>

<!--Embed to music and videos-->
<!--music-->		
    <embed width="1.000000" center_x="1.000000" center_y="1.000000" height="1.000000" 
        volume="0.600000" source="mymusic01.mp3" name="[BGM]">
        <boundary offset_x="0.000000" max_overshoot="INF" offset_y="0.000000" scale="1.000000" 
        max_zoom="INF" action="play" max_invisibility="INF" min_zoom="0.000000" max_stretch="INF"/>
    </embed>

<!--videos-->
    ...


<!--Selector values(right-angled with x & y) for the links defined above-->     
    ...

</gigantic_image>
   
...

Note[edit | edit source]

  • Image: JPEG (...)
  • Video:
Property PSP PS3
Extension .mp4 .mp4
Frame Size 480*272 1280*720
Display Aspect 480*272 1280*720
Video Compression h264 h264
Frame Rate 29.970 29.970
Audio Format mpeg4aac mpeg4aac
Audio Frequency (Hz) 41000 48000
Audio Channels Stereo Stereo
Specific markers
*no auto scale on PSP? (fw 6.60 videos utility is more picky than fw 6.39)
*not all PlayView on PS3 & PSP contains videos, 3D content video and stereo 3D are supported.


  • Sound: (only se.dat?)

Some PS3/PSP PLayview can have specific sound assigned to actions such cancel.

Name Offset Size Example Remark
Magic 0x00 0x06 53 47 58 44 50 01 "SGXDP"
Header size 0x06 0x04 00 00 60 01
Body size 0x0A 0x8 N.A


  • Music: Used on background, for each page or when linked/zoomed. MP3 format (128 KBPS)
  • PSP EDAT files (videos & sound also): see tool on main page for decrypt.
  • Web Brower link in-game for PS3 PlayView?

http://rghost.net/48813321 (include Code-Compile-Credit. Drag and drop your file with embedded .JPG)

PlayView Config[edit | edit source]

PlayView apps itself can be configured per game/machine. Indeed one aspect of this Tiny Gigantic Viewer being authoring, it need to be quick and easy to port (...) the game data but also the apps to fit into different content/machine/user.

Following Config PSP & PS3 and config User Interface description are not necessary complete and don t necessary complete each other.

Config PSP & PS3: tgv.cfg[edit | edit source]

This file can be in different format up to the title.

Allow different settings for the title such background color.

This table is not complete.

Settings Values Comments & note
selection_mode_by_enter_button (0/1) default: 0
selection_frame_margin range: [0.0, 0.25]

PS3 default: 0.15

PSP default: 0.01

key_repeat_delay range: [0.0, 1.0]

PS3 default: 0.266667

PSP default: 0.233333

key_repeat_interval range: [0.0, 1.0]

PS3 default: 0.083333

PSP default: 0.05

clear_color_normal e.g. default: 0xffffffff RGBX color outside the viewer: background color
clear_color_dialog e.g. default: 0x00000000 RGBX color
clear_color_margin e.g. default: 0x00000000 RGBA color outside Aspect ratio screen
disable_debug_menu default: 0 (1/0)
disable_debug_hud default: 0
enable_stick_guide (1/0)

PS3 default: 1

PSP default: 0

page_flip_speed_factor range: [0.01, 10.0]

PS3 default: 2.0

PSP default: 2.0

fixed_aspect_ratio_width = 16

fixed_aspect_ratio_height = 9

range: [0, 4096]

PS3 only default: 0

On PS3, Aspect ratio can be adjust. See above setting about color normal and margin.
viewport_shrink_factor range: [0.1, 1.0]

PS3 only default: 1.0

Rate full screen/viewer : Works also on PSP (as resolution on full screen)
force_16_9_letter_box_if_4_3_sdtv default: 0
letter_box_margin_color default: 0x00000000
enable_screenshot_utility = 1

screenshot_photo_title = photo_title

screenshot_game_title = game_title

screenshot_add_date_time = 1

screenshot_add_overlay = 1

(0/1)
max_num_sgx_streams 2
guide_alignment default: 5

0= Top left, 1= Top, 2= Bottom left,

3= Bottom left, 4= Bottom, 5= Bottom right,

6= Center

selection_frame_draw_margin

PS3 default: 0

PSP default: 0

selection_frame_draw_division default: 0
xy_motion_speed_limit_factor range: [0.01, 10.0]

PS3 default: 3.0

PSP default: 1.0

back_speed_factor range: [0.01, 10.0]

PS3 default: 1.0

PSP default: 0.58

back_home_speed_factor range: [0.01, 10.0]

PS3 default: 0.7

PSP default: 0.58

bg_image_off default: 0 Hide background image (when slide)
default_language_psp PSP only default: 0 Language for home button (quit game): See Languages up to the ones available on PSP


Config User Interface: ui[edit | edit source]

help_p_x image

This file can be in different (and so variable values) format/name up to the title version.

Can be divide into 3 part:

  • First part:
Offset Length Value & Note
0000 8 "TGDT0100"
0008 4 Total data entry (next 0x10) in hex
000C 4 Total Length first part/start second part
0010 4 Offset (without header)
0014 4 Length
0018 4 Offset
001C 4 Length
0020 xx Repeat last 0x10
  • Second part (example):
Source Code
ui_main_o.cfg\00ui_version     =100
selection_frame_division     =0
startup_page_num     =5      '''''//Variable number of screen before the title start'''''
help_page_num     =1
guide_alignment     =3
#help_sd_magnification     =1.00
#guide_sd_magnification     =1.00
#player_sd_magnification     =1.00
#safearea_ratio     =0.89f
# guide param
guide_base_t     =13
guide_base_b     =13
guide_base_l     =41
guide_base_r     =14
guide_margin_t     =13
guide_margin_b     =13
guide_margin_l     =41
guide_margin_i     =7
guide_margin_r     =14
# video guide param
player_guide_icon_x     =36
player_guide_icon_y     =12
player_guide_play_time_x     =73
player_guide_play_time_y     =12
player_guide_whole_time_x     =252
player_guide_whole_time_y     =12
player_guide_progress_x     =106
player_guide_progress_y     =12
player_guide_progress_left_pos     =2
player_guide_progress_right_pos     =2
player_guide_font_w     =7
player_guide_font_interval_w     =6
# main o image(PS3:HD or PSP)
# startup
# start
startup01		= KIDOJI_480x272    //'''''Boot screen'''''
startup02		= KENKO_480x272     //'''''Health  screen'''''
startup03		= SHIYOJO_480x272   //'''''Instruction screen'''''
startup04		= LOGO_PSP          //'''''Logo screen'''''
startup05		= PSP_LOGO       //'''''Second logo screen'''''
# frame
# start
frame_focus_on		= focus_focused
# guide
# start
guide_h		= guide_h
guide_ds		= guide_ds
guide_dm		= guide_dm
guide_s		= guide_s
guide_af		= guide_af_o
guide_ao		= guide_ao_o
guide_av		= guide_av_o
guide_am		= guide_am_o
guide_c		= guide_c_o
guide_lr		= guide_lr
guide_base		= guide_base
# help
# start
help01_text		= help_p_o
# player
# start
player_base		= player_panel_base
player_play		= player_play
player_pause		= player_pause
player_forward1		= player_forward1
player_forward2		= player_forward2
player_forward3		= player_forward3
player_rewind1		= player_rewind1
player_rewind2		= player_rewind2
player_rewind3		= player_rewind3
player_slow		= player_slow
player_numeric		= player_letters
player_progress_bar		= player_progress_bar
player_progress_frame		= player_progress_base
\00ui_main_x.cfg\00ui_version     =100
selection_frame_division     =0
startup_page_num     =5
help_page_num     =1
guide_alignment     =3
#help_sd_magnification     =1.00
#guide_sd_magnification     =1.00
#player_sd_magnification     =1.00
#safearea_ratio     =0.89f
# guide param
guide_base_t     =13
guide_base_b     =13
guide_base_l     =41
guide_base_r     =14
guide_margin_t     =13
guide_margin_b     =13
guide_margin_l     =41
guide_margin_i     =7
guide_margin_r     =14
# video guide param
player_guide_icon_x     =36
player_guide_icon_y     =12
player_guide_play_time_x     =73
player_guide_play_time_y     =12
player_guide_whole_time_x     =252
player_guide_whole_time_y     =12
player_guide_progress_x     =106
player_guide_progress_y     =12
player_guide_progress_left_pos     =2
player_guide_progress_right_pos     =2
player_guide_font_w     =7
player_guide_font_interval_w     =6
# main x image(PS3:HD or PSP)
# startup
# start
startup01		= KIDOJI
startup02		= KENKO
startup03		= SHIYOJO
startup04		= LOGO1
startup05		= LOGO2
# frame
# start
frame_focus_on		= focus_focused
# guide
# start
guide_h		= guide_h
guide_ds		= guide_ds
guide_dm		= guide_dm
guide_s		= guide_s
guide_af		= guide_af_x
guide_ao		= guide_ao_x
guide_av		= guide_av_x
guide_am		= guide_am_x
guide_c		= guide_c_x
guide_lr		= guide_lr
guide_base		= guide_base
# help
# start
help01_text		= help_p_x
# player
# start
player_base		= player_panel_base
player_play		= player_play
player_pause		= player_pause
player_forward1		= player_forward1
player_forward2		= player_forward2
player_forward3		= player_forward3
player_rewind1		= player_rewind1
player_rewind2		= player_rewind2
player_rewind3		= player_rewind3
player_slow		= player_slow
player_numeric		= player_letters
player_progress_bar		= player_progress_bar
player_progress_frame		= player_progress_base
  • Third part example:

Title id.png followed by the image itself:

.KIDOJI_480x272.png
.KENKO_480x272.png
.SHIYOJO_480x272.png
.LOGO_PSP.png
.PSP_LOGO.png
.focus_focused.png
.help_p_o.png
.help_p_x.png
.guide_base.png
.guide_h.png
.guide_ds,png
.guide_dm.png
.guide_s.png
.guide_lr.png
.guide_af_o.png
.guide_af_x.png
.guide_ao_o.png
.guide_ao_x.png
.guide_c_o.png
.guide_c_x.png
.guide_av_o.png
.guide_av_x.png
.guide_am_o.png
.guide_am_x.png
.player_panel_base.png
.player_play.png
.player_pause.png
.player_forward1.png
.player_forward2.png
.player_forward3.png
.player_rewind1.png
.player_rewind2.png
.player_rewind3.png
.player_slow.png
.player_letters.png
.player_progress_base.png
.player_progress_bar.png