diff --git a/Makefile b/Makefile index 874ade7..65a1cb6 100644 --- a/Makefile +++ b/Makefile @@ -1,165 +1,23 @@ -#--------------------------------------------------------------------------------- -# Clear the implicit built in rules -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- -ifeq ($(strip $(DEVKITPPC)),) -$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") -endif +.PHONY = all wii gc wii-clean gc-clean wii-run gc-run -include $(DEVKITPPC)/wii_rules +all: wii gc -#--------------------------------------------------------------------------------- -# 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 +clean: wii-clean gc-clean -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -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) +wii: + $(MAKE) -f Makefile.wii -LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--cref +wii-clean: + $(MAKE) -f Makefile.wii clean -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -ldi -lmxml -lfat -lwiiuse -lz -lbte -logc -lm -lfreetype -ltinysmb +wii-run: + $(MAKE) -f Makefile.wii run -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := +gc: + $(MAKE) -f Makefile.gc -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# 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-clean: + $(MAKE) -f Makefile.gc clean +gc-run: + $(MAKE) -f Makefile.gc run diff --git a/Makefile.gc b/Makefile.gc index 2786675..5a16dd4 100644 --- a/Makefile.gc +++ b/Makefile.gc @@ -146,23 +146,3 @@ $(OUTPUT).elf: $(OFILES) #--------------------------------------------------------------------------------- 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 ) - diff --git a/Makefile.wii b/Makefile.wii index 874ade7..f29186b 100644 --- a/Makefile.wii +++ b/Makefile.wii @@ -106,7 +106,6 @@ $(BUILD): @[ -d $@ ] || mkdir -p $@ @[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR) @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.wii - @rm -fr $(OUTPUT).elf #--------------------------------------------------------------------------------- clean: @@ -146,20 +145,3 @@ $(OUTPUT).elf: $(OFILES) #--------------------------------------------------------------------------------- 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 ) - diff --git a/source/ngc/gcvideo.c b/source/ngc/gcvideo.c index f9ab60f..d29c123 100644 --- a/source/ngc/gcvideo.c +++ b/source/ngc/gcvideo.c @@ -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 GX_LoadProjectionMtx (p, GX_ORTHOGRAPHIC); - updateScaling = 1; + updateScaling = 5; } /**************************************************************************** @@ -608,6 +608,47 @@ ResetVideo_Menu () 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 * @@ -623,59 +664,20 @@ void RenderFrame(unsigned char *XBuf) whichfb ^= 1; if(updateScaling) - { - int xscale, yscale; + UpdateScaling(); - /** Update scaling **/ - 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; + int width, height; u16 *texture = (unsigned short *)texturemem; - u8 *src1 = XBuf; - u8 *src2,*src3,*src4; + u8 *src1 = XBuf; + u8 *src2,*src3,*src4; // Now draw the texture for (height = 0; height < 240; height += 4) { - src1 += 768; /* line 4*N */ - src2 = src1 + 256; /* line 4*(N+1) */ - src3 = src2 + 256; /* line 4*(N+2) */ - src4 = src3 + 256; /* line 4*(N+3) */ + src1 += 768; /* line 4*N */ + src2 = src1 + 256; /* line 4*(N+1) */ + src3 = src2 + 256; /* line 4*(N+2) */ + src4 = src3 + 256; /* line 4*(N+3) */ for (width = 0; width < 256; width += 4) { @@ -739,14 +741,14 @@ zoom (float speed) else if (GCSettings.ZoomLevel > 2.0) GCSettings.ZoomLevel = 2.0; - updateScaling = 1; // update video + updateScaling = 5; // update video } void zoom_reset () { GCSettings.ZoomLevel = 1.0; - updateScaling = 1; // update video + updateScaling = 5; // update video } void