Advertisement
NWPlayer123

Fun with buffers

Apr 8th, 2015
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include "coreinit.h"
  2.  
  3. void start()
  4. {
  5.     /* Load a good stack */
  6.     asm(
  7.             "lis %r1, 0x1ab5 ;"
  8.             "ori %r1, %r1, 0xd138 ;"
  9.     );
  10.  
  11.     /* Get a handle to coreinit.rpl */
  12.     unsigned int coreinit_handle, gx2_handle;
  13.     OSDynLoad_Acquire("coreinit.rpl", &coreinit_handle);
  14.     OSDynLoad_Acquire("gx2.rpl", &gx2_handle);
  15.  
  16.     void* (*OSAllocFromSystem)(int size, int align);
  17.     void (*DCFlushRange)(void *buffer, int length);
  18.     int (*GX2SetDRCBuffer)(void *buffer, int buffer_size, int variable1, int variable2, int variable3 );
  19.     int (*GX2SetDRCScale)(int x, int y);
  20.     int (*GX2SetDRCEnable)(int bool);
  21.  
  22.     /* Read the address of OSSetExceptionCallback() */
  23.     OSDynLoad_FindExport(coreinit_handle, 0, "OSAllocFromSystem", &OSAllocFromSystem);
  24.     OSDynLoad_FindExport(coreinit_handle, 0, "DCFlushRange", &DCFlushRange);
  25.     OSDynLoad_FindExport(gx2_handle, 0, "GX2SetDRCBuffer", &GX2SetDRCBuffer);
  26.     OSDynLoad_FindExport(gx2_handle, 0, "GX2SetDRCEnable", &GX2SetDRCEnable);
  27.     OSDynLoad_FindExport(gx2_handle, 0, "GX2SetDRCScale", &GX2SetDRCScale);
  28.  
  29.     //GX2SetDRCEnable(0);
  30.     //int ret1 = GX2SetDRCScale(20, 20);
  31.     int *buffer = 0xF4000000;
  32.     /*char buffer1[256];
  33.     __os_snprintf(buffer1, 256, "return: %d", buffer);
  34.     OSFatal(buffer1);*/
  35.     /*int i;
  36.     for (i = 0;i < 854*480*2;i++)
  37.     {
  38.         buffer[i] = 0xE100FFFF;
  39.     }
  40.     OSFatal("test");*/
  41.     DCFlushRange(buffer, 854*480*4*2);
  42.     //GX2SetDRCEnable(1);
  43.     int ret2 = GX2SetDRCBuffer(buffer, 854*480*4*2, 2, 0x41a, 1);
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement