mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-09 15:49:25 +01:00
Remove Source/{Unittests,TestSuite}.
These directories have been unused for several years and without any automated way of running the tests, they are pretty much useless. While they might be useful as a reference, in their present state they should not be kept in the repository.
This commit is contained in:
parent
4a569c4449
commit
0f89060cf3
@ -17,9 +17,8 @@ option(OPENMP "Enable OpenMP parallelization" ON)
|
|||||||
option(ENCODE_FRAMEDUMPS "Encode framedumps in AVI format" ON)
|
option(ENCODE_FRAMEDUMPS "Encode framedumps in AVI format" ON)
|
||||||
########################################
|
########################################
|
||||||
# Optional Targets
|
# Optional Targets
|
||||||
# TODO: Add DSPSpy and TestSuite.
|
# TODO: Add DSPSpy
|
||||||
option(DSPTOOL "Build dsptool" OFF)
|
option(DSPTOOL "Build dsptool" OFF)
|
||||||
option(UNITTESTS "Build unitests" OFF)
|
|
||||||
|
|
||||||
# Update compiler before calling project()
|
# Update compiler before calling project()
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
|
@ -52,11 +52,7 @@ if (DSPTOOL)
|
|||||||
add_subdirectory(DSPTool)
|
add_subdirectory(DSPTool)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (UNITTESTS)
|
|
||||||
add_subdirectory(UnitTests)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Add DSPSpy. Preferrably make it option() and cpack component
|
||||||
# TODO: Add DSPSpy and TestSuite. Preferrably make them option()s and cpack components
|
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_aram.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\devkitPro\libogc\include;C:\devkitPro\libogc\include\ogc;$(IncludePath)</IncludePath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_aram.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,130 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,72 +0,0 @@
|
|||||||
#include <aram.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <iomanip>
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
static GXRModeObj *rmode = NULL;
|
|
||||||
|
|
||||||
void Initialise();
|
|
||||||
#define NUM_BLOCKS 10
|
|
||||||
u32 aram_blocks[NUM_BLOCKS];
|
|
||||||
u32 start_addr = -1;
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
start_addr = AR_Init(aram_blocks, NUM_BLOCKS);
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
PAD_ScanPads();
|
|
||||||
VIDEO_ClearFrameBuffer(rmode, xfb, 0);
|
|
||||||
std::cout<<"\x1b[2;0H"; // Position the cursor (on 2nd row)
|
|
||||||
|
|
||||||
std::cout << "Aram is " << (AR_GetDMAStatus() ? "In Progress" : "Idle") << std::endl;
|
|
||||||
std::cout << "Aram Start is 0x" << std::setbase(16) << start_addr << ", Allocated 0x" << AR_GetSize() << " Of memory" << std::setbase(10) << std::endl;
|
|
||||||
std::cout << "Internal Size is 0x" << std::setbase(16) << AR_GetInternalSize() << std::setbase(10) << std::endl;
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// This function initialises the attached controllers
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{B0723635-279A-44E0-80A6-FC21DBB7A4B4}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_asm.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\asm_float.cpp" />
|
|
||||||
<ClCompile Include="source\asm_integer.cpp" />
|
|
||||||
<ClCompile Include="source\asm_tables.cpp" />
|
|
||||||
<ClCompile Include="source\dolphintest_asm.cpp" />
|
|
||||||
<ClCompile Include="source\Helpers.cpp" />
|
|
||||||
<ClCompile Include="source\Init.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="source\asm_tables.h" />
|
|
||||||
<ClInclude Include="source\Defines.h" />
|
|
||||||
<ClInclude Include="source\Helpers.h" />
|
|
||||||
<ClInclude Include="source\Init.h" />
|
|
||||||
<ClInclude Include="source\Instructions.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,135 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lwiiuse -lbte -lfat -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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), -iquote $(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,8 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define u32 unsigned int
|
|
||||||
#define u16 unsigned short
|
|
||||||
#define u8 unsigned char
|
|
||||||
#define s8 signed char
|
|
||||||
#define s16 signed short
|
|
||||||
#define s32 signed int
|
|
@ -1,59 +0,0 @@
|
|||||||
|
|
||||||
#include "Defines.h"
|
|
||||||
|
|
||||||
u32 GetCR0()
|
|
||||||
{
|
|
||||||
u32 var;
|
|
||||||
asm(
|
|
||||||
"mfcr %0"
|
|
||||||
: "=&r"(var)
|
|
||||||
);
|
|
||||||
return var;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 GetCR(u32 num)
|
|
||||||
{
|
|
||||||
u32 var;
|
|
||||||
if(num == 0) // wtf, silly people
|
|
||||||
return GetCR0();
|
|
||||||
else {
|
|
||||||
// TODO: Ugly switch is ugly, was failing otherwise
|
|
||||||
switch (num) {
|
|
||||||
case 1:
|
|
||||||
asm("mcrf 0, 1");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
asm("mcrf 0, 2");
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
asm("mcrf 0, 3");
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
asm("mcrf 0, 4");
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
asm("mcrf 0, 5");
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
asm("mcrf 0, 6");
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
asm("mcrf 0, 7");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("Can this be more than 7?\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return GetCR0();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 GetXER()
|
|
||||||
{
|
|
||||||
u32 var;
|
|
||||||
asm(
|
|
||||||
"mfxer %0"
|
|
||||||
: "=&r"(var)
|
|
||||||
);
|
|
||||||
return var;
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
#include "Defines.h"
|
|
||||||
|
|
||||||
u32 GetCR0();
|
|
||||||
u32 GetCR(u32 num);
|
|
||||||
u32 GetXER();
|
|
@ -1,80 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <sdcard/wiisd_io.h>
|
|
||||||
#include <fat.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "Init.h"
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
static GXRModeObj *rmode = NULL;
|
|
||||||
void die(char *msg) {
|
|
||||||
if (f!=NULL) fclose(f);
|
|
||||||
printf(msg);
|
|
||||||
sleep(5);
|
|
||||||
fatUnmount("sd");
|
|
||||||
__io_wiisd.shutdown();
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void initialise_fat() {
|
|
||||||
__io_wiisd.startup();
|
|
||||||
if (!fatInitDefault())
|
|
||||||
die("Unable to initialise FAT subsystem, exiting.\n");
|
|
||||||
fatMountSimple("sd", &__io_wiisd);
|
|
||||||
DIR_ITER *root = diropen("/");
|
|
||||||
if (!root)
|
|
||||||
die("Cannot open root dir, exiting.\n");
|
|
||||||
dirclose(root);
|
|
||||||
if (chdir("/"))
|
|
||||||
die("Could not change to root directory, exiting.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_crap() {
|
|
||||||
VIDEO_Init();
|
|
||||||
WPAD_Init();
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
|
|
||||||
void end() {
|
|
||||||
int columns = 0, rows = 0;
|
|
||||||
CON_GetMetrics(&columns, &rows);
|
|
||||||
printf("\x1b[%i;0H",rows);
|
|
||||||
printf("File written... press Home/Start to exit.");
|
|
||||||
while(1) {
|
|
||||||
WPAD_ScanPads(); PAD_ScanPads();
|
|
||||||
if ((WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME) || (PAD_ButtonsDown(0) & PAD_BUTTON_START))
|
|
||||||
exit(0);
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
extern FILE *f;
|
|
||||||
|
|
||||||
|
|
||||||
void die(char *msg);
|
|
||||||
|
|
||||||
void initialise_fat();
|
|
||||||
|
|
||||||
void init_crap();
|
|
||||||
|
|
||||||
void end();
|
|
@ -1,20 +0,0 @@
|
|||||||
|
|
||||||
// Integer
|
|
||||||
void add(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
void addRC(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
|
|
||||||
void subfc(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
void subfcRC(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
|
|
||||||
void divw(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
void divwRC(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
|
|
||||||
void divwo(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
void divwoRC(u32 *a, u32 *b, u32 *c, u32 *d);
|
|
||||||
|
|
||||||
|
|
||||||
// Float
|
|
||||||
|
|
||||||
void fsqrt(float *a, float *b, float *c, float *d);
|
|
||||||
|
|
||||||
void fsqrtRC(float *a, float *b, float *c, float *d);
|
|
@ -1,16 +0,0 @@
|
|||||||
|
|
||||||
#include "Defines.h"
|
|
||||||
void fsqrt(float *a, float *b, float *c, float *d)
|
|
||||||
{
|
|
||||||
/*asm(
|
|
||||||
"fsqrt fr0,%0"
|
|
||||||
: "=&r"(*a)
|
|
||||||
);*/
|
|
||||||
}
|
|
||||||
void fsqrtRC(float *a, float *b, float *c, float *d)
|
|
||||||
{
|
|
||||||
/*asm(
|
|
||||||
"fsqrt. fr0,%0"
|
|
||||||
: "=&r"(*a)
|
|
||||||
);*/
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
#include "asm_tables.h"
|
|
||||||
#include "Defines.h"
|
|
||||||
|
|
||||||
void add(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"add %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
void addRC(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"add. %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
: "cc"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void subfc(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"subfc %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
void subfcRC(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"subfc. %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
: "cc"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void divw(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"divw %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
void divwRC(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"divw. %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
: "cc"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void divwo(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"divwo %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
void divwoRC(u32 *a, u32 *b, u32 *c, u32 *d)
|
|
||||||
{
|
|
||||||
asm(
|
|
||||||
"divwo. %0,%1,%2"
|
|
||||||
: "=r"(*a)
|
|
||||||
: "r"(*b), "r"(*c)
|
|
||||||
: "cc"
|
|
||||||
);
|
|
||||||
}
|
|
@ -1,188 +0,0 @@
|
|||||||
#include "asm_tables.h"
|
|
||||||
#include "Init.h"
|
|
||||||
#include "Helpers.h"
|
|
||||||
|
|
||||||
// Limited Test, Later have a test that will pass all possible variables
|
|
||||||
u32 inval_table[][2] = {
|
|
||||||
{0,0},
|
|
||||||
{1,1},
|
|
||||||
{300,0},
|
|
||||||
{1,0},
|
|
||||||
{0xffff,0},
|
|
||||||
{0xffffffff,0},
|
|
||||||
{0x80000000,0},
|
|
||||||
{0x80000000,1},
|
|
||||||
{0x80000000,2},
|
|
||||||
{0x7fffffff,0},
|
|
||||||
{0x7fffffff,1},
|
|
||||||
{0x7fffffff,2},
|
|
||||||
{0,1},
|
|
||||||
{0,0xffff},
|
|
||||||
{0,0xffffffff},
|
|
||||||
{0,0x80000000},
|
|
||||||
{1,0x80000000},
|
|
||||||
{2,0x80000000},
|
|
||||||
{0,0x7fffffff},
|
|
||||||
{1,0x7fffffff},
|
|
||||||
{2,0x7fffffff},
|
|
||||||
{654321,0},
|
|
||||||
{4653321,0},
|
|
||||||
{0,300},
|
|
||||||
{1024,8},
|
|
||||||
{8,1024},
|
|
||||||
{0xffff,0xffff},
|
|
||||||
{0xffffffff,0xffffffff}
|
|
||||||
};
|
|
||||||
void Print(const char* text)
|
|
||||||
{
|
|
||||||
printf(text);
|
|
||||||
if(f)
|
|
||||||
fprintf(f, text);
|
|
||||||
}
|
|
||||||
void ShowModifies(u32 inst)
|
|
||||||
{
|
|
||||||
u32 mod = instructions[inst].Modifies;
|
|
||||||
if(mod == 0)
|
|
||||||
{
|
|
||||||
Print("NONE");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(mod & MOD_CR0)
|
|
||||||
Print("CR0 ");
|
|
||||||
if(mod & MOD_CR1)
|
|
||||||
Print("CR1 ");
|
|
||||||
if(mod & MOD_SR)
|
|
||||||
Print("SR ");
|
|
||||||
if(mod & MOD_XER)
|
|
||||||
Print("XER ");
|
|
||||||
}
|
|
||||||
void RunInstruction(u32 inst)
|
|
||||||
{
|
|
||||||
u32 inval1, inval2, inval3;
|
|
||||||
|
|
||||||
u32 outval = 0;
|
|
||||||
|
|
||||||
// CR0
|
|
||||||
u32 cr1 = 0, cr2 = 0;
|
|
||||||
|
|
||||||
//CR1
|
|
||||||
u32 cr11 = 0, cr12 = 0;
|
|
||||||
|
|
||||||
//XER
|
|
||||||
u32 xer1 = 0, xer2 = 0;
|
|
||||||
|
|
||||||
bool modCR0 = instructions[inst].Modifies & MOD_CR0;
|
|
||||||
bool modCR1 = instructions[inst].Modifies & MOD_CR1;
|
|
||||||
bool modXER = instructions[inst].Modifies & MOD_XER;
|
|
||||||
|
|
||||||
if(instructions[inst].numInput != 3)
|
|
||||||
{
|
|
||||||
Print("Don't support Input not 3 yet~!\n");
|
|
||||||
fclose(f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(instructions[inst].type != TYPE_INTEGER)
|
|
||||||
{
|
|
||||||
Print("Types other than TYPE_INTEGER not supported yet!\n");
|
|
||||||
fclose(f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
char temp[32];
|
|
||||||
sprintf(temp, "logs/%s.dolphin.jit.log", instructions[inst].name);
|
|
||||||
f = fopen(temp, "wb");
|
|
||||||
if (!f)
|
|
||||||
printf("unable to open output file\n");
|
|
||||||
|
|
||||||
printf("%s: InputNum: %d Modifies(flags): ", instructions[inst].name, instructions[inst].numInput);
|
|
||||||
if(f)
|
|
||||||
fprintf(f, "%s: InputNum: %d Modifies(flags): ", instructions[inst].name, instructions[inst].numInput);
|
|
||||||
ShowModifies(inst);
|
|
||||||
Print("\n");
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i < sizeof(inval_table)/(sizeof(int)*2); i++)
|
|
||||||
{
|
|
||||||
inval1 = inval_table[i][0];
|
|
||||||
inval2 = inval_table[i][1];
|
|
||||||
outval = 0;
|
|
||||||
|
|
||||||
// Show our input values and where we are at on the array
|
|
||||||
printf("\x1b[%i;0H", i);
|
|
||||||
printf("%07i: %08x,%08x",i, inval1,inval2);
|
|
||||||
|
|
||||||
// Get flags before
|
|
||||||
if(modCR0)
|
|
||||||
cr1 = GetCR0();
|
|
||||||
if(modCR1)
|
|
||||||
cr11 = GetCR(1);
|
|
||||||
if(modXER)
|
|
||||||
xer1 = GetXER();
|
|
||||||
|
|
||||||
//Actually call instruction
|
|
||||||
instructions[inst].Call(&outval, &inval1, &inval2, 0);
|
|
||||||
|
|
||||||
// Get flags after
|
|
||||||
if(modCR0)
|
|
||||||
cr2 = GetCR0();
|
|
||||||
if(modCR1)
|
|
||||||
cr12 = GetCR(1);
|
|
||||||
if(modXER)
|
|
||||||
xer2 = GetXER();
|
|
||||||
|
|
||||||
// Print out value
|
|
||||||
printf(":o=%08x\n\t", outval);
|
|
||||||
|
|
||||||
// show off flag changes
|
|
||||||
if(modCR0)
|
|
||||||
printf("CR0:(%08x ~ %08x)", cr1,cr2);
|
|
||||||
if(modCR1)
|
|
||||||
printf("CR1:(%08x ~ %08x)", cr11,cr12);
|
|
||||||
if(modXER)
|
|
||||||
printf("XER:(%08x ~ %08x)", xer1, xer2);
|
|
||||||
|
|
||||||
|
|
||||||
// same in the file
|
|
||||||
if(f)
|
|
||||||
{
|
|
||||||
fprintf(f, ":i=%08x, %08x:o=%08x\n\t", inval1,inval2, outval);
|
|
||||||
if(modCR0)
|
|
||||||
fprintf(f, "CR0:(%08x ~ %08x)", cr1,cr2);
|
|
||||||
if(modCR1)
|
|
||||||
fprintf(f, "CR1:(%08x ~ %08x)", cr11,cr12);
|
|
||||||
if(modXER)
|
|
||||||
fprintf(f, "XER:(%08x ~ %08x)", xer1, xer2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// see the difference in flags if any
|
|
||||||
if(modCR0)
|
|
||||||
{
|
|
||||||
u32 cr_diff = cr2&~cr1;
|
|
||||||
if (cr_diff) {
|
|
||||||
printf(" CR0D:%08x",cr_diff);
|
|
||||||
if(f)
|
|
||||||
fprintf(f, " CR0D:%08x",cr_diff);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(modCR1)
|
|
||||||
{
|
|
||||||
u32 cr1_diff = cr12&~cr11;
|
|
||||||
if (cr1_diff) {
|
|
||||||
printf(" CR1D:%08x",cr1_diff);
|
|
||||||
if(f)
|
|
||||||
fprintf(f, " CR1D:%08x",cr1_diff);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(modXER)
|
|
||||||
{
|
|
||||||
u32 xer_diff = xer2&~xer1;
|
|
||||||
if (xer_diff) {
|
|
||||||
printf(" XERD:%08x",xer_diff);
|
|
||||||
if(f)
|
|
||||||
fprintf(f, " XERD:%08x",xer_diff);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(f)
|
|
||||||
fprintf(f,"\n");
|
|
||||||
}
|
|
||||||
if(f)
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
|
|
||||||
#include "Defines.h"
|
|
||||||
#include "Instructions.h"
|
|
||||||
|
|
||||||
enum Modify
|
|
||||||
{
|
|
||||||
MOD_CR0 = (1 << 0),
|
|
||||||
MOD_CR1 = (1 << 1),
|
|
||||||
MOD_SR = (1 << 2),
|
|
||||||
MOD_XER = (1 << 3),
|
|
||||||
MOD_FPSCR = (1 << 4)
|
|
||||||
};
|
|
||||||
enum IOput
|
|
||||||
{
|
|
||||||
IO_ARG1 = (1 << 0),
|
|
||||||
IO_ARG2 = (1 << 1),
|
|
||||||
IO_ARG3 = (1 << 2),
|
|
||||||
};
|
|
||||||
enum inst_type
|
|
||||||
{
|
|
||||||
TYPE_INTEGER,
|
|
||||||
TYPE_FLOAT
|
|
||||||
};
|
|
||||||
|
|
||||||
struct inst
|
|
||||||
{
|
|
||||||
char name[16];
|
|
||||||
u32 Modifies; // Flag modification
|
|
||||||
u8 numInput;
|
|
||||||
u32 Input;
|
|
||||||
u32 Ouput;
|
|
||||||
inst_type type;
|
|
||||||
void (*Call)(u32*, u32*, u32*, u32*);
|
|
||||||
void (*CallFP)(float*, float*, float*, float*);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
static inst instructions[] = {
|
|
||||||
{ "add", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, add},
|
|
||||||
{ "add.", MOD_CR0, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, add},
|
|
||||||
{ "subfc", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, subfc},
|
|
||||||
{ "subfc.", MOD_CR0, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, subfcRC},
|
|
||||||
{ "divw", NULL, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1, TYPE_INTEGER, divw},
|
|
||||||
{ "divw.", MOD_CR0, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, divwRC},
|
|
||||||
{ "divwo", MOD_XER, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1,TYPE_INTEGER, divwo},
|
|
||||||
{ "divwo.", MOD_CR0 | MOD_XER, 3, IO_ARG1 | IO_ARG2 | IO_ARG3, IO_ARG1, TYPE_INTEGER, divwoRC},
|
|
||||||
//{ "fsqrt", MOD_FPSCR, 2, IO_ARG1 | IO_ARG2, IO_ARG1,TYPE_FLOAT, NULL, fsqrt},
|
|
||||||
//{ "fsqrt.", MOD_CR1 | MOD_FPSCR, 2, IO_ARG1 | IO_ARG2, IO_ARG1,TYPE_FLOAT, NULL, fsqrtRC}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void RunInstruction(u32 inst);
|
|
@ -1,43 +0,0 @@
|
|||||||
// Copyright (C) 2003 Dolphin Project.
|
|
||||||
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, version 2.0.
|
|
||||||
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License 2.0 for more details.
|
|
||||||
|
|
||||||
// A copy of the GPL 2.0 should have been included with the program.
|
|
||||||
// If not, see http://www.gnu.org/licenses/
|
|
||||||
|
|
||||||
// Official SVN repository and contact information can be found at
|
|
||||||
// http://code.google.com/p/dolphin-emu/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "Defines.h"
|
|
||||||
#include "Init.h"
|
|
||||||
#include "asm_tables.h"
|
|
||||||
#include "Helpers.h"
|
|
||||||
|
|
||||||
FILE *f = NULL;
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
init_crap();
|
|
||||||
initialise_fat();
|
|
||||||
|
|
||||||
for (uint a = 0; a < sizeof(instructions) / sizeof(inst); ++a)
|
|
||||||
{
|
|
||||||
RunInstruction(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
end();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{9F053346-A33D-4E4F-874E-CBA1AF809FC3}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_ax.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_ax.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,130 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,55 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <iomanip>
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
static GXRModeObj *rmode = NULL;
|
|
||||||
|
|
||||||
void *Initialise();
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
|
|
||||||
xfb = Initialise();
|
|
||||||
AUDIO_Init(NULL);
|
|
||||||
AUDIO_SetStreamVolLeft(0xFF); // Max
|
|
||||||
AUDIO_SetStreamVolRight(0xFF); // Max
|
|
||||||
AUDIO_SetStreamSampleRate(AI_SAMPLERATE_48KHZ);
|
|
||||||
while(1) {
|
|
||||||
PAD_ScanPads();
|
|
||||||
VIDEO_ClearFrameBuffer(rmode, xfb, 0);
|
|
||||||
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void * Initialise() {
|
|
||||||
|
|
||||||
void *framebuffer;
|
|
||||||
|
|
||||||
VIDEO_Init();
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
framebuffer = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
console_init(framebuffer,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
VIDEO_SetNextFramebuffer(framebuffer);
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
return framebuffer;
|
|
||||||
|
|
||||||
}
|
|
@ -1,79 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">dolphintest_exi.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_exi.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_exi.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,131 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,103 +0,0 @@
|
|||||||
#include <gccore.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <iomanip>
|
|
||||||
|
|
||||||
#include <debug.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
u32 first_frame = 1;
|
|
||||||
GXRModeObj *rmode;
|
|
||||||
|
|
||||||
void Initialise();
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
s32 Size;
|
|
||||||
s32 SSize;
|
|
||||||
u32 ID;
|
|
||||||
s32 getIDerr;
|
|
||||||
s32 CARDerr;
|
|
||||||
s32 EXIerr;
|
|
||||||
VIDEO_ClearFrameBuffer(rmode, xfb, 0);
|
|
||||||
|
|
||||||
// Can't use printf since Dolphin overrides it
|
|
||||||
std::cout<<"\x1b[0;0H"; // Position the cursor (at 0, 0)
|
|
||||||
for (int channel = 0; channel < EXI_CHANNEL_MAX; ++channel)
|
|
||||||
for (int device = 0; device < EXI_DEVICE_MAX; ++device)
|
|
||||||
{
|
|
||||||
if (getIDerr = EXI_GetID(channel, device, &ID) == 1)
|
|
||||||
{
|
|
||||||
std::cout<<"Channel "<<channel<<" Device "<<device<<"\tID = 0x"<<std::setbase(16)<<ID<<std::endl;
|
|
||||||
if ((channel == 0 && device == 0)||(channel == 1 && device == 0))
|
|
||||||
{
|
|
||||||
// It's a memcard slot
|
|
||||||
if (CARDerr = CARD_ProbeEx(channel, &Size, &SSize) >= 0)
|
|
||||||
{
|
|
||||||
std::cout<<"\tMemcard has a size of "<<std::setbase(10)<<Size<<" and a Sector Size of "<<std::setbase(10)<<SSize<<std::endl;
|
|
||||||
}
|
|
||||||
else if (CARDerr == -2)
|
|
||||||
std::cout<<"\tNot a Memcard!"<<std::endl;
|
|
||||||
else
|
|
||||||
std::cout<<"\tCARD Error "<<CARDerr<<std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// It's not a memcard, what to do? - Just probe for now
|
|
||||||
if (EXIerr = EXI_ProbeEx(channel)){}
|
|
||||||
else
|
|
||||||
std::cout<<"\tEXI Error "<<EXIerr<<std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
std::cout<<"Channel "<<channel<<" Device "<<device<<std::endl<<"\tEXI_GetID Error "<<getIDerr<<std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// This function initialises the attached controllers
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{18373B64-BCAB-4677-A070-7AD45D4C8304}</ProjectGuid>
|
|
||||||
<RootNamespace>FPU</RootNamespace>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="source\asm.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_fpu.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="source\fpu_asm.S" />
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,135 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lwiiuse -lbte -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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), -iquote $(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,338 +0,0 @@
|
|||||||
#ifndef __ASM_H__
|
|
||||||
#define __ASM_H__
|
|
||||||
|
|
||||||
#ifdef _LANGUAGE_ASSEMBLY
|
|
||||||
/* Condition Register Bit Fields */
|
|
||||||
|
|
||||||
#define cr0 0
|
|
||||||
#define cr1 1
|
|
||||||
#define cr2 2
|
|
||||||
#define cr3 3
|
|
||||||
#define cr4 4
|
|
||||||
#define cr5 5
|
|
||||||
#define cr6 6
|
|
||||||
#define cr7 7
|
|
||||||
|
|
||||||
|
|
||||||
/* General Purpose Registers (GPRs) */
|
|
||||||
|
|
||||||
#define r0 0
|
|
||||||
#define r1 1
|
|
||||||
#define sp 1
|
|
||||||
#define r2 2
|
|
||||||
#define toc 2
|
|
||||||
#define r3 3
|
|
||||||
#define r4 4
|
|
||||||
#define r5 5
|
|
||||||
#define r6 6
|
|
||||||
#define r7 7
|
|
||||||
#define r8 8
|
|
||||||
#define r9 9
|
|
||||||
#define r10 10
|
|
||||||
#define r11 11
|
|
||||||
#define r12 12
|
|
||||||
#define r13 13
|
|
||||||
#define r14 14
|
|
||||||
#define r15 15
|
|
||||||
#define r16 16
|
|
||||||
#define r17 17
|
|
||||||
#define r18 18
|
|
||||||
#define r19 19
|
|
||||||
#define r20 20
|
|
||||||
#define r21 21
|
|
||||||
#define r22 22
|
|
||||||
#define r23 23
|
|
||||||
#define r24 24
|
|
||||||
#define r25 25
|
|
||||||
#define r26 26
|
|
||||||
#define r27 27
|
|
||||||
#define r28 28
|
|
||||||
#define r29 29
|
|
||||||
#define r30 30
|
|
||||||
#define r31 31
|
|
||||||
|
|
||||||
|
|
||||||
/* Floating Point Registers (FPRs) */
|
|
||||||
|
|
||||||
#define fr0 0
|
|
||||||
#define fr1 1
|
|
||||||
#define fr2 2
|
|
||||||
#define fr3 3
|
|
||||||
#define fr4 4
|
|
||||||
#define fr5 5
|
|
||||||
#define fr6 6
|
|
||||||
#define fr7 7
|
|
||||||
#define fr8 8
|
|
||||||
#define fr9 9
|
|
||||||
#define fr10 10
|
|
||||||
#define fr11 11
|
|
||||||
#define fr12 12
|
|
||||||
#define fr13 13
|
|
||||||
#define fr14 14
|
|
||||||
#define fr15 15
|
|
||||||
#define fr16 16
|
|
||||||
#define fr17 17
|
|
||||||
#define fr18 18
|
|
||||||
#define fr19 19
|
|
||||||
#define fr20 20
|
|
||||||
#define fr21 21
|
|
||||||
#define fr22 22
|
|
||||||
#define fr23 23
|
|
||||||
#define fr24 24
|
|
||||||
#define fr25 25
|
|
||||||
#define fr26 26
|
|
||||||
#define fr27 27
|
|
||||||
#define fr28 28
|
|
||||||
#define fr29 29
|
|
||||||
#define fr30 30
|
|
||||||
#define fr31 31
|
|
||||||
|
|
||||||
#define vr0 0
|
|
||||||
#define vr1 1
|
|
||||||
#define vr2 2
|
|
||||||
#define vr3 3
|
|
||||||
#define vr4 4
|
|
||||||
#define vr5 5
|
|
||||||
#define vr6 6
|
|
||||||
#define vr7 7
|
|
||||||
#define vr8 8
|
|
||||||
#define vr9 9
|
|
||||||
#define vr10 10
|
|
||||||
#define vr11 11
|
|
||||||
#define vr12 12
|
|
||||||
#define vr13 13
|
|
||||||
#define vr14 14
|
|
||||||
#define vr15 15
|
|
||||||
#define vr16 16
|
|
||||||
#define vr17 17
|
|
||||||
#define vr18 18
|
|
||||||
#define vr19 19
|
|
||||||
#define vr20 20
|
|
||||||
#define vr21 21
|
|
||||||
#define vr22 22
|
|
||||||
#define vr23 23
|
|
||||||
#define vr24 24
|
|
||||||
#define vr25 25
|
|
||||||
#define vr26 26
|
|
||||||
#define vr27 27
|
|
||||||
#define vr28 28
|
|
||||||
#define vr29 29
|
|
||||||
#define vr30 30
|
|
||||||
#define vr31 31
|
|
||||||
|
|
||||||
#endif //_LANGUAGE_ASSEMBLY
|
|
||||||
|
|
||||||
#define SPRG0 272
|
|
||||||
#define SPRG1 273
|
|
||||||
#define SPRG2 274
|
|
||||||
#define SPRG3 275
|
|
||||||
|
|
||||||
#define PMC1 953
|
|
||||||
#define PMC2 954
|
|
||||||
#define PMC3 957
|
|
||||||
#define PMC4 958
|
|
||||||
|
|
||||||
#define MMCR0 952
|
|
||||||
#define MMCR1 956
|
|
||||||
|
|
||||||
|
|
||||||
#define LINK_REGISTER_CALLEE_UPDATE_ROOM 4
|
|
||||||
#define EXCEPTION_NUMBER 8
|
|
||||||
#define SRR0_OFFSET 12
|
|
||||||
#define SRR1_OFFSET 16
|
|
||||||
#define GPR0_OFFSET 20
|
|
||||||
#define GPR1_OFFSET 24
|
|
||||||
#define GPR2_OFFSET 28
|
|
||||||
#define GPR3_OFFSET 32
|
|
||||||
#define GPR4_OFFSET 36
|
|
||||||
#define GPR5_OFFSET 40
|
|
||||||
#define GPR6_OFFSET 44
|
|
||||||
#define GPR7_OFFSET 48
|
|
||||||
#define GPR8_OFFSET 52
|
|
||||||
#define GPR9_OFFSET 56
|
|
||||||
#define GPR10_OFFSET 60
|
|
||||||
#define GPR11_OFFSET 64
|
|
||||||
#define GPR12_OFFSET 68
|
|
||||||
#define GPR13_OFFSET 72
|
|
||||||
#define GPR14_OFFSET 76
|
|
||||||
#define GPR15_OFFSET 80
|
|
||||||
#define GPR16_OFFSET 84
|
|
||||||
#define GPR17_OFFSET 88
|
|
||||||
#define GPR18_OFFSET 92
|
|
||||||
#define GPR19_OFFSET 96
|
|
||||||
#define GPR20_OFFSET 100
|
|
||||||
#define GPR21_OFFSET 104
|
|
||||||
#define GPR22_OFFSET 108
|
|
||||||
#define GPR23_OFFSET 112
|
|
||||||
#define GPR24_OFFSET 116
|
|
||||||
#define GPR25_OFFSET 120
|
|
||||||
#define GPR26_OFFSET 124
|
|
||||||
#define GPR27_OFFSET 128
|
|
||||||
#define GPR28_OFFSET 132
|
|
||||||
#define GPR29_OFFSET 136
|
|
||||||
#define GPR30_OFFSET 140
|
|
||||||
#define GPR31_OFFSET 144
|
|
||||||
|
|
||||||
#define GQR0_OFFSET 148
|
|
||||||
#define GQR1_OFFSET 152
|
|
||||||
#define GQR2_OFFSET 156
|
|
||||||
#define GQR3_OFFSET 160
|
|
||||||
#define GQR4_OFFSET 164
|
|
||||||
#define GQR5_OFFSET 168
|
|
||||||
#define GQR6_OFFSET 172
|
|
||||||
#define GQR7_OFFSET 176
|
|
||||||
|
|
||||||
#define CR_OFFSET 180
|
|
||||||
#define LR_OFFSET 184
|
|
||||||
#define CTR_OFFSET 188
|
|
||||||
#define XER_OFFSET 192
|
|
||||||
#define MSR_OFFSET 196
|
|
||||||
#define DAR_OFFSET 200
|
|
||||||
|
|
||||||
#define STATE_OFFSET 204
|
|
||||||
#define MODE_OFFSET 206
|
|
||||||
|
|
||||||
#define FPR0_OFFSET 208
|
|
||||||
#define FPR1_OFFSET 216
|
|
||||||
#define FPR2_OFFSET 224
|
|
||||||
#define FPR3_OFFSET 232
|
|
||||||
#define FPR4_OFFSET 240
|
|
||||||
#define FPR5_OFFSET 248
|
|
||||||
#define FPR6_OFFSET 256
|
|
||||||
#define FPR7_OFFSET 264
|
|
||||||
#define FPR8_OFFSET 272
|
|
||||||
#define FPR9_OFFSET 280
|
|
||||||
#define FPR10_OFFSET 288
|
|
||||||
#define FPR11_OFFSET 296
|
|
||||||
#define FPR12_OFFSET 304
|
|
||||||
#define FPR13_OFFSET 312
|
|
||||||
#define FPR14_OFFSET 320
|
|
||||||
#define FPR15_OFFSET 328
|
|
||||||
#define FPR16_OFFSET 336
|
|
||||||
#define FPR17_OFFSET 344
|
|
||||||
#define FPR18_OFFSET 352
|
|
||||||
#define FPR19_OFFSET 360
|
|
||||||
#define FPR20_OFFSET 368
|
|
||||||
#define FPR21_OFFSET 376
|
|
||||||
#define FPR22_OFFSET 384
|
|
||||||
#define FPR23_OFFSET 392
|
|
||||||
#define FPR24_OFFSET 400
|
|
||||||
#define FPR25_OFFSET 408
|
|
||||||
#define FPR26_OFFSET 416
|
|
||||||
#define FPR27_OFFSET 424
|
|
||||||
#define FPR28_OFFSET 432
|
|
||||||
#define FPR29_OFFSET 440
|
|
||||||
#define FPR30_OFFSET 448
|
|
||||||
#define FPR31_OFFSET 456
|
|
||||||
|
|
||||||
#define FPSCR_OFFSET 464
|
|
||||||
|
|
||||||
#define PSR0_OFFSET 472
|
|
||||||
#define PSR1_OFFSET 480
|
|
||||||
#define PSR2_OFFSET 488
|
|
||||||
#define PSR3_OFFSET 496
|
|
||||||
#define PSR4_OFFSET 504
|
|
||||||
#define PSR5_OFFSET 512
|
|
||||||
#define PSR6_OFFSET 520
|
|
||||||
#define PSR7_OFFSET 528
|
|
||||||
#define PSR8_OFFSET 536
|
|
||||||
#define PSR9_OFFSET 544
|
|
||||||
#define PSR10_OFFSET 552
|
|
||||||
#define PSR11_OFFSET 560
|
|
||||||
#define PSR12_OFFSET 568
|
|
||||||
#define PSR13_OFFSET 576
|
|
||||||
#define PSR14_OFFSET 584
|
|
||||||
#define PSR15_OFFSET 592
|
|
||||||
#define PSR16_OFFSET 600
|
|
||||||
#define PSR17_OFFSET 608
|
|
||||||
#define PSR18_OFFSET 616
|
|
||||||
#define PSR19_OFFSET 624
|
|
||||||
#define PSR20_OFFSET 632
|
|
||||||
#define PSR21_OFFSET 640
|
|
||||||
#define PSR22_OFFSET 648
|
|
||||||
#define PSR23_OFFSET 656
|
|
||||||
#define PSR24_OFFSET 664
|
|
||||||
#define PSR25_OFFSET 672
|
|
||||||
#define PSR26_OFFSET 680
|
|
||||||
#define PSR27_OFFSET 688
|
|
||||||
#define PSR28_OFFSET 696
|
|
||||||
#define PSR29_OFFSET 704
|
|
||||||
#define PSR30_OFFSET 712
|
|
||||||
#define PSR31_OFFSET 720
|
|
||||||
/*
|
|
||||||
* maintain the EABI requested 8 bytes aligment
|
|
||||||
* As SVR4 ABI requires 16, make it 16 (as some
|
|
||||||
* exception may need more registers to be processed...)
|
|
||||||
*/
|
|
||||||
#define EXCEPTION_FRAME_END 728
|
|
||||||
|
|
||||||
#define IBAT0U 528
|
|
||||||
#define IBAT0L 529
|
|
||||||
#define IBAT1U 530
|
|
||||||
#define IBAT1L 531
|
|
||||||
#define IBAT2U 532
|
|
||||||
#define IBAT2L 533
|
|
||||||
#define IBAT3U 534
|
|
||||||
#define IBAT3L 535
|
|
||||||
#define IBAT4U 560
|
|
||||||
#define IBAT4L 561
|
|
||||||
#define IBAT5U 562
|
|
||||||
#define IBAT5L 563
|
|
||||||
#define IBAT6U 564
|
|
||||||
#define IBAT6L 565
|
|
||||||
#define IBAT7U 566
|
|
||||||
#define IBAT7L 567
|
|
||||||
|
|
||||||
#define DBAT0U 536
|
|
||||||
#define DBAT0L 537
|
|
||||||
#define DBAT1U 538
|
|
||||||
#define DBAT1L 539
|
|
||||||
#define DBAT2U 540
|
|
||||||
#define DBAT2L 541
|
|
||||||
#define DBAT3U 542
|
|
||||||
#define DBAT3L 543
|
|
||||||
#define DBAT4U 568
|
|
||||||
#define DBAT4L 569
|
|
||||||
#define DBAT5U 570
|
|
||||||
#define DBAT5L 571
|
|
||||||
#define DBAT6U 572
|
|
||||||
#define DBAT6L 573
|
|
||||||
#define DBAT7U 574
|
|
||||||
#define DBAT7L 575
|
|
||||||
|
|
||||||
#define HID0 1008
|
|
||||||
#define HID1 1009
|
|
||||||
#define HID2 920
|
|
||||||
#define HID4 1011
|
|
||||||
|
|
||||||
#define GQR0 912
|
|
||||||
#define GQR1 913
|
|
||||||
#define GQR2 914
|
|
||||||
#define GQR3 915
|
|
||||||
#define GQR4 916
|
|
||||||
#define GQR5 917
|
|
||||||
#define GQR6 918
|
|
||||||
#define GQR7 919
|
|
||||||
|
|
||||||
#define L2CR 1017
|
|
||||||
|
|
||||||
#define WPAR 921
|
|
||||||
|
|
||||||
#define DMAU 922
|
|
||||||
#define DMAL 923
|
|
||||||
|
|
||||||
#define MSR_RI 0x00000002
|
|
||||||
#define MSR_DR 0x00000010
|
|
||||||
#define MSR_IR 0x00000020
|
|
||||||
#define MSR_IP 0x00000040
|
|
||||||
#define MSR_SE 0x00000400
|
|
||||||
#define MSR_ME 0x00001000
|
|
||||||
#define MSR_FP 0x00002000
|
|
||||||
#define MSR_POW 0x00004000
|
|
||||||
#define MSR_EE 0x00008000
|
|
||||||
|
|
||||||
#define PPC_ALIGNMENT 8
|
|
||||||
|
|
||||||
#define PPC_CACHE_ALIGNMENT 32
|
|
||||||
|
|
||||||
#endif //__ASM_H__
|
|
@ -1,108 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
|
|
||||||
// Pull in the assembly functions.
|
|
||||||
extern "C" {
|
|
||||||
void TestFRES1(u32 *fpscr, float *result, float *result2);
|
|
||||||
};
|
|
||||||
|
|
||||||
int doreload=0, dooff=0;
|
|
||||||
void reload() { doreload=1; }
|
|
||||||
void shutdown() { dooff=1; }
|
|
||||||
|
|
||||||
|
|
||||||
void Compare(const char *a, const char *b) {
|
|
||||||
if (!strcmp(a, b)) {
|
|
||||||
printf("SUCCESS - %s\n", a);
|
|
||||||
} else {
|
|
||||||
printf("FAIL - %s != \n"
|
|
||||||
" %s\n", a, b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestDivision() {
|
|
||||||
double a, b, c, d, e;
|
|
||||||
a = 1.0;
|
|
||||||
b = 0.0;
|
|
||||||
c = a / b;
|
|
||||||
d = b / a;
|
|
||||||
e = sqrt(-1);
|
|
||||||
char temp[100];
|
|
||||||
sprintf(temp, "%1.1f %1.1f %1.1f %1.1f %1.1f", a, b, c, d, e);
|
|
||||||
Compare(temp, "1.0 0.0 inf 0.0 nan");
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestFres() {
|
|
||||||
u32 fpscr[2];
|
|
||||||
float out, out2;
|
|
||||||
TestFRES1(fpscr, &out, &out2);
|
|
||||||
char temp[100];
|
|
||||||
sprintf(temp, "%08x %1.1f %1.1f", fpscr[1], out, out2);
|
|
||||||
Compare(temp, "86002004 inf 0.0");
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestNormalize() {
|
|
||||||
//float a[3] = {2,2,2};
|
|
||||||
//d_guVecNormalize(a);
|
|
||||||
//printf("%f %f %f\n", a[0], a[1], a[2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
void *xfb[2];
|
|
||||||
int fbi = 0;
|
|
||||||
GXRModeObj *rmode = NULL;
|
|
||||||
|
|
||||||
VIDEO_Init();
|
|
||||||
PAD_Init();
|
|
||||||
WPAD_Init();
|
|
||||||
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// double buffering, prevents flickering (is it needed for LCD TV? i don't have one to test)
|
|
||||||
xfb[0] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
xfb[1] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
VIDEO_SetNextFramebuffer(xfb[0]);
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if (rmode->viTVMode & VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
SYS_SetResetCallback(reload);
|
|
||||||
SYS_SetPowerCallback(shutdown);
|
|
||||||
|
|
||||||
WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR);
|
|
||||||
WPAD_SetVRes(0, rmode->fbWidth, rmode->xfbHeight);
|
|
||||||
|
|
||||||
CON_Init(xfb[fbi],0,0,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
printf(" ");
|
|
||||||
printf("Tests\n\n");
|
|
||||||
|
|
||||||
TestDivision();
|
|
||||||
TestFres();
|
|
||||||
|
|
||||||
while (!doreload && !dooff) {
|
|
||||||
WPAD_ScanPads();
|
|
||||||
if (WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME)
|
|
||||||
exit(0);
|
|
||||||
|
|
||||||
VIDEO_SetNextFramebuffer(xfb[fbi]);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
if(doreload) return 0;
|
|
||||||
if(dooff) SYS_ResetSystem(SYS_SHUTDOWN,0,0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
#define _LANGUAGE_ASSEMBLY
|
|
||||||
#include "asm.h"
|
|
||||||
|
|
||||||
//r3 = &fpscr
|
|
||||||
//r4 = result
|
|
||||||
.globl TestFRES1
|
|
||||||
TestFRES1:
|
|
||||||
lis r9,Unit01@ha
|
|
||||||
addi r9,r9,Unit01@l
|
|
||||||
lfs fr0, 0(r9)
|
|
||||||
fres fr0, fr0
|
|
||||||
stfs fr0, 0(r4)
|
|
||||||
fres fr0, fr0
|
|
||||||
stfs fr0, 0(r5)
|
|
||||||
mffs fr1
|
|
||||||
stfd fr1, 0(r3)
|
|
||||||
blr
|
|
||||||
|
|
||||||
.section .data
|
|
||||||
.balign 4
|
|
||||||
Unit01:
|
|
||||||
.float 0.0, 1.0
|
|
||||||
NrmData:
|
|
||||||
.float 0.5, 3.0
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{F45E42B2-939B-4F02-954B-E68251FD4CCF}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_gx.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_gx.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,131 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,316 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------------
|
|
||||||
a simple rotating cube demo by tkcne
|
|
||||||
---------------------------------------------------------------------------------*/
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <gcmodplay.h>
|
|
||||||
#include <debug.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
|
|
||||||
#define DEFAULT_FIFO_SIZE (256*1024) //GX_FIFO_MINSIZE
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
// cube vertex data
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
s16 cube[] ATTRIBUTE_ALIGN(32) = {
|
|
||||||
// x y z
|
|
||||||
-15, 15, -15, // 0
|
|
||||||
15, 15, -15, // 1
|
|
||||||
15, 15, 15, // 2
|
|
||||||
-15, 15, 15, // 3
|
|
||||||
15, -15, -15, // 4
|
|
||||||
15, -15, 15, // 5
|
|
||||||
-15, -15, 15, // 6
|
|
||||||
-15, -15, -15, // 7
|
|
||||||
};
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
// color data
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
u8 colors[] ATTRIBUTE_ALIGN(32) = {
|
|
||||||
// r, g, b, a
|
|
||||||
100, 10, 100, 255, // 0 purple
|
|
||||||
240, 0, 0, 255, // 1 red
|
|
||||||
255, 180, 0, 255, // 2 orange
|
|
||||||
255, 255, 0, 255, // 3 yellow
|
|
||||||
10, 120, 40, 255, // 4 green
|
|
||||||
0, 20, 100, 255 // 5 blue
|
|
||||||
};
|
|
||||||
|
|
||||||
u32
|
|
||||||
CvtRGB (u8 r1, u8 g1, u8 b1, u8 r2, u8 g2, u8 b2)
|
|
||||||
{
|
|
||||||
int y1, cb1, cr1, y2, cb2, cr2, cb, cr;
|
|
||||||
|
|
||||||
y1 = (299 * r1 + 587 * g1 + 114 * b1) / 1000;
|
|
||||||
cb1 = (-16874 * r1 - 33126 * g1 + 50000 * b1 + 12800000) / 100000;
|
|
||||||
cr1 = (50000 * r1 - 41869 * g1 - 8131 * b1 + 12800000) / 100000;
|
|
||||||
|
|
||||||
y2 = (299 * r2 + 587 * g2 + 114 * b2) / 1000;
|
|
||||||
cb2 = (-16874 * r2 - 33126 * g2 + 50000 * b2 + 12800000) / 100000;
|
|
||||||
cr2 = (50000 * r2 - 41869 * g2 - 8131 * b2 + 12800000) / 100000;
|
|
||||||
|
|
||||||
cb = (cb1 + cb2) >> 1;
|
|
||||||
cr = (cr1 + cr2) >> 1;
|
|
||||||
|
|
||||||
return (y1 << 24) | (cb << 16) | (y2 << 8) | cr;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 curr_fb = 0;
|
|
||||||
static u32 first_frame = 1;
|
|
||||||
static u32 *xfb[2] = {NULL,NULL};
|
|
||||||
GXRModeObj *rmode;
|
|
||||||
|
|
||||||
void draw_init();
|
|
||||||
void draw_cube(Mtx v);
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
int main( int argc, char **argv ){
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
f32 yscale;
|
|
||||||
u32 xfbHeight;
|
|
||||||
u32 colour1;
|
|
||||||
Mtx v,p; // view and perspective matrices
|
|
||||||
int CP = 0;
|
|
||||||
GXColor background = {0, 0, 0, 0xff};
|
|
||||||
int startx, starty;
|
|
||||||
int directionx, directiony;
|
|
||||||
|
|
||||||
// init the vi. setup frame buffer and set the retrace callback
|
|
||||||
// to copy the efb to xfb
|
|
||||||
VIDEO_Init();
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
|
|
||||||
curr_fb = 0;
|
|
||||||
first_frame = 0;
|
|
||||||
|
|
||||||
// setup the fifo and then init the flipper
|
|
||||||
void *gp_fifo = NULL;
|
|
||||||
gp_fifo = memalign(32,DEFAULT_FIFO_SIZE);
|
|
||||||
memset(gp_fifo,0,DEFAULT_FIFO_SIZE);
|
|
||||||
|
|
||||||
xfb[0] = (u32 *) MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
xfb[1] = (u32 *) MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
VIDEO_SetNextFramebuffer(xfb[curr_fb]);
|
|
||||||
if(!first_frame) VIDEO_SetBlack(FALSE);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
console_init(xfb[curr_fb],20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
//curr_fb ^= 1;
|
|
||||||
|
|
||||||
GX_Init(gp_fifo,DEFAULT_FIFO_SIZE);
|
|
||||||
|
|
||||||
// clears the bg to color and clears the z buffer
|
|
||||||
GX_SetCopyClear(background, 0x00ffffff);
|
|
||||||
|
|
||||||
// other gx setup
|
|
||||||
GX_SetViewport(0,0,rmode->fbWidth,rmode->efbHeight,0,1);
|
|
||||||
yscale = GX_GetYScaleFactor(rmode->efbHeight,rmode->xfbHeight);
|
|
||||||
xfbHeight = GX_SetDispCopyYScale(yscale);
|
|
||||||
GX_SetScissor(0,0,rmode->fbWidth,rmode->efbHeight);
|
|
||||||
GX_SetDispCopySrc(0,0,rmode->fbWidth,rmode->efbHeight);
|
|
||||||
GX_SetDispCopyDst(rmode->fbWidth,xfbHeight);
|
|
||||||
GX_SetCopyFilter(rmode->aa,rmode->sample_pattern,GX_TRUE,rmode->vfilter);
|
|
||||||
GX_SetFieldMode(rmode->field_rendering,((rmode->viHeight==2*rmode->xfbHeight)?GX_ENABLE:GX_DISABLE));
|
|
||||||
|
|
||||||
// cull none because other values produce weird results
|
|
||||||
GX_SetCullMode(GX_CULL_NONE);
|
|
||||||
GX_CopyDisp(xfb[curr_fb],GX_TRUE);
|
|
||||||
GX_SetDispCopyGamma(GX_GM_1_0);
|
|
||||||
|
|
||||||
// setup our camera at the origin
|
|
||||||
// looking down the -z axis with y up
|
|
||||||
Vector cam = {0.0F, 0.0F, 0.0F},
|
|
||||||
up = {0.0F, 1.0F, 0.0F},
|
|
||||||
look = {0.0F, 0.0F, -1.0F};
|
|
||||||
guLookAt(v, &cam, &up, &look);
|
|
||||||
|
|
||||||
// setup our projection matrix
|
|
||||||
// this creates a perspective matrix with a view angle of 60,
|
|
||||||
// an aspect ratio of 4/3 (i'm not sure if that's the right
|
|
||||||
// way to do it but i just went by what made a square on my screen)
|
|
||||||
// and z near and far distances
|
|
||||||
f32 w = rmode->viWidth;
|
|
||||||
f32 h = rmode->viHeight;
|
|
||||||
guPerspective(p, 60, (f32)w/h, 10.0F, 300.0F);
|
|
||||||
GX_LoadProjectionMtx(p, GX_PERSPECTIVE);
|
|
||||||
|
|
||||||
GXColor Test = { 192, 255, 0, 255 };
|
|
||||||
GX_SetFog(GX_FOG_EXP2, 1, 2, 3, 4, Test);
|
|
||||||
GXFogAdjTbl bum;
|
|
||||||
GX_SetFogRangeAdj(GX_ENABLE, 255, &bum);
|
|
||||||
// setup vertexes
|
|
||||||
draw_init();
|
|
||||||
|
|
||||||
colour1 = CvtRGB (0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
|
|
||||||
// main loop
|
|
||||||
while(1) {
|
|
||||||
|
|
||||||
PAD_ScanPads();
|
|
||||||
|
|
||||||
if (PAD_ButtonsDown(0) & PAD_BUTTON_START) {
|
|
||||||
void (*reload)() = (void(*)())0x90000020;
|
|
||||||
reload();
|
|
||||||
}
|
|
||||||
|
|
||||||
// do this before drawing
|
|
||||||
GX_SetViewport(0,0,rmode->fbWidth,rmode->efbHeight,0,1);
|
|
||||||
GX_InvVtxCache();
|
|
||||||
GX_InvalidateTexAll();
|
|
||||||
GX_SetScissor(640 , 480,680 , 560);
|
|
||||||
GX_SetScissorBoxOffset(-80, -80);
|
|
||||||
|
|
||||||
// draw our cube
|
|
||||||
draw_cube(v);
|
|
||||||
|
|
||||||
GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
|
||||||
GX_SetColorUpdate(GX_TRUE);
|
|
||||||
GX_CopyDisp(xfb[curr_fb],GX_TRUE);
|
|
||||||
|
|
||||||
// do this stuff after drawing
|
|
||||||
GX_DrawDone();
|
|
||||||
/*** Draw Bouncing Square ***/
|
|
||||||
if (directionx)
|
|
||||||
startx -= 4;
|
|
||||||
else
|
|
||||||
startx += 4;
|
|
||||||
|
|
||||||
if (directiony)
|
|
||||||
starty -= 2;
|
|
||||||
else
|
|
||||||
starty += 2;
|
|
||||||
|
|
||||||
if (startx >= 576) directionx = 1;
|
|
||||||
|
|
||||||
if (starty >= (rmode->xfbHeight - 64)) directiony = 1;
|
|
||||||
|
|
||||||
if (startx < 0) {
|
|
||||||
startx = 0;
|
|
||||||
directionx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (starty < 0) {
|
|
||||||
starty = 0;
|
|
||||||
directiony = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CP = (starty * 320) + (startx >> 1);
|
|
||||||
for (int rows = 0; rows < 64; rows++) {
|
|
||||||
for (int cols = 0; cols < 32; cols++)
|
|
||||||
xfb[curr_fb][CP + cols] = colour1;
|
|
||||||
|
|
||||||
CP += 320;
|
|
||||||
}
|
|
||||||
VIDEO_SetNextFramebuffer(xfb[curr_fb]);
|
|
||||||
|
|
||||||
if(first_frame) {
|
|
||||||
first_frame = 0;
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
}
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
curr_fb ^= 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void draw_init() {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
// setup the vertex descriptor
|
|
||||||
// tells the flipper to expect 8bit indexes for position
|
|
||||||
// and color data. could also be set to direct.
|
|
||||||
GX_ClearVtxDesc();
|
|
||||||
GX_SetVtxDesc(GX_VA_POS, GX_INDEX8);
|
|
||||||
GX_SetVtxDesc(GX_VA_CLR0, GX_INDEX8);
|
|
||||||
|
|
||||||
// setup the vertex attribute table
|
|
||||||
// describes the data
|
|
||||||
// args: vat location 0-7, type of data, data format, size, scale
|
|
||||||
// so for ex. in the first call we are sending position data with
|
|
||||||
// 3 values X,Y,Z of size S16. scale sets the number of fractional
|
|
||||||
// bits for non float data.
|
|
||||||
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
|
|
||||||
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
|
|
||||||
|
|
||||||
// tells gx where our position and color data is
|
|
||||||
// args: type of data, pointer, array stride
|
|
||||||
GX_SetArray(GX_VA_POS, cube, 3*sizeof(s16));
|
|
||||||
GX_SetArray(GX_VA_CLR0, colors, 4*sizeof(u8));
|
|
||||||
DCFlushRange(cube,sizeof(cube));
|
|
||||||
DCFlushRange(colors,sizeof(colors));
|
|
||||||
|
|
||||||
// no idea...sets to no textures
|
|
||||||
// i don't know anything about textures or lighting yet :|
|
|
||||||
GX_SetNumChans(1);
|
|
||||||
GX_SetNumTexGens(0);
|
|
||||||
GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORDNULL, GX_TEXMAP_NULL, GX_COLOR0A0);
|
|
||||||
GX_SetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
// draws a quad from 4 vertex idx and one color idx
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void draw_quad(u8 v0, u8 v1, u8 v2, u8 v3, u8 c) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
// one 8bit position idx
|
|
||||||
GX_Position1x8(v0);
|
|
||||||
// one 8bit color idx
|
|
||||||
GX_Color1x8(c);
|
|
||||||
GX_Position1x8(v1);
|
|
||||||
GX_Color1x8(c);
|
|
||||||
GX_Position1x8(v2);
|
|
||||||
GX_Color1x8(c);
|
|
||||||
GX_Position1x8(v3);
|
|
||||||
GX_Color1x8(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void draw_cube(Mtx v) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
Mtx m; // model matrix.
|
|
||||||
Mtx mv; // modelview matrix.
|
|
||||||
Vector axis = {-1,1,0};
|
|
||||||
static float rotateby = 0;
|
|
||||||
|
|
||||||
rotateby ++;
|
|
||||||
|
|
||||||
// move the cube out in front of us and rotate it
|
|
||||||
guMtxIdentity(m);
|
|
||||||
guMtxRotAxisDeg(m, &axis, rotateby);
|
|
||||||
guMtxTransApply(m, m, -100.0F, -60.0F, -200.0F);
|
|
||||||
guMtxConcat(v,m,mv);
|
|
||||||
// load the modelview matrix into matrix memory
|
|
||||||
GX_LoadPosMtxImm(mv, GX_PNMTX0);
|
|
||||||
|
|
||||||
// drawing begins!
|
|
||||||
// tells the flipper what type of primitive we will be drawing
|
|
||||||
// which descriptor in the VAT to use and the number of vertices
|
|
||||||
// to expect. 24 since we will draw 6 quads with 4 verts each.
|
|
||||||
GX_Begin(GX_QUADS, GX_VTXFMT0, 24);
|
|
||||||
|
|
||||||
draw_quad(0, 3, 2, 1, 0);
|
|
||||||
draw_quad(0, 7, 6, 3, 1);
|
|
||||||
draw_quad(0, 1, 4, 7, 2);
|
|
||||||
draw_quad(1, 2, 5, 4, 3);
|
|
||||||
draw_quad(2, 3, 6, 5, 4);
|
|
||||||
draw_quad(4, 7, 6, 5, 5);
|
|
||||||
|
|
||||||
GX_End();
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
SUBDIRS:= `ls | egrep -v '^(CVS)$$'`
|
|
||||||
|
|
||||||
all:
|
|
||||||
@for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done;
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done;
|
|
@ -1,131 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{D58C9AD5-7200-488A-B1E8-9250E64CDD45}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_pad.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_pad.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,97 +0,0 @@
|
|||||||
#include <gccore.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <debug.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
|
|
||||||
static void* xfb = NULL;
|
|
||||||
|
|
||||||
u32 first_frame = 1;
|
|
||||||
GXRModeObj *rmode;
|
|
||||||
vu16 oldstate;
|
|
||||||
vu16 keystate;
|
|
||||||
vu16 keydown;
|
|
||||||
vu16 keyup;
|
|
||||||
PADStatus pad[4];
|
|
||||||
|
|
||||||
void Initialise();
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
PAD_Read(pad);
|
|
||||||
|
|
||||||
for(int a = 0; a < 4;a ++)
|
|
||||||
{
|
|
||||||
if(pad[a].err & PAD_ERR_NO_CONTROLLER)
|
|
||||||
{
|
|
||||||
std::cout<<"pad["<<a<<"] Not Connected\n";
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
std::cout<<"pad["<<a<<"] Sticks: Main[ "<<(int)pad[a].stickX<<", "<<(int)pad[a].stickY<<" ] Sub[ "<<(int)pad[a].substickX<<", "<<(int)pad[a].substickX<<" ]\n";
|
|
||||||
std::cout<<"pad["<<a<<"] Analog Triggers: Left "<<(int)pad[a].triggerL<<" Right "<<(int)pad[a].triggerR<<"\n";
|
|
||||||
std::cout<<"pad["<<a<<"] Buttons: "<<
|
|
||||||
(pad[a].button & PAD_BUTTON_START? "Start " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_A ? "A " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_B ? "B " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_X ? "X " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_Y ? "Y " : "")<<
|
|
||||||
(pad[a].button & PAD_TRIGGER_Z? "Z " : "")<<
|
|
||||||
(pad[a].button & PAD_TRIGGER_L? "L " : "")<<
|
|
||||||
(pad[a].button & PAD_TRIGGER_R? "R " : "")<<std::endl;
|
|
||||||
std::cout<<"pad["<<a<<"] DPad: "<<
|
|
||||||
(pad[a].button & PAD_BUTTON_UP ? "Up " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_DOWN ? "Down " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_LEFT ? "Left " : "")<<
|
|
||||||
(pad[a].button & PAD_BUTTON_RIGHT ? "Right " : "")<<std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// This function initialises the attached controllers
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_rtc.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_rtc.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,72 +0,0 @@
|
|||||||
#include <gccore.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <debug.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
|
|
||||||
u32 first_frame = 1;
|
|
||||||
GXRModeObj *rmode;
|
|
||||||
|
|
||||||
void Initialise();
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
|
|
||||||
time_t gc_time;
|
|
||||||
gc_time = time(NULL);
|
|
||||||
|
|
||||||
srand(gc_time);
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
gc_time = time(NULL);
|
|
||||||
std::cout<<"\x1b[10;0HGC RTC time is"<<ctime(&gc_time);
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// This function initialises the attached controllers
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
@ -1,130 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lfat -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{87F20A25-A3F8-46A3-AC32-3C16782494B1}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_si.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_si.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,151 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <iomanip>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <fat.h>
|
|
||||||
|
|
||||||
#ifdef HW_RVL
|
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
#include <sdcard/wiisd_io.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void *xfb;
|
|
||||||
static GXRModeObj *rmode;
|
|
||||||
|
|
||||||
void Initialise();
|
|
||||||
void (*reboot)() = (void(*)())0x80001800;
|
|
||||||
static u32* const SI_REG = (u32*)0xCD006400;
|
|
||||||
static bool haveInit = false;
|
|
||||||
static int counter = 0;
|
|
||||||
static bool logWritten = false;
|
|
||||||
|
|
||||||
void AppendSDLog()
|
|
||||||
{
|
|
||||||
#ifdef HW_RVL
|
|
||||||
FILE *f = fopen("sd:/si_log.txt", "a");
|
|
||||||
if (f)
|
|
||||||
{
|
|
||||||
fprintf(f, "\n-------------------------------------\n");
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
fprintf(f, "%i\tstatus: %x\t type:%x\n", i, SI_GetStatus(i), SI_GetType(i));
|
|
||||||
u32 x = 0;
|
|
||||||
fprintf(f, "-------------------------------------\n");
|
|
||||||
fprintf(f, "SI_CHANNEL_0_OUT\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_0_IN_HI\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_0_IN_LO\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_1_OUT\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_1_IN_HI\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_1_IN_LO\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_2_OUT\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_2_IN_HI\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_2_IN_LO\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_3_OUT\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_3_IN_HI\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_CHANNEL_3_IN_LO\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_POLL\t\t\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_COM_CSR\t\t\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_STATUS_REG\t\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "SI_EXI_CLOCK_COUNT\t%08x\n", SI_REG[x++]);
|
|
||||||
fprintf(f, "-------------------------------------\n");
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
if (haveInit) PAD_ScanPads();
|
|
||||||
|
|
||||||
VIDEO_ClearFrameBuffer(rmode, xfb, COLOR_BLACK);
|
|
||||||
|
|
||||||
printf("\x1b[4;0H");
|
|
||||||
|
|
||||||
for(int Chan = 0; Chan < 4; Chan++)
|
|
||||||
printf("%i\tstatus: %x\t type:%x\n", Chan, SI_GetStatus(Chan), SI_GetType(Chan));
|
|
||||||
|
|
||||||
printf("SI Regs: (cc006000)\n");
|
|
||||||
for (u32 i = 0; i < 16/*num SI regs*/; ++i)
|
|
||||||
{
|
|
||||||
printf("%08x ", SI_REG[i]);
|
|
||||||
if ((i+1)%8==0) printf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (haveInit)
|
|
||||||
printf("\nPAD_Init\n");
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
if (haveInit)
|
|
||||||
{
|
|
||||||
if (PAD_ButtonsDown(0) & PAD_BUTTON_START)
|
|
||||||
{
|
|
||||||
AppendSDLog();
|
|
||||||
#ifdef HW_RVL
|
|
||||||
fatUnmount("sd");
|
|
||||||
__io_wiisd.shutdown();
|
|
||||||
#endif
|
|
||||||
reboot();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
counter++;
|
|
||||||
AppendSDLog();
|
|
||||||
if (counter > 5 && !haveInit)
|
|
||||||
{
|
|
||||||
PAD_Init();
|
|
||||||
haveInit = true;
|
|
||||||
}
|
|
||||||
else if (haveInit && !logWritten)
|
|
||||||
{
|
|
||||||
logWritten = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
#ifdef HW_RVL
|
|
||||||
// Initialize FAT so we can write to SD.
|
|
||||||
__io_wiisd.startup();
|
|
||||||
fatMountSimple("sd", &__io_wiisd);
|
|
||||||
#endif
|
|
||||||
}
|
|
@ -1,91 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
|
||||||
# Visual Studio 2010
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{057B2E90-B8A7-431E-9FA2-68AC8ABABCC5}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
Makefile = Makefile
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GX", "GX\GX.vcxproj", "{F45E42B2-939B-4F02-954B-E68251FD4CCF}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SI", "SI\SI.vcxproj", "{87F20A25-A3F8-46A3-AC32-3C16782494B1}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RTC", "RTC\RTC.vcxproj", "{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PAD", "PAD\PAD.vcxproj", "{D58C9AD5-7200-488A-B1E8-9250E64CDD45}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EXI", "EXI\EXI.vcxproj", "{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AX", "AX\AX.vcxproj", "{9F053346-A33D-4E4F-874E-CBA1AF809FC3}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ARAM", "ARAM\ARAM.vcxproj", "{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WPAD", "WPAD\WPAD.vcxproj", "{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WRTC", "WRTC\WRTC.vcxproj", "{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WSD", "WSD\WSD.vcxproj", "{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FPU", "FPU\FPU.vcxproj", "{18373B64-BCAB-4677-A070-7AD45D4C8304}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASM", "ASM\ASM.vcxproj", "{B0723635-279A-44E0-80A6-FC21DBB7A4B4}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Win32 = Debug|Win32
|
|
||||||
Release|Win32 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{F45E42B2-939B-4F02-954B-E68251FD4CCF}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F45E42B2-939B-4F02-954B-E68251FD4CCF}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{F45E42B2-939B-4F02-954B-E68251FD4CCF}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F45E42B2-939B-4F02-954B-E68251FD4CCF}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{87F20A25-A3F8-46A3-AC32-3C16782494B1}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{87F20A25-A3F8-46A3-AC32-3C16782494B1}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{87F20A25-A3F8-46A3-AC32-3C16782494B1}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{87F20A25-A3F8-46A3-AC32-3C16782494B1}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{62989D24-DB3F-4BD1-A11D-26F0487CD9AF}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{D58C9AD5-7200-488A-B1E8-9250E64CDD45}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{D58C9AD5-7200-488A-B1E8-9250E64CDD45}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{D58C9AD5-7200-488A-B1E8-9250E64CDD45}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{D58C9AD5-7200-488A-B1E8-9250E64CDD45}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{AA230C1A-42F2-4BDC-9EB8-4AA6DF587E69}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{9F053346-A33D-4E4F-874E-CBA1AF809FC3}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{9F053346-A33D-4E4F-874E-CBA1AF809FC3}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{9F053346-A33D-4E4F-874E-CBA1AF809FC3}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{9F053346-A33D-4E4F-874E-CBA1AF809FC3}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{E50732C5-038A-42F7-8C95-8C02A4E2ADA6}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{18373B64-BCAB-4677-A070-7AD45D4C8304}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{18373B64-BCAB-4677-A070-7AD45D4C8304}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{18373B64-BCAB-4677-A070-7AD45D4C8304}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{18373B64-BCAB-4677-A070-7AD45D4C8304}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{B0723635-279A-44E0-80A6-FC21DBB7A4B4}.Debug|Win32.ActiveCfg = Release|Win32
|
|
||||||
{B0723635-279A-44E0-80A6-FC21DBB7A4B4}.Debug|Win32.Build.0 = Release|Win32
|
|
||||||
{B0723635-279A-44E0-80A6-FC21DBB7A4B4}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{B0723635-279A-44E0-80A6-FC21DBB7A4B4}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
@ -1,135 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lwiiuse -lbte -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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), -iquote $(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{BB88F4D5-EB0D-4429-94C3-93B0191BD3DD}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_wpad.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_wpad.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,216 +0,0 @@
|
|||||||
// This file is from wiibrew.org: http://wiibrew.org/wiki/How_to_use_the_Wiimote
|
|
||||||
|
|
||||||
//code by WinterMute
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <string.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
|
|
||||||
static GXRModeObj *rmode = NULL;
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
//doreload - a flag that tells the program to quit looping and exit the program to the HBChannel.
|
|
||||||
//dooff - a flag that tells the program to quit looping and properly shutdown the system.
|
|
||||||
int doreload=0, dooff=0;
|
|
||||||
|
|
||||||
//Calling the function will end the while loop and properly exit the program to the HBChannel.
|
|
||||||
void reload(void) {
|
|
||||||
doreload=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Calling the function will end the while loop and properly shutdown the system.
|
|
||||||
// QUESTION: why calling the shutdown function direcly here halts the console?
|
|
||||||
void shutdown(void) {
|
|
||||||
dooff=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Draw a square on the screen (May draw rectangles as well, I am uncertain).
|
|
||||||
//*xfb - framebuffer
|
|
||||||
//*rmode - !unsure!
|
|
||||||
//w - Width of screen (Used as scale factor in converting fx to pixel coordinates)
|
|
||||||
//h - Height of screen (Used as scale factor in converting fy to pixel coordinates)
|
|
||||||
//fx - X coordinate to draw on the screen (0-w)
|
|
||||||
//fy - Y coordinate to draw on the screen (!unsure!-h)
|
|
||||||
//color - the color of the rectangle (Examples: COLOR_YELLOW, COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_BLACK, COLOR_WHITE)
|
|
||||||
void drawdot(void *xfb, GXRModeObj *rmode, float w, float h, float fx, float fy, u32 color) {
|
|
||||||
|
|
||||||
//*fb - !unsure!
|
|
||||||
//px - !unsure!
|
|
||||||
//py - !unsure!
|
|
||||||
//x - !unsure!
|
|
||||||
//y - !unsure!
|
|
||||||
|
|
||||||
u32 *fb;
|
|
||||||
int px,py;
|
|
||||||
int x,y;
|
|
||||||
|
|
||||||
|
|
||||||
fb = (u32*)xfb;
|
|
||||||
|
|
||||||
y = fy * rmode->xfbHeight / h;
|
|
||||||
x = fx * rmode->fbWidth / w / 2;
|
|
||||||
|
|
||||||
for(py=y-4; py<=(y+4); py++) {
|
|
||||||
if(py < 0 || py >= rmode->xfbHeight)
|
|
||||||
continue;
|
|
||||||
for(px=x-2; px<=(x+2); px++) {
|
|
||||||
if(px < 0 || px >= rmode->fbWidth/2)
|
|
||||||
continue;
|
|
||||||
fb[rmode->fbWidth/VI_DISPLAY_PIX_SZ*py + px] = color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int evctr = 0;
|
|
||||||
void countevs(int chan, const WPADData *data) {
|
|
||||||
evctr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_wiimote_connection_status(int wiimote_connection_status) {
|
|
||||||
switch(wiimote_connection_status) {
|
|
||||||
case WPAD_ERR_NO_CONTROLLER:
|
|
||||||
std::cout<<" Wiimote not connected\n";
|
|
||||||
break;
|
|
||||||
case WPAD_ERR_NOT_READY:
|
|
||||||
std::cout<<" Wiimote not ready\n";
|
|
||||||
break;
|
|
||||||
case WPAD_ERR_NONE:
|
|
||||||
std::cout<<" Wiimote ready\n";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
std::cout<<" Unknown Wimote state "<<wiimote_connection_status<<"\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_wiimote_buttons(WPADData *wd) {
|
|
||||||
std::cout<<" Buttons down:\n ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_A) std::cout<<"A ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_B) std::cout<<"B ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_1) std::cout<<"1 ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_2) std::cout<<"2 ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_MINUS) std::cout<<"MINUS ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_HOME) std::cout<<"HOME ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_PLUS) std::cout<<"PLUS ";
|
|
||||||
std::cout<<"\n ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_LEFT) std::cout<<"LEFT ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_RIGHT) std::cout<<"RIGHT ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_UP) std::cout<<"UP ";
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_DOWN) std::cout<<"DOWN ";
|
|
||||||
std::cout<<"\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_and_draw_wiimote_data(void *screen_buffer) {
|
|
||||||
//Makes the var wd point to the data on the wiimote
|
|
||||||
WPADData *wd = WPAD_Data(0);
|
|
||||||
std::cout<<" Data->Err: "<<wd->err<<"\n";
|
|
||||||
std::cout<<" IR Dots:\n";
|
|
||||||
int i;
|
|
||||||
for(i=0; i<4; i++) {
|
|
||||||
if(wd->ir.dot[i].visible) {
|
|
||||||
std::cout<<" "<<wd->ir.dot[i].rx<<", "<<wd->ir.dot[i].ry<<"\n";
|
|
||||||
drawdot(screen_buffer, rmode, 1024, 768, wd->ir.dot[i].rx, wd->ir.dot[i].ry, COLOR_YELLOW);
|
|
||||||
} else {
|
|
||||||
std::cout<<" None\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//ir.valid - TRUE is the wiimote is pointing at the screen, else it is false
|
|
||||||
if(wd->ir.valid) {
|
|
||||||
float theta = wd->ir.angle / 180.0 * M_PI;
|
|
||||||
|
|
||||||
//ir.x/ir.y - The x/y coordinates that the wiimote is pointing to, relative to the screen.
|
|
||||||
//ir.angle - how far (in degrees) the wiimote is twisted (based on ir)
|
|
||||||
std::cout<<" Cursor: "<<wd->ir.x<<","<<wd->ir.y<<"\n";
|
|
||||||
std::cout<<" @ "<<wd->ir.angle<<" deg\n";
|
|
||||||
|
|
||||||
drawdot(screen_buffer, rmode, rmode->fbWidth, rmode->xfbHeight, wd->ir.x, wd->ir.y, COLOR_RED);
|
|
||||||
drawdot(screen_buffer, rmode, rmode->fbWidth, rmode->xfbHeight, wd->ir.x + 10*sinf(theta), wd->ir.y - 10*cosf(theta), COLOR_BLUE);
|
|
||||||
} else {
|
|
||||||
std::cout<<" No Cursor\n\n";
|
|
||||||
}
|
|
||||||
if(wd->ir.raw_valid) {
|
|
||||||
//ir.z - How far away the wiimote is from the screen in meters
|
|
||||||
std::cout<<" Distance: "<<wd->ir.z<<"m\n";
|
|
||||||
//orient.yaw - The left/right angle of the wiimote to the screen
|
|
||||||
std::cout<<" Yaw: "<<wd->orient.yaw<<" deg\n";
|
|
||||||
} else {
|
|
||||||
std::cout<<"\n\n";
|
|
||||||
}
|
|
||||||
std::cout<<" Accel:\n";
|
|
||||||
//accel.x/accel.y/accel.z - analog values for the accelleration of the wiimote
|
|
||||||
//(Note: Gravity pulls downwards, so even if the wiimote is not moving,
|
|
||||||
//one(or more) axis will have a reading as if it is moving "upwards")
|
|
||||||
std::cout<<" XYZ: "<<wd->accel.x<<","<<wd->accel.y<<","<<wd->accel.z<<"\n";
|
|
||||||
//orient.pitch - how far the wiimote is "tilted" in degrees
|
|
||||||
std::cout<<" Pitch: "<<wd->orient.pitch<<"\n";
|
|
||||||
//orient.roll - how far the wiimote is "twisted" in degrees (uses accelerometer)
|
|
||||||
std::cout<<" Roll: "<<wd->orient.roll<<"\n";
|
|
||||||
|
|
||||||
print_wiimote_buttons(wd);
|
|
||||||
|
|
||||||
if(wd->ir.raw_valid) {
|
|
||||||
for(i=0; i<2; i++) {
|
|
||||||
drawdot(screen_buffer, rmode, 4, 4, wd->ir.sensorbar.rot_dots[i].x+2, wd->ir.sensorbar.rot_dots[i].y+2, COLOR_GREEN);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(wd->btns_h & WPAD_BUTTON_1) doreload=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
void *xfb[2];
|
|
||||||
u32 type;
|
|
||||||
int fbi = 0;
|
|
||||||
|
|
||||||
VIDEO_Init();
|
|
||||||
PAD_Init();
|
|
||||||
WPAD_Init();
|
|
||||||
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// double buffering, prevents flickering (is it needed for LCD TV? i don't have one to test)
|
|
||||||
xfb[0] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
xfb[1] = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
SYS_SetResetCallback(reload);
|
|
||||||
SYS_SetPowerCallback(shutdown);
|
|
||||||
|
|
||||||
WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR);
|
|
||||||
WPAD_SetVRes(0, rmode->fbWidth, rmode->xfbHeight);
|
|
||||||
|
|
||||||
while(!doreload && !dooff) {
|
|
||||||
CON_Init(xfb[fbi],0,0,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
//VIDEO_ClearFrameBuffer(rmode,xfb[fbi],COLOR_BLACK);
|
|
||||||
std::cout<<"\n\n\n";
|
|
||||||
WPAD_ReadPending(WPAD_CHAN_ALL, countevs);
|
|
||||||
int wiimote_connection_status = WPAD_Probe(0, &type);
|
|
||||||
print_wiimote_connection_status(wiimote_connection_status);
|
|
||||||
|
|
||||||
std::cout<<" Event count: "<<evctr<<"\n";
|
|
||||||
if(wiimote_connection_status == WPAD_ERR_NONE) {
|
|
||||||
print_and_draw_wiimote_data(xfb[fbi]);
|
|
||||||
}
|
|
||||||
VIDEO_SetNextFramebuffer(xfb[fbi]);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
fbi ^= 1;
|
|
||||||
}
|
|
||||||
if(doreload) return 0;
|
|
||||||
if(dooff) SYS_ResetSystem(SYS_SHUTDOWN,0,0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,135 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lwiiuse -lbte -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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), -iquote $(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{F75021E3-73BF-425C-BA57-3FE7E2F6E02C}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_wrtc.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_wrtc.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,70 +0,0 @@
|
|||||||
#include <gccore.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <ogcsys.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <ogc/lwp_watchdog.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <debug.h>
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
|
|
||||||
u32 first_frame = 1;
|
|
||||||
GXRModeObj *rmode;
|
|
||||||
|
|
||||||
inline void Initialise()
|
|
||||||
{
|
|
||||||
// Initialise the video system
|
|
||||||
VIDEO_Init();
|
|
||||||
|
|
||||||
// This function initialises the attached controllers
|
|
||||||
PAD_Init();
|
|
||||||
|
|
||||||
// Obtain the preferred video mode from the system
|
|
||||||
// This will correspond to the settings in the Wii menu
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
|
||||||
// Allocate memory for the display in the uncached region
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
|
|
||||||
// Initialise the console, required for printf
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
|
|
||||||
// Set up the video registers with the chosen mode
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
|
|
||||||
// Tell the video hardware where our display memory is
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
|
|
||||||
// Make the display visible
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
|
|
||||||
// Flush the video register changes to the hardware
|
|
||||||
VIDEO_Flush();
|
|
||||||
|
|
||||||
// Wait for Video setup to complete
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
Initialise();
|
|
||||||
|
|
||||||
time_t wii_time;
|
|
||||||
//settime(secs_to_ticks(time(NULL) - 0x386D4380));
|
|
||||||
wii_time = time(NULL);
|
|
||||||
|
|
||||||
std::cout << "\x1b[20;0HWii RTC time is " <<ctime(&wii_time) <<" "<< wii_time;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
wii_time = time(NULL);
|
|
||||||
std::cout << "\x1b[10;0HWii RTC time is " << ctime(&wii_time) <<" "<< wii_time;
|
|
||||||
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,135 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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 := $(notdir $(CURDIR))
|
|
||||||
BUILD := build
|
|
||||||
SOURCES := source
|
|
||||||
DATA := data
|
|
||||||
INCLUDES :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lwiiuse -lbte -lfat -logc -lm
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS :=
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# 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)/$(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), -iquote $(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)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(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
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{F250A358-225C-4B50-ABAE-5B3D4EC9DC4E}</ProjectGuid>
|
|
||||||
<RootNamespace>TestSuite</RootNamespace>
|
|
||||||
<Keyword>MakeFileProj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Makefile</ConfigurationType>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">build\</IntDir>
|
|
||||||
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeBuildCommandLine>
|
|
||||||
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean && make -r 2>&1 | sed -e %27s/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/’</NMakeReBuildCommandLine>
|
|
||||||
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">make clean</NMakeCleanCommandLine>
|
|
||||||
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">dolphintest_wrtc.dol</NMakeOutput>
|
|
||||||
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
|
|
||||||
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\include;C:\devkitPro\libogc\include;$(NMakeIncludeSearchPath)</NMakeIncludeSearchPath>
|
|
||||||
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
|
|
||||||
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
|
|
||||||
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<BuildLog>
|
|
||||||
<Path>build\BuildLog.htm</Path>
|
|
||||||
</BuildLog>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="source\dolphintest_wsd.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Makefile" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,135 +0,0 @@
|
|||||||
// SD card insertion/removal callback demo
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <wiiuse/wpad.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define IOCTL_SDIO_SENDCMD 0x07
|
|
||||||
|
|
||||||
#define SDIO_CMD_REGINTR 0x40
|
|
||||||
#define SDIO_CMD_UNREGINTR 0x41
|
|
||||||
|
|
||||||
#define SD_INSERT_EVENT 0x01
|
|
||||||
#define SD_REMOVE_EVENT 0x02
|
|
||||||
|
|
||||||
static struct _sdiorequest
|
|
||||||
{
|
|
||||||
u32 cmd;
|
|
||||||
u32 cmd_type;
|
|
||||||
u32 rsp_type;
|
|
||||||
u32 arg;
|
|
||||||
u32 blk_cnt;
|
|
||||||
u32 blk_size;
|
|
||||||
void *dma_addr;
|
|
||||||
u32 isdma;
|
|
||||||
u32 pad0;
|
|
||||||
} sd_req;
|
|
||||||
|
|
||||||
static struct _sdioresponse
|
|
||||||
{
|
|
||||||
u32 rsp_fields[3];
|
|
||||||
u32 acmd12_response;
|
|
||||||
} sd_resp;
|
|
||||||
|
|
||||||
static s32 __sd0_fd = -1;
|
|
||||||
static const char _sd0_fs[] ATTRIBUTE_ALIGN(32) = "/dev/sdio/slot0";
|
|
||||||
|
|
||||||
static s32 __sdio_getinterrupt(u32 hook, ipccallback cb)
|
|
||||||
{
|
|
||||||
memset(&sd_req, 0, sizeof(sd_req));
|
|
||||||
|
|
||||||
sd_req.cmd = SDIO_CMD_REGINTR;
|
|
||||||
sd_req.arg = hook;
|
|
||||||
|
|
||||||
if (hook==SD_INSERT_EVENT)
|
|
||||||
printf("Requesting insert event %p %p\n", cb, &sd_resp);
|
|
||||||
else if (hook==SD_REMOVE_EVENT)
|
|
||||||
printf("Requesting removal event %p %p\n", cb, &sd_resp);
|
|
||||||
else
|
|
||||||
printf("I don't know what I'm requesting here: hook=%u\n", hook);
|
|
||||||
|
|
||||||
if (__sd0_fd<0)
|
|
||||||
__sd0_fd = IOS_Open(_sd0_fs,1);
|
|
||||||
|
|
||||||
if (__sd0_fd>=0)
|
|
||||||
return IOS_IoctlAsync(__sd0_fd,IOCTL_SDIO_SENDCMD,&sd_req,sizeof(sd_req),&sd_resp,sizeof(sd_resp),cb,NULL);
|
|
||||||
|
|
||||||
// else return the IOS_Open error code
|
|
||||||
return __sd0_fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
static s32 __sdio_releaseinterrupt(void)
|
|
||||||
{
|
|
||||||
if (__sd0_fd<0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// this command makes the IOS_IoctlAsync call above return a response immediately
|
|
||||||
|
|
||||||
// sd_req.arg is already set to the right value (1 or 2, whatever was used last)
|
|
||||||
sd_req.cmd = SDIO_CMD_UNREGINTR;
|
|
||||||
return IOS_Ioctl(__sd0_fd,IOCTL_SDIO_SENDCMD,&sd_req,sizeof(sd_req),&sd_resp,sizeof(sd_resp));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sd_cb(u32 ret, void* unused)
|
|
||||||
{
|
|
||||||
printf("Got an SD interrupt, ret = %08X\n", ret);
|
|
||||||
printf("Response data: %08X %08X %08X %08X\n", sd_resp.rsp_fields[0], sd_resp.rsp_fields[1], sd_resp.rsp_fields[2], sd_resp.acmd12_response);
|
|
||||||
|
|
||||||
if (ret==SD_INSERT_EVENT)
|
|
||||||
{
|
|
||||||
printf("SD card was inserted\n");
|
|
||||||
// tell us when it gets removed
|
|
||||||
__sdio_getinterrupt(SD_REMOVE_EVENT, (ipccallback)sd_cb);
|
|
||||||
}
|
|
||||||
else if (ret==SD_REMOVE_EVENT)
|
|
||||||
{
|
|
||||||
printf("SD card was removed\n");
|
|
||||||
// tell us when something is inserted
|
|
||||||
__sdio_getinterrupt(SD_INSERT_EVENT, (ipccallback)sd_cb);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
printf("Unknown SD int: %08X\n", ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void *xfb = NULL;
|
|
||||||
static GXRModeObj *rmode = NULL;
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
VIDEO_Init();
|
|
||||||
WPAD_Init();
|
|
||||||
rmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
|
|
||||||
console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
|
|
||||||
VIDEO_Configure(rmode);
|
|
||||||
VIDEO_SetNextFramebuffer(xfb);
|
|
||||||
VIDEO_SetBlack(FALSE);
|
|
||||||
VIDEO_Flush();
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
|
|
||||||
|
|
||||||
printf("\x1b[2;0H");
|
|
||||||
printf("SD Card insertion/removal demo\n");
|
|
||||||
printf("Press HOME at any time to exit\n");
|
|
||||||
|
|
||||||
__sdio_getinterrupt(SD_INSERT_EVENT, (ipccallback)sd_cb);
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
WPAD_ScanPads();
|
|
||||||
u32 pressed = WPAD_ButtonsDown(0);
|
|
||||||
if ( pressed & WPAD_BUTTON_HOME ) break;
|
|
||||||
VIDEO_WaitVSync();
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("SD event release returned %d\n", __sdio_releaseinterrupt());
|
|
||||||
IOS_Close(__sd0_fd);
|
|
||||||
|
|
||||||
sleep(4);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,136 +0,0 @@
|
|||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:*
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
fun:dlopen
|
|
||||||
fun:g_module_open
|
|
||||||
obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9
|
|
||||||
fun:g_type_module_use
|
|
||||||
fun:gtk_theme_engine_get
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
fun:dlopen
|
|
||||||
fun:g_module_open
|
|
||||||
obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
fun:dlopen
|
|
||||||
fun:g_module_open
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libdl-2.7.so
|
|
||||||
fun:dlsym
|
|
||||||
fun:g_module_symbol
|
|
||||||
fun:g_module_open
|
|
||||||
obj:/usr/lib/libgtk-x11-2.0.so.0.1200.9
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/ld-2.7.so
|
|
||||||
fun:__libc_dlopen_mode
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
obj:/lib/libc-2.7.so
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Cond
|
|
||||||
fun:snd_pcm_direct_shm_create_or_connect
|
|
||||||
fun:snd_pcm_dmix_open
|
|
||||||
fun:_snd_pcm_dmix_open
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
fun:snd_pcm_open_named_slave
|
|
||||||
fun:_snd_pcm_softvol_open
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
fun:snd_pcm_open_named_slave
|
|
||||||
fun:_snd_pcm_plug_open
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
fun:snd_pcm_open_named_slave
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Cond
|
|
||||||
obj:/usr/lib/libGLcore.so.169.12
|
|
||||||
obj:/usr/lib/libGLcore.so.169.12
|
|
||||||
fun:*
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Cond
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
fun:snd_pcm_poll_descriptors_revents
|
|
||||||
fun:snd_pcm_wait_nocheck
|
|
||||||
fun:snd_pcm_write_areas
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
obj:*
|
|
||||||
}
|
|
||||||
{
|
|
||||||
<insert a suppression name here>
|
|
||||||
Memcheck:Addr8
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
fun:snd_pcm_wait_nocheck
|
|
||||||
fun:snd_pcm_write_areas
|
|
||||||
obj:/usr/lib/libasound.so.2.0.0
|
|
||||||
obj:*
|
|
||||||
}
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
|||||||
valgrind --gen-suppressions=yes --suppressions=d.supp ./Dolphin $1 $2 $3
|
|
||||||
|
|
@ -1,348 +0,0 @@
|
|||||||
#include "DSPJitTester.h"
|
|
||||||
|
|
||||||
void nx_dr()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0004);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_ir()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0008);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_nr()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x000c);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_IX0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_mv()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0010);
|
|
||||||
tester.AddTestData(DSP_REG_ACL0);
|
|
||||||
tester.AddTestData(DSP_REG_AXL0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void dar()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x0004);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
void iar()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x0008);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
void subarn()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x000c);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_IX0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
void addarn()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x0010);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_IX0);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
void sbclr()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x1200);
|
|
||||||
tester.AddTestData(DSP_REG_SR);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
void sbset()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x1300);
|
|
||||||
tester.AddTestData(DSP_REG_SR);
|
|
||||||
tester.TestAll();
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_s()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0020);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_ACL0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_sn()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0024);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_IX0);
|
|
||||||
tester.AddTestData(DSP_REG_ACL0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_l()
|
|
||||||
{
|
|
||||||
|
|
||||||
DSPJitTester tester(0x8000, 0x0040);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_AXL0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void set16_l()
|
|
||||||
{
|
|
||||||
|
|
||||||
DSPJitTester tester(0x8e00, 0x0070);
|
|
||||||
tester.AddTestData(DSP_REG_SR, 0);
|
|
||||||
tester.AddTestData(DSP_REG_SR, SR_40_MODE_BIT);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_ln()
|
|
||||||
{
|
|
||||||
DSPJitTester tester(0x8000, 0x0044);
|
|
||||||
tester.AddTestData(DSP_REG_AR0);
|
|
||||||
tester.AddTestData(DSP_REG_WR0);
|
|
||||||
tester.AddTestData(DSP_REG_IX0);
|
|
||||||
tester.AddTestData(DSP_REG_AXL0);
|
|
||||||
tester.TestAll(true);
|
|
||||||
tester.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_ls()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x0080);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x0080);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_lsn()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x0084);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.AddTestData(DSP_REG_IX0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x0084);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_lsm()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x0088);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x0088);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.AddTestData(DSP_REG_IX3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_lsnm()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x008c);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.AddTestData(DSP_REG_IX0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x008c);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.AddTestData(DSP_REG_IX3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_sl()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x0082);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x0082);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_sln()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x0086);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.AddTestData(DSP_REG_IX0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x0086);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_slm()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x008a);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x008a);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.AddTestData(DSP_REG_IX3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_slnm()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x008e);
|
|
||||||
tester1.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.AddTestData(DSP_REG_IX0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x008e);
|
|
||||||
tester2.AddTestData(DSP_REG_ACM0);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.AddTestData(DSP_REG_IX3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void nx_ld()
|
|
||||||
{
|
|
||||||
DSPJitTester tester1(0x8000, 0x00c0);
|
|
||||||
tester1.AddTestData(DSP_REG_AXL0,0xdead);
|
|
||||||
tester1.AddTestData(DSP_REG_AXL1,0xbeef);
|
|
||||||
tester1.AddTestData(DSP_REG_AR0);
|
|
||||||
tester1.AddTestData(DSP_REG_WR0);
|
|
||||||
tester1.AddTestData(DSP_REG_IX0);
|
|
||||||
tester1.TestAll(true);
|
|
||||||
tester1.Report();
|
|
||||||
|
|
||||||
DSPJitTester tester2(0x8000, 0x00c0);
|
|
||||||
tester2.AddTestData(DSP_REG_AXL0,0xdead);
|
|
||||||
tester2.AddTestData(DSP_REG_AXL1,0xbeef);
|
|
||||||
tester2.AddTestData(DSP_REG_AR3);
|
|
||||||
tester2.AddTestData(DSP_REG_WR3);
|
|
||||||
tester2.AddTestData(DSP_REG_IX3);
|
|
||||||
tester2.TestAll(true);
|
|
||||||
tester2.Report();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AudioJitTests()
|
|
||||||
{
|
|
||||||
DSPJitTester::Initialize();
|
|
||||||
dar();
|
|
||||||
iar();
|
|
||||||
subarn();
|
|
||||||
addarn();
|
|
||||||
sbclr();
|
|
||||||
sbset();
|
|
||||||
|
|
||||||
nx_ir();
|
|
||||||
nx_dr();
|
|
||||||
nx_nr();
|
|
||||||
nx_mv();
|
|
||||||
|
|
||||||
set16_l();
|
|
||||||
|
|
||||||
nx_s();
|
|
||||||
nx_sn();
|
|
||||||
nx_l();
|
|
||||||
nx_ln();
|
|
||||||
nx_ls();
|
|
||||||
nx_lsn();
|
|
||||||
nx_lsm();
|
|
||||||
nx_lsnm();
|
|
||||||
nx_sl();
|
|
||||||
nx_sln();
|
|
||||||
nx_slm();
|
|
||||||
nx_slnm();
|
|
||||||
nx_ld();
|
|
||||||
}
|
|
||||||
|
|
||||||
//required to be able to link against DSPCore
|
|
||||||
void DSPHost_UpdateDebugger() { }
|
|
||||||
void DSPHost_CodeLoaded(unsigned const char*, int) { }
|
|
||||||
void DSPHost_InterruptRequest() { }
|
|
||||||
bool DSPHost_OnThread() { return false; }
|
|
||||||
void DSPHost_WriteHostMemory(unsigned char, unsigned int) { }
|
|
||||||
unsigned char DSPHost_ReadHostMemory(unsigned int) { return 0; }
|
|
@ -1,6 +0,0 @@
|
|||||||
set(SRCS AudioJitTests.cpp
|
|
||||||
DSPJitTester.cpp
|
|
||||||
UnitTests.cpp)
|
|
||||||
|
|
||||||
add_executable(tester ${SRCS})
|
|
||||||
target_link_libraries(tester core)
|
|
@ -1,310 +0,0 @@
|
|||||||
#include "DSPJitTester.h"
|
|
||||||
|
|
||||||
DSPJitTester::DSPJitTester(u16 opcode, u16 opcode_ext, bool verbose, bool only_failed)
|
|
||||||
: be_verbose(verbose), failed_only(only_failed), run_count(0), fail_count(0)
|
|
||||||
{
|
|
||||||
instruction = opcode | opcode_ext;
|
|
||||||
opcode_template = GetOpTemplate(instruction);
|
|
||||||
sprintf(instruction_name, "%s", opcode_template->name);
|
|
||||||
if (opcode_template->extended)
|
|
||||||
sprintf(&instruction_name[strlen(instruction_name)], "'%s",
|
|
||||||
extOpTable[instruction & (((instruction >> 12) == 0x3) ? 0x7F : 0xFF)]->name);
|
|
||||||
}
|
|
||||||
bool DSPJitTester::Test(SDSP dsp_settings)
|
|
||||||
{
|
|
||||||
if (be_verbose && !failed_only)
|
|
||||||
{
|
|
||||||
printf("Running %s: ", instruction_name);
|
|
||||||
DumpRegs(dsp_settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
last_input_dsp = dsp_settings;
|
|
||||||
last_int_dsp = RunInterpreter(dsp_settings);
|
|
||||||
last_jit_dsp = RunJit(dsp_settings);
|
|
||||||
|
|
||||||
run_count++;
|
|
||||||
bool success = AreEqual(last_int_dsp, last_jit_dsp);
|
|
||||||
if (!success)
|
|
||||||
fail_count++;
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
SDSP DSPJitTester::RunInterpreter(SDSP dsp_settings)
|
|
||||||
{
|
|
||||||
ResetInterpreter();
|
|
||||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
|
||||||
ExecuteInstruction(instruction);
|
|
||||||
|
|
||||||
return g_dsp;
|
|
||||||
}
|
|
||||||
SDSP DSPJitTester::RunJit(SDSP dsp_settings)
|
|
||||||
{
|
|
||||||
ResetJit();
|
|
||||||
memcpy(&g_dsp, &dsp_settings, sizeof(SDSP));
|
|
||||||
const u8* code = jit.GetCodePtr();
|
|
||||||
jit.ABI_PushAllCalleeSavedRegsAndAdjustStack();
|
|
||||||
jit.EmitInstruction(instruction);
|
|
||||||
jit.ABI_PopAllCalleeSavedRegsAndAdjustStack();
|
|
||||||
jit.RET();
|
|
||||||
((void(*)())code)();
|
|
||||||
|
|
||||||
return g_dsp;
|
|
||||||
}
|
|
||||||
void DSPJitTester::ResetInterpreter()
|
|
||||||
{
|
|
||||||
for (int i=0; i < WRITEBACKLOGSIZE; i++)
|
|
||||||
writeBackLogIdx[i] = -1;
|
|
||||||
}
|
|
||||||
void DSPJitTester::ResetJit()
|
|
||||||
{
|
|
||||||
jit.ClearCodeSpace();
|
|
||||||
}
|
|
||||||
|
|
||||||
static u16 GetRegister(SDSP const &dsp, int reg) {
|
|
||||||
switch(reg) {
|
|
||||||
case DSP_REG_AR0:
|
|
||||||
case DSP_REG_AR1:
|
|
||||||
case DSP_REG_AR2:
|
|
||||||
case DSP_REG_AR3:
|
|
||||||
return dsp.r.ar[reg - DSP_REG_AR0];
|
|
||||||
case DSP_REG_IX0:
|
|
||||||
case DSP_REG_IX1:
|
|
||||||
case DSP_REG_IX2:
|
|
||||||
case DSP_REG_IX3:
|
|
||||||
return dsp.r.ix[reg - DSP_REG_IX0];
|
|
||||||
case DSP_REG_WR0:
|
|
||||||
case DSP_REG_WR1:
|
|
||||||
case DSP_REG_WR2:
|
|
||||||
case DSP_REG_WR3:
|
|
||||||
return dsp.r.wr[reg - DSP_REG_WR0];
|
|
||||||
case DSP_REG_ST0:
|
|
||||||
case DSP_REG_ST1:
|
|
||||||
case DSP_REG_ST2:
|
|
||||||
case DSP_REG_ST3:
|
|
||||||
return dsp.r.st[reg - DSP_REG_ST0];
|
|
||||||
case DSP_REG_ACH0:
|
|
||||||
case DSP_REG_ACH1:
|
|
||||||
return dsp.r.ac[reg - DSP_REG_ACH0].h;
|
|
||||||
case DSP_REG_CR: return dsp.r.cr;
|
|
||||||
case DSP_REG_SR: return dsp.r.sr;
|
|
||||||
case DSP_REG_PRODL: return dsp.r.prod.l;
|
|
||||||
case DSP_REG_PRODM: return dsp.r.prod.m;
|
|
||||||
case DSP_REG_PRODH: return dsp.r.prod.h;
|
|
||||||
case DSP_REG_PRODM2: return dsp.r.prod.m2;
|
|
||||||
case DSP_REG_AXL0:
|
|
||||||
case DSP_REG_AXL1:
|
|
||||||
return dsp.r.ax[reg - DSP_REG_AXL0].l;
|
|
||||||
case DSP_REG_AXH0:
|
|
||||||
case DSP_REG_AXH1:
|
|
||||||
return dsp.r.ax[reg - DSP_REG_AXH0].h;
|
|
||||||
case DSP_REG_ACL0:
|
|
||||||
case DSP_REG_ACL1:
|
|
||||||
return dsp.r.ac[reg - DSP_REG_ACL0].l;
|
|
||||||
case DSP_REG_ACM0:
|
|
||||||
case DSP_REG_ACM1:
|
|
||||||
return dsp.r.ac[reg - DSP_REG_ACM0].m;
|
|
||||||
default:
|
|
||||||
_assert_msg_(DSP_CORE, 0, "cannot happen");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SetRegister(SDSP &dsp, int reg, u16 val) {
|
|
||||||
switch(reg) {
|
|
||||||
case DSP_REG_AR0:
|
|
||||||
case DSP_REG_AR1:
|
|
||||||
case DSP_REG_AR2:
|
|
||||||
case DSP_REG_AR3:
|
|
||||||
dsp.r.ar[reg - DSP_REG_AR0] = val; break;
|
|
||||||
case DSP_REG_IX0:
|
|
||||||
case DSP_REG_IX1:
|
|
||||||
case DSP_REG_IX2:
|
|
||||||
case DSP_REG_IX3:
|
|
||||||
dsp.r.ix[reg - DSP_REG_IX0] = val; break;
|
|
||||||
case DSP_REG_WR0:
|
|
||||||
case DSP_REG_WR1:
|
|
||||||
case DSP_REG_WR2:
|
|
||||||
case DSP_REG_WR3:
|
|
||||||
dsp.r.wr[reg - DSP_REG_WR0] = val; break;
|
|
||||||
case DSP_REG_ST0:
|
|
||||||
case DSP_REG_ST1:
|
|
||||||
case DSP_REG_ST2:
|
|
||||||
case DSP_REG_ST3:
|
|
||||||
dsp.r.st[reg - DSP_REG_ST0] = val; break;
|
|
||||||
case DSP_REG_ACH0:
|
|
||||||
case DSP_REG_ACH1:
|
|
||||||
dsp.r.ac[reg - DSP_REG_ACH0].h = val; break;
|
|
||||||
case DSP_REG_CR: dsp.r.cr = val; break;
|
|
||||||
case DSP_REG_SR: dsp.r.sr = val; break;
|
|
||||||
case DSP_REG_PRODL: dsp.r.prod.l = val; break;
|
|
||||||
case DSP_REG_PRODM: dsp.r.prod.m = val; break;
|
|
||||||
case DSP_REG_PRODH: dsp.r.prod.h = val; break;
|
|
||||||
case DSP_REG_PRODM2: dsp.r.prod.m2 = val; break;
|
|
||||||
case DSP_REG_AXL0:
|
|
||||||
case DSP_REG_AXL1:
|
|
||||||
dsp.r.ax[reg - DSP_REG_AXL0].l = val; break;
|
|
||||||
case DSP_REG_AXH0:
|
|
||||||
case DSP_REG_AXH1:
|
|
||||||
dsp.r.ax[reg - DSP_REG_AXH0].h = val; break;
|
|
||||||
case DSP_REG_ACL0:
|
|
||||||
case DSP_REG_ACL1:
|
|
||||||
dsp.r.ac[reg - DSP_REG_ACL0].l = val; break;
|
|
||||||
case DSP_REG_ACM0:
|
|
||||||
case DSP_REG_ACM1:
|
|
||||||
dsp.r.ac[reg - DSP_REG_ACM0].m = val; break;
|
|
||||||
default:
|
|
||||||
_assert_msg_(DSP_CORE, 0, "cannot happen");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DSPJitTester::AreEqual(SDSP& int_dsp, SDSP& jit_dsp)
|
|
||||||
{
|
|
||||||
bool equal = true;
|
|
||||||
for (int i = 0; i < DSP_REG_NUM; i++)
|
|
||||||
{
|
|
||||||
if (GetRegister(int_dsp,i) != GetRegister(jit_dsp, i))
|
|
||||||
{
|
|
||||||
if (equal)
|
|
||||||
{
|
|
||||||
if (failed_only)
|
|
||||||
{
|
|
||||||
printf("%s ", instruction_name);
|
|
||||||
DumpRegs(last_input_dsp);
|
|
||||||
}
|
|
||||||
if (be_verbose || failed_only)
|
|
||||||
printf("failed\n");
|
|
||||||
}
|
|
||||||
equal = false;
|
|
||||||
if (be_verbose || failed_only)
|
|
||||||
printf("\t%s: int = 0x%04x, jit = 0x%04x\n", regnames[i].name, GetRegister(int_dsp,i), GetRegister(jit_dsp, i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: more sophisticated checks?
|
|
||||||
if (!int_dsp.iram || !jit_dsp.iram)
|
|
||||||
{
|
|
||||||
if (be_verbose)
|
|
||||||
printf("(IRAM null)");
|
|
||||||
}
|
|
||||||
else if (memcmp(int_dsp.iram, jit_dsp.iram, DSP_IRAM_BYTE_SIZE))
|
|
||||||
{
|
|
||||||
printf("\tIRAM: different\n");
|
|
||||||
equal = false;
|
|
||||||
}
|
|
||||||
if (!int_dsp.dram || !jit_dsp.dram)
|
|
||||||
{
|
|
||||||
if (be_verbose)
|
|
||||||
printf("(DRAM null)");
|
|
||||||
}
|
|
||||||
else if (memcmp(int_dsp.dram, jit_dsp.dram, DSP_DRAM_BYTE_SIZE))
|
|
||||||
{
|
|
||||||
printf("\tDRAM: different\n");
|
|
||||||
equal = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (equal && be_verbose && !failed_only)
|
|
||||||
printf("passed\n");
|
|
||||||
return equal;
|
|
||||||
}
|
|
||||||
void DSPJitTester::Report()
|
|
||||||
{
|
|
||||||
printf("%s (0x%04x): Ran %d times, Failed %d times.\n", instruction_name, instruction, run_count, fail_count);
|
|
||||||
}
|
|
||||||
void DSPJitTester::DumpJittedCode()
|
|
||||||
{
|
|
||||||
ResetJit();
|
|
||||||
const u8* code = jit.GetCodePtr();
|
|
||||||
jit.EmitInstruction(instruction);
|
|
||||||
size_t code_size = jit.GetCodePtr() - code;
|
|
||||||
|
|
||||||
printf("%s emitted: ", instruction_name);
|
|
||||||
for (size_t i = 0; i < code_size; i++)
|
|
||||||
printf("%02x ", code[i]);
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
void DSPJitTester::DumpRegs(SDSP& dsp)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < DSP_REG_NUM; i++)
|
|
||||||
if (GetRegister(dsp,i))
|
|
||||||
printf("%s=0x%04x ", regnames[i].name, GetRegister(dsp,i));
|
|
||||||
}
|
|
||||||
void DSPJitTester::Initialize()
|
|
||||||
{
|
|
||||||
//init int
|
|
||||||
InitInstructionTable();
|
|
||||||
}
|
|
||||||
|
|
||||||
int DSPJitTester::TestOne(TestDataIterator it, SDSP& dsp)
|
|
||||||
{
|
|
||||||
int failed = 0;
|
|
||||||
if (it != test_values.end())
|
|
||||||
{
|
|
||||||
u8 reg = it->first;
|
|
||||||
TestData& data = it->second;
|
|
||||||
it++;
|
|
||||||
for (TestData::size_type i = 0; i < data.size(); i++)
|
|
||||||
{
|
|
||||||
SetRegister(dsp, reg, data.at(i));
|
|
||||||
failed += TestOne(it, dsp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!Test(dsp))
|
|
||||||
failed++;
|
|
||||||
}
|
|
||||||
return failed;
|
|
||||||
}
|
|
||||||
int DSPJitTester::TestAll(bool verbose_fail)
|
|
||||||
{
|
|
||||||
int failed = 0;
|
|
||||||
|
|
||||||
SDSP dsp;
|
|
||||||
memset(&dsp, 0, sizeof(SDSP));
|
|
||||||
//from DSPCore_Init
|
|
||||||
dsp.irom = (u16*)AllocateMemoryPages(DSP_IROM_BYTE_SIZE);
|
|
||||||
dsp.iram = (u16*)AllocateMemoryPages(DSP_IRAM_BYTE_SIZE);
|
|
||||||
dsp.dram = (u16*)AllocateMemoryPages(DSP_DRAM_BYTE_SIZE);
|
|
||||||
dsp.coef = (u16*)AllocateMemoryPages(DSP_COEF_BYTE_SIZE);
|
|
||||||
|
|
||||||
// Fill roms with distinct patterns.
|
|
||||||
for (int i = 0; i < DSP_IROM_SIZE; i++)
|
|
||||||
dsp.irom[i] = (i & 0x3fff) | 0x4000;
|
|
||||||
for (int i = 0; i < DSP_COEF_SIZE; i++)
|
|
||||||
dsp.coef[i] = (i & 0x3fff) | 0x8000;
|
|
||||||
for (int i = 0; i < DSP_DRAM_SIZE; i++)
|
|
||||||
dsp.dram[i] = (i & 0x3fff) | 0xc000;
|
|
||||||
// Fill IRAM with HALT opcodes.
|
|
||||||
for (int i = 0; i < DSP_IRAM_SIZE; i++)
|
|
||||||
dsp.iram[i] = 0x0021; // HALT opcode
|
|
||||||
|
|
||||||
bool verbose = failed_only;
|
|
||||||
failed_only = verbose_fail;
|
|
||||||
failed += TestOne(test_values.begin(), dsp);
|
|
||||||
failed_only = verbose;
|
|
||||||
|
|
||||||
FreeMemoryPages(dsp.irom, DSP_IROM_BYTE_SIZE);
|
|
||||||
FreeMemoryPages(dsp.iram, DSP_IRAM_BYTE_SIZE);
|
|
||||||
FreeMemoryPages(dsp.dram, DSP_DRAM_BYTE_SIZE);
|
|
||||||
FreeMemoryPages(dsp.coef, DSP_COEF_BYTE_SIZE);
|
|
||||||
|
|
||||||
return failed;
|
|
||||||
}
|
|
||||||
void DSPJitTester::AddTestData(u8 reg)
|
|
||||||
{
|
|
||||||
AddTestData(reg, 0);
|
|
||||||
AddTestData(reg, 1);
|
|
||||||
AddTestData(reg, 0x1fff);
|
|
||||||
AddTestData(reg, 0x2000);
|
|
||||||
AddTestData(reg, 0x2001);
|
|
||||||
AddTestData(reg, 0x7fff);
|
|
||||||
AddTestData(reg, 0x8000);
|
|
||||||
AddTestData(reg, 0x8001);
|
|
||||||
AddTestData(reg, 0xfffe);
|
|
||||||
AddTestData(reg, 0xffff);
|
|
||||||
}
|
|
||||||
void DSPJitTester::AddTestData(u8 reg, u16 value)
|
|
||||||
{
|
|
||||||
if (reg < DSP_REG_NUM)
|
|
||||||
test_values[reg].push_back(value);
|
|
||||||
}
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
// How to use the DSPJitTester:
|
|
||||||
//
|
|
||||||
// == Before running ==
|
|
||||||
// Make sure to call Initialize to set initial stuff required by int and jit:
|
|
||||||
// DSPJitTester::Initialize();
|
|
||||||
//
|
|
||||||
// == Creation of a testcase ==
|
|
||||||
// Create a testcase for a normal operation:
|
|
||||||
// DSPJitTester tester(0x0004); //taken from DSPTables.cpp, opcodes[]
|
|
||||||
//
|
|
||||||
// Create a testcase for an extended operation:
|
|
||||||
// DSPJitTester tester(0x8000, 0x0004); //NX from opcodes, DR from opcodes_ext
|
|
||||||
//
|
|
||||||
// By default, no messages are written.
|
|
||||||
// To log all operations, set verbose to true:
|
|
||||||
// DSPJitTester tester(0x8000, 0x0004, true);
|
|
||||||
//
|
|
||||||
// You can also choose to only print failing tests:
|
|
||||||
// DSPJitTester tester(0x8000, 0x0004, verbosity_setting, true);
|
|
||||||
// verbose = true will give the same output as verbose,
|
|
||||||
// while verbose = false will only (really!) print failing tests.
|
|
||||||
//
|
|
||||||
// == Setting up values ==
|
|
||||||
// You can set the tester up with values for each DSP register:
|
|
||||||
// tester.AddTestData(DSP_REG_ACC0, 1);
|
|
||||||
// tester.AddTestData(DSP_REG_ACC0, 2);
|
|
||||||
// tester.AddTestData(DSP_REG_ACC0, 3);
|
|
||||||
//
|
|
||||||
// You can also choose to have a few predefined values added for a register:
|
|
||||||
// tester.AddTestData(DSP_REG_ACC0); //see the method body for the values added
|
|
||||||
//
|
|
||||||
// == Running the tests ==
|
|
||||||
// After setup, you can either run JIT against the interpreter
|
|
||||||
// using all predefined register values, pass your own set of
|
|
||||||
// registers or run either of the two independently from each other.
|
|
||||||
//
|
|
||||||
// int failed_tests = tester.TestAll(); //run jit against int, using values from AddTestData
|
|
||||||
// int failed_tests = tester.TestAll(true); //override the value for only_failed to show failure
|
|
||||||
//
|
|
||||||
// SDSP dsp = GetCustomSetOfRegisters();
|
|
||||||
// bool success = tester.Test(dsp); //run jit against int, using a custom set of register values
|
|
||||||
//
|
|
||||||
// SDSP result = tester.RunInterpreter(dsp); //run int alone
|
|
||||||
// SDSP result = tester.RunJit(dsp); //run jit alone
|
|
||||||
//
|
|
||||||
// == Examining results ==
|
|
||||||
// When either verbose or only_failed is set to true, the tester will automatically report
|
|
||||||
// failure to stdout, along with input registers and the differences in output registers.
|
|
||||||
//
|
|
||||||
// tester.Report(); //display a small report afterwards
|
|
||||||
//
|
|
||||||
// SDSP int = tester.GetLastInterpreterDSP(); //examine the DSP set left after running int
|
|
||||||
// SDSP jit = tester.GetLastJitDSP(); //same for jit
|
|
||||||
//
|
|
||||||
// int tests_run = tester.GetRunCount();
|
|
||||||
// int tests_failed = tester.GetFailCount();
|
|
||||||
// const char* tested_instruction = tester.GetInstructionName();
|
|
||||||
// printf("%s ran %d tests and failed %d times\n", tested_instruction, tests_run, tests_failed);
|
|
||||||
//
|
|
||||||
// tester.DumpJittedCode(); //prints the code bytes produced by jit (examine with udcli/udis86 or similar)
|
|
||||||
|
|
||||||
#ifndef __DSP_JIT_TESTER_
|
|
||||||
#define __DSP_JIT_TESTER_
|
|
||||||
|
|
||||||
#include "DSP/DSPCore.h"
|
|
||||||
#include "DSP/DSPInterpreter.h"
|
|
||||||
#include <map>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
typedef std::vector<u16> TestData;
|
|
||||||
typedef std::map<u8, TestData> TestDataList;
|
|
||||||
typedef TestDataList::iterator TestDataIterator;
|
|
||||||
#define DSP_REG_NUM 32
|
|
||||||
|
|
||||||
class DSPJitTester
|
|
||||||
{
|
|
||||||
UDSPInstruction instruction;
|
|
||||||
const DSPOPCTemplate *opcode_template;
|
|
||||||
DSPEmitter jit;
|
|
||||||
SDSP last_int_dsp;
|
|
||||||
SDSP last_jit_dsp;
|
|
||||||
SDSP last_input_dsp;
|
|
||||||
bool be_verbose;
|
|
||||||
bool failed_only;
|
|
||||||
int run_count;
|
|
||||||
int fail_count;
|
|
||||||
char instruction_name[16];
|
|
||||||
TestDataList test_values;
|
|
||||||
|
|
||||||
bool AreEqual(SDSP&, SDSP&);
|
|
||||||
int TestOne(TestDataIterator, SDSP&);
|
|
||||||
void DumpRegs(SDSP&);
|
|
||||||
public:
|
|
||||||
DSPJitTester(u16 opcode, u16 opcode_ext = 0, bool verbose = false, bool only_failed = false);
|
|
||||||
bool Test(SDSP);
|
|
||||||
int TestAll() { return TestAll(failed_only); }
|
|
||||||
int TestAll(bool verbose_fail);
|
|
||||||
void AddTestData(u8 reg);
|
|
||||||
void AddTestData(u8 reg, u16 value);
|
|
||||||
SDSP RunInterpreter(SDSP);
|
|
||||||
SDSP RunJit(SDSP);
|
|
||||||
void ResetInterpreter();
|
|
||||||
void ResetJit();
|
|
||||||
inline SDSP GetLastInterpreterDSP() { return last_int_dsp; }
|
|
||||||
inline SDSP GetLastJitDSP() { return last_jit_dsp; }
|
|
||||||
inline int GetRunCount() { return run_count; }
|
|
||||||
inline int GetFailCount() { return fail_count; }
|
|
||||||
inline const char* GetInstructionName() { return instruction_name; }
|
|
||||||
void Report();
|
|
||||||
void DumpJittedCode();
|
|
||||||
|
|
||||||
static void Initialize();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,145 +0,0 @@
|
|||||||
// Copyright (C) 2003 Dolphin Project.
|
|
||||||
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, version 2.0.
|
|
||||||
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License 2.0 for more details.
|
|
||||||
|
|
||||||
// A copy of the GPL 2.0 should have been included with the program.
|
|
||||||
// If not, see http://www.gnu.org/licenses/
|
|
||||||
|
|
||||||
// Official SVN repository and contact information can be found at
|
|
||||||
// http://code.google.com/p/dolphin-emu/
|
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include "StringUtil.h"
|
|
||||||
#include "MathUtil.h"
|
|
||||||
#include "PowerPC/PowerPC.h"
|
|
||||||
#include "HW/SI_DeviceGCController.h"
|
|
||||||
|
|
||||||
void AudioJitTests();
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
int fail_count = 0;
|
|
||||||
|
|
||||||
#define EXPECT_TRUE(a) \
|
|
||||||
if (!a) { \
|
|
||||||
cout << "FAIL (" << __FUNCTION__ << "): " << #a << " is false" << endl; \
|
|
||||||
cout << "Value: " << a << endl << "Expected: true" << endl; \
|
|
||||||
fail_count++; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define EXPECT_FALSE(a) \
|
|
||||||
if (a) { \
|
|
||||||
cout << "FAIL (" << __FUNCTION__ << "): " << #a << " is true" << endl; \
|
|
||||||
cout << "Value: " << a << endl << "Expected: false" << endl; \
|
|
||||||
fail_count++; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define EXPECT_EQ(a, b) \
|
|
||||||
if ((a) != (b)) { \
|
|
||||||
cout << "FAIL (" << __FUNCTION__ << "): " << #a << " is not equal to " << #b << endl; \
|
|
||||||
cout << "Actual: " << a << endl << "Expected: " << b << endl; \
|
|
||||||
fail_count++; \
|
|
||||||
}
|
|
||||||
|
|
||||||
void CoreTests()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void MathTests()
|
|
||||||
{
|
|
||||||
// Tests that our fp classifier is correct.
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(1.0), MathUtil::PPC_FPCLASS_PN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(-1.0), MathUtil::PPC_FPCLASS_NN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(1235223.0), MathUtil::PPC_FPCLASS_PN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(-1263221.0), MathUtil::PPC_FPCLASS_NN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(1.0E-308), MathUtil::PPC_FPCLASS_PD);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(-1.0E-308), MathUtil::PPC_FPCLASS_ND);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(0.0), MathUtil::PPC_FPCLASS_PZ);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(-0.0), MathUtil::PPC_FPCLASS_NZ);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(HUGE_VAL), MathUtil::PPC_FPCLASS_PINF); // weird #define for infinity
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(-HUGE_VAL), MathUtil::PPC_FPCLASS_NINF);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyDouble(sqrt(-1.0)), MathUtil::PPC_FPCLASS_QNAN);
|
|
||||||
|
|
||||||
// Float version
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(1.0f), MathUtil::PPC_FPCLASS_PN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(-1.0f), MathUtil::PPC_FPCLASS_NN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(1235223.0f), MathUtil::PPC_FPCLASS_PN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(-1263221.0f), MathUtil::PPC_FPCLASS_NN);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(1.0E-43f), MathUtil::PPC_FPCLASS_PD);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(-1.0E-43f), MathUtil::PPC_FPCLASS_ND);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(0.0f), MathUtil::PPC_FPCLASS_PZ);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(-0.0f), MathUtil::PPC_FPCLASS_NZ);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat((float)HUGE_VAL), MathUtil::PPC_FPCLASS_PINF); // weird #define for infinity
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat((float)-HUGE_VAL), MathUtil::PPC_FPCLASS_NINF);
|
|
||||||
EXPECT_EQ(MathUtil::ClassifyFloat(sqrtf(-1.0f)), MathUtil::PPC_FPCLASS_QNAN);
|
|
||||||
|
|
||||||
EXPECT_FALSE(MathUtil::IsNAN(1.0));
|
|
||||||
EXPECT_TRUE(MathUtil::IsNAN(sqrt(-1.0)));
|
|
||||||
EXPECT_FALSE(MathUtil::IsSNAN(sqrt(-1.0)));
|
|
||||||
|
|
||||||
// EXPECT_TRUE(MathUtil::IsQNAN(sqrt(-1.0))); // Hmm...
|
|
||||||
EXPECT_EQ(pow2(2.0), 4.0);
|
|
||||||
EXPECT_EQ(pow2(-2.0), 4.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void StringTests()
|
|
||||||
{
|
|
||||||
EXPECT_EQ(StripSpaces(" abc "), "abc");
|
|
||||||
|
|
||||||
EXPECT_EQ(StripQuotes("\"abc\""), "abc");
|
|
||||||
EXPECT_EQ(StripQuotes("\"abc\" "), "\"abc\" ");
|
|
||||||
|
|
||||||
EXPECT_EQ(TabsToSpaces(4, "a\tb"), "a b");
|
|
||||||
EXPECT_EQ(ThousandSeparate(1234567, 15), " 1,234,567");
|
|
||||||
|
|
||||||
int i = 7;
|
|
||||||
EXPECT_EQ(false, TryParse("FF", &i));
|
|
||||||
EXPECT_EQ(7, i);
|
|
||||||
EXPECT_EQ(true, TryParse("22", &i));
|
|
||||||
EXPECT_EQ(22, i);
|
|
||||||
|
|
||||||
std::vector<std::string> strs;
|
|
||||||
SplitString("blah,foo,bar", ',', strs);
|
|
||||||
|
|
||||||
EXPECT_EQ(3, strs.size());
|
|
||||||
EXPECT_EQ("bar", strs[2]);
|
|
||||||
|
|
||||||
std::string path, fname, ext;
|
|
||||||
SplitPath("C:/some/path/test.jpg", &path, &fname, &ext);
|
|
||||||
EXPECT_EQ("C:/some/path/", path);
|
|
||||||
EXPECT_EQ("test", fname);
|
|
||||||
EXPECT_EQ(".jpg", ext);
|
|
||||||
|
|
||||||
SplitPath("C:/so.me/path/", &path, &fname, &ext);
|
|
||||||
EXPECT_EQ("C:/so.me/path/", path);
|
|
||||||
EXPECT_EQ("", fname);
|
|
||||||
EXPECT_EQ("", ext);
|
|
||||||
|
|
||||||
SplitPath("test.file.jpg", &path, &fname, &ext);
|
|
||||||
EXPECT_EQ("", path);
|
|
||||||
EXPECT_EQ("test.file", fname);
|
|
||||||
EXPECT_EQ(".jpg", ext);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
AudioJitTests();
|
|
||||||
|
|
||||||
CoreTests();
|
|
||||||
MathTests();
|
|
||||||
StringTests();
|
|
||||||
if (fail_count == 0)
|
|
||||||
{
|
|
||||||
printf("All tests passed.\n");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,217 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{40C636FA-B5BF-4D67-ABC8-376B524A7551}</ProjectGuid>
|
|
||||||
<RootNamespace>UnitTests</RootNamespace>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
|
||||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</PostBuildEventUseInBuild>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
|
||||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</PostBuildEventUseInBuild>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
|
||||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</PostBuildEventUseInBuild>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
|
||||||
<PostBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</PostBuildEventUseInBuild>
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
|
||||||
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>../Core/Core;../Core/Common;../Core/InputCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>Iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>xcopy "$(TargetPath)" "$(SolutionDir)..\Binary\$(Platform)\" /e /s /y /d</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>../Core/Core;../Core/Common;../Core/InputCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>Iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>xcopy "$(TargetPath)" "$(SolutionDir)..\Binary\$(Platform)\" /e /s /y /d</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>../Core/Core;../Core/Common;../Core/InputCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>Iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>xcopy "$(TargetPath)" "$(SolutionDir)..\Binary\$(Platform)\" /e /s /y /d</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<Midl>
|
|
||||||
<TargetEnvironment>X64</TargetEnvironment>
|
|
||||||
</Midl>
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>../Core/Core;../Core/Common;../Core/InputCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>Iphlpapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX64</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>xcopy "$(TargetPath)" "$(SolutionDir)..\Binary\$(Platform)\" /e /s /y /d</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="AudioJitTests.cpp" />
|
|
||||||
<ClCompile Include="DSPJitTester.cpp" />
|
|
||||||
<ClCompile Include="UnitTests.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="DSPJitTester.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\Externals\Bochs_disasm\Bochs_disasm.vcxproj">
|
|
||||||
<Project>{cd3d4c3c-1027-4d33-b047-aec7b56d0bf6}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Core\Common\Common.vcxproj">
|
|
||||||
<Project>{c87a4178-44f6-49b2-b7aa-c79af1b8c534}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Core\Core\Core.vcxproj">
|
|
||||||
<Project>{8c60e805-0da5-4e25-8f84-038db504bb0d}</Project>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Audio">
|
|
||||||
<UniqueIdentifier>{cde9a42c-90d9-4bc9-9182-3fcc0cf9f7a4}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="AudioJitTests.cpp">
|
|
||||||
<Filter>Audio</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="DSPJitTester.cpp">
|
|
||||||
<Filter>Audio</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="UnitTests.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="DSPJitTester.h">
|
|
||||||
<Filter>Audio</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
Loading…
x
Reference in New Issue
Block a user