This commit is contained in:
anonymous 2025-07-11 21:30:41 +02:00
commit b863647055
142 changed files with 17352 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,22 @@
;Render Xbox Logo
XSplitRender = true
;Render Xbox Text
TextRender = true
;Background Color
BackgroundColor = #7477FF
;Foreground Color (Text & Logo)
ForegroundColor = #FFFFFF
;Animation Times (Frames)
Stable = 60
BackgroundFadeIn = 30
BackgroundHold = 30
BackgroundFadeOut = 30
ForegroundFadeIn = 30
ForegroundHold = 30
ForegroundFadeOut = 30
BarnDoor = 20
XSplit = 20

Binary file not shown.

View file

@ -0,0 +1,24 @@
Based on the works of K Lange, Peter Gordon, and Chris Torres
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to
do so, subject to the following conditions:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimers.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimers in the documentation
and/or other materials provided with the distribution.
* Neither the name of CERBIOS, nor the names of its contributors
may be used to endorse or promote products derived from this Software
without specific prior written permission.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.

View file

@ -0,0 +1,50 @@
TTTTTTTTTTTTTTTTTTTTTTT HHHHHHHHH HHHHHHHHH DDDDDDDDDDDDD
T:::::::::::::::::::::T H:::::::H H:::::::H D::::::::::::DDD
T:::::::::::::::::::::T H:::::::H H:::::::H D:::::::::::::::DD
T:::::TT:::::::TT:::::T HH::::::H H::::::HH DDD:::::DDDDD:::::D
TTTTTT T:::::T TTTTTT H:::::H H:::::H D:::::D D:::::D
T:::::T H:::::H H:::::H D:::::D D:::::D
T:::::T H::::::HHHHH::::::H D:::::D D:::::D
T:::::T H:::::::::::::::::H D:::::D D:::::D
T:::::T H:::::::::::::::::H D:::::D D:::::D
T:::::T H::::::HHHHH::::::H D:::::D D:::::D
T:::::T H:::::H H:::::H D:::::D D:::::D
T:::::T H:::::H H:::::H D:::::D D:::::D
TT:::::::TT HH::::::H H::::::HH DDD:::::DDDDD:::::D
T:::::::::T ...... H:::::::H H:::::::H ...... D:::::::::::::::DD
T:::::::::T .::::. H:::::::H H:::::::H .::::. D::::::::::::DDD
TTTTTTTTTTT ...... HHHHHHHHH HHHHHHHHH ...... DDDDDDDDDDDDD
-----------
DESCRIPTION
-----------
Custom Boot animation for Cerbios V2.X based on the greatest internet meme NYAN CAT.
-----------------------------------------------------
Instructions
-----------------------------------------------------
Create a new folder called (Nyan Cat) in the root of your C:\Bootanims\
Copy default.xbe into Nyan Cat Folder
Update Cerbios.ini with new path name
BootAnimPath = \Device\Harddisk0\Partition2\BootAnims\Nyan Cat\default.xbe
-----------------------------------------------------
------
THANKS
------
Team Cerbios for the amazing work they have done so far with this amazing bios & breathing some new life into the scene.
Massive shout out to all groups that are still working with the OG XBOX & making some sweet stuff after all these years.
Source Code released & included for other teams to improve on & hopefully assist with creating new boot animations. We dont obfuscate or hide our code behind patch loaders or IPS.

View file

