Skip to content

Commit

Permalink
(3DS) implement dynamic memory management.
Browse files Browse the repository at this point in the history
heap/linear heap and stack sizes can now change dynamically at runtime,
depending on usage, no need to specify those on a per-core basis
anymore.
  • Loading branch information
aliaspider committed Nov 2, 2015
1 parent d4f037f commit 8741ec4
Show file tree
Hide file tree
Showing 12 changed files with 815 additions and 430 deletions.
74 changes: 25 additions & 49 deletions Makefile.ctr
Original file line number Diff line number Diff line change
@@ -1,42 +1,34 @@
TARGET := retroarch_3ds
LIBRETRO =

DEBUG = 0
GRIFFIN_BUILD = 1
WHOLE_ARCHIVE_LINK = 0
BIG_STACK = 0
BUILD_3DSX = 1
BUILD_3DS = 1
BUILD_CIA = 1

APP_TITLE = Retroarch 3DS
APP_DESCRIPTION = Retroarch 3DS
APP_AUTHOR = Team Libretro
APP_PRODUCT_CODE = RETROARCH-3DS
APP_UNIQUE_ID = 0xBAC00
APP_ICON = ctr/default.png
APP_BANNER = ctr/libretro_banner.png
APP_AUDIO = ctr/silent.wav
APP_RSF = ctr/tools/template.rsf
APP_SYSTEM_MODE = 64MB
APP_SYSTEM_MODE_EXT = 124MB


ifeq ($(BIG_STACK),1)
CTR_STACK_SIZE = 0x400000
else
CTR_STACK_SIZE = 0x100000
endif
CTR_LINEAR_HEAP_SIZE = 0x600000
CTR_MAX_HEAP_SIZE = 0x6000000
DEBUG = 0
GRIFFIN_BUILD = 1
WHOLE_ARCHIVE_LINK = 0
BUILD_3DSX = 1
BUILD_3DS = 1
BUILD_CIA = 1

APP_TITLE = Retroarch 3DS
APP_DESCRIPTION = Retroarch 3DS
APP_AUTHOR = Team Libretro
APP_PRODUCT_CODE = RETROARCH-3DS
APP_UNIQUE_ID = 0xBAC00
APP_ICON = ctr/default.png
APP_BANNER = ctr/libretro_banner.png
APP_AUDIO = ctr/silent.wav
APP_RSF = ctr/tools/template.rsf
APP_SYSTEM_MODE = 64MB
APP_SYSTEM_MODE_EXT = 124MB

include ctr/Makefile.cores

CONFIG_OBJECT = ctr/ctr_config_$(CTR_STACK_SIZE)_$(CTR_LINEAR_HEAP_SIZE)_$(CTR_MAX_HEAP_SIZE).o

OBJS :=
OBJS += gfx/drivers/ctr_sprite.o
OBJS += $(CONFIG_OBJECT)
OBJS += ctr/stack_adjust.o
OBJS += ctr/ctr_system.o
OBJS += ctr/ctr_memory.o
OBJS += ctr/ctr_linear.o

ifeq ($(GRIFFIN_BUILD), 1)
OBJS += griffin/griffin.o
else
Expand Down Expand Up @@ -270,6 +262,7 @@ ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp

CFLAGS += -mword-relocations \
-fomit-frame-pointer -ffast-math \
-Werror=implicit-function-declaration \
$(ARCH)

#CFLAGS += -Wall
Expand All @@ -286,19 +279,6 @@ ifeq ($(WHOLE_ARCHIVE_LINK), 1)
WHOLE_END := -Wl,--no-whole-archive
endif

ifneq ($(CTR_STACK_SIZE),)
CFLAGS += -DCTR_STACK_SIZE=$(CTR_STACK_SIZE)
endif

ifneq ($(CTR_LINEAR_HEAP_SIZE),)
CFLAGS += -DCTR_LINEAR_HEAP_SIZE=$(CTR_LINEAR_HEAP_SIZE)
endif

