main.cpp
上传用户:zhj2929
上传日期:2022-07-23
资源大小:28772k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. //-------------------------------------------------------------------------------------
  2. //
  3. // This is part of MarioDemo, a platformer demo for JGE++
  4. // 
  5. // Copyright (C) 2006 James Hui (a.k.a. Dr.Watson)
  6. // 
  7. // This program is free software; you can redistribute it and/or modify it
  8. // under the terms of the GNU General Public License as published by the Free
  9. // Software Foundation; either version 2 of the License, or (at your option) any
  10. // later version.
  11. // 
  12. // This program is distributed in the hope that it will be useful, but WITHOUT
  13. // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  14. // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  15. // 
  16. // You should have received a copy of the GNU General Public License along with
  17. // this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  18. // Place, Suite 330, Boston, MA 02111-1307 USA
  19. // 
  20. // Bugs and comments can be forwarded to jhkhui@yahoo.com. 
  21. // 
  22. //-------------------------------------------------------------------------------------
  23. #include <pspkernel.h> #include <pspdisplay.h> #include <pspdebug.h> 
  24. #include <psppower.h>
  25. #include "../../JGE/include/JGE.h"
  26. #include "../src/GameApp.h"
  27. #ifndef JGEApp_Title
  28. #define JGEApp_Title "JGE Demo"
  29. #endif
  30. // app name and version number PSP_MODULE_INFO(JGEApp_Title, 0x1000, 1, 1); // optional PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER); GameApp *game = NULL; JGE *engine = NULL;
  31. //------------------------------------------------------------------------------------------------
  32. // Exit callback int exit_callback(int arg1, int arg2, void *common) {
  33. if (engine != NULL) engine->End();
  34. return 0; } //------------------------------------------------------------------------------------------------
  35. // Callback thread int CallbackThread(SceSize args, void *argp) { int cbid; cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); return 0; } //------------------------------------------------------------------------------------------------
  36. // Sets up the callback thread and returns its thread id int SetupCallbacks(void) { int thid = 0;     thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);     if(thid >= 0)  { sceKernelStartThread(thid, 0, 0);     }     return thid; } 
  37. //------------------------------------------------------------------------------------------------
  38. // Custom exception handler
  39. void MyExceptionHandler(PspDebugRegBlock *regs)
  40. {
  41. pspDebugScreenInit();
  42. pspDebugScreenSetBackColor(0x00FF0000);
  43. pspDebugScreenSetTextColor(0xFFFFFFFF);
  44. pspDebugScreenClear();
  45. pspDebugScreenPrintf("I regret to inform you your psp has just crashedn");
  46. pspDebugScreenPrintf("Please contact Sony technical support for further informationnn");
  47. pspDebugScreenPrintf("Exception Details:n");
  48. pspDebugDumpException(regs);
  49. pspDebugScreenPrintf("nBlame the 3rd party software, it cannot possibly be our fault!n");
  50. sceKernelExitGame();
  51. }
  52. //------------------------------------------------------------------------------------------------
  53. // Sort of hack to install exception handler under USER THREAD
  54. __attribute__((constructor)) void handlerInit()
  55. {
  56.    pspKernelSetKernelPC();
  57.    pspDebugInstallErrorHandler(MyExceptionHandler);
  58. //------------------------------------------------------------------------------------------------
  59. // The main loop int main() { 
  60. scePowerSetClockFrequency(333, 333, 166); 
  61. SetupCallbacks(); 
  62. engine = JGECreate();
  63. //engine->Init(0);
  64. game = new GameApp(engine);
  65. game->Create();
  66. engine->SetApp(game);
  67. engine->Run();
  68. game->Destroy();
  69. delete game;
  70. game = NULL;
  71. JGERelease();
  72. sceKernelExitGame();
  73. return 0;  }