commit
257fed3228
|
@ -27,7 +27,7 @@ CTR_STACK_SIZE = 0x400000
|
||||||
else
|
else
|
||||||
CTR_STACK_SIZE = 0x100000
|
CTR_STACK_SIZE = 0x100000
|
||||||
endif
|
endif
|
||||||
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
include ctr/Makefile.cores
|
include ctr/Makefile.cores
|
||||||
|
|
||||||
|
@ -178,9 +178,7 @@ else
|
||||||
OBJS += menu/menu_entry.o
|
OBJS += menu/menu_entry.o
|
||||||
OBJS += menu/menu_entries.o
|
OBJS += menu/menu_entries.o
|
||||||
OBJS += menu/menu_setting.o
|
OBJS += menu/menu_setting.o
|
||||||
OBJS += menu/menu_list.o
|
|
||||||
OBJS += menu/menu_cbs.o
|
OBJS += menu/menu_cbs.o
|
||||||
OBJS += menu/menu_video.o
|
|
||||||
OBJS += menu/cbs/menu_cbs_ok.o
|
OBJS += menu/cbs/menu_cbs_ok.o
|
||||||
OBJS += menu/cbs/menu_cbs_cancel.o
|
OBJS += menu/cbs/menu_cbs_cancel.o
|
||||||
OBJS += menu/cbs/menu_cbs_select.o
|
OBJS += menu/cbs/menu_cbs_select.o
|
||||||
|
|
|
@ -11,6 +11,7 @@ ifeq ($(LIBRETRO), gambatte)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), gpsp)
|
else ifeq ($(LIBRETRO), gpsp)
|
||||||
APP_TITLE = gpSP Libretro
|
APP_TITLE = gpSP Libretro
|
||||||
|
@ -23,6 +24,7 @@ else ifeq ($(LIBRETRO), gpsp)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), fceumm)
|
else ifeq ($(LIBRETRO), fceumm)
|
||||||
APP_TITLE = FCeumm Libretro
|
APP_TITLE = FCeumm Libretro
|
||||||
|
@ -35,6 +37,7 @@ else ifeq ($(LIBRETRO), fceumm)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), nestopia)
|
else ifeq ($(LIBRETRO), nestopia)
|
||||||
APP_TITLE = Nestopia Libretro
|
APP_TITLE = Nestopia Libretro
|
||||||
|
@ -47,6 +50,7 @@ else ifeq ($(LIBRETRO), nestopia)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), nxengine)
|
else ifeq ($(LIBRETRO), nxengine)
|
||||||
APP_TITLE = NXengine Libretro
|
APP_TITLE = NXengine Libretro
|
||||||
|
@ -59,6 +63,7 @@ else ifeq ($(LIBRETRO), nxengine)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), genesis_plus_gx)
|
else ifeq ($(LIBRETRO), genesis_plus_gx)
|
||||||
APP_TITLE = Genesis Plus GX Libretro
|
APP_TITLE = Genesis Plus GX Libretro
|
||||||
|
@ -71,6 +76,7 @@ else ifeq ($(LIBRETRO), genesis_plus_gx)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), catsfc)
|
else ifeq ($(LIBRETRO), catsfc)
|
||||||
APP_TITLE = CATSFC Libretro
|
APP_TITLE = CATSFC Libretro
|
||||||
|
@ -83,6 +89,7 @@ else ifeq ($(LIBRETRO), catsfc)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), mednafen_wswan)
|
else ifeq ($(LIBRETRO), mednafen_wswan)
|
||||||
APP_TITLE = Mednafen wswan Libretro
|
APP_TITLE = Mednafen wswan Libretro
|
||||||
|
@ -95,6 +102,7 @@ else ifeq ($(LIBRETRO), mednafen_wswan)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), mednafen_vb)
|
else ifeq ($(LIBRETRO), mednafen_vb)
|
||||||
APP_TITLE = Mednafen VB Libretro
|
APP_TITLE = Mednafen VB Libretro
|
||||||
|
@ -107,6 +115,7 @@ else ifeq ($(LIBRETRO), mednafen_vb)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), mednafen_ngp)
|
else ifeq ($(LIBRETRO), mednafen_ngp)
|
||||||
APP_TITLE = Mednafen NGP Libretro
|
APP_TITLE = Mednafen NGP Libretro
|
||||||
|
@ -119,6 +128,7 @@ else ifeq ($(LIBRETRO), mednafen_ngp)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), 2048)
|
else ifeq ($(LIBRETRO), 2048)
|
||||||
APP_TITLE = 2048 Libretro
|
APP_TITLE = 2048 Libretro
|
||||||
|
@ -131,6 +141,7 @@ else ifeq ($(LIBRETRO), 2048)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), picodrive)
|
else ifeq ($(LIBRETRO), picodrive)
|
||||||
APP_TITLE = Picodrive Libretro
|
APP_TITLE = Picodrive Libretro
|
||||||
|
@ -143,6 +154,7 @@ else ifeq ($(LIBRETRO), picodrive)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), snes9x_next)
|
else ifeq ($(LIBRETRO), snes9x_next)
|
||||||
APP_TITLE = Snes9x Next Libretro
|
APP_TITLE = Snes9x Next Libretro
|
||||||
|
@ -155,6 +167,7 @@ else ifeq ($(LIBRETRO), snes9x_next)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), mgba)
|
else ifeq ($(LIBRETRO), mgba)
|
||||||
APP_TITLE = mGBA Libretro
|
APP_TITLE = mGBA Libretro
|
||||||
|
@ -167,6 +180,7 @@ else ifeq ($(LIBRETRO), mgba)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), quicknes)
|
else ifeq ($(LIBRETRO), quicknes)
|
||||||
APP_TITLE = QuickNES Libretro
|
APP_TITLE = QuickNES Libretro
|
||||||
|
@ -179,6 +193,7 @@ else ifeq ($(LIBRETRO), quicknes)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), fb_alpha_neo)
|
else ifeq ($(LIBRETRO), fb_alpha_neo)
|
||||||
APP_TITLE = Neo Geo (FB Alpha)
|
APP_TITLE = Neo Geo (FB Alpha)
|
||||||
|
@ -191,6 +206,7 @@ else ifeq ($(LIBRETRO), fb_alpha_neo)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
APP_SYSTEM_MODE = 80MB
|
APP_SYSTEM_MODE = 80MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), fb_alpha_cps1)
|
else ifeq ($(LIBRETRO), fb_alpha_cps1)
|
||||||
APP_TITLE = Final Burn Alpha - CPS-1
|
APP_TITLE = Final Burn Alpha - CPS-1
|
||||||
|
@ -203,6 +219,7 @@ else ifeq ($(LIBRETRO), fb_alpha_cps1)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), fb_alpha_cps2)
|
else ifeq ($(LIBRETRO), fb_alpha_cps2)
|
||||||
APP_TITLE = Final Burn Alpha - CPS-2
|
APP_TITLE = Final Burn Alpha - CPS-2
|
||||||
|
@ -215,6 +232,7 @@ else ifeq ($(LIBRETRO), fb_alpha_cps2)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
APP_SYSTEM_MODE = 80MB
|
APP_SYSTEM_MODE = 80MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), catsfc_plus)
|
else ifeq ($(LIBRETRO), catsfc_plus)
|
||||||
APP_TITLE = CATSFC Plus Libretro
|
APP_TITLE = CATSFC Plus Libretro
|
||||||
|
@ -227,6 +245,7 @@ else ifeq ($(LIBRETRO), catsfc_plus)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), mednafen_pce_fast)
|
else ifeq ($(LIBRETRO), mednafen_pce_fast)
|
||||||
APP_TITLE = Mednafen/Beetle PCE FAST
|
APP_TITLE = Mednafen/Beetle PCE FAST
|
||||||
|
@ -239,6 +258,7 @@ else ifeq ($(LIBRETRO), mednafen_pce_fast)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), pcsx_rearmed)
|
else ifeq ($(LIBRETRO), pcsx_rearmed)
|
||||||
APP_TITLE = PCSX ReARMed
|
APP_TITLE = PCSX ReARMed
|
||||||
|
@ -251,6 +271,7 @@ else ifeq ($(LIBRETRO), pcsx_rearmed)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
CTR_LINEAR_HEAP_SIZE = 0xE00000
|
||||||
|
|
||||||
else ifeq ($(LIBRETRO), fmsx)
|
else ifeq ($(LIBRETRO), fmsx)
|
||||||
APP_TITLE = fMSX
|
APP_TITLE = fMSX
|
||||||
|
@ -263,5 +284,6 @@ else ifeq ($(LIBRETRO), fmsx)
|
||||||
#APP_AUDIO = ctr/silent.wav
|
#APP_AUDIO = ctr/silent.wav
|
||||||
#APP_SYSTEM_MODE = 64MB
|
#APP_SYSTEM_MODE = 64MB
|
||||||
#APP_SYSTEM_MODE_EXT = Legacy
|
#APP_SYSTEM_MODE_EXT = Legacy
|
||||||
|
#CTR_LINEAR_HEAP_SIZE = 0x600000
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
#include "../../file_ext.h"
|
#include "../../file_ext.h"
|
||||||
#else
|
#else
|
||||||
#include "../../menu/menu.h"
|
#include "../../menu/menu.h"
|
||||||
#include "../../menu/menu_list.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char* elf_path_cst = "sdmc:/retroarch/test.3dsx";
|
const char* elf_path_cst = "sdmc:/retroarch/test.3dsx";
|
||||||
|
@ -50,7 +49,7 @@ extern char* fake_heap_start;
|
||||||
extern char* fake_heap_end;
|
extern char* fake_heap_end;
|
||||||
u32 __linear_heap;
|
u32 __linear_heap;
|
||||||
u32 __heapBase;
|
u32 __heapBase;
|
||||||
static u32 heap_size;
|
u32 heap_size;
|
||||||
extern u32 linear_heap_size;
|
extern u32 linear_heap_size;
|
||||||
|
|
||||||
extern void (*__system_retAddr)(void);
|
extern void (*__system_retAddr)(void);
|
||||||
|
|
|
@ -258,16 +258,17 @@ static void* ctr_init(const video_info_t* video,
|
||||||
ctr->vp.full_height = CTR_TOP_FRAMEBUFFER_HEIGHT;
|
ctr->vp.full_height = CTR_TOP_FRAMEBUFFER_HEIGHT;
|
||||||
|
|
||||||
|
|
||||||
ctr->display_list_size = 0x40000;
|
ctr->display_list_size = 0x400;
|
||||||
ctr->display_list = linearAlloc(ctr->display_list_size * sizeof(uint32_t));
|
ctr->display_list = linearAlloc(ctr->display_list_size * sizeof(uint32_t));
|
||||||
GPU_Reset(NULL, ctr->display_list, ctr->display_list_size);
|
GPU_Reset(NULL, ctr->display_list, ctr->display_list_size);
|
||||||
|
|
||||||
ctr->texture_width = 1024;
|
ctr->rgb32 = video->rgb32;
|
||||||
ctr->texture_height = 512;
|
ctr->texture_width = video->input_scale * RARCH_SCALE_BASE;
|
||||||
|
ctr->texture_height = video->input_scale * RARCH_SCALE_BASE;
|
||||||
ctr->texture_linear =
|
ctr->texture_linear =
|
||||||
linearMemAlign(ctr->texture_width * ctr->texture_height * sizeof(uint32_t), 128);
|
linearMemAlign(ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2), 128);
|
||||||
ctr->texture_swizzled =
|
ctr->texture_swizzled =
|
||||||
linearMemAlign(ctr->texture_width * ctr->texture_height * sizeof(uint32_t), 128);
|
linearMemAlign(ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2), 128);
|
||||||
|
|
||||||
ctr->frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
ctr->frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
||||||
ctr->frame_coords->x0 = 0;
|
ctr->frame_coords->x0 = 0;
|
||||||
|
@ -281,9 +282,9 @@ static void* ctr_init(const video_info_t* video,
|
||||||
ctr->menu.texture_width = 512;
|
ctr->menu.texture_width = 512;
|
||||||
ctr->menu.texture_height = 512;
|
ctr->menu.texture_height = 512;
|
||||||
ctr->menu.texture_linear =
|
ctr->menu.texture_linear =
|
||||||
linearMemAlign(ctr->texture_width * ctr->texture_height * sizeof(uint16_t), 128);
|
linearMemAlign(ctr->menu.texture_width * ctr->menu.texture_height * sizeof(uint16_t), 128);
|
||||||
ctr->menu.texture_swizzled =
|
ctr->menu.texture_swizzled =
|
||||||
linearMemAlign(ctr->texture_width * ctr->texture_height * sizeof(uint16_t), 128);
|
linearMemAlign(ctr->menu.texture_width * ctr->menu.texture_height * sizeof(uint16_t), 128);
|
||||||
|
|
||||||
ctr->menu.frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
ctr->menu.frame_coords = linearAlloc(sizeof(ctr_vertex_t));
|
||||||
|
|
||||||
|
@ -365,7 +366,8 @@ static void* ctr_init(const video_info_t* video,
|
||||||
|
|
||||||
ctr->keep_aspect = true;
|
ctr->keep_aspect = true;
|
||||||
ctr->should_resize = true;
|
ctr->should_resize = true;
|
||||||
ctr->smooth = true;
|
ctr->smooth = video->smooth;
|
||||||
|
ctr->vsync = video->vsync;
|
||||||
ctr->lcd_buttom_on = true;
|
ctr->lcd_buttom_on = true;
|
||||||
|
|
||||||
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
||||||
|
@ -459,6 +461,11 @@ static bool ctr_frame(void* data, const void* frame,
|
||||||
frames = 0;
|
frames = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// extern u32 __linear_heap_size;
|
||||||
|
// extern u32 gpuCmdBufOffset;
|
||||||
|
// extern u32 heap_size;
|
||||||
|
// printf("0x%08X 0x%08X 0x%08X\r", heap_size, gpuCmdBufOffset, (__linear_heap_size - linearSpaceFree() +0x3FF) & ~0x3FF);
|
||||||
|
// printf("fps: %8.4f frames: %i (%X)\r", fps, total_frames++, (__linear_heap_size - linearSpaceFree()));
|
||||||
printf("fps: %8.4f frames: %i\r", fps, total_frames++);
|
printf("fps: %8.4f frames: %i\r", fps, total_frames++);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
@ -488,37 +495,36 @@ static bool ctr_frame(void* data, const void* frame,
|
||||||
&& !((pitch) & 0xF)) /* 16-byte aligned */
|
&& !((pitch) & 0xF)) /* 16-byte aligned */
|
||||||
{
|
{
|
||||||
/* can copy the buffer directly with the GPU */
|
/* can copy the buffer directly with the GPU */
|
||||||
ctrGuCopyImage(false, frame, pitch / 2, height, CTRGU_RGB565, false,
|
ctrGuCopyImage(false, frame, pitch / (ctr->rgb32? 4: 2), height, ctr->rgb32 ? CTRGU_RGBA8: CTRGU_RGB565, false,
|
||||||
ctr->texture_swizzled, ctr->texture_width, CTRGU_RGB565, true);
|
ctr->texture_swizzled, ctr->texture_width, ctr->rgb32 ? CTRGU_RGBA8: CTRGU_RGB565, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint16_t *dst = (uint16_t*)ctr->texture_linear;
|
uint8_t *dst = (uint8_t*)ctr->texture_linear;
|
||||||
const uint8_t *src = frame;
|
const uint8_t *src = frame;
|
||||||
|
|
||||||
for (i = 0; i < height; i++)
|
for (i = 0; i < height; i++)
|
||||||
{
|
{
|
||||||
memcpy(dst, src, width * sizeof(uint16_t));
|
memcpy(dst, src, width * (ctr->rgb32? 4: 2));
|
||||||
dst += ctr->texture_width;
|
dst += ctr->texture_width * (ctr->rgb32? 4: 2);
|
||||||
src += pitch;
|
src += pitch;
|
||||||
}
|
}
|
||||||
GSPGPU_FlushDataCache(NULL, ctr->texture_linear,
|
GSPGPU_FlushDataCache(NULL, ctr->texture_linear,
|
||||||
ctr->texture_width * ctr->texture_height * sizeof(uint16_t));
|
ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4: 2));
|
||||||
|
|
||||||
ctrGuCopyImage(false, ctr->texture_linear, ctr->texture_width, ctr->menu.texture_height, CTRGU_RGB565, false,
|
ctrGuCopyImage(false, ctr->texture_linear, ctr->texture_width, ctr->texture_height, ctr->rgb32 ? CTRGU_RGBA8: CTRGU_RGB565, false,
|
||||||
ctr->texture_swizzled, ctr->texture_width, CTRGU_RGB565, true);
|
ctr->texture_swizzled, ctr->texture_width, ctr->rgb32 ? CTRGU_RGBA8: CTRGU_RGB565, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ctrGuSetTexture(GPU_TEXUNIT0, VIRT_TO_PHYS(ctr->texture_swizzled), ctr->texture_width, ctr->texture_height,
|
ctrGuSetTexture(GPU_TEXUNIT0, VIRT_TO_PHYS(ctr->texture_swizzled), ctr->texture_width, ctr->texture_height,
|
||||||
(ctr->smooth? GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR)
|
(ctr->smooth? GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) | GPU_TEXTURE_MIN_FILTER(GPU_LINEAR)
|
||||||
: GPU_TEXTURE_MAG_FILTER(GPU_NEAREST) | GPU_TEXTURE_MIN_FILTER(GPU_NEAREST)) |
|
: GPU_TEXTURE_MAG_FILTER(GPU_NEAREST) | GPU_TEXTURE_MIN_FILTER(GPU_NEAREST)) |
|
||||||
GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE),
|
GPU_TEXTURE_WRAP_S(GPU_CLAMP_TO_EDGE) | GPU_TEXTURE_WRAP_T(GPU_CLAMP_TO_EDGE),
|
||||||
GPU_RGB565);
|
ctr->rgb32 ? GPU_RGBA8: GPU_RGB565);
|
||||||
|
|
||||||
ctr->frame_coords->u = width;
|
ctr->frame_coords->u = width;
|
||||||
ctr->frame_coords->v = height;
|
ctr->frame_coords->v = height;
|
||||||
|
@ -526,8 +532,49 @@ static bool ctr_frame(void* data, const void* frame,
|
||||||
|
|
||||||
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->frame_coords));
|
ctrGuSetAttributeBuffersAddress(VIRT_TO_PHYS(ctr->frame_coords));
|
||||||
ctrGuSetVertexShaderFloatUniform(0, (float*)&ctr->scale_vector, 1);
|
ctrGuSetVertexShaderFloatUniform(0, (float*)&ctr->scale_vector, 1);
|
||||||
|
|
||||||
|
/* ARGB --> RGBA */
|
||||||
|
if (ctr->rgb32)
|
||||||
|
{
|
||||||
|
GPU_SetTexEnv(0,
|
||||||
|
GPU_TEVSOURCES(GPU_TEXTURE0, GPU_CONSTANT, 0),
|
||||||
|
GPU_TEVSOURCES(GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR, 0),
|
||||||
|
GPU_TEVOPERANDS(GPU_TEVOP_RGB_SRC_G, 0, 0),
|
||||||
|
GPU_TEVOPERANDS(0, 0, 0),
|
||||||
|
GPU_MODULATE, GPU_MODULATE,
|
||||||
|
0x0000FF);
|
||||||
|
GPU_SetTexEnv(1,
|
||||||
|
GPU_TEVSOURCES(GPU_TEXTURE0, GPU_CONSTANT, GPU_PREVIOUS),
|
||||||
|
GPU_TEVSOURCES(GPU_PREVIOUS, GPU_PREVIOUS, 0),
|
||||||
|
GPU_TEVOPERANDS(GPU_TEVOP_RGB_SRC_B, 0, 0),
|
||||||
|
GPU_TEVOPERANDS(0, 0, 0),
|
||||||
|
GPU_MULTIPLY_ADD, GPU_MODULATE,
|
||||||
|
0x00FF00);
|
||||||
|
GPU_SetTexEnv(2,
|
||||||
|
GPU_TEVSOURCES(GPU_TEXTURE0, GPU_CONSTANT, GPU_PREVIOUS),
|
||||||
|
GPU_TEVSOURCES(GPU_PREVIOUS, GPU_PREVIOUS, 0),
|
||||||
|
GPU_TEVOPERANDS(GPU_TEVOP_RGB_SRC_ALPHA, 0, 0),
|
||||||
|
GPU_TEVOPERANDS(0, 0, 0),
|
||||||
|
GPU_MULTIPLY_ADD, GPU_MODULATE,
|
||||||
|
0xFF0000);
|
||||||
|
}
|
||||||
|
|
||||||
GPU_DrawArray(GPU_UNKPRIM, 0, 1);
|
GPU_DrawArray(GPU_UNKPRIM, 0, 1);
|
||||||
|
|
||||||
|
/* restore */
|
||||||
|
if (ctr->rgb32)
|
||||||
|
{
|
||||||
|
GPU_SetTexEnv(0,
|
||||||
|
GPU_TEVSOURCES(GPU_TEXTURE0, GPU_PRIMARY_COLOR, 0),
|
||||||
|
GPU_TEVSOURCES(GPU_TEXTURE0, GPU_PRIMARY_COLOR, 0),
|
||||||
|
GPU_TEVOPERANDS(0, 0, 0),
|
||||||
|
GPU_TEVOPERANDS(0, 0, 0),
|
||||||
|
GPU_MODULATE, GPU_MODULATE,
|
||||||
|
0xFFFFFFFF);
|
||||||
|
GPU_SetTexEnv(1, GPU_PREVIOUS,GPU_PREVIOUS, 0, 0, 0, 0, 0);
|
||||||
|
GPU_SetTexEnv(2, GPU_PREVIOUS,GPU_PREVIOUS, 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (ctr->menu_texture_enable)
|
if (ctr->menu_texture_enable)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,14 @@
|
||||||
|
|
||||||
#define CTRGU_SIZE(W,H) (((u32)(W)&0xFFFF)|((u32)(H)<<16))
|
#define CTRGU_SIZE(W,H) (((u32)(W)&0xFFFF)|((u32)(H)<<16))
|
||||||
|
|
||||||
|
|
||||||
|
/* from ctrulib/great-refactor */
|
||||||
|
#define GPU_TEVOP_RGB_SRC_G 0x8
|
||||||
|
#define GPU_TEVOP_RGB_SRC_B 0xC
|
||||||
|
#define GPU_TEVOP_RGB_SRC_ALPHA 0x2
|
||||||
|
#define GPU_MULTIPLY_ADD 0x8
|
||||||
|
/*******************************/
|
||||||
|
|
||||||
/* DMA flags */
|
/* DMA flags */
|
||||||
#define CTRGU_DMA_VFLIP (1 << 0)
|
#define CTRGU_DMA_VFLIP (1 << 0)
|
||||||
#define CTRGU_DMA_L_TO_T (1 << 1)
|
#define CTRGU_DMA_L_TO_T (1 << 1)
|
||||||
|
@ -54,6 +62,8 @@
|
||||||
#ifndef DEBUG_HOLD
|
#ifndef DEBUG_HOLD
|
||||||
void wait_for_input(void);
|
void wait_for_input(void);
|
||||||
#define DEBUG_HOLD() do{printf("%s@%s:%d.\n",__FUNCTION__, __FILE__, __LINE__);fflush(stdout);wait_for_input();}while(0)
|
#define DEBUG_HOLD() do{printf("%s@%s:%d.\n",__FUNCTION__, __FILE__, __LINE__);fflush(stdout);wait_for_input();}while(0)
|
||||||
|
#define DEBUG_VAR(X) printf( "%-20s: 0x%08X\n", #X, (u32)(X))
|
||||||
|
#define DEBUG_VAR64(X) printf( #X"\r\t\t\t\t : 0x%016llX\n", (u64)(X))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue