mirror of
https://github.com/dborth/fceugx.git
synced 2024-12-04 14:24:16 +01:00
move scaling to separate function, revert Makefile
This commit is contained in:
parent
5d62e3b2cf
commit
7b3180038c
172
Makefile
172
Makefile
@ -1,165 +1,23 @@
|
|||||||
#---------------------------------------------------------------------------------
|
.PHONY = all wii gc wii-clean gc-clean wii-run gc-run
|
||||||
# Clear the implicit built in rules
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
.SUFFIXES:
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(DEVKITPPC)),)
|
|
||||||
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(DEVKITPPC)/wii_rules
|
all: wii gc
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
clean: wii-clean gc-clean
|
||||||
# TARGET is the name of the output
|
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
|
||||||
# SOURCES is a list of directories containing source code
|
|
||||||
# INCLUDES is a list of directories containing extra header files
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
TARGET := fceugx_wii
|
|
||||||
TARGETDIR := executables
|
|
||||||
BUILD := build_wii
|
|
||||||
SOURCES := source/fceultra source/fceultra/boards \
|
|
||||||
source/fceultra/drivers/common source/fceultra/input \
|
|
||||||
source/fceultra/mappers source/fceultra/mbshare \
|
|
||||||
source/ngc source/sz
|
|
||||||
DATA := data
|
|
||||||
INCLUDES := source/fceultra source/ngc
|
|
||||||
LANG := ENGLISH # Supported languages: ENGLISH
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
wii:
|
||||||
# options for code generation
|
$(MAKE) -f Makefile.wii
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) -DNGC -DWII_DVD \
|
|
||||||
-DHAVE_ASPRINTF -DSTDC -DFCEU_VERSION_NUMERIC=9812 \
|
|
||||||
-D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \
|
|
||||||
-DLANG_$(LANG)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref
|
wii-clean:
|
||||||
|
$(MAKE) -f Makefile.wii clean
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
wii-run:
|
||||||
# any extra libraries we wish to link with the project
|
$(MAKE) -f Makefile.wii run
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -ldi -lmxml -lfat -lwiiuse -lz -lbte -logc -lm -lfreetype -ltinysmb
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
gc:
|
||||||
# list of directories containing libraries, this must be the top level containing
|
$(MAKE) -f Makefile.gc
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
gc-clean:
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
$(MAKE) -f Makefile.gc clean
|
||||||
# rules for different file extensions
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
|
||||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
|
||||||
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# automatically build a list of object files for our project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
||||||
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
|
||||||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# use CXX for linking C++ projects, CC for standard C
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(CPPFILES)),)
|
|
||||||
export LD := $(CC)
|
|
||||||
else
|
|
||||||
export LD := $(CXX)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
|
||||||
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
|
||||||
$(sFILES:.s=.o) $(SFILES:.S=.o)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of include paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
||||||
-I$(CURDIR)/$(BUILD) \
|
|
||||||
-I$(LIBOGC_INC)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of library paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
|
|
||||||
-L$(LIBOGC_LIB)
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.wii
|
|
||||||
@rm -fr $(OUTPUT).elf
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).dol source/tags
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(TARGET).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
reload:
|
|
||||||
wiiload -r $(TARGET).dol
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
else
|
|
||||||
|
|
||||||
DEPENDS := $(OFILES:.o=.d)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# main targets
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(OUTPUT).dol: $(OUTPUT).elf
|
|
||||||
$(OUTPUT).elf: $(OFILES)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# This rule links in binary data with the .jpg extension
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
%.jpg.o : %.jpg
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
-include $(DEPENDS)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
endif
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
tags:
|
|
||||||
@( cd source; ctags *.c *.h \
|
|
||||||
boards/*.c boards/*.h \
|
|
||||||
mappers/*.c mappers/*.h \
|
|
||||||
input/*.c input/*.h \
|
|
||||||
mbshare/*.c mbshare/*.h \
|
|
||||||
drivers/common/*.c drivers/common/*.h \
|
|
||||||
drivers/gamecube/*.c drivers/gamecube/*.h \
|
|
||||||
drivers/gamecube/intl/english.h \
|
|
||||||
iplfont/*.c iplfont/*.h \
|
|
||||||
sz/*.c sz/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/mad/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/ogc/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/modplay/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/sdcard/*.h )
|
|
||||||
|
|
||||||
|
gc-run:
|
||||||
|
$(MAKE) -f Makefile.gc run
|
||||||
|
20
Makefile.gc
20
Makefile.gc
@ -146,23 +146,3 @@ $(OUTPUT).elf: $(OFILES)
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
tags:
|
|
||||||
@( cd source; ctags *.c *.h \
|
|
||||||
boards/*.c boards/*.h \
|
|
||||||
mappers/*.c mappers/*.h \
|
|
||||||
input/*.c input/*.h \
|
|
||||||
mbshare/*.c mbshare/*.h \
|
|
||||||
drivers/common/*.c drivers/common/*.h \
|
|
||||||
drivers/gamecube/*.c drivers/gamecube/*.h \
|
|
||||||
iplfont/*.c iplfont/*.h \
|
|
||||||
sz/*.c sz/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/mad/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/ogc/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/modplay/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/sdcard/*.h \
|
|
||||||
/opt/devkitpro/libjpeg/include/jpeg/*.h \
|
|
||||||
/opt/devkitpro/libfreetype/include/*.h \
|
|
||||||
/opt/devkitpro/libfreetype/include/freetype/*.h )
|
|
||||||
|
|
||||||
|
18
Makefile.wii
18
Makefile.wii
@ -106,7 +106,6 @@ $(BUILD):
|
|||||||
@[ -d $@ ] || mkdir -p $@
|
@[ -d $@ ] || mkdir -p $@
|
||||||
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.wii
|
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.wii
|
||||||
@rm -fr $(OUTPUT).elf
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
clean:
|
clean:
|
||||||
@ -146,20 +145,3 @@ $(OUTPUT).elf: $(OFILES)
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
tags:
|
|
||||||
@( cd source; ctags *.c *.h \
|
|
||||||
boards/*.c boards/*.h \
|
|
||||||
mappers/*.c mappers/*.h \
|
|
||||||
input/*.c input/*.h \
|
|
||||||
mbshare/*.c mbshare/*.h \
|
|
||||||
drivers/common/*.c drivers/common/*.h \
|
|
||||||
drivers/gamecube/*.c drivers/gamecube/*.h \
|
|
||||||
drivers/gamecube/intl/english.h \
|
|
||||||
iplfont/*.c iplfont/*.h \
|
|
||||||
sz/*.c sz/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/mad/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/ogc/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/modplay/*.h \
|
|
||||||
/opt/devkitpro/libogc/include/sdcard/*.h )
|
|
||||||
|
|
||||||
|
@ -573,7 +573,7 @@ ResetVideo_Emu ()
|
|||||||
guOrtho(p, rmode->efbHeight/2, -(rmode->efbHeight/2), -(rmode->fbWidth/2), rmode->fbWidth/2, 10, 1000); // matrix, t, b, l, r, n, f
|
guOrtho(p, rmode->efbHeight/2, -(rmode->efbHeight/2), -(rmode->fbWidth/2), rmode->fbWidth/2, 10, 1000); // matrix, t, b, l, r, n, f
|
||||||
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
||||||
|
|
||||||
updateScaling = 1;
|
updateScaling = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -608,6 +608,47 @@ ResetVideo_Menu ()
|
|||||||
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdateScaling()
|
||||||
|
{
|
||||||
|
int xscale, yscale;
|
||||||
|
|
||||||
|
/** Update scaling **/
|
||||||
|
if (GCSettings.render == 0) // original render mode
|
||||||
|
{
|
||||||
|
xscale = 640 / 2; /* use GX scaler instead VI (less artifacts) */
|
||||||
|
yscale = 240 / 2;
|
||||||
|
}
|
||||||
|
else // unfiltered and filtered mode
|
||||||
|
{
|
||||||
|
xscale = vmode->fbWidth / 2;
|
||||||
|
yscale = vmode->efbHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// aspect ratio scaling (change width scale)
|
||||||
|
// yes its pretty cheap and ugly, but its easy!
|
||||||
|
if (GCSettings.widescreen)
|
||||||
|
xscale = (3*xscale)/4;
|
||||||
|
|
||||||
|
xscale *= GCSettings.ZoomLevel;
|
||||||
|
yscale *= GCSettings.ZoomLevel;
|
||||||
|
|
||||||
|
square[0] = square[9] = (-xscale);
|
||||||
|
square[3] = square[6] = (xscale);
|
||||||
|
square[1] = square[4] = (yscale);
|
||||||
|
square[7] = square[10] = (-yscale);
|
||||||
|
|
||||||
|
GX_InvVtxCache (); // update vertex cache
|
||||||
|
|
||||||
|
GX_InitTexObj (&texobj, texturemem, TEX_WIDTH, TEX_HEIGHT, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); // initialize the texture obj we are going to use
|
||||||
|
|
||||||
|
if (!(GCSettings.render&1))
|
||||||
|
GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,2.5,9.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); // original/unfiltered video mode: force texture filtering OFF
|
||||||
|
|
||||||
|
GX_LoadTexObj (&texobj, GX_TEXMAP0); // load texture object so its ready to use
|
||||||
|
|
||||||
|
updateScaling--;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* RenderFrame
|
* RenderFrame
|
||||||
*
|
*
|
||||||
@ -623,59 +664,20 @@ void RenderFrame(unsigned char *XBuf)
|
|||||||
whichfb ^= 1;
|
whichfb ^= 1;
|
||||||
|
|
||||||
if(updateScaling)
|
if(updateScaling)
|
||||||
{
|
UpdateScaling();
|
||||||
int xscale, yscale;
|
|
||||||
|
|
||||||
/** Update scaling **/
|
int width, height;
|
||||||
if (GCSettings.render == 0) // original render mode
|
|
||||||
{
|
|
||||||
xscale = 640 / 2; /* use GX scaler instead VI (less artefacts) */
|
|
||||||
yscale = 240 / 2;
|
|
||||||
}
|
|
||||||
else // unfiltered and filtered mode
|
|
||||||
{
|
|
||||||
xscale = vmode->fbWidth / 2;
|
|
||||||
yscale = vmode->efbHeight / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// aspect ratio scaling (change width scale)
|
|
||||||
// yes its pretty cheap and ugly, but its easy!
|
|
||||||
if (GCSettings.widescreen)
|
|
||||||
xscale = (3*xscale)/4;
|
|
||||||
|
|
||||||
xscale *= GCSettings.ZoomLevel;
|
|
||||||
yscale *= GCSettings.ZoomLevel;
|
|
||||||
|
|
||||||
square[0] = square[9] = (-xscale);
|
|
||||||
square[3] = square[6] = (xscale);
|
|
||||||
square[1] = square[4] = (yscale);
|
|
||||||
square[7] = square[10] = (-yscale);
|
|
||||||
|
|
||||||
GX_InvVtxCache (); // update vertex cache
|
|
||||||
|
|
||||||
GX_InitTexObj (&texobj, texturemem, TEX_WIDTH, TEX_HEIGHT, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); // initialize the texture obj we are going to use
|
|
||||||
memset(texturemem, 0, TEX_WIDTH * TEX_HEIGHT * 2);
|
|
||||||
|
|
||||||
if (!(GCSettings.render&1))
|
|
||||||
GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,2.5,9.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); // original/unfiltered video mode: force texture filtering OFF
|
|
||||||
|
|
||||||
GX_LoadTexObj (&texobj, GX_TEXMAP0); // load texture object so its ready to use
|
|
||||||
|
|
||||||
updateScaling = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int width, height;
|
|
||||||
u16 *texture = (unsigned short *)texturemem;
|
u16 *texture = (unsigned short *)texturemem;
|
||||||
u8 *src1 = XBuf;
|
u8 *src1 = XBuf;
|
||||||
u8 *src2,*src3,*src4;
|
u8 *src2,*src3,*src4;
|
||||||
|
|
||||||
// Now draw the texture
|
// Now draw the texture
|
||||||
for (height = 0; height < 240; height += 4)
|
for (height = 0; height < 240; height += 4)
|
||||||
{
|
{
|
||||||
src1 += 768; /* line 4*N */
|
src1 += 768; /* line 4*N */
|
||||||
src2 = src1 + 256; /* line 4*(N+1) */
|
src2 = src1 + 256; /* line 4*(N+1) */
|
||||||
src3 = src2 + 256; /* line 4*(N+2) */
|
src3 = src2 + 256; /* line 4*(N+2) */
|
||||||
src4 = src3 + 256; /* line 4*(N+3) */
|
src4 = src3 + 256; /* line 4*(N+3) */
|
||||||
|
|
||||||
for (width = 0; width < 256; width += 4)
|
for (width = 0; width < 256; width += 4)
|
||||||
{
|
{
|
||||||
@ -739,14 +741,14 @@ zoom (float speed)
|
|||||||
else if (GCSettings.ZoomLevel > 2.0)
|
else if (GCSettings.ZoomLevel > 2.0)
|
||||||
GCSettings.ZoomLevel = 2.0;
|
GCSettings.ZoomLevel = 2.0;
|
||||||
|
|
||||||
updateScaling = 1; // update video
|
updateScaling = 5; // update video
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zoom_reset ()
|
zoom_reset ()
|
||||||
{
|
{
|
||||||
GCSettings.ZoomLevel = 1.0;
|
GCSettings.ZoomLevel = 1.0;
|
||||||
updateScaling = 1; // update video
|
updateScaling = 5; // update video
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user