ifneq ($(CTR_MAX_HEAP_SIZE),)
CFLAGS += -DCTR_MAX_HEAP_SIZE=$(CTR_MAX_HEAP_SIZE)
endif


CFLAGS += -I. -Ideps/zlib -Ideps/7zip -Ilibretro-common/include

CFLAGS += -DRARCH_INTERNAL -DRARCH_CONSOLE -DSINC_LOWEST_QUALITY
Expand Down Expand Up @@ -365,11 +345,6 @@ else
BANNERTOOL = ctr/tools/bannertool.exe
endif


$(CONFIG_OBJECT): ctr/ctr_config.c
rm -f ctr/ctr_config_*.o
$(CC) -c -o $@ $< $(CFLAGS) $(INCDIRS)

%.o: %.shader
python $(AEMSTRO)/aemstro_as.py $< $(notdir $<).shbin
$(DEVKITARM)/bin/bin2s $(notdir $<).shbin | $(PREFIX)as -o $@
Expand Down Expand Up @@ -425,6 +400,7 @@ clean:
rm -f $(TARGET).elf
rm -f $(TARGET).3ds
rm -f $(TARGET).cia
rm -f $(TARGET).smdh
rm -f $(TARGET).bnr
rm -f $(TARGET).icn
rm -f *_shader_shbin.h
Expand Down
65 changes: 0 additions & 65 deletions ctr/Makefile.cores
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ ifeq ($(LIBRETRO), gambatte)
APP_ICON = ctr/gambatte.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), gpsp)
APP_TITLE = gpSP Libretro
Expand All @@ -22,9 +19,6 @@ else ifeq ($(LIBRETRO), gpsp)
APP_ICON = ctr/gpsp.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), fceumm)
APP_TITLE = FCeumm Libretro
Expand All @@ -35,9 +29,6 @@ else ifeq ($(LIBRETRO), fceumm)
APP_ICON = ctr/fceumm.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), nestopia)
APP_TITLE = Nestopia Libretro
Expand All @@ -48,9 +39,6 @@ else ifeq ($(LIBRETRO), nestopia)
APP_ICON = ctr/nestopia.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), nxengine)
APP_TITLE = NXengine Libretro
Expand All @@ -61,9 +49,6 @@ else ifeq ($(LIBRETRO), nxengine)
APP_ICON = ctr/nxengine.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), genesis_plus_gx)
APP_TITLE = Genesis Plus GX Libretro
Expand All @@ -74,9 +59,6 @@ else ifeq ($(LIBRETRO), genesis_plus_gx)
APP_ICON = ctr/genesis_plus_gx.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), catsfc)
APP_TITLE = CATSFC Libretro
Expand All @@ -87,9 +69,6 @@ else ifeq ($(LIBRETRO), catsfc)
APP_ICON = ctr/catsfc.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), mednafen_wswan)
APP_TITLE = Mednafen wswan Libretro
Expand All @@ -100,9 +79,6 @@ else ifeq ($(LIBRETRO), mednafen_wswan)
APP_ICON = ctr/mednafen_wswan.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), mednafen_vb)
APP_TITLE = Mednafen VB Libretro
Expand All @@ -113,9 +89,6 @@ else ifeq ($(LIBRETRO), mednafen_vb)
APP_ICON = ctr/mednafen_vb.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), mednafen_ngp)
APP_TITLE = Mednafen NGP Libretro
Expand All @@ -126,9 +99,6 @@ else ifeq ($(LIBRETRO), mednafen_ngp)
APP_ICON = ctr/mednafen_ngp.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), 2048)
APP_TITLE = 2048 Libretro
Expand All @@ -139,9 +109,6 @@ else ifeq ($(LIBRETRO), 2048)
APP_ICON = ctr/2048.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), picodrive)
APP_TITLE = Picodrive Libretro
Expand All @@ -152,9 +119,6 @@ else ifeq ($(LIBRETRO), picodrive)
APP_ICON = ctr/picodrive.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), snes9x_next)
APP_TITLE = Snes9x Next Libretro
Expand All @@ -165,9 +129,6 @@ else ifeq ($(LIBRETRO), snes9x_next)
APP_ICON = ctr/snes9x_next.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), mgba)
APP_TITLE = mGBA Libretro
Expand All @@ -178,9 +139,6 @@ else ifeq ($(LIBRETRO), mgba)
APP_ICON = ctr/mgba.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), quicknes)
APP_TITLE = QuickNES Libretro
Expand All @@ -191,9 +149,6 @@ else ifeq ($(LIBRETRO), quicknes)
APP_ICON = ctr/quicknes.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), fb_alpha_neo)
APP_TITLE = Neo Geo (FB Alpha)
Expand All @@ -205,9 +160,6 @@ else ifeq ($(LIBRETRO), fb_alpha_neo)
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
APP_SYSTEM_MODE = 80MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0x3A0000
CTR_MAX_HEAP_SIZE = 0xC00000

