motoskin
v1.00
00002698
File generated by EZXCodec
Motorola resource file format 1.00
Brought to you by Beijing Motorola. Nimen Hao!
Motorola is not liable for any damage resulting use of the information
below.
We nerdy engineers (and groovy UI designers) would love for you to create
luscious skins for our humble phones. To help you, there is enough info
below for a C or C++ programmer to write tools to read and write these
resource files.
Good luck!
The first 24 bytes must match the following format:
motoskinnnv1.00nXXXXXXXX
replace the Xs above with an 8-byte hex offset of the start block.
Between this header and the start block is a n-terminated list of
resource IDs used by the hash table.
IDs for images end in .g, and IDs for sounds end in .a
struct startBlock
{
unsigned check; // 0xABCDDCBA
unsigned IDTableOffset;
unsigned nHashTableEntries;
unsigned hashTableOffset;
unsigned dataOffset;
**;
struct hashTableEntry
{
unsigned hashedID;
unsigned IDOffset;
unsigned dataOffset;
**;
Note: the start block and first entry of the hash table MUST be aligned
on a 4-byte boundary. If they aren't we don't load the file.
hashing function: (taken from usenet--thanks David Hanley!)
int hashVal(char *c)
{
int hv=0;
while (*c)
{
hv=(hv<<1)^(hv>>20)^*(c++);
**
return hv;
**
After the hash table is the binary resource data. The first four
bytes are check bytes and should be 0xDCBAABCD. The next four bytes
are the size of the data, not inclusive of the four bytes. The rest
is the data.
ID table:
action_required_pop.g
active_line_1_idle9.g
active_line_2_idle9.g
aia_bg_std.g
alarmclock_time_area_bg.g
alarm_clock_ani.g
alarm_clock_pop.g
alarm_clock_small.g
alert_light_idle8.g
alert_pop.g
alert_ring_idle8.g
alert_ring_light_vib_idle8.g
alert_ring_n_light_idle8.g
alert_ring_n_vib_idle8.g
alert_silent_idle8.g
alert_vibrate_idle8.g
alert_vib_then_ring_idle8.g
alt_chooser_bg_std.g
alt_item_bg_h.g
alt_item_bg_hs.g
alt_list_bg_std.g
batt_level_0_cli7.g
batt_level_0_hed2.g
batt_level_0_idle10.g
batt_level_1_cli7.g
batt_level_1_hed2.g
batt_level_1_idle10.g
batt_level_2_cli7.g
batt_level_2_hed2.g
batt_level_2_idle10.g
batt_level_3_cli7.g
batt_level_3_hed2.g
batt_level_3_idle10.g
calculator_ani.g
calen_ani.g
calldialog_bg.g
call_calling_ani_thb.g
call_center_small.g
call_conct_thb.g
call_ended_ani_thb.g
call_failed_thb.g
call_header_bg.g
call_id_group_img_pane.g
call_id_img_pane.g
call_mute_pane.g
call_mute_thb.g
call_on_hold_thb.g
call_speaker_thb.g
call_tty_thb.g
camera_ani.g
carrier_ani.g
chkbx_bg_h.g
chkbx_bg_hs.g
chkbx_mark_indicator_h.g
chkbx_mark_indicator_hs.g
chkbx_mark_indicator_ps.g
chkbx_mark_indicator_sel.g
chkbx_mark_indicator_std.g
cli_call_conct_thb.g
cli_call_incoming_thb.g
cli_call_mute_thb.g
cli_call_on_hold_thb.g
cli_call_speaker_on_thb.g
cli_call_tty_thb.g
cli_header_bg_std.g
cli_new_email_hed3.g
cli_new_message_hed3.g
cli_new_voicemail_hed3.g
cli_new_voice_n_text_msg_hed3.g
cli_tch_ctrl_bg.g
cli_vr_activitiy_small.g
cli_vr_hed4.g
connections_ani.g
ctact_address_small.g
ctact_address_tab.g
ctact_alert_tab.g
ctact_ani.g
ctact_fax_small.g
ctact_fax_tab.g
ctact_home_small.g
ctact_home_tab.g
ctact_mobile_small.g
ctact_mobile_tab.g
ctact_msg_small.g
ctact_msg_tab.g
ctact_other_small.g
ctact_other_tab.g
ctact_pager_small.g
ctact_pager_tab.g
ctact_phone_small.g
ctact_phone_tab.g
ctact_pic_id_tab.g
ctact_pic_id_thb.g
ctact_sim_small.g
ctact_sim_tab.g
ctact_std.g
ctact_work_small.g
ctact_work_tab.g
delete_ani_pop.g
email_ani.g
emergdialog_bg.g
fdbsl01_bg.g
fdbsl02_bg.g
fiveway_center_sel.g
fiveway_down_sel.g
fiveway_left_sel.g
fiveway_right_sel.g
fiveway_std.g
fiveway_up_sel.g
fm_add_audio_small.g
fm_add_audio_thb.g
fm_ani.g
fm_audio_detail_tab.g
fm_audio_folder_small.g
fm_audio_folder_thb.g
fm_audio_pause_small.g
fm_audio_pause_thb.g
fm_audio_play_small.g
fm_audio_play_thb.g
fm_audio_small.g
fm_audio_strm_bkmrk_small.g
fm_audio_strm_bkmrk_thb.g
fm_audio_thb.g
fm_bkmrk_folder_small.g
fm_bkmrk_folder_thb.g
fm_bkmrk_small.g
fm_bkmrk_thb.g
fm_dwnld_folder_small.g
fm_dwnld_folder_thb.g
fm_folder_carrier_thb.g
fm_folder_small.g
fm_folder_thb.g
fm_invis_link_small.g
fm_invis_link_thb.g
fm_java_midlet_small.g
fm_memory_card_small.g
fm_memory_card_thb.g
fm_my_doc_folder_small.g
fm_my_doc_folder_thb.g
fm_phone_mem_small.g
fm_pict_folder_small.g
fm_pict_folder_thb.g
fm_pic_small.g
fm_ringtone_folder_small.g
fm_ringtone_folder_thb.g
fm_small.g
fm_std.g
fm_vid_folder_small.g
fm_vid_folder_thb.g
fm_vid_small.g
fm_voice_record_folder_small.g
fm_voice_record_folder_thb.g
games_ani.g
games_std.g
gen_accelerator_0_small.g
gen_accelerator_1_small.g
gen_accelerator_2_small.g
gen_accelerator_3_small.g
gen_accelerator_4_small.g
gen_accelerator_5_small.g
gen_accelerator_6_small.g
gen_accelerator_7_small.g
gen_accelerator_8_small.g
gen_accelerator_9_small.g
gen_accelerator_blank_small.g
gen_back_to_arrw_small.g
gen_back_to_arrw_thb.g
gen_details_tab.g
griditem_bg_h.g
griditem_bg_hs.g
griditem_bottomleft_h.g
griditem_bottomleft_hs.g
griditem_bottomright_h.g
griditem_bottomright_hs.g
griditem_bottom_h.g
griditem_bottom_hs.g
griditem_left_h.g
griditem_left_hs.g
griditem_right_h.g
griditem_right_hs.g
griditem_topleft_h.g
griditem_topleft_hs.g
griditem_topright_h.g
griditem_topright_hs.g
griditem_top_h.g
griditem_top_hs.g
header_bg_std.g
help_ani.g
idle_controller_bg_h.g
idle_controller_bg_std.g
info_pop.g
in_progress_ani_pop.g
listbox01_bg_std.g
listitem_bg_h.g
listitem_bg_hs.g
matrixitem_bg_h.g
matrixitem_bg_std.g
media.g
media_controller_bg.g
media_controller_bg_std.g
media_finder_small.g
media_finder_std.g
mm_folder01_ani.g
mm_folder01_std.g
mm_folder02_ani.g
mm_folder02_std.g
mm_folder03_ani.g
mm_folder03_std.g
mm_folder04_ani.g
mm_folder04_std.g
mm_folder05_ani.g
mm_folder05_std.g
mm_folder06_ani.g
mm_folder06_std.g
mm_folder07_ani.g
mm_folder07_std.g
mm_folder08_ani.g
mm_folder08_std.g
mp_autorepeat_small.g
mp_enlarge_p_nav.g
mp_enlarge_unp_nav.g
mp_gen_audio_prvarea.g
mp_gen_radio_pvarea.g
mp_radio_ani.g
mp_radio_std.g
mp_shuffle_on_small.g
msg_ani.g
msg_create_msg_small.g
msg_create_postcard_small.g
msg_draft_folder_small.g
msg_email_small.g
msg_inbox_small.g
msg_msgemail_read_small.g
msg_msgemail_unread_small.g
msg_outbox_small.g
msg_pop.g
msg_sending_ani.g
msg_send_fail_small.g
msg_send_sucess_small.g
msg_std.g
msg_unsupport_type_thb.g
msg_voicemail_unread_small.g
multimedia_ani.g
multimedia_std.g
music_channel_cmcc_ani.g
navtab_tabarea_bg_std.g
navtab_tab_sel.g
navtab_tab_std.g
netwk_ani.g
new_email_hed2.g
new_message_cli6.g
new_message_hed2.g
new_message_idle6.g
notepad_ani.g
notification_cli5.g
notification_idle5.g
notipopup_bg_std.g
no_battery_pop.g
office_tools_std.g
ok_pop.g
optmenu_bg_std.g
optmenu_decrement_std.g
optmenu_increment_std.g
optmenu_item_bg_h.g
optmenu_item_bg_hs.g
pfile_ani.g
phone_setting_ani.g
popup_bg_std.g
popup_header_bg_std.g
popup_header_bottomleft_std.g
popup_header_bottomright_std.g
popup_header_bottom_std.g
popup_header_left_std.g
popup_header_right_std.g
popup_header_topleft_std.g
popup_header_topright_std.g
popup_header_top_std.g
progress_slider_filled_center_h.g
progress_slider_filled_center_hs.g
progress_slider_filled_center_std.g
progress_slider_filled_finish_h.g
progress_slider_filled_finish_hs.g
progress_slider_filled_finish_std.g
progress_slider_filled_start_h.g
progress_slider_filled_start_hs.g
progress_slider_filled_start_std.g
prog_slider_filled_center_h.g
prog_slider_filled_center_hs.g
prog_slider_filled_center_std.g
prog_slider_filled_finish_h.g
prog_slider_filled_finish_hs.g
prog_slider_filled_finish_std.g
prog_slider_filled_start_h.g
prog_slider_filled_start_hs.g
prog_slider_filled_start_std.g
recnt_call_ani.g
recnt_call_std.g
recnt_dial_call_chk_small.g
recnt_dial_call_small.g
recnt_missed_call_small.g
recnt_receive_call_chk_small.g
report_pop.g
scrollbar_field_thumb_center_std.g
scrollbar_field_thumb_finish_std.g
scrollbar_field_thumb_start_std.g
scrollbar_field_track_center_std.g
scrollbar_field_track_finish_std.g
scrollbar_field_track_start_std.g
scrollbar_input_thumb_center_std.g
scrollbar_input_thumb_finish_std.g
scrollbar_input_thumb_start_std.g
scrollbar_input_track_center_std.g
scrollbar_input_track_finish_std.g
scrollbar_input_track_start_std.g
scrollbar_thumb_center_std.g
scrollbar_thumb_finish_std.g
scrollbar_thumb_start_std.g
scrollbar_track_center_std.g
scrollbar_track_finish_std.g
scrollbar_track_start_std.g
security_ani.g
settings_ani.g
setting_bg_h.g
setting_bg_hs.g
setting_bottomleft_h.g
setting_bottomleft_hs.g
setting_bottomright_h.g
setting_bottomright_hs.g
setting_bottom_h.g
setting_bottom_hs.g
setting_left_h.g
setting_left_hs.g
setting_right_h.g
setting_right_hs.g
setting_topleft_h.g
setting_topleft_hs.g
setting_topright_h.g
setting_topright_hs.g
setting_top_h.g
setting_top_hs.g
signal_0_cli1.g
signal_0_hed1.g
signal_0_idle1.g
signal_0_roam_cli1.g
signal_0_roam_idle1.g
signal_1_cli1.g
signal_1_hed1.g
signal_1_idle1.g
signal_1_roam_cli1.g
signal_1_roam_idle1.g
signal_2_cli1.g
signal_2_hed1.g
signal_2_idle1.g
signal_2_roam_cli1.g
signal_2_roam_idle1.g
signal_3_cli1.g
signal_3_hed1.g
signal_3_idle1.g
signal_3_roam_cli1.g
signal_3_roam_idle1.g
signal_4_cli1.g
signal_4_hed1.g
signal_4_idle1.g
signal_4_roam_cli1.g
signal_4_roam_idle1.g
signal_5_cli1.g
signal_5_hed1.g
signal_5_idle1.g
signal_5_roam_cli1.g
signal_5_roam_idle1.g
signal_no_transmit_cli1.g
signal_no_transmit_hed1.g
signal_no_transmit_idle1.g
singlesel_mark_indicator_h.g
singlesel_mark_indicator_hs.g
singlesel_mark_indicator_ps.g
singlesel_mark_indicator_sel.g
singlesel_mark_indicator_std.g
softkey_lft_bg_sel.g
softkey_lft_bg_std.g
softkey_rgt_bg_sel.g
softkey_rgt_bg_std.g
task_list_ani.g
themes_ani.g
vid_camera_ani.g
voice_rec_ani.g
volume_pop.g
vr_cli6.g
vr_hed2.g
vr_idle6.g
vr_idle9.g
web_access_ani.g
web_access_std.g
yes_no_pop.g