@ -0,0 +1,818 @@
/*
* Pop Tart Cat animation frames
*/
#ifndef ANIMATION_H
#define ANIMATION_H
const char frame0[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
".,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&'''++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++**''+'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'**'''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"++########++++++++''**''@$$$$$$-'*************',,,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,"
"####################''''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"##========########====''@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,"
"======================='@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,"
"==;;;;;;;;.=======;;;;'''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;'***''''''''''''''''''',,,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;'**'','*',,,,,'*','**',,,,,,,,,,,,,,,,,,,,,"
";;,,,,,.,,;;;.;;;;,,,'''',,'',,,,,,,'',,'',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame1[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&+++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++'+++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"++++++++++++++++++'*'++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"++########++++++++'*''''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################****'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"###################''**'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"##========########==='''@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
"======================='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
"==;;;;;;;;========;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**','*',,,,,,**','**',,,,,,,,,,,,,,,,,,,,"
";;,,,.,,,,;;;;;;;;,,,,''',,,'',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,..,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame2[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,..,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"##+++++++########++++++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"######################''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################'''''@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"==#######========#'****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"==================='''='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
";;=======;;;;;;;;======'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,"
";.;;;;;;;;;;;;;;;;;;;;;'*'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
".,.;;;;;;,,,,,,,,;;;;;;'**',**',,,,,,**','**',,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame3[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,"
">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"##+++++++########++++++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"#####################'''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"==#######========##****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"=================='*'=='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
";;=======;;;;;;;;=='==='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
",,;;;;;;;,,,,,,,,;;;;;'**','*',,,,,,'*','**',,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,'',,''',,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame4[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&+++++'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'''++'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,"
"++########+++++++'**''''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"#################'****''@$$$$$$-'*************',,,,,,,,,,,,,,,,,"
"##################''''*'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,"
"##========########==='''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"======================='@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,"
"==;;;;;;;;========;;;;''@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;''''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;'***'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,"
";;,,,,,,,,;;;;;;;;,,'**','**,,,,,,'**,'**',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,'',,''',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,..,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame5[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$''$$$@@','',,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$'**'-$$@''**',,,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&+++++'@$$$$$$$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"+++++++++++++++++++'+++'@$$$$$-$$'***''''****',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'*'++'@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"++########++++++++'*''''@$$$$$$$'*************',,,,,,,,,,,,,,,,,"
"###################****'@$$$$$$-'***.'****.'**',,,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"##========########==='''@$$$$$$$'*%%********%%',,,,,,,,,,,,,,,,,"
"======================='@@$$$-$$$'***''''''**',,,,,,,,,,,,,,,,,,"
"==;;;;;;;;========;;;;''@@@$$$$$$$'*********',,,,,,,,,,,,,,,,,,."
";;;;;;;;;;;;;;;;;;;;;'*''@@@@@@@@@@''''''''',,,,,,,,,,,,,,,,,,,."
";;;;;;;;;;;;;;;;;;;;'***''''''''''''''''*',,,,,,,,,,,,,,,,,,,,,,"
";;,,,,,,,,;;;;;;;;,,'**','**,,,,,,'**,'**',,,,,,,,,,,,,,,,,,..,."
",,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,."
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame6[] =
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,..,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>,,,,,,,>>>>>>>>,,,,,,,'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&'''&&'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'*''+'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'**'''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"##+++++++########++'**''@$$$$$$-'*************',,,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,"
"####################''''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"==#######========#####''@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,"
"======================='@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,"
";;=======;;;;;;;;====='''@@@@@@@@@'*********',,,,,,,,,,,.,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;'***''''''''''''''''''',,,,,,,,,,.,,,.,,,,,"
";;;;;;;;;;;;;;;;;;;;;'**'','*',,,,,'**,'**',,,,,,,,,,,,,,,,,,,,,"
",,;;;;;;;,,,,,,,,;;;;'''',,'',,,,,,,'',,'',,,,,,,,,,,.,,,,,.,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame7[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>,,,,,,,>>>>>>>>,,,,,,,'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&&&&&&'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++'+++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"++++++++++++++++++'*'++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"##+++++++########+'*''''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################****'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"###################''**'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"==#######========####'''@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
"======================='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
";;=======;;;;;;;;======''@@@@@@@@@@'*********',,,.,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**','*',,,,,,**','**',,,,,,,,,,,,,,,,,,,,"
",,;;;;;;;,,,,,,,,;;;;;''',,,'',,,,,,''',,''',,.,,,,.,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame8[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,..,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&+++++'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"++########++++++++#####'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"######################''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################'''''@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"##========########'****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"==================='''='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
"==;;;;;;;;========;;;;;'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;;'*'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
";;,,,,,,,,;;;;;;;;,,,,,'**',**',,,,,,**'.'**',,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,";
const char frame9[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,>>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
">>&&&&&&&&>>>>>>>>&&&&&'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,"
"&&++++++++&&&&&&&&+++++'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,"
"++########++++++++#####'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,"
"#####################'''@$$$$$$-$'*************',,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,"
"##========########=****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,"
"=================='*'=='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,"
"==;;;;;;;;========;';;;'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,"
";;,,,,,,,,;;;;;;;;,,,,'**','*',,..,.**','**',,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,''',,,'',,,,.,''',,''',,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,";
const char frame10[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,"
"+++++++++++++++++++++++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'''++'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,"
"##+++++++########'**''''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"#################'****''@$$$$$$-'*************',,,,,,,,,,,,,,,,,"
"##################''''*'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,"
"==#######========####'''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"======================='@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,"
";;=======;;;;;;;;=====''@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;;''''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;'***'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,"
",,;;;;;;;,,,,,,,,;;;'**'.'**..,,,,'**''**',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,''',''',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
".,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char frame11[] =
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,"
">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,"
"&&>>>>>>>&&&&&&&&>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$''$$$@@','',,,,,,,,,,,,,,,,,,,"
"&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$'**'-$$@''**',,,,,,,,,,,,,,,,,,"
"++&&&&&&&++++++++&&&&&&'@$$$$$$$$'***$$$@'***',,,,,,,,,,,,,,,,,,"
"+++++++++++++++++++'+++'@$$$$$-$$'***''''****',,,,,,,,,,,,,,,,,,"
"++++++++++++++++++'*'++'@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,"
"##+++++++########+'*''''@$$$$$$$'*************',,,,,,,,,,,,,,,,,"
"###################****'@$$$$$$-'***.'****.'**',,,,,,,,,,,,,,,,,"
"###################''**'@$-$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,"
"==#######========####'''@$$$$$$$'*%%********%%',,,,,,,,,,,,,,,,,"
"======================='@@$$$-$$$'***''''''**',,,,,,,,,,,,,,,,,,"
";;=======;;;;;;;;=.===''@@@$$$$$$$'*********',,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;.'*''@@@@@@@@@@''''''''',,,,,,,,,,,,,,,,,,,,"
";;;;;;;;;;;;;;;;;;;;'***''''''''''''''''*',,,,,,,,,,,,,,,,,,,,,,"
",,;;;;;;;,,,,,,,.;;;'**','**,,,,,,'**''**',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,";
const char * frames[] = {
frame0,
frame1,
frame2,
frame3,
frame4,
frame5,
frame6,
frame7,
frame8,
frame9,
frame10,
frame11,
NULL
};
#define FRAME_WIDTH 64
#define FRAME_HEIGHT 64
#endif

View file

@ -0,0 +1,380 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="nyancat"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Xbox"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Xbox"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="..\Common\include"
PreprocessorDefinitions="_USE_XGMATH,_XBOX,XBOX_SAMPLE,_DEBUG,"
RuntimeLibrary="5"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="xtl.h"
PrecompiledHeaderFile="$(IntDir)/default.pch"
AssemblerListingLocation="$(IntDir)/"
ObjectFile="$(IntDir)/"
ProgramDataBaseFileName="$(IntDir)/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="4"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="xbdm.lib xapilibd.lib xkbdd.lib d3d8d.lib d3dx8d.lib xgraphicsd.lib dsoundd.lib xboxkrnl.lib"
OutputFile="$(OutDir)/default.exe"
LinkIncremental="2"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/default.pdb"
GenerateMapFile="TRUE"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="XboxDeploymentTool"
ExcludedFromBuild="TRUE"
RemotePath="xe:\Samples\$(ProjectName)\$(TargetName).xbe"
AdditionalFiles=""/>
<Tool
Name="XboxImageTool"
StackSize="0x10000"
IncludeDebugInfo="TRUE"
SuppressStartupBanner="TRUE"
DontMountUD="TRUE"
NoLibWarn="TRUE"
TitleID="0x53520102"
TitleName="NYANCAT Boot Animation"
XBEVersion="4096"/>
</Configuration>
<Configuration
Name="Release|Xbox"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="..\Common\include"
PreprocessorDefinitions="_USE_XGMATH,_XBOX,XBOX_SAMPLE,NDEBUG,"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="xtl.h"
PrecompiledHeaderFile="$(IntDir)/default.pch"
AssemblerListingLocation="$(IntDir)/"
ObjectFile="$(IntDir)/"
ProgramDataBaseFileName="$(IntDir)/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="xapilib.lib xkbd.lib d3d8.lib d3dx8.lib xgraphics.lib dsound.lib xboxkrnl.lib"
OutputFile="$(OutDir)/default.exe"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/default.pdb"
GenerateMapFile="TRUE"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="XboxDeploymentTool"
ExcludedFromBuild="TRUE"
RemotePath="xe:\Samples\$(ProjectName)\$(TargetName).xbe"
AdditionalFiles=""/>
<Tool
Name="XboxImageTool"
StackSize="0x10000"
IncludeDebugInfo="TRUE"
SuppressStartupBanner="TRUE"
DontMountUD="TRUE"
TitleID="0x53520102"
TitleName="NYANCAT Boot Animation"
XBEVersion="4096"/>
</Configuration>
<Configuration
Name="Release_LTCG|Xbox"
OutputDirectory=".\Release_LTCG"
IntermediateDirectory=".\Release_LTCG"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE"
WholeProgramOptimization="TRUE">
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="..\Common\include"
PreprocessorDefinitions="_USE_XGMATH,_XBOX,XBOX_SAMPLE,NDEBUG,LTCG,"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="0"
PrecompiledHeaderThrough="xtl.h"
PrecompiledHeaderFile="$(IntDir)/default.pch"
AssemblerListingLocation="$(IntDir)/"
ObjectFile="$(IntDir)/"
ProgramDataBaseFileName="$(IntDir)/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="xapilib.lib d3d8ltcg.lib d3dx8.lib xgraphicsltcg.lib dsound.lib xboxkrnl.lib "
OutputFile="$(OutDir)/default.exe"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/default.pdb"
GenerateMapFile="TRUE"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="XboxDeploymentTool"
ExcludedFromBuild="TRUE"
RemotePath="xe:\Samples\$(ProjectName)\$(TargetName).xbe"
AdditionalFiles=""/>
<Tool
Name="XboxImageTool"
StackSize="0x10000"
IncludeDebugInfo="TRUE"
SuppressStartupBanner="TRUE"
DontMountUD="TRUE"
TitleID="0x53520102"
TitleName="NYANCAT Boot Animation"
XBEVersion="4096"/>
</Configuration>
<Configuration
Name="Profile|Xbox"
OutputDirectory=".\Profile"
IntermediateDirectory=".\Profile"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Oy-"
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="..\Common\include"
PreprocessorDefinitions="_USE_XGMATH,_XBOX,XBOX_SAMPLE,NDEBUG,PROFILE,"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="xtl.h"
PrecompiledHeaderFile="$(IntDir)/default.pch"
AssemblerListingLocation="$(IntDir)/"
ObjectFile="$(IntDir)/"
ProgramDataBaseFileName="$(IntDir)/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="xperf.lib xbdm.lib xapilib.lib d3d8i.lib d3dx8.lib xgraphics.lib dsound.lib xboxkrnl.lib "
OutputFile="$(OutDir)/default.exe"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/default.pdb"
GenerateMapFile="TRUE"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="XboxDeploymentTool"
ExcludedFromBuild="TRUE"
RemotePath="xe:\Samples\$(ProjectName)\$(TargetName).xbe"
AdditionalFiles=""/>
<Tool
Name="XboxImageTool"
StackSize="0x10000"
IncludeDebugInfo="TRUE"
SuppressStartupBanner="TRUE"
DontMountUD="TRUE"
NoLibWarn="TRUE"
TitleID="0x53520102"
TitleName="NYANCAT Boot Animation"
XBEVersion="4096"/>
</Configuration>
<Configuration
Name="Profile_FastCap|Xbox"
OutputDirectory=".\Profile_FastCap"
IntermediateDirectory=".\Profile_FastCap"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Oy-"
InlineFunctionExpansion="1"
OptimizeForProcessor="2"
AdditionalIncludeDirectories="..\Common\include"
PreprocessorDefinitions="_USE_XGMATH,_XBOX,XBOX_SAMPLE,NDEBUG,PROFILE,FASTCAP,"
StringPooling="TRUE"
RuntimeLibrary="4"
EnableFunctionLevelLinking="TRUE"
EnableEnhancedInstructionSet="1"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="xtl.h"
PrecompiledHeaderFile="$(IntDir)/default.pch"
AssemblerListingLocation="$(IntDir)/"
ObjectFile="$(IntDir)/"
ProgramDataBaseFileName="$(IntDir)/"
WarningLevel="3"
SuppressStartupBanner="TRUE"
DebugInformationFormat="3"
CompileAs="0"
FastCAP="TRUE"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386 /FIXED:NO"
AdditionalDependencies="xperf.lib xbdm.lib xapilib.lib d3d8i.lib d3dx8.lib xgraphics.lib dsound.lib xboxkrnl.lib "
OutputFile="$(OutDir)/default.exe"
SuppressStartupBanner="TRUE"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/default.pdb"
GenerateMapFile="TRUE"
OptimizeReferences="2"
EnableCOMDATFolding="2"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="XboxDeploymentTool"
ExcludedFromBuild="TRUE"
RemotePath="xe:\Samples\$(ProjectName)\$(TargetName).xbe"
AdditionalFiles=""/>
<Tool
Name="XboxImageTool"
StackSize="0x10000"
IncludeDebugInfo="TRUE"
SuppressStartupBanner="TRUE"
DontMountUD="TRUE"
NoLibWarn="TRUE"
TitleID="0x53520102"
TitleName="NYANCAT Boot Animation"
XBEVersion="4096"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
<File
RelativePath=".\hvl_replay.c">
</File>
<File
RelativePath=".\main.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
<File
RelativePath=".\animation.h">
</File>
<File
RelativePath=".\dsstdfx_bin.h">
</File>
<File
RelativePath=".\externals.h">
</File>
<File
RelativePath=".\hvl_replay.h">
</File>
<File
RelativePath=".\nyansong.h">
</File>
<File
RelativePath=".\utility.h">
</File>
<File
RelativePath=".\winioctl.h">
</File>
</Filter>
<Filter
Name="Common Files"
Filter="">
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc">
</Filter>
</Filter>
<Filter
Name="Resources"
Filter="*.rdf">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,230 @@
typedef char int8;
typedef unsigned char uint8;
typedef short int16;
typedef unsigned short uint16;
typedef int int32;
typedef unsigned int uint32;
typedef double float64;
typedef char TEXT;
typedef int BOOL;
#define TRUE 1
#define FALSE 0
// Woohoo!
#define MAX_CHANNELS 16
#define Period2Freq(period) ((3546897.f * 65536.f) / (period))
struct hvl_envelope
{
int16 aFrames, aVolume;
int16 dFrames, dVolume;
int16 sFrames;
int16 rFrames, rVolume;
int16 pad;
};
struct hvl_plsentry
{
uint8 ple_Note;
uint8 ple_Waveform;
int16 ple_Fixed;
int8 ple_FX[2];
int8 ple_FXParam[2];
};
struct hvl_plist
{
int16 pls_Speed;
int16 pls_Length;
struct hvl_plsentry *pls_Entries;
};
struct hvl_instrument
{
TEXT ins_Name[128];
uint8 ins_Volume;
uint8 ins_WaveLength;
uint8 ins_FilterLowerLimit;
uint8 ins_FilterUpperLimit;
uint8 ins_FilterSpeed;
uint8 ins_SquareLowerLimit;
uint8 ins_SquareUpperLimit;
uint8 ins_SquareSpeed;
uint8 ins_VibratoDelay;
uint8 ins_VibratoSpeed;
uint8 ins_VibratoDepth;
uint8 ins_HardCutRelease;
uint8 ins_HardCutReleaseFrames;
struct hvl_envelope ins_Envelope;
struct hvl_plist ins_PList;
};
struct hvl_position
{
uint8 pos_Track[MAX_CHANNELS];
int8 pos_Transpose[MAX_CHANNELS];
};
struct hvl_step
{
uint8 stp_Note;
uint8 stp_Instrument;
uint8 stp_FX;
uint8 stp_FXParam;
uint8 stp_FXb;
uint8 stp_FXbParam;
};
struct hvl_voice
{
int16 vc_Track;
int16 vc_NextTrack;
int16 vc_Transpose;
int16 vc_NextTranspose;
int16 vc_OverrideTranspose; // 1.5
int32 vc_ADSRVolume;
struct hvl_envelope vc_ADSR;
struct hvl_instrument *vc_Instrument;
uint32 vc_SamplePos;
uint32 vc_Delta;
uint16 vc_InstrPeriod;
uint16 vc_TrackPeriod;
uint16 vc_VibratoPeriod;
uint16 vc_WaveLength;
int16 vc_NoteMaxVolume;
uint16 vc_PerfSubVolume;
uint8 vc_NewWaveform;
uint8 vc_Waveform;
uint8 vc_PlantPeriod;
uint8 vc_VoiceVolume;
uint8 vc_PlantSquare;
uint8 vc_IgnoreSquare;
uint8 vc_FixedNote;
int16 vc_VolumeSlideUp;
int16 vc_VolumeSlideDown;
int16 vc_HardCut;
uint8 vc_HardCutRelease;
int16 vc_HardCutReleaseF;
uint8 vc_PeriodSlideOn;
int16 vc_PeriodSlideSpeed;
int16 vc_PeriodSlidePeriod;
int16 vc_PeriodSlideLimit;
int16 vc_PeriodSlideWithLimit;
int16 vc_PeriodPerfSlideSpeed;
int16 vc_PeriodPerfSlidePeriod;
uint8 vc_PeriodPerfSlideOn;
int16 vc_VibratoDelay;
int16 vc_VibratoSpeed;
int16 vc_VibratoCurrent;
int16 vc_VibratoDepth;
int16 vc_SquareOn;
int16 vc_SquareInit;
int16 vc_SquareWait;
int16 vc_SquareLowerLimit;
int16 vc_SquareUpperLimit;
int16 vc_SquarePos;
int16 vc_SquareSign;
int16 vc_SquareSlidingIn;
int16 vc_SquareReverse;
uint8 vc_FilterOn;
uint8 vc_FilterInit;
int16 vc_FilterWait;
int16 vc_FilterSpeed;
int16 vc_FilterUpperLimit;
int16 vc_FilterLowerLimit;
int16 vc_FilterPos;
int16 vc_FilterSign;
int16 vc_FilterSlidingIn;
int16 vc_IgnoreFilter;
int16 vc_PerfCurrent;
int16 vc_PerfSpeed;
int16 vc_PerfWait;
struct hvl_plist *vc_PerfList;
int8 *vc_AudioPointer;
int8 *vc_AudioSource;
uint8 vc_NoteDelayOn;
uint8 vc_NoteCutOn;
int16 vc_NoteDelayWait;
int16 vc_NoteCutWait;
int16 vc_AudioPeriod;
int16 vc_AudioVolume;
int32 vc_WNRandom;
int8 *vc_MixSource;
int8 vc_SquareTempBuffer[0x80];
int8 vc_VoiceBuffer[0x282*4];
uint8 vc_VoiceNum;
uint8 vc_TrackMasterVolume;
uint8 vc_TrackOn;
int16 vc_VoicePeriod;
uint32 vc_Pan;
uint32 vc_SetPan; // New for 1.4
uint32 vc_PanMultLeft;
uint32 vc_PanMultRight;
uint32 vc_RingSamplePos;
uint32 vc_RingDelta;
int8 *vc_RingMixSource;
uint8 vc_RingPlantPeriod;
int16 vc_RingInstrPeriod;
int16 vc_RingBasePeriod;
int16 vc_RingAudioPeriod;
int8 *vc_RingAudioSource;
uint8 vc_RingNewWaveform;
uint8 vc_RingWaveform;
uint8 vc_RingFixedPeriod;
int8 vc_RingVoiceBuffer[0x282*4];
};
struct hvl_tune
{
TEXT ht_Name[128];
uint16 ht_SongNum;
uint32 ht_Frequency;
float64 ht_FreqF;
int8 *ht_WaveformTab[MAX_CHANNELS];
uint16 ht_Restart;
uint16 ht_PositionNr;
uint8 ht_SpeedMultiplier;
uint8 ht_TrackLength;
uint8 ht_TrackNr;
uint8 ht_InstrumentNr;
uint8 ht_SubsongNr;
uint16 ht_PosJump;
uint32 ht_PlayingTime;
int16 ht_Tempo;
int16 ht_PosNr;
int16 ht_StepWaitFrames;
int16 ht_NoteNr;
uint16 ht_PosJumpNote;
uint8 ht_GetNewPosition;
uint8 ht_PatternBreak;
uint8 ht_SongEndReached;
uint8 ht_Stereo;
uint16 *ht_Subsongs;
uint16 ht_Channels;
struct hvl_position *ht_Positions;
struct hvl_step ht_Tracks[256][64];
struct hvl_instrument *ht_Instruments;
struct hvl_voice ht_Voices[MAX_CHANNELS];
int32 ht_defstereo;
int32 ht_defpanleft;
int32 ht_defpanright;
int32 ht_mixgain;
uint8 ht_Version;
};
#ifdef __cplusplus
extern "C" {
#endif
void hvl_DecodeFrame( struct hvl_tune *ht, int8 *buf1, int8 *buf2, int32 bufmod );
void hvl_InitReplayer( void );
BOOL hvl_InitSubsong( struct hvl_tune *ht, uint32 nr );
struct hvl_tune *hvl_LoadTune( uint8 *buf, uint32 buflen, uint32 freq, uint32 defstereo );
void hvl_FreeTune( struct hvl_tune *ht );
#ifdef __cplusplus
}
#endif

View file

@ -0,0 +1,477 @@
#include <xtl.h>
#include <xgraphics.h>
#include <dsound.h>
#include <tchar.h>
#include <stdio.h>
#include "externals.h"
#include "utility.h"
#include "animation.h"
#include "hvl_replay.h"
#include "nyansong.h"
#include "dsstdfx.h"
#include "dsstdfx_bin.h"
//-----------------------------------------------------------------------------
// Global variables
//-----------------------------------------------------------------------------
float bob, weave;
unsigned short colors[256] = { 0 };
ULONG g_Frame = 0;
#define FINALFRAME 1150
BOOL g_ExitNow = FALSE;
BOOL g_SoundEnabled = FALSE;
BOOL g_PlayOnce = TRUE;
struct hvl_tune *ht = NULL;
LPDIRECTSOUND8 g_pDSound;
LPDIRECTSOUNDBUFFER8 g_pDSBuffer;
WAVEFORMATEX g_wfx;
DSBUFFERDESC g_dsbd;
HANDLE hFillAudioBufferEvent;
#define AUDIOFRAMESIZE ((44100*2*2)/50)
#define AUDIOFRAMES 10
#define AUDIOBUFFERSIZE (AUDIOFRAMESIZE*AUDIOFRAMES)
DSBPOSITIONNOTIFY g_dspn[AUDIOFRAMES];
int nextaudiobuf = 0;
ULONG g_ButtonsLast = 0;
ULONG g_ButtonsHeld = 0;
ULONG g_ButtonsPressed = 0;
ULONG g_ButtonsReleased = 0;
HANDLE g_Controller[4];
LPDIRECT3D8 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; // Our rendering device
D3DMATERIAL8 g_mtrl;
D3DXMATRIX g_matView;
D3DXMATRIX g_matProj;
D3DXMATRIX g_matWorld;
//-----------------------------------------------------------------------------
// Name: XBUtil_DebugPrint()
// Desc: For printing to the debugger with formatting.
//-----------------------------------------------------------------------------
VOID XBUtil_DebugPrint( const CHAR* buf, ... )
{
CHAR strBuffer[1024];
va_list arglist;
va_start( arglist, buf );
_vsnprintf( strBuffer, sizeof(strBuffer), buf, arglist );
va_end( arglist );
strBuffer[sizeof(strBuffer)-1] = '\0';
OutputDebugStringA( strBuffer );
}
VOID XBUtil_Reboot(VOID)
{
HalReturnToFirmware(2);
}
typedef struct {
DWORD dwWidth;
DWORD dwHeight;
BOOL fProgressive;
BOOL fWideScreen;
DWORD dwFreq;
} DISPLAY_MODE;
// Display modes in order of our preference
DISPLAY_MODE g_aDisplayModes[] =
{
// Width Height Progressive Widescreen
// HDTV Progressive Modes
{ 1280, 720, TRUE, TRUE, 60 }, // 1280x720 progressive 16x9
// EDTV Progressive Modes
{ 720, 480, TRUE, TRUE, 60 }, // 720x480 progressive 16x9
{ 640, 480, TRUE, TRUE, 60 }, // 640x480 progressive 16x9
{ 720, 480, TRUE, FALSE, 60 }, // 720x480 progressive 4x3
{ 640, 480, TRUE, FALSE, 60 }, // 640x480 progressive 4x3
// HDTV Interlaced Modes
// { 1920, 1080, FALSE, TRUE, 60 }, // 1920x1080 interlaced 16x9
// SDTV PAL-50 Interlaced Modes
{ 720, 480, FALSE, TRUE, 50 }, // 720x480 interlaced 16x9 50Hz
{ 640, 480, FALSE, TRUE, 50 }, // 640x480 interlaced 16x9 50Hz
{ 720, 480, FALSE, FALSE, 50 }, // 720x480 interlaced 4x3 50Hz
{ 640, 480, FALSE, FALSE, 50 }, // 640x480 interlaced 4x3 50Hz
// SDTV NTSC / PAL-60 Interlaced Modes
{ 720, 480, FALSE, TRUE, 60 }, // 720x480 interlaced 16x9
{ 640, 480, FALSE, TRUE, 60 }, // 640x480 interlaced 16x9
{ 720, 480, FALSE, FALSE, 60 }, // 720x480 interlaced 4x3
{ 640, 480, FALSE, FALSE, 60 }, // 640x480 interlaced 4x3
};
#define NUM_MODES ( sizeof( g_aDisplayModes ) / sizeof( g_aDisplayModes[0] ) )
///////////////////////////////////////////////////////////////////////////////
BOOL SupportsMode( DISPLAY_MODE mode, DWORD dwVideoStandard, DWORD dwVideoFlags )
{
if( mode.dwFreq == 60 && !(dwVideoFlags & XC_VIDEO_FLAGS_PAL_60Hz) && (dwVideoStandard == XC_VIDEO_STANDARD_PAL_I))
return FALSE;
if( mode.dwFreq == 50 && (dwVideoStandard != XC_VIDEO_STANDARD_PAL_I))
return FALSE;
// Need to check for widescreen on 480 modes only -
// 720p and 1080i are by definition widescreen.
if( mode.dwHeight == 480 && mode.fWideScreen && !(dwVideoFlags & XC_VIDEO_FLAGS_WIDESCREEN ) )
return FALSE;
// Explicit check for 480p
if( mode.dwHeight == 480 && mode.fProgressive && !(dwVideoFlags & XC_VIDEO_FLAGS_HDTV_480p) )
return FALSE;
// Explicit check for 720p (only 720 mode)
if( mode.dwHeight == 720 && !(dwVideoFlags & XC_VIDEO_FLAGS_HDTV_720p) )
return FALSE;
// Explicit check for 1080i (only 1080 mode)
if( mode.dwHeight == 1080 && !(dwVideoFlags & XC_VIDEO_FLAGS_HDTV_1080i) )
return FALSE;
return TRUE;
}
//-----------------------------------------------------------------------------
// Name: SetupMatrices()
// Desc: Creates the world, view, and projection transform matrices.
//-----------------------------------------------------------------------------
VOID SetupMatrices(BOOL bWidescreen)
{
float scale = 0.6f;
// Set up our view matrix.
const D3DXVECTOR3 vEyePos( 0.0f, 0.0f, 10.0f );
const D3DXVECTOR3 vLookAt( 0.0f, 0.0f, 0.0f );
const D3DXVECTOR3 vUp ( 0.0f, 1.0f, 0.0f );
D3DXMatrixLookAtLH( &g_matView, &vEyePos, &vLookAt, &vUp );
// For the projection matrix.
D3DXMatrixOrthoLH( &g_matProj, bWidescreen ? (106.0f*scale) : (80.0f*scale), (48.0f*scale), 1.0f, 100.0f );
D3DXMatrixIdentity( &g_matWorld );
}
//-----------------------------------------------------------------------------
// Name: InitD3D()
// Desc: Initializes Direct3D
//-----------------------------------------------------------------------------
HRESULT InitD3D()
{
DWORD m_dwVideoFlags, m_dwVideoStandard;
DWORD m_dwCurrentMode = 0;
// Create the D3D object.
if( NULL == ( g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) )
return E_FAIL;
// Find the best supported video mode.
m_dwVideoStandard = XGetVideoStandard();
m_dwVideoFlags = XGetVideoFlags();
for(m_dwCurrentMode = 0; m_dwCurrentMode < NUM_MODES-1; m_dwCurrentMode++)
{
if(SupportsMode( g_aDisplayModes[ m_dwCurrentMode ], m_dwVideoStandard, m_dwVideoFlags )) break;
}
// Set up the structure used to create the D3DDevice.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferWidth = g_aDisplayModes[ m_dwCurrentMode ].dwWidth;
d3dpp.BackBufferHeight = g_aDisplayModes[ m_dwCurrentMode ].dwHeight;
d3dpp.Flags = g_aDisplayModes[ m_dwCurrentMode ].fProgressive ? D3DPRESENTFLAG_PROGRESSIVE : D3DPRESENTFLAG_INTERLACED;
d3dpp.Flags |= g_aDisplayModes[ m_dwCurrentMode ].fWideScreen ? D3DPRESENTFLAG_WIDESCREEN : 0;
d3dpp.FullScreen_RefreshRateInHz = g_aDisplayModes[ m_dwCurrentMode ].dwFreq;
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount = 1;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES_SUPERSAMPLE_GAUSSIAN;
// Create the Direct3D device.
if( FAILED( g_pD3D->CreateDevice( 0, D3DDEVTYPE_HAL, NULL,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
return E_FAIL;
SetupMatrices(g_aDisplayModes[ m_dwCurrentMode ].fWideScreen);
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
VOID Render()
{
int x, y;
float vx, vy;
unsigned int /*fg,*/ bg, r, g, b, fade;
// Clear the backbuffer and the zbuffer
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
DirectSoundDoWork();
g_pd3dDevice->SetTransform( D3DTS_WORLD, &g_matWorld );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &g_matView );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &g_matProj );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
g_pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, FALSE );
g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
g_pd3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 );
g_pd3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DISABLE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
g_pd3dDevice->SetVertexShader( D3DFVF_XYZ );
if(g_Frame < 50) {
fade = 0;
} else if(g_Frame < 80) {
fade = g_Frame - 50;
} else if(g_Frame > (FINALFRAME - 30)) {
fade = FINALFRAME - g_Frame;
} else {
fade = 30;
}
for(y = 0; y < FRAME_HEIGHT; y++ ) {
vy = (FRAME_HEIGHT * 0.5f) - y + bob;
for(x = 0; x < FRAME_WIDTH; x++ ) {
vx = (FRAME_WIDTH * 0.5f) - x + weave;
bg = colors[frames[((g_Frame/4)%12)][(y*FRAME_WIDTH)+x]];
if(bg != 0x000) {
r = (bg & 0xF00) >> 8;
g = (bg & 0x0F0) >> 4;
b = (bg & 0x00F) >> 0;
g_mtrl.Ambient.r = (r * fade) / (15.0f * 30.0f);
g_mtrl.Ambient.g = (g * fade) / (15.0f * 30.0f);
g_mtrl.Ambient.b = (b * fade) / (15.0f * 30.0f);
g_pd3dDevice->SetMaterial( &g_mtrl );
g_pd3dDevice->Begin( D3DPT_QUADLIST );
g_pd3dDevice->SetVertexData4f( D3DVSDE_VERTEX, vx-1.0f, vy-1.0f, 0.0f, 1.0f );
g_pd3dDevice->SetVertexData4f( D3DVSDE_VERTEX, vx+0.0f, vy-1.0f, 0.0f, 1.0f );
g_pd3dDevice->SetVertexData4f( D3DVSDE_VERTEX, vx+0.0f, vy+0.0f, 0.0f, 1.0f );
g_pd3dDevice->SetVertexData4f( D3DVSDE_VERTEX, vx-1.0f, vy+0.0f, 0.0f, 1.0f );
g_pd3dDevice->End();
}
}
}
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
VOID XInputGetStateAll()
{
XINPUT_STATE ControllerState[4];
int i, j, c = -1;
ULONG ButtonsCurrent = 0;
for (i = 0; i < 4; i++)
{
if (g_Controller[i])
{
XInputGetState(g_Controller[i], &ControllerState[i]);
ButtonsCurrent |= (ControllerState[i].Gamepad.wButtons) & 0xff;
#if 0
if (ControllerState[i].Gamepad.sThumbLY < -28672)
ButtonsCurrent |= XINPUT_GAMEPAD_DPAD_UP;
if (ControllerState[i].Gamepad.sThumbLY > 28671)
ButtonsCurrent |= XINPUT_GAMEPAD_DPAD_DOWN;
if (ControllerState[i].Gamepad.sThumbLX < -28672)
ButtonsCurrent |= XINPUT_GAMEPAD_DPAD_LEFT;
if (ControllerState[i].Gamepad.sThumbLX > 28671)
ButtonsCurrent |= XINPUT_GAMEPAD_DPAD_RIGHT;
#endif
for (j = 0; j < 8; j++)
{
if (ControllerState[i].Gamepad.bAnalogButtons[j] > 0x7f)
ButtonsCurrent |= (1 << (j + 8));
}
}
}
g_ButtonsHeld = ButtonsCurrent & g_ButtonsLast;
g_ButtonsReleased = g_ButtonsLast & ~ButtonsCurrent;
g_ButtonsPressed = ButtonsCurrent & ~g_ButtonsLast;
g_ButtonsLast = ButtonsCurrent;
}
VOID ParseInput()
{
XInputGetStateAll();
g_Frame++;
bob = (sin(g_Frame / 30.0f) * 0.5f);
weave = (cos(g_Frame / 30.0f) * 0.5f);
if((g_Frame < (FINALFRAME - 60)) && ((g_ButtonsLast & BUTTONS_BACK) || (!ht))) {
g_Frame = (FINALFRAME - 60);
}
if(g_Frame >= FINALFRAME) {
g_ExitNow = TRUE;
}
}
VOID HivelyCallback()
{
LPVOID audiobuffer;
DWORD audiobytes;
if( FAILED( g_pDSBuffer->Lock( (nextaudiobuf * AUDIOFRAMESIZE), AUDIOFRAMESIZE, &audiobuffer, &audiobytes, NULL, NULL, 0 ) ) ) {
g_pDSBuffer->Stop();
return;
}
if(ht && ht->ht_SongEndReached && g_PlayOnce) {
ht = NULL;
}
if(!ht) {
ZeroMemory( audiobuffer, AUDIOFRAMESIZE );
} else {
hvl_DecodeFrame( ht, ((char*)audiobuffer), ((char*)audiobuffer)+2, 4 );
}
nextaudiobuf = (nextaudiobuf+1)%AUDIOFRAMES;
g_pDSBuffer->Unlock( audiobuffer, audiobytes, NULL, NULL );
}
//-----------------------------------------------------------------------------
// Name: main()
// Desc: Entry point to the program.
//-----------------------------------------------------------------------------
VOID __cdecl main()
{
// Initialize Direct3D
if( FAILED( InitD3D() ) )
return;
Render();
colors[','] = 0x005; /* Blue background */
colors['.'] = 0xfff; /* White stars */
colors['\''] = 0x000; /* Black border */
colors['@'] = 0xffd; /* Tan poptart */
colors['$'] = 0xd8a; /* Pink poptart */
colors['-'] = 0xd08; /* Red poptart */
colors['>'] = 0xf00; /* Red rainbow */
colors['&'] = 0xfa0; /* Orange rainbow */
colors['+'] = 0xff0; /* Yellow Rainbow */
colors['#'] = 0x8f0; /* Green rainbow */
colors['='] = 0x08f; /* Light blue rainbow */
colors[';'] = 0x00d; /* Dark blue rainbow */
colors['*'] = 0x555; /* Gray cat face */
colors['%'] = 0xd8a; /* Pink cheeks */
XDEVICE_PREALLOC_TYPE deviceTypes[] =
{
{XDEVICE_TYPE_GAMEPAD, 4},
};
XInitDevices( sizeof(deviceTypes) / sizeof(XDEVICE_PREALLOC_TYPE), deviceTypes );
Sleep(2000);
g_Controller[0] = XInputOpen( XDEVICE_TYPE_GAMEPAD, XDEVICE_PORT0, XDEVICE_NO_SLOT, 0);
g_Controller[1] = XInputOpen( XDEVICE_TYPE_GAMEPAD, XDEVICE_PORT1, XDEVICE_NO_SLOT, 0);
g_Controller[2] = XInputOpen( XDEVICE_TYPE_GAMEPAD, XDEVICE_PORT2, XDEVICE_NO_SLOT, 0);
g_Controller[3] = XInputOpen( XDEVICE_TYPE_GAMEPAD, XDEVICE_PORT3, XDEVICE_NO_SLOT, 0);
if( FAILED( DirectSoundCreate( NULL, &g_pDSound, NULL ) ) ) {
g_SoundEnabled = FALSE;
} else {
g_SoundEnabled = TRUE;
DSEFFECTIMAGELOC EffectLoc;
EffectLoc.dwI3DL2ReverbIndex = GraphI3DL2_I3DL2Reverb;
EffectLoc.dwCrosstalkIndex = GraphXTalk_XTalk;
g_pDSound->DownloadEffectsImage( dsstdfx_bin, sizeof(dsstdfx_bin), &EffectLoc, NULL );
XAudioCreatePcmFormat( 2, 44100, 16, &g_wfx );
ZeroMemory( &g_dsbd, sizeof(DSBUFFERDESC) );
g_dsbd.dwSize = sizeof(DSBUFFERDESC);
g_dsbd.dwBufferBytes = AUDIOBUFFERSIZE;
g_dsbd.lpwfxFormat = &g_wfx;
if( FAILED( g_pDSound->CreateSoundBuffer( &g_dsbd, &g_pDSBuffer, NULL ) ) ) {
g_SoundEnabled = FALSE;
} else {
hFillAudioBufferEvent = CreateEvent( NULL, FALSE, FALSE, NULL );
hvl_InitReplayer();
ht = hvl_LoadTune( nyansong, sizeof(nyansong), 44100, 0 );
if(!ht)
g_SoundEnabled = FALSE;
else {
int i;
for( i = 0; i < AUDIOFRAMES; i++) {
g_dspn[i].dwOffset = i * AUDIOFRAMESIZE;
g_dspn[i].hEventNotify = hFillAudioBufferEvent;
}
for( i = 0; i < AUDIOFRAMES/4; i++) {
HivelyCallback();
}
g_pDSBuffer->SetNotificationPositions( AUDIOFRAMES, g_dspn );
}
}
}
// Enter render loop
while(!g_ExitNow)
{
while(g_SoundEnabled && (WaitForSingleObject( hFillAudioBufferEvent, 0 ) == WAIT_OBJECT_0)) {
HivelyCallback();
}
if(g_SoundEnabled) {
if(g_Frame == 51)
g_pDSBuffer->Play(0, 0, DSBPLAY_LOOPING);
if((g_Frame > 50) && (g_Frame < 75))
g_pDSBuffer->SetVolume( DSBVOLUME_MIN + (((DSBVOLUME_MAX - DSBVOLUME_MIN) / 26) * (g_Frame-50)) );
if(g_Frame > (FINALFRAME - 25))
g_pDSBuffer->SetVolume( DSBVOLUME_MAX - (((DSBVOLUME_MAX - DSBVOLUME_MIN) / 26) * (FINALFRAME - g_Frame)) );
}
ParseInput();
Render();
}
g_pd3dDevice->PersistDisplay();
HalReturnToFirmware(2);
}

Binary file not shown.

View file

@ -0,0 +1,61 @@
uint8 nyansong[] = {
0x48, 0x56, 0x4c, 0x00, 0x03, 0x7e, 0xa0, 0x06, 0x00, 0x00, 0x40, 0x05, 0x01, 0x00, 0xc8, 0x04,
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x3f, 0x3f, 0x24, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1c, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x24, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x26, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x28, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x26, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x23, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x24, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x3f, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1c, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x24, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x26, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x23, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x24, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x26, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x29, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x28, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x29, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x26, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x21, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1b, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x1b, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1a, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1a, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x10, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x11, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1c, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x10, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x11, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x3f, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1a, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x17, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x13, 0x01, 0x00, 0x00, 0x00, 0x3f,
0x15, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x01,
0x00, 0x00, 0x00, 0x3f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x1a, 0x01, 0x00, 0x00,
0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
0x3f, 0x3f, 0x3f, 0x3f, 0x1e, 0x01, 0x01, 0x3b, 0x08, 0x2a, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
0x01, 0x04, 0x01, 0x0f, 0x10, 0x3f, 0x01, 0x01, 0x01, 0x04, 0x03, 0x01, 0x01, 0x18, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x01, 0x6e, 0x79,
0x61, 0x6e, 0x63, 0x61, 0x74, 0x00, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x79,
0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x2e, 0x2e, 0x00
};
#define NYANSONG_SIZE sizeof(nyansong)

View file

@ -0,0 +1,5 @@
// Automatically generated by the bundler tool from c:\Program Files\Microsoft Xbox SDK\Samples\Xbox\Attach\resource.rdf
#define resource_NUM_RESOURCES 1UL
#define resource_JustTurnItOn_OFFSET 32UL

View file

@ -0,0 +1,26 @@
#define BUTTONS_DPAD_UP (1<<0)
#define BUTTONS_DPAD_DOWN (1<<1)
#define BUTTONS_DPAD_LEFT (1<<2)
#define BUTTONS_DPAD_RIGHT (1<<3)
#define BUTTONS_START (1<<4)
#define BUTTONS_BACK (1<<5)
#define BUTTONS_LEFT_THUMB (1<<6)
#define BUTTONS_RIGHT_THUMB (1<<7)
#define BUTTONS_A (1<<8)
#define BUTTONS_B (1<<9)
#define BUTTONS_X (1<<10)
#define BUTTONS_Y (1<<11)
#define BUTTONS_BLACK (1<<12)
#define BUTTONS_WHITE (1<<13)
#define BUTTONS_LEFT_TRIGGER (1<<14)
#define BUTTONS_RIGHT_TRIGGER (1<<15)
extern BOOL g_ExitNow;
extern VOID XBUtil_DebugPrint( const CHAR* buf, ... );
extern VOID mappath(char * Device, char * Alias);
extern VOID bg_decompress(D3DTexture **TextureOutput);
extern VOID statusline_refresh(const CHAR* Text);

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,55 @@
; Cerbios bootanim config
; Camera Mode, 0 to 14, 0 = Random Camera Boot Animation
CameraMode = 0
; Plasma Options & Colour
PlasmaRender = true
Plasma1 = #0000FF
Plasma2 = #0000FF
Plasma3 = #0000FF
; Shield Options & Colour
ShieldRender = true
ShieldWireframe = true
Shield = #FF00FF
; Blob (Flubber) Options & Colour
BlobRender = true
BlobWireframe = true
BlobColor = #283FFF
BlobGlow = #A040FF
; Background Scene Options & Colour
SceneRender = true
SceneWireframe = false
SceneIntensity = 2
SceneAmbient = #3519FF
SceneDiffuse = #3519FF
SceneSpecular = #3519FF
; X Splash Screen Colour
SlashBackgroundStart = #000000
SlashBackgroundEnd = #FFFFFF
SlashLipGradientStart = #000100
SlashLipGradientEnd = #7A7AFF
SlashInnerStage1Gradient1 = #FFFFFF
SlashInnerStage1Gradient2 = #FFFFFF
SlashInnerStage1Gradient3 = #7A7AFF
SlashInnerStage1Gradient4 = #7A7AFF
SlashInnerStage2Gradient1 = #7A7AFF
SlashInnerStage2Gradient2 = #7A7AFF
SlashInnerStage2Gradient3 = #CCCCFF
SlashInnerStage2Gradient4 = #0000D6
; TradeMark logo Options & Colour
TradeMarkRender = true
TradeMark = #7477FF
; XBOX Text Options & Colour
XboxRender = true
Xbox = #7477FF
; CERBIOS Brand Options & Colour
BrandRender = true
Brand = #7477FF

Binary file not shown.

View file

@ -0,0 +1,5 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://github.com/Team-Resurgent/CerbiosTool

6
Cerbios Bios/Discord.url Normal file
View file

@ -0,0 +1,6 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://discord.gg/VcdSfajQGK
HotKey=0

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

6
Cerbios Bios/Forums.url Normal file
View file

@ -0,0 +1,6 @@
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,11
[InternetShortcut]
IDList=
URL=https://xbox-scene.info/
HotKey=0

Binary file not shown.

View file

@ -0,0 +1,11 @@
Using LithiumX:
Attached is a custom version of LithiumX is currently the only dashboard that can read and launch games/apps from both drives.
Existing Setup: Delete the E:\udata\lithiumx folder before using it for the first time.
File Lock: LithiumX will lock E:\udata\lithiumx\lithiumx.db while in use, so you can't delete it while it's locked.
Launching XBEs: You can launch any XBE from the Start menu (Utilities > XBE Launcher).
View Partitions: The Start menu (Utilities > XBE Launcher) is also where you can see all partitions from both drives if detected.
New to LithiumX?
LithiumX will scan for games/apps in configured folders (from both drives) and display them. Use the black/white buttons to switch pages.
Cache Management: Lith will cache the scan results for faster subsequent boots. Clear the cache from the Start menu (Utilities > Mark Database Reset at Reboot).
Config File: The folders to be scanned are stored in the config file E:\udata\lithiumx\lithiumx.toml.

View file

@ -0,0 +1,371 @@
diff -ur ./src/dash_browser.c ../LithiumX-DualHDD/src/dash_browser.c
--- ./src/dash_browser.c 2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/dash_browser.c 2024-08-16 19:22:15.928000000 -0400
@@ -179,6 +179,7 @@
WIN32_FIND_DATA findData;
HANDLE hFind;
char searchPath[DASH_MAX_PATH];
+ char tmp[10];
int i = 0;
*cnt = 0;
@@ -187,19 +188,23 @@
//Xbox doesn't have a root drive that shows all partitions so we fake it
if (strcmp(path, DASH_ROOT_PATH) == 0)
{
- static const char root_drives[][3] = {"C:", "D:", "E:", "F:", "G:", "R:", "S:",
- "V:", "W:", "A:", "B:", "P:", "Q:", "X:", "Y:", "Z:", };
+ static const char* root_drives[] = {"HDD0-C", "DVD-ROM", "HDD0-E", "HDD0-F", "HDD0-G", "HDD0-H", "HDD0-I",
+ "HDD0-J", "HDD0-K", "HDD0-L", "HDD0-M", "HDD0-N", "ROOT", "HDD0-X", "HDD0-Y", "HDD0-Z",
+ "HDD1-C", "HDD1-E", "HDD1-F", "HDD1-G", "HDD1-H", "HDD1-I",
+ "HDD1-J", "HDD1-K", "HDD1-L", "HDD1-M", "HDD1-N", "HDD1-X", "HDD1-Y", "HDD1-Z", };
int _cnt = 0;
for (int i = 0; i < DASH_ARRAY_SIZE(root_drives); i++)
{
- if(!nxIsDriveMounted(root_drives[i][0]))
+ if(!nxIsDriveMounted((char*)root_drives[i]))
{
dash_printf(LEVEL_TRACE, "%s not mounted. Skipping\n", root_drives[i]);
continue;
}
if (list != NULL)
{
- list[_cnt].item = lv_strdup(root_drives[i]);
+ memset(tmp, 0, 10);
+ lv_snprintf(tmp, 10, "%s:", root_drives[i]);
+ list[_cnt].item = lv_strdup(tmp);
list[_cnt].is_dir = 1;
}
_cnt++;
diff -ur ./src/dash_main.c ../LithiumX-DualHDD/src/dash_main.c
--- ./src/dash_main.c 2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/dash_main.c 2024-08-01 04:12:48.396000000 -0400
@@ -22,16 +22,16 @@
"\n"
"[[pages]]\n"
"name = \"Games\"\n"
- "paths = [\"E:/Games\", \"F:/Games\", \"G:/Games\"]\n"
+ "paths = [\"HDD0-E:/Games\", \"HDD0-F:/Games\", \"HDD0-G:/Games\", \"HDD1-E:/Games\", \"HDD1-F:/Games\", \"HDD1-G:/Games\"]\n"
"\n"
"[[pages]]\n"
"name = \"Applications\"\n"
- "paths = [\"E:/Applications\", \"F:/Applications\", \"G:/Applications\",\n"
- " \"E:/Apps\", \"F:/Apps\", \"G:/Apps\"]\n"
+ "paths = [\"HDD0-E:/Applications\", \"HDD0-F:/Applications\", \"HDD0-G:/Applications\", \"HDD1-E:/Applications\", \"HDD1-F:/Applications\", \"HDD1-G:/Applications\", \n"
+ " \"HDD0-E:/Apps\", \"HDD0-F:/Apps\", \"HDD0-G:/Apps\", \"HDD1-E:/Apps\", \"HDD1-F:/Apps\", \"HDD1-G:/Apps\"]\n"
"\n"
"[[pages]]\n"
"name = \"Homebrew\"\n"
- "paths = [\"E:/Homebrew\", \"F:/Homebrew\", \"G:/Homebrew\"]\n"
+ "paths = [\"HDD0-E:/Homebrew\", \"HDD0-F:/Homebrew\", \"HDD0-G:/Homebrew\", \"HDD1-E:/Homebrew\", \"HDD1-F:/Homebrew\", \"HDD1-G:/Homebrew\"]\n"
"\0";
static bool check_path_toml(char *err_msg, int err_msg_len)
diff -ur ./src/libs/ftpd/ftp_file.c ../LithiumX-DualHDD/src/libs/ftpd/ftp_file.c
--- ./src/libs/ftpd/ftp_file.c 2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/libs/ftpd/ftp_file.c 2024-08-16 19:52:39.464000000 -0400
@@ -23,7 +23,11 @@
#ifdef NXDK
#include <xboxkrnl/xboxkrnl.h>
-static const char root_drives[][3] = {"/C", "/D", "/E", "/F", "/G", "/R", "/S", "/V", "/W", "/A", "/B", "/P", "/X", "/Y", "/Z"};
+static const char root_drives[][8] = {"HDD0-C", "DVD-ROM", "HDD0-E", "HDD0-F", "HDD0-G", "HDD0-H", "HDD0-I",
+ "HDD0-J", "HDD0-K", "HDD0-L", "HDD0-M", "HDD0-N", "ROOT", "HDD0-X", "HDD0-Y", "HDD0-Z",
+ "HDD1-C", "HDD1-E", "HDD1-F", "HDD1-G", "HDD1-H", "HDD1-I",
+ "HDD1-J", "HDD1-K", "HDD1-L", "HDD1-M", "HDD1-N", "HDD1-X", "HDD1-Y", "HDD1-Z", };
+
static int root_index;
#define FILE_DBG DbgPrint
#else
@@ -39,19 +43,29 @@
// Replace "/" with "\"
char *sep = strchr(out, '/');
+ char* start = 0;
+ char* end = 0;
+ int cnt = 0;
+ if(sep) start = sep;
while (sep)
{
+ if(cnt==1) end = sep;
*sep = '\\';
sep = strchr(out, '/');
+ cnt++;
}
+ if(!end) end = start + strlen(out);
+
#ifdef NXDK
// Replace \E\ with "E:\" etc.
if (out[0] == '\\' && out[1] != '\0')
{
- out[0] = out[1];
+ memcpy(out, start+1, end-start-1);
+ *(end-1) = ':';
+ /* out[0] = out[1];
out[1] = ':';
- out[2] = '\\';
+ out[2] = '\\';*/
}
#endif
return out;
@@ -63,7 +77,7 @@
int cnt = sizeof(root_drives) / sizeof(root_drives[0]);
for (int i = 0; i < cnt; i++)
{
- if (strcmp(path, root_drives[i]) == 0)
+ if (strcmp(path+1, root_drives[i]) == 0)
{
return 1;
}
@@ -208,7 +222,6 @@
{
WIN32_FIND_DATA findFileData;
FILE_DBG("Looking for files in %s\n", dp->path);
-
#ifdef FTP_CUSTOM_ROOT_PATH
if (strcmp(dp->path, "root") == 0)
{
@@ -217,11 +230,11 @@
for(; root_index < (sizeof(root_drives) / sizeof(root_drives[0])); root_index++)
{
- if(!nxIsDriveMounted(root_drives[root_index][1]))
+ if(!nxIsDriveMounted((char*)root_drives[root_index]))
continue;
- nfo->fname[0] = root_drives[root_index][1];
- nfo->fname[1] = '\0';
+ memcpy(nfo->fname, root_drives[root_index], sizeof(root_drives[0]));
+ //nfo->fname = root_drives[root_index];
nfo->fattrib = AM_DIR;
// Create default year and time for root dirs
@@ -479,4 +492,4 @@
// Not implemented
FILE_DBG("%s: NOT IMPLEMENTED\n", __FUNCTION__);
return FR_OK;
-}
\ No newline at end of file
+}
diff -ur ./src/libs/nxdk/lib/nxdk/automount_d.c ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/automount_d.c
--- ./src/libs/nxdk/lib/nxdk/automount_d.c 2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/automount_d.c 2024-08-01 01:43:43.288000000 -0400
@@ -11,7 +11,7 @@
__cdecl int automount_d_drive (void)
{
- if (nxIsDriveMounted('D')) {
+ if (nxIsDriveMounted("D")) {
return 0;
}
@@ -27,7 +27,7 @@
// Mount the obtained path as D:
BOOL success;
- success = nxMountDrive('D', targetPath);
+ success = nxMountDrive("D", targetPath);
assert(success);
return 0;
diff -ur ./src/libs/nxdk/lib/nxdk/mount.c ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.c
--- ./src/libs/nxdk/lib/nxdk/mount.c 2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.c 2024-08-01 01:42:32.208000000 -0400
@@ -8,15 +8,15 @@
#include <winbase.h>
#include <xboxkrnl/xboxkrnl.h>
-bool nxIsDriveMounted (char driveLetter)
+bool nxIsDriveMounted (char* driveLetter)
{
NTSTATUS status;
HANDLE handle;
ANSI_STRING drivePath;
- CHAR drivePathBuffer[7];
+ CHAR drivePathBuffer[20] = {0};
OBJECT_ATTRIBUTES objattr;
- sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+ sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
RtlInitAnsiString(&drivePath, drivePathBuffer);
InitializeObjectAttributes(&objattr, &drivePath, OBJ_CASE_INSENSITIVE, NULL, NULL);
@@ -29,14 +29,14 @@
return false;
}
-bool nxMountDrive (char driveLetter, const char *path)
+bool nxMountDrive (char* driveLetter, const char *path)
{
NTSTATUS status;
ANSI_STRING drivePath;
- CHAR drivePathBuffer[7];
+ CHAR drivePathBuffer[20] = {0};
ANSI_STRING mountPath;
- sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+ sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
RtlInitAnsiString(&drivePath, drivePathBuffer);
RtlInitAnsiString(&mountPath, path);
@@ -50,13 +50,13 @@
return true;
}
-bool nxUnmountDrive (char driveLetter)
+bool nxUnmountDrive (char* driveLetter)
{
NTSTATUS status;
ANSI_STRING drivePath;
- CHAR drivePathBuffer[7];
+ CHAR drivePathBuffer[20] = {0};
- sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+ sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
RtlInitAnsiString(&drivePath, drivePathBuffer);
status = IoDeleteSymbolicLink(&drivePath);
diff -ur ./src/libs/nxdk/lib/nxdk/mount.h ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.h
--- ./src/libs/nxdk/lib/nxdk/mount.h 2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.h 2024-08-01 01:42:46.648000000 -0400
@@ -13,9 +13,9 @@
#include <stdbool.h>
#endif
-bool nxIsDriveMounted (char driveLetter);
-bool nxMountDrive (char driveLetter, const char *path);
-bool nxUnmountDrive (char driveLetter);
+bool nxIsDriveMounted (char* driveLetter);
+bool nxMountDrive (char* driveLetter, const char *path);
+bool nxUnmountDrive (char* driveLetter);
#ifdef __cplusplus
}
diff -ur ./src/lithiumx.h ../LithiumX-DualHDD/src/lithiumx.h
--- ./src/lithiumx.h 2024-06-28 13:55:18.772000000 -0400
+++ ../LithiumX-DualHDD/src/lithiumx.h 2024-08-01 03:55:40.896000000 -0400
@@ -63,7 +63,7 @@
//nxdk local directory is also mounting to Q: so we get Q:Q:..
#ifndef DASH_SEARCH_PATH_CONFIG
#ifdef NXDK
-#define DASH_SEARCH_PATH_CONFIG "E:\\UDATA\\LithiumX\\lithiumx.toml"
+#define DASH_SEARCH_PATH_CONFIG "HDD0-E:\\UDATA\\LithiumX\\lithiumx.toml"
#else
#define DASH_SEARCH_PATH_CONFIG "lithiumx.toml"
#endif
@@ -71,7 +71,7 @@
#ifndef DASH_DATABASE_PATH
#ifdef NXDK
-#define DASH_DATABASE_PATH "E:\\UDATA\\LithiumX\\lithiumx.db"
+#define DASH_DATABASE_PATH "HDD0-E:\\UDATA\\LithiumX\\lithiumx.db"
#else
#define DASH_DATABASE_PATH "lithiumx.db"
#endif
@@ -200,4 +200,4 @@
}
#endif
-#endif
\ No newline at end of file
+#endif
diff -ur ./src/platform/xbox/platform.c ../LithiumX-DualHDD/src/platform/xbox/platform.c
--- ./src/platform/xbox/platform.c 2024-06-28 16:01:47.012000000 -0400
+++ ../LithiumX-DualHDD/src/platform/xbox/platform.c 2024-08-16 19:12:41.508000000 -0400
@@ -129,47 +129,65 @@
debugPrint("%s ", loading_str);
// nxdk automounts D to the root xbe path. Lets undo that
- if (nxIsDriveMounted('D'))
+ if (nxIsDriveMounted("DVD-ROM"))
{
- nxUnmountDrive('D');
+ nxUnmountDrive("DVD-ROM");
}
// Mount the DVD drive
- nxMountDrive('D', "\\Device\\CdRom0");
+ nxMountDrive("DVD-ROM", "\\Device\\CdRom0");
// Mount root of LithiumX xbe to Q:
char targetPath[MAX_PATH];
nxGetCurrentXbeNtPath(targetPath);
*(strrchr(targetPath, '\\') + 1) = '\0';
- nxMountDrive('Q', targetPath);
+ nxMountDrive("ROOT", targetPath);
debugPrint(".");
// Mount stock partitions
- nxMountDrive('C', "\\Device\\Harddisk0\\Partition2\\");
- nxMountDrive('E', "\\Device\\Harddisk0\\Partition1\\");
- nxMountDrive('X', "\\Device\\Harddisk0\\Partition3\\");
- nxMountDrive('Y', "\\Device\\Harddisk0\\Partition4\\");
- nxMountDrive('Z', "\\Device\\Harddisk0\\Partition5\\");
+ nxMountDrive("HDD0-C", "\\Device\\Harddisk0\\Partition2\\");
+ nxMountDrive("HDD0-E", "\\Device\\Harddisk0\\Partition1\\");
+ nxMountDrive("HDD0-X", "\\Device\\Harddisk0\\Partition3\\");
+ nxMountDrive("HDD0-Y", "\\Device\\Harddisk0\\Partition4\\");
+ nxMountDrive("HDD0-Z", "\\Device\\Harddisk0\\Partition5\\");
debugPrint(".");
// Mount extended partitions
// NOTE: Both the retail kernel and modified kernels will mount these partitions
// if they exist and silently fail if they don't. So we can just try to mount them
// and not worry about checking if they exist.
- nxMountDrive('F', "\\Device\\Harddisk0\\Partition6\\");
- nxMountDrive('G', "\\Device\\Harddisk0\\Partition7\\");
- nxMountDrive('R', "\\Device\\Harddisk0\\Partition8\\");
- nxMountDrive('S', "\\Device\\Harddisk0\\Partition9\\");
- nxMountDrive('V', "\\Device\\Harddisk0\\Partition10\\");
- nxMountDrive('W', "\\Device\\Harddisk0\\Partition11\\");
- nxMountDrive('A', "\\Device\\Harddisk0\\Partition12\\");
- nxMountDrive('B', "\\Device\\Harddisk0\\Partition13\\");
- nxMountDrive('P', "\\Device\\Harddisk0\\Partition14\\");
+ nxMountDrive("HDD0-F", "\\Device\\Harddisk0\\Partition6\\");
+ nxMountDrive("HDD0-G", "\\Device\\Harddisk0\\Partition7\\");
+ nxMountDrive("HDD0-H", "\\Device\\Harddisk0\\Partition8\\");
+ nxMountDrive("HDD0-I", "\\Device\\Harddisk0\\Partition9\\");
+ nxMountDrive("HDD0-J", "\\Device\\Harddisk0\\Partition10\\");
+ nxMountDrive("HDD0-K", "\\Device\\Harddisk0\\Partition11\\");
+ nxMountDrive("HDD0-L", "\\Device\\Harddisk0\\Partition12\\");
+ nxMountDrive("HDD0-M", "\\Device\\Harddisk0\\Partition13\\");
+ nxMountDrive("HDD0-N", "\\Device\\Harddisk0\\Partition14\\");
+
+ // Mount any second drive partitions
+
+ nxMountDrive("HDD1-C", "\\Device\\Harddisk1\\Partition2\\");
+ nxMountDrive("HDD1-E", "\\Device\\Harddisk1\\Partition1\\");
+ nxMountDrive("HDD1-X", "\\Device\\Harddisk1\\Partition3\\");
+ nxMountDrive("HDD1-Y", "\\Device\\Harddisk1\\Partition4\\");
+ nxMountDrive("HDD1-Z", "\\Device\\Harddisk1\\Partition5\\");
+ nxMountDrive("HDD1-F", "\\Device\\Harddisk1\\Partition6\\");
+ nxMountDrive("HDD1-G", "\\Device\\Harddisk1\\Partition7\\");
+ nxMountDrive("HDD1-H", "\\Device\\Harddisk1\\Partition8\\");
+ nxMountDrive("HDD1-I", "\\Device\\Harddisk1\\Partition9\\");
+ nxMountDrive("HDD1-J", "\\Device\\Harddisk1\\Partition10\\");
+ nxMountDrive("HDD1-K", "\\Device\\Harddisk1\\Partition11\\");
+ nxMountDrive("HDD1-L", "\\Device\\Harddisk1\\Partition12\\");
+ nxMountDrive("HDD1-M", "\\Device\\Harddisk1\\Partition13\\");
+ nxMountDrive("HDD1-N", "\\Device\\Harddisk1\\Partition14\\");
+
debugPrint(".");
- CreateDirectoryA("E:\\UDATA", NULL);
- CreateDirectoryA("E:\\UDATA\\LithiumX", NULL);
- FILE *fp = fopen("E:\\UDATA\\LithiumX\\TitleMeta.xbx", "wb");
+ CreateDirectoryA("HDD0-E:\\UDATA", NULL);
+ CreateDirectoryA("HDD0-E:\\UDATA\\LithiumX", NULL);
+ FILE *fp = fopen("HDD0-E:\\UDATA\\LithiumX\\TitleMeta.xbx", "wb");
if (fp)
{
fprintf(fp, "TitleName=LithiumX Dashboard\r\n");
@@ -207,7 +225,7 @@
if (strcmp(dash_launch_path, "__MSDASH__") == 0)
{
// FIXME: Do we need to eject disk?
- strcpy(dash_launch_path, "C:\\xboxdash.xbe");
+ strcpy(dash_launch_path, "HDD0-C:\\xboxdash.xbe");
}
else if (strcmp(dash_launch_path, "__DVD__") == 0)
{

Binary file not shown.

View file

@ -0,0 +1,26 @@
# PBL Metoo Edition configuration file
# This is the bios image file loaded at boot. It is loaded from the same
# directory default.xbe is in.
Romfile Cerbios.bin
# Change the led color sequence when the loader boots. Define it if you
# like flashing lights and glimmering objects. r=red, o=orange, g=green, x=off.
#LEDSequence rrrr
# Define to write debug messages to pbldebug.log. May be useful in finding out
# what's wrong, when it doesn't work. Default log file name is pbldebug.log.
#Debug true
#DebugLog pbldebug.log
# What to do with the screen during bios loading:
# keep = keep the current screen (default)
# blank = blank screen
# off = turn video output off completely
# nothing = don't do anything to the video output (results in
# garbage output during bios loading)
#Screen blank

Binary file not shown.

561
Cerbios Bios/Readme.nfo Normal file
View file

@ -0,0 +1,561 @@
( ( ) (
( )\ ) ( )\ ) ( /( )\ )
)\ ( (()/( ( )\ (()/( )\()) (()/(
(((_) )\ /(_)))((_) /(_))((_)\ /(_))
)\___ ((_) (_)) ((_)_ (_)) ((_) (_))
((/ __|| __|| _ \ | _ )|_ _| / _ \ / __|
| (__ | _| | / | _ \ | | | (_) |\__ \
\___||___||_|_\ |___/|___| \___/ |___/
******************************************************************************
* *
* .:Release V2.4.2 Beta (Xbox V1.0 - 1.6) Only:. *
* *
******************************************************************************
******************************************************************************
* Version :.........V2.4.2 Beta * Size :......................256 KB *
* Date :....................18/08/24 * Type :...............Xbox Bios *
* Group :........Team CerBios * Platform :.........Microsoft Xbox *
******************************************************************************
* https://discord.gg/VcdSfajQGK *
******************************************************************************
******************************************************************************
*....:Changes/Additions:.....................................................*
******************************************************************************
* *
* --A new custom Bios for the Original Xbox.-- *
* *
* Release: V2.4.2 Beta *
* *
* The Dogs Are Back From Their Vacation (Fixed Splash Screen) *
* Improved Dual HDD Support. (DriveSetup = 3) *
* Updated UDMA Settings In INI To Support Both HDDS. Please Ensure You *
* are Running Latest Cerbios.INI *
* *
* New UDMA Settings: *
* ; Set Master Drive UDMA mode 0-6 on cold-boot *
* UdmaModeMaster = 2 *
* *
* ; Set Slave Drive UDMA mode 0-6 on cold-boot (Enable DriveSetup = 3) *
* UdmaModeSlave = 2 *
* *
* Released Updated Version Of LithiumX Which Allows Browsing Of 2nd HDD *
* Additional System Stability Improvements. *
* *
*.........................:Dual HDD Support Info?:...........................*
* This Is A First For The Original Xbox And You May Encounter Some Bugs. *
* Please Report Your Test Results In Our Discord Room For Future *
* Improvements. *
* *
* To Custom Format Your 2nd HDD You Will Require FATXplorer 3.0 beta 32 *
* or Higher. This Can Be Downloaded From The Below Link. *
* https://fatxplorer.eaton-works.com/3-0-beta/ *
* *
* Existing Partitions Are Supported With Dual HDD Configuration. *
* This Includes Stock HDD or Cerbios Formated Extended HDDS *
* *
*......................:Dashboard & Software Updates:........................*
* Existing Open Source Dashboards Will Need To Be Updated To Support *
* Secondary HDD "\Device\Harddisk1\Partition(#)\" *
* *
* Software Where Source Does Not Exist May Need To Be Patched Manually. *
* Please Share Any Patches Made With The Community. *
* *
* *
* #Please Contribute To Our Testing Efforts And Report Your Test Results, *
* Bugs, Or Any Other Feedback In Our Room On Discord. Your Input Is *
* Invaluable And Greatly Appreciated. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.4.1 Beta *
* *
* Fixed Reported Issues With Force 480p & Force Pal *
* Fixed Reported Video Issues, Black Screen On Some Games *
* Improved VGA Mode. Still Experimental *
* Additional System Stability Improvements. *
* *
* #Please Contribute To Our Testing Efforts And Report Your Test Results, *
* Bugs, Or Any Other Feedback In Our Room On Discord. Your Input Is *
* Invaluable And Greatly Appreciated. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: V2.4.0 Beta *
* *
* NEW INI CONFIGURATION OPTIONS PLEASE UPDATE YOUR CERBIOS.INI FILE *
* *
* Fixed Booting / Freezing Issues with Some V1.0 Consoles *
* Fixed Video Issues Related To V1.6 Xcalibur Encoder. Composite, Scart *
* Svideo & Component Video Modes Now Working. *
* Fixed Video Issues Related to Scrambled Image On 1.6 Consoles. No More *
* Patching Of XBEs Required. *
* Added Ability To Set UDMA Mode Via Cerbios.ini *
* Added Ability To Force 480I to 480P Via Cerbios.ini & Cerbios Tool. *
* Added IGPC (In Game Power Cycle), Set Your Own Mapping Via Cerbios Tool *
* # Power Cycle = LT+RT+BLACK+DPADUP *
* Improved Bootup Times When No DVD / HDD Connected. *
* Fixed Issues with 1.6 Consoles & Fan Speed. *
* Added Default Fan Speed For CPU Upgraded Consoles To 60%. *
* Improved Safemode Detection. *
* Added Support For Force-PAL, an Automatic Setting That Temporarily *
* Switches The Console Region To PAL For Certain PAL-Only Games. *
* Added Support For An Upcoming RTC Hardware Module To Maintain Time Sync *
* Configurable Via Cerbios.ini (RTCEnable) *
* Added Experimental VGA Support. *
* Requires Cable That Can Seperate Sync-on-Green Signal Or A Monitor *
* That Supports Sync-on-Green. Video Mode Pins Set As (1+3) Or For *
* HDTV (2+3), This only Supports Xbox V1.0-1.4 Only. *
* Configurable Via Cerbios.ini (ForceVGA) *
* Added Ability To Block Xbox Dashboard Updates Via Cerbios.ini *
* This Only Blocks Checks Against C:\xboxdash.xbe. Useful When *
* Running Font Based Softmods Which Break If Dash Is Updated. *
* Additional System Stability Improvements. *
* *
* *
* An Updated Version Of Team Resurgents Cerbios Tool Will Be Found At *
* https://github.com/Team-Resurgent/CerbiosTool *
* *
* #Please Contribute To Our Testing Efforts And Report Your Test Results, *
* Bugs, Or Any Other Feedback In Our Room On Discord. Your Input Is *
* Invaluable And Greatly Appreciated. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: V2.3.2 HD Alpha Test Build / Bug Finder *
* *
* Added Inital Support for HD+ Hardware Mod *
* Released ElpisHD App. Ability To Control HD+ Features On Cerbios. *
* Place ElpisHD Folder To Root Of C:\ For Default Location and Run *
* Default.Xbe To Configure Settings. *
* *
*.........................:Why Is This An Alpha?:............................*
* *
* This Release Is A Public Alpha Test Build Of Cerbios, Featuring Support *
* For The HD+ Mod. We Issue This Release With An Important Warning: This *
* Build Is Not Intended For Regular, Daily Use. It Is Likely To Contain *
* Bugs, Including Some That May Have Been Overlooked Or Inadvertently *
* Introduced During The Integration Of Undocumented Support For Third- *
* Party Hardware. *
* *
* We Are Relying On The Community's Collaboration For This Phase. Your *
* Participation In Testing And Providing Feedback Is Vital. We Need Your *
* Help To Identify And Report Any Issues Before We Proceed To An Official *
* Beta Release. This Collaborative Effort Is Crucial To Ensure The *
* Stability And Functionality Of The Final Product. *
* *
* ElpisHD App is required to change settings on the HD+ And Works Only *
* With Cerbios. Source Code Will Be Released Once Testing Is Complete *
* And Offical Beta Version With HD Support Is Released. *
* *
* #Please Contribute To Our Testing Efforts And Report Your Test Results, *
* Bugs, Or Any Other Feedback In Our Room On Discord. Your Input Is *
* Invaluable And Greatly Appreciated. *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.3.1 Beta *
* *
* Added Ability To Launch Cerbios As A BFM Bios Via PBL Methods. *
* *
*..............................:What Is BFM?:................................*
* *
* Thanks To Team Resurgent For Providing The Required Patches, Cerbios *
* Is Now BFM Compatible. This Means Your Favourite Bios Can Now Be Used *
* On Softmodded Consoles, TSOP And All Modchips. *
* *
* To Launch Cerbios As A BFM Bios, Simply Copy The Pheonix Bios Loader *
* Folder To Your HDD A Long With A Copy Of Cerbios Bios File Renamed As *
* Cerbios.bin , Copy BootAnims Folder & Cerbios.ini to Root Of C: *
* Launch Default.XBE & Let The Magic Happen. Console Should Reboot Into *
* Cerbios. *
* Please Note Doing A FULL IGR While Using PBL Will Reload Your Default *
* Bios Again. *
* *
* For Modchip & TSOP Users Nothing Has Changed. Simply Flash To Your *
* Hardware, Copy BootAnims Folder & Cerbios.ini to Root Of C: *
* *
* The Updated Version Of Team Resurgents Cerbios Tool Can Be Found At *
* https://github.com/Team-Resurgent/CerbiosTool *
* Please Show Them Some Love, As They Continue To Release Some Amazing *
* Free Tools For The Scene. They Have Set Up A Patreon & Kofi *
* *
* Thanks Also Go Out To Team Pheonix & Meetoo For Their Amazing Work *
* They Did With PBL. 20 Years Later & Still Works As It Did On Day One *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.3.0 Beta *
* *
* Added New Way To Customize Bios Using Cerbios Tool (windows Only ATM) *
* Added Ability To Theme Cerbios Logo Via Cerbios Tool *
* Added Ability To Scale or Hide Cerbios Logo Entirely Via Cerbios Tool *
* Added Experimental UDMA Mode 6 (Requires Ultra DMA (80-Conductor) *
* IDE/ATA Cable & Startech Adapter. *
* Removed Custom IGR Keys From INI. Now Configureable Via Cerbios Tool *
* Added Ability To Use Drive Letters In Paths As Well As \Device* Format *
* Added Ability To Set UDMA Modes 2-6 Via Cerbios Tool *
* Added Ability To Set UDMA Mode Auto Via Cerbios Tool For Startech or *
* Generic Sata to IDE Adapters. Auto Mode Will Detect Supported *
* UDMA Mode Of Drive & Sets that. This Feature Is Experimental, You *
* Can Boot Into UDMA Mode 2 (Safe Mode) by Booting Xbox Using Eject. *
* Please Share Your Results Of Auto Mode In Our Room On Discord. *
* Added Auto Boot Into Safe Mode If Error 9 Or 13 Detected Due To *
* Incompatble UDMA Mode. *
* Updated Cerbios.ini to Support Drive Letter Path Names As well. *
* System Stability Improvements *
* *
* We Are Working On Fixing Some Of The Reported 1.6 Video Issues With *
* Composite Video Cables. We Recommend You Use Component Or HDMI Plug *
* And Play Solutions Such As Chimeric HDMI, XBOX2HDMI Or Xedusa. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
*.........................:What Is Cerbios Tool?:............................*
* *
* Cerbios Tool Allows You To Customize Some Of the Features Found In *
* Cerbios. This Tool Was Created And Released By Team Resurgent. *
* More Information And Features can Be Found On Their Github Page. *
* *
* Some Of Its Core Features & Functionality Are Listed Below . *
* Ability To Theme Cerbios Logo. *
* Comes Preloaded With Themes To Pick From *
* Ability To Copy & Share Themes With Your Friends. *
* Ability To Add & Load Themes into App Using Themes.JSON. *
* Ability To Scale or Hide Cerbios Logo Apart From Safe Mode Notice *
* Ability To Set UDMA MODES AUTO or 2-6 *
* Ability To Save Favourite Configs To Re-Use Later *
* Ability To Set Config Defaults *
* Ability To Set IGR Combo Keys & Controller Port *
* Ability To Set Or Edit Existing Functionality Such as Debug, Fan Speed *
* DriveSetup, AV Check, CD, Dash & Boot Animation Paths And Front LED *
* Directly Into Bios. *
* Ability To Disable Config Loading From HDD And Use Settings Saved In *
* In Bios Instead. Config Loading From HDD Is Enabled By Default And Will *
* Overwrite Any Settings In Bios With That In INI File. *
* Many More Features Please Check Github For Updates. *
* *
* The Latest Version Of Team Resurgents Cerbios Tool Can Be Found At *
* https://github.com/Team-Resurgent/CerbiosTool *
* Please Show Them Some Love, As They Continue To Release Some Amazing *
* Free Tools For The Scene. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.2.1 Beta *
* *
* Fixed Issue Where Some Split Isos Would Not Work Properly *
* Shout-Out To Those That Reported This Bug To Us. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.2.0 Beta - MERRY XMAS AND HAPPY NEW YEAR - *
* *
* Added Support for .CCI, Cerbios Compressed Image (Compressed Games) *
* System Stability Improvements *
* Added UDMA4 Build. For Those Who Requested It *
* *
* *
*................:What Is CCI, Cerbios Compressed Image?:....................*
* *
* .CCI Is A Compression Method For The ISO Image Format. It Is Used To *
* Compress Your Dumped Xbox Games As An Alternative To The .CSO *
* Compression Method. CCI Was Designed With Fast Creation Of The File *
* Format And Optimal Decompression In Kernel Without The Need For Any *
* Additional Hardware, Modifications Or Addons. *
* *
* .CCI Is The First Compression Method For ISO That Has Support For *
* Split Compressed ISO's To Work On An Xbox. It Was Created So That *
* Additional Storage Space Can Be Saved, Whilst Also Using A Low Memory *
* Footprint. Other Benefits Include Being Able To Be Decompressed With *
* Minimal Code As Well As Fast LZ4 Decompression That Does Not Impact *
* System Performance And Future Expandability. Team Resurgent Created *
* The First Prototype Code That We Have Iterated Upon And Incorporated *
* Into Cerbios Today. *
* *
* Team Resurgent Has Updated Their Repackinator Tool & Have Added The *
* Ability For Users To Create Compressed Images (.CCI) Of Your Dumps *
* *
* The Latest Version Of Team Resurgents Repackinator Can Be Found At *
* https://github.com/Team-Resurgent/Repackinator *
* Please Show Them Some Love, As They Continue To Release Some Amazing *
* Free Tools For The Scene. *
* *
* All Image Formats Created By Repackinator Keep Sectors & Disk Info *
* Intact To Ensure DRM Problamatic Games Such As Toca 3 Etc Work. *
* *
* To All Our Beta Testers, Thank You For All The Testing And Support *
* Much Love & Respect <3. *
* *
* We Will Be Back In 2023 With New Amazing Releases For All To Enjoy. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD, INCLUDING ANY ISSUES FACED WITH CCI THANKS *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.1.0 Beta *
* *
* Added Support for Xbox Console Revision V1.6 *
* Fixed Issues With Insignia Account Creation (MACS) *
* Will No Longer Report As Live Blocking Bios. *
* System Stability Improvements *
* *
* *
* People Doubted That It Would Be Possible However We Are Proud To *
* Introduce Cerbios Hybrid V2.1.0, Compatible With All Xbox Revisions *
* V1.0 - V1.6 Including all 128MB Ram Upgraded Systems *
* *
* For the Best Compatibility With Larger HDDS, We Recommend You Format *
* Your HDD Using FATXPLORER 3.X Beta & The Cerbios Option. We Have Seen *
* Issues When Drives Are Formatted for Titan Use. *
* *
* A Big Shout-Out To All The Talented People Whom Contributed To This *
* Release, Endless Hours Were Spent Writing Custom Tools, Disassembly & *
* Analysing Hundreds of Lines of ASM, To Recreate The Code We Use Today *
* You Know Who You Are. To All Our Beta Testers, Thank You For All The *
* Testing And Support, Much Love & Respect <3. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* *
* ------------------------------------------------------------------- *
* Release: V2.03 Repack *
* *
* Contains All Features And Fixes From V2.03 *
* Fixed Booting Issue When DriveSetup = 0 *
* Updated Safemode Boot Screen *
* System Stability Improvements *
* *
* *
* *
* Apologies For Our Last Release, Our Devs Were A Little Too Eager To *
* Get Back Into The Grind Of Things. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: V2.03 *
* *
* AIO Hybrid Build No More Retail / Debug *
* The Dogs Are Back From Their Vacation (Now Show On Boot) *
* Fixed Random Screen Corruption On Cerbios Boot Logo *
* Fixed Error 12 When DriveSetup = 0 In Config and using UDMA5 *
* Fixed Issue With Some Games Not Booting (WIP) *
* Added Parental Control Removal. If Parental Controls Are Enabled *
* Cerbios Will Now Remove / Unlock Them From EEPROM. *
* Added New Safemode, Press Eject To Bypass UDMA Settings, This Will *
* Revert UDMA5 Back To UDMA2 (For That Boot). This Does Not Work *
* With The Xenium Based Mod Chips. *
* *
* *
* *
* We Are Still Here!!! Life Sometimes Takes Over Your Free Time. *
* Additional Features & Hardware Support Is Still Worked On & Will Be *
* Released Once Ready. Stay Tuned. *
* *
* For the Best Compatibility With Your Games, We Recommend You Make *
* Or Use Full Redump Images, Check Out The Newly Released Repackinator *
* by Team Resurgent. This Tool Will Convert Your Redumps Into Split *
* Images With Default.Xbe. Simply Copy To Your Xbox & Game On *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS IN OUR ROOM ON *
* DISCORD THANKS *
* *
* ------------------------------------------------------------------- *
* *
* Release: V2.02 Repack *
* *
* Fixed Issue With XMV Player Not Playing Video On Startup *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS ON DISCORD *
* OR THE FORUMS. THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: V2.02 *
* *
* Bios No Longer In Beta Phase *
* Fixed Issue With Sonic Mega Collection Not Booting *
* Included Nyan Cat Boot Animation from T.H.D *
* Added New Boot Animation (XMV Player) Convert Your Animations To *
* XMV Movie Files. Included Xbox One Boot Screen As Demo. *
* Fixed OG Xbox Boot Animation. Now Supports Widescreen & Upto 720P *
* Two Addition Bios Binaries Released. Retail UDMA5 & Debug UDMA5 *
* Use At Own Risk, A few IDE To Sata Adapters Do Not Support Higher *
* Transfer Speeds, This Is Experimental. DO NOT FLASH UNLESS YOU *
* YOU HAVE A WAY TO RECOVER, YOU HAVE BEEN WARNED!!!! *
* *
* We Are Working Hard In The Background To Add Additional Features *
* And Hardware Support. Keep An Eye Out For Further Announcements *
* *
* For the Best Compatibility With Your Games, We Recommend You Make *
* Or Use Full Redump Images, Use DD To Remove Video Partition *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS ON DISCORD *
* OR THE FORUMS. THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: Beta V2.01 *
* *
* Bug Fixes Related To No DVD Drive Checks *
* All DriveSetup Modes In Config Now Work. *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS ON DISCORD *
* OR THE FORUMS. THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: Beta V2.00 *
* *
* Two Bios Binaries Released. Retail & Hybrid Debug *
* Use Retail Unless You Require Debug Features For XDK Tools ETC *
* #PLEASE NOTE: Current ATTACH.XBE DOES NOT WORK FOR ISO LOADING *
* USING DEBUG BIOS. NEW ATTACH.XBE WILL BE RELEASED IN FUTURE *
* Xbox V1.4 (Focus) Support Enabled *
* Improved No DVD Drive Check With Two New Modes *
* # 1 = HDD & No DVD (Legacy Mode) Same as Existing Bioses *
* # 2 = HDD & No DVD (Modern Mode) Complete Removal Of DVD Code *
* Fixed 16 Invalid Clock Error. Xbox With Invalid Date/Time *
* Will Now Boot And Default Will Be Set To 01/01/2022 12:00AM *
* Fixed 07 HDD Time-Out Error when using cheap Ali Express Sata *
* Adapters. (Boot Times May Take Longer With Cheaper Adapters) *
* Added Dual HDD Support (Another Scene First By Team CerBios) *
* New Tools Will Be Released To Take Advantage Of Dual HDD *
* Added Single & Multiple Extended Partition Support & Cluster Sizes *
* Expand Partitions past 998GB Limit *
* Added Debug Enabled Bios With Option To Enable/Disable Via Config *
* Added Customizable IGR , Set Your Own Button Mappings Via Config *
* Added IGS (In Game Shutdown), Set Your Own Button Mappings Via Config *
* # Shutdown = LT+RT+BACK+DPADUP *
* Added Custom Fan Speed Control, Can Be Set Via Config *
* External Boot Animations, Easy To Replace Boot Animation XBE *
* Path can be set Via Cerbios.ini Config. *
* Included Two Boot Animation XBE's. XBOX OG & Custom (Modern) With *
* Bootanim.ini To Allow For Custom Colors ETC. *
* Place BootAnims Folder In Root Of C: For Default Location *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS ON DISCORD *
* OR THE FORUMS. THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: Alpha V1.02 *
* Enabled 3 different IGR Modes *
* # Dash = LT+RT+Back+Start *
* # Game = LT+RT+Black+Start *
* # Full = LT+RT+Black+Back *
* Bug Fixes Related To ISO Image Dismount *
* *
* #PLEASE REPORT YOUR TEST RESULTS OR ANY BUGS REPORTS ON DISCORD *
* OR THE FORUMS. THANKS *
* *
* *
* ------------------------------------------------------------------- *
* *
* Release: Alpha V1.01 *
* Bug Fixes Related To Partition Table & Locked/Unlocked Drives *
* *
* ------------------------------------------------------------------- *
* Release: Alpha V1 *
* Custom LBA V4 Support. HDD up to 8TB #READ WARNING# *
* Custom Partition Hack (Auto Detects!) *
* Native XISO Support. Just run attach.xbe to load game.. *
* Custom Error Messages With Full Explanation *
* Full 128MB Ram Support (MTRR Fix) *
* Custom Config File For Animation Colors, Dash Paths CD Paths. *
* Universal Region Fix. (GTA SA NTSC Will Now Boot On Pal Consoles) *
* Boots All Originals *
* Boots All Unsigned Code *
* Boots All Backups *
* Boots Debug XBE's *
* Macrovision Protection Disabled *
* No Patch Hack *
* No Reset On Eject *
* No DVD Rom Check *
* No AV Cable Check *
* Front Led Support *
* *
* #WARNING PLEASE USE AT OWN RISK. AS AN ALPHA TESTER THERE IS A *
* POSSIBILITY THAT SOMETHING MIGHT GO WRONG. DONT BLAME US. YOU *
* HAVE BEEN WARNED *
* *
******************************************************************************
******************************************************************************
*....:Frequently Asked Questions:............................................*
******************************************************************************
* *
* Q: How do i format my HDD for extra partition support? *
* A: We have reached out to scene members with details. Their tools *
* will be updated to make this process easier for you. We will also *
* release a Xbox app that you can run on your xbox. *
* *
* Q: When will there be 1.4 - 1.6 support? *
* A: We currently have support for those hardware revisions disabled *
* during this alpha stage of testing. Once we are happy with the *
* testing and feedback received from the community we will introduce *
* new features & hardware support. *
* UPDATE: Xbox V1.4 SUPPORT ENABLED 09/04/2022 *
* UPDATE: Xbox V1.6 SUPPORT ENABLED 20/11/2022 *
* *
* Q: What about IGR & fan speed control, what gives? *
* A: Like mentioned above some features have been disabled. These will *
* make an appearance in future build releases. *
* UPDATE: IGR SUPPORT ENABLED 17/02/2022 *
* UPDATE: Custom Fan SUPPORT Added 22/04/2022 *
* *
* Q: My dashboard cant see my extra partitions 8-14. *
* A: Some dashboards were programed to only support F & G therefore *
* your extra partitions wont show. We suggest using XBMC which supports *
* 6 extra partitions. As new dashboards and apps are developed we are *
* sure that they will include support for extra partitions. *
* UPDATE: Larger Single Partition Support Added 22/04/2022 *
* *
* Q: Will this run on XEMU?. *
* A: Yes *
* *
* Q: How do i report my test results? *
* A: You can share your findings on the xboxscene forums or in the *
* Cerbios room on the xbox-scene discord. https://discord.gg/VcdSfajQGK *
* *
* Q: Where can i find help the forums are dead? *
* A: Try the discord the xbox community is helpful. *
* *
* Q: Where do i put the cerbios.ini? *
* A: Root of C:. *
* *
******************************************************************************

48
Cerbios Bios/cerbios.ini Normal file
View file

@ -0,0 +1,48 @@
; Cerbios Config
; Check For AV Pack
AVCheck = True
; LED Ring Color, G = Green, R = Red, A = Amber, O = Off
FrontLed = GGGG
; Fan Speed 0 = Default, 10-100 = Manual Control, Supports increments of 2's
FanSpeed = 0
; Drive Setup
; 0 = HDD & DVD, 1 = HDD & No DVD (Legacy Mode), 2 = HDD & No DVD (Modern Mode), 3 = Dual HDD
DriveSetup = 1
; Set Master Drive UDMA mode 0-6 on cold-boot
UdmaModeMaster = 2
; Set Slave Drive UDMA mode 0-6 on cold-boot (if enabled by DriveSetup = 3)
UdmaModeSlave = 2
; Enables Automatic Time Sync With Optional RTC Hardware Connected to SMBus
RtcEnable = False
; Forces AV Modes That Would Normally Be Rendered At 480i to 480p. Requires 480p Set In MS Dash And Component Cables
Force480p = False
; Forces VGA Modes For Component Cables Or Custom VGA Cables Using Mode(2+3) for VGA Displays Only, This Enables Force480p By Default & Sets Console To NTSC.
ForceVGA = False
; Load XDK Launcher/XBDM if it exists (Debug Bios Only)
Debug = False
; Blocks Games From Updating The Original Xbox Dashboard, Useful for softmods.
BlockDashUpdate = False
; CD Paths (always falls back to D:\default.xbe)
CdPath1 = D:\Evolutionx\evoxdash.xbe
CdPath2 = D:\Avalaunch\avalaunch.xbe
CdPath3 = D:\UnleashX\unleashx.xbe
; Dash Paths (always falls back to C:\xboxdash.xbe)
DashPath1 = C:\evoxdash.xbe
DashPath2 = C:\avalaunch.xbe
DashPath3 = C:\nexgen.xbe
; Boot Animation Path (always falls back to C:\BootAnims\Xbox\bootanim.xbe)
BootAnimPath = C:\BootAnims\Xbox\bootanim.xbe

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,112 @@
******************************************************************************
* *
* .:Release V2.4.2 Beta (Xbox V1.0 - 1.6) Only:. *
* *
******************************************************************************
******************************************************************************
* Version :.........V2.4.2 Beta * Size :......................256 KB *
* Date :....................18/08/24 * Type :...............Xbox Bios *
* Group :........Team CerBios * Platform :.........Microsoft Xbox *
******************************************************************************
* https://discord.gg/VcdSfajQGK *
******************************************************************************
******************************************************************************
*....:Changes/Additions:.....................................................*
******************************************************************************
* *
* --A new custom Bios for the Original Xbox.-- *
* *
* Release: V2.4.2 Beta *
* *
* The Dogs Are Back From Their Vacation (Fixed Splash Screen) *
* Improved Dual HDD Support. (DriveSetup = 3) *
* Updated UDMA Settings In INI To Support Both HDDS. Please Ensure You *
* are Running Latest Cerbios.INI *
* *
* New UDMA Settings: *
* ; Set Master Drive UDMA mode 0-6 on cold-boot *
* UdmaModeMaster = 2 *
* *
* ; Set Slave Drive UDMA mode 0-6 on cold-boot (Enable DriveSetup = 3) *
* UdmaModeSlave = 2 *
* *
* Released Updated Version Of LithiumX Which Allows Browsing Of 2nd HDD *
* Additional System Stability Improvements. *
* *
*.........................:Dual HDD Support Info?:...........................*
* This Is A First For The Original Xbox And You May Encounter Some Bugs. *
* Please Report Your Test Results In Our Discord Room For Future *
* Improvements. *
* *
* To Custom Format Your 2nd HDD You Will Require FATXplorer 3.0 beta 32 *
* or Higher. This Can Be Downloaded From The Below Link. *
* https://fatxplorer.eaton-works.com/3-0-beta/ *
* *
* Existing Partitions Are Supported With Dual HDD Configuration. *
* This Includes Stock HDD or Cerbios Formated Extended HDDS *
* *
*......................:Dashboard & Software Updates:........................*
* Existing Open Source Dashboards Will Need To Be Updated To Support *
* Secondary HDD "\Device\Harddisk1\Partition(#)\" *
* *
* Software Where Source Does Not Exist May Need To Be Patched Manually. *
* Please Share Any Patches Made With The Community. *
* *
* *
* #Please Contribute To Our Testing Efforts And Report Your Test Results, *
* Bugs, Or Any Other Feedback In Our Room On Discord. Your Input Is *
* Invaluable And Greatly Appreciated. *
* *
* We Are Already Hard At Work Towards Our Next Major Release. *
* *
* *
******************************************************************************
******************************************************************************
*....:Frequently Asked Questions:............................................*
******************************************************************************
* *
* Q: How do i format my HDD for extra partition support? *
* A: We have reached out to scene members with details. Their tools *
* will be updated to make this process easier for you. We will also *
* release a Xbox app that you can run on your xbox. *
* *
* Q: When will there be 1.4 - 1.6 support? *
* A: We currently have support for those hardware revisions disabled *
* during this alpha stage of testing. Once we are happy with the *
* testing and feedback received from the community we will introduce *
* new features & hardware support. *
* UPDATE: Xbox V1.4 SUPPORT ENABLED 09/04/2022 *
* UPDATE: Xbox V1.6 SUPPORT ENABLED 20/11/2022 *
* *
* Q: What about IGR & fan speed control, what gives? *
* A: Like mentioned above some features have been disabled. These will *
* make an appearance in future build releases. *
* UPDATE: IGR SUPPORT ENABLED 17/02/2022 *
* UPDATE: Custom Fan SUPPORT Added 22/04/2022 *
* *
* Q: My dashboard cant see my extra partitions 8-14. *
* A: Some dashboards were programed to only support F & G therefore *
* your extra partitions wont show. We suggest using XBMC which supports *
* 6 extra partitions. As new dashboards and apps are developed we are *
* sure that they will include support for extra partitions. *
* UPDATE: Larger Single Partition Support Added 22/04/2022 *
* *
* Q: Will this run on XEMU?. *
* A: Yes *
* *
* Q: How do i report my test results? *
* A: You can share your findings on the xboxscene forums or in the *
* Cerbios room on the xbox-scene discord. https://discord.gg/VcdSfajQGK *
* *
* Q: Where can i find help the forums are dead? *
* A: Try the discord the xbox community is helpful. *
* *
* Q: Where do i put the cerbios.ini? *
* A: Root of C:. *
* *
******************************************************************************

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more