Main.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #include "Main.h"
  2. #include <Ogre.h>
  3. #include <stdio.h>
  4. #include <iostream>
  5. #include "../../common/BinGZipFile.h"
  6. #include "common/FileSystem.h"
  7. #include "../../common/Logger.h"
  8. #include "../../common/TimToVram.h"
  9. #include "../../common/OgreGenUtilites.h"
  10. #include "FontFile.h"
  11. int state;
  12. int
  13. main( int argc, char *argv[] )
  14. {
  15. Ogre::Root* root;
  16. Ogre::RenderWindow* window;
  17. root = new Ogre::Root( "", "" );
  18. #ifndef _DEBUG
  19. root->loadPlugin( "RenderSystem_GL.dll" );
  20. #else
  21. root->loadPlugin( "RenderSystem_GL_d.dll" );
  22. #endif
  23. root->setRenderSystem( root->getAvailableRenderers()[ 0 ] );
  24. root->initialise( false );
  25. Ogre::NameValuePairList misc;
  26. misc[ "title" ] = "FFVII Exporter";
  27. window = root->createRenderWindow( "QGearsWindow", 800, 600, false, &misc );
  28. LOGGER = new Logger( "game.log" );
  29. state = GAME;
  30. {
  31. BinGZipFile* file = new BinGZipFile( "data/en/WINDOW.BIN" );
  32. File* font_graf = file->ExtractGZip( 1 );
  33. File* font_padding = file->ExtractGZip( 2 );
  34. FontFile font( font_padding );
  35. font.Export( "export_en/ui/fonts/ffvii_en.xml", true );
  36. //font_graf->WriteFile( "font.tim" );
  37. Vram* vram = Vram::MakeInstance().release();
  38. LoadTimFileToVram( font_graf, 0, vram );
  39. //vram->Save( "text" );
  40. Ogre::TexturePtr ptex;
  41. Ogre::HardwarePixelBufferSharedPtr buffer;
  42. ptex = Ogre::TextureManager::getSingleton().createManual( "DynaTex", "General", Ogre::TEX_TYPE_2D, 256, 256, 0, Ogre::PF_R8G8B8A8, Ogre::TU_STATIC );
  43. buffer = ptex->getBuffer( 0, 0 );
  44. buffer->lock( Ogre::HardwareBuffer::HBL_DISCARD );
  45. const Ogre::PixelBox& pb = buffer->getCurrentLock();
  46. CreateTextureFromVram( pb, vram, 0, 0, 0x80, 0x1f7, 0x380, 0x100, BPP_4 , false );
  47. Ogre::Image image;
  48. image.loadDynamicImage( ( Ogre::uchar* )pb.data, 256, 256, Ogre::PF_R8G8B8A8 );
  49. image.save( "export_en/ui/fonts/ffvii_en.png" );
  50. buffer->unlock();
  51. delete vram;
  52. delete file;
  53. }
  54. {
  55. BinGZipFile* file = new BinGZipFile( "data/jp/WINDOW.BIN" );
  56. File* font_graf = file->ExtractGZip( 1 );
  57. File* font_graf2 = file->ExtractGZip( 2 );
  58. File* font_padding = file->ExtractGZip( 3 );
  59. font_padding->WriteFile( "font_padding.dat" );
  60. FontFile font( font_padding );
  61. font.Export( "export_jp/ui/fonts/ffvii_jp.xml", false );
  62. font_graf->WriteFile( "font.tim" );
  63. font_graf2->WriteFile( "font2.tim" );
  64. Vram* vram = Vram::MakeInstance().release();
  65. LoadTimFileToVram( font_graf, 0, vram );
  66. LoadTimFileToVram( font_graf2, 0, vram );
  67. //vram->Save( "text" );
  68. Ogre::TexturePtr ptex;
  69. Ogre::HardwarePixelBufferSharedPtr buffer;
  70. ptex = Ogre::TextureManager::getSingleton().createManual( "DynaTex", "General", Ogre::TEX_TYPE_2D, 512, 256, 0, Ogre::PF_R8G8B8A8, Ogre::TU_STATIC );
  71. buffer = ptex->getBuffer( 0, 0 );
  72. buffer->lock( Ogre::HardwareBuffer::HBL_DISCARD );
  73. const Ogre::PixelBox& pb = buffer->getCurrentLock();
  74. CreateTextureFromVram( pb, vram, 0, 0, 0x80, 0x1f7, 0x380, 0x100, BPP_4 , false );
  75. CreateTextureFromVram( pb, vram, 256, 0, 0x90, 0x1f7, 0x380, 0x100, BPP_4 , false );
  76. Ogre::Image image;
  77. image.loadDynamicImage( ( Ogre::uchar* )pb.data, 512, 256, Ogre::PF_R8G8B8A8 );
  78. image.save( "export_jp/ui/fonts/ffvii_jp.png" );
  79. buffer->unlock();
  80. delete vram;
  81. delete file;
  82. }
  83. {
  84. File sword( "sword.tim" );
  85. Vram* vram = Vram::MakeInstance().release();
  86. LoadTimFileToVram( &sword, 0, vram );
  87. //vram->Save( "sword" );
  88. Ogre::TexturePtr ptex;
  89. Ogre::HardwarePixelBufferSharedPtr buffer;
  90. ptex = Ogre::TextureManager::getSingleton().createManual( "DynaTex", "General", Ogre::TEX_TYPE_2D, 256, 256, 0, Ogre::PF_R8G8B8A8, Ogre::TU_STATIC );
  91. buffer = ptex->getBuffer( 0, 0 );
  92. buffer->lock( Ogre::HardwareBuffer::HBL_DISCARD );
  93. const Ogre::PixelBox& pb = buffer->getCurrentLock();
  94. CreateTextureFromVram( pb, vram, 0, 0, 0x0, 0x1e0, 0x0, 0x0, BPP_8 , false );
  95. Ogre::Image image;
  96. image.loadDynamicImage( ( Ogre::uchar* )pb.data, 256, 256, Ogre::PF_R8G8B8A8 );
  97. image.save( "sword.png" );
  98. buffer->unlock();
  99. delete vram;
  100. }
  101. LOGGER->Log("===================== Stop the game!!!");
  102. delete LOGGER;
  103. delete root;
  104. return 0;
  105. }