else ifeq ($(LIBRETRO), fb_alpha_cps1)
APP_TITLE = Final Burn Alpha - CPS-1
Expand All @@ -218,9 +170,6 @@ else ifeq ($(LIBRETRO), fb_alpha_cps1)
APP_ICON = ctr/fb_alpha_cps1.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), fb_alpha_cps2)
APP_TITLE = Final Burn Alpha - CPS-2
Expand All @@ -232,8 +181,6 @@ else ifeq ($(LIBRETRO), fb_alpha_cps2)
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
APP_SYSTEM_MODE = 80MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), catsfc_plus)
APP_TITLE = CATSFC Plus Libretro
Expand All @@ -244,9 +191,6 @@ else ifeq ($(LIBRETRO), catsfc_plus)
APP_ICON = ctr/catsfc_plus.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), mednafen_pce_fast)
APP_TITLE = Mednafen/Beetle PCE FAST
Expand All @@ -257,9 +201,6 @@ else ifeq ($(LIBRETRO), mednafen_pce_fast)
APP_ICON = ctr/mednafen_pce_fast.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
#CTR_LINEAR_HEAP_SIZE = 0x600000

else ifeq ($(LIBRETRO), pcsx_rearmed)
APP_TITLE = PCSX ReARMed
Expand All @@ -270,9 +211,6 @@ else ifeq ($(LIBRETRO), pcsx_rearmed)
APP_ICON = ctr/pcsx_rearmed.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0xE00000

else ifeq ($(LIBRETRO), fmsx)
APP_TITLE = fMSX
Expand All @@ -283,8 +221,5 @@ else ifeq ($(LIBRETRO), fmsx)
APP_ICON = ctr/fmsx.png
#APP_BANNER = ctr/libretro_banner.png
#APP_AUDIO = ctr/silent.wav
#APP_SYSTEM_MODE = 64MB
#APP_SYSTEM_MODE_EXT = Legacy
CTR_LINEAR_HEAP_SIZE = 0x1000000

endif
18 changes: 0 additions & 18 deletions ctr/ctr_config.c

This file was deleted.

23 changes: 23 additions & 0 deletions ctr/ctr_debug.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#ifndef _CTR_DEBUG_H__
#define _CTR_DEBUG_H__

#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif
void wait_for_input(void);
void dump_result_value(Result val);
#ifdef __cplusplus
}
#endif

#define DEBUG_HOLD() do{printf("%s@%s:%d.\n",__FUNCTION__, __FILE__, __LINE__);fflush(stdout);wait_for_input();}while(0)
#define DEBUG_STR(X) printf( "%s: %s\n", #X, (char*)(X))
#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))
#define DEBUG_ERROR(X) do{if(X)dump_result_value(X)}while(0)
#define PRINTFPOS(X,Y) "\x1b["#X";"#Y"H"
#define PRINTFPOS_STR(X,Y) "\x1b["X";"Y"H"

#endif //_CTR_DEBUG_H__
Loading

0 comments on commit 8741ec4

Please sign in to comment.