I/Oレジスタ定義ヘッダファイルの生成は可能。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@2 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
nakasima 2008-11-07 08:39:51 +00:00
parent 7538e358dc
commit 6707109f4b
44 changed files with 6373 additions and 0 deletions

36
trunk/Makefile Normal file
View File

@ -0,0 +1,36 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrFirm - build
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRFIRM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
# build \
ifdef RVCT30BIN
SUBDIRS += \
bootrom \
endif # RVCT30BIN
#----------------------------------------------------------------------------
include $(CTRFIRM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

30
trunk/bootrom/Makefile Normal file
View File

@ -0,0 +1,30 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - build
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
build \
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,31 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - build
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
$(CTRFIRM_ROOT)/build/buildsetup \
libraries \
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,354 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - commondefs - common definitions for build system
# File: commondefs
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef BROMSDK_COMMONDEFS_
BROMSDK_COMMONDEFS_ = TRUE
CTR_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止
USE_MY_RULE_BIN = TRUE
EMPTY ?=
SPACE ?= $(EMPTY) $(EMPTY)
#
# SDK Major Version
#
BROMSDK_VERSION_MAJOR ?= 0
# EXO_PLATFORM = [TEG/TS]
EXO_PLATFORM ?= $(BROM_PLATFORM)
#
# CodeGen Target
#
# BROM_PLATFORM = [TEG/TS]
# BROM_MEMSIZE = [64M/128M]
# BROM_CODEGEN = [ARM/THUMB]
# BROM_PROC = [ARM11/ARM9]
#
# BROM_PROMGEN = [TRUE/FALSE]
# BROM_TARGET = [BROM/NORFIRM/NANDFIRM/GCDFIRM/APP]
#
BROM_PLATFORM ?= TEG
BROM_MEMSIZE ?= 128M
BROM_CODEGEN ?= THUMB
BROM_PROC ?= ARM11
BROM_TARGET ?= BROM
# replace TwlSDK
CTR_PLATFORM = $(BROM_PLATFORM)
CTR_MEMSIZE = $(BROM_MEMSIZE)
CTR_CODEGEN = $(BROM_CODEGEN)
CTR_PROC = $(BROM_PROC)
# replace NitroSDK
ifndef CODEGEN_PROC
CODEGEN_PROC := $(BROM_PROC)
endif
ifeq ($(BROM_CODEGEN),ALL)
BROM_CODEGEN_ALL ?= TRUE
override BROM_CODEGEN = ARM
endif
ifeq ($(BROM_CODEGEN),ARM)
BROM_CODEGEN_ARCH =
else # ($(BROM_CODEGEN),THUMB)
BROM_CODEGEN_ARCH = .thumb
endif
#
# C Compiler type
#
# CTR_CCTYPE = [CW/SNC/RVCT]
#
# replace NitroSDK
CTR_CCTYPE := RVCT
#
# SDK build type
#
# one of [BROM_DEBUG/BROM_RELEASE/BROM_FINALROM]
#
ifdef BROM_DEBUG
BROM_BUILD_TYPE ?= DEBUG
BROM_BUILD_DIR ?= Debug
else
ifdef BROM_FINALROM
BROM_BUILD_TYPE ?= FINALROM
BROM_BUILD_DIR ?= Rom
else # BROM_RELEASE (default)
BROM_BUILD_TYPE ?= RELEASE
BROM_BUILD_DIR ?= Release
endif
endif
# replace TwlSDK
CTR_BUILD_TYPE ?= $(BROM_BUILD_TYPE)
CTR_BUILD_DIR ?= $(BROM_BUILD_DIR)
#
# PMIC Revision
#
BROM_PMIC_REV ?= 100
# replace TwlSDK
CTR_PMIC_REV ?= $(BROM_PMIC_REV)
#
# Debugger Type
#
# one of [ISD/KMC/ARM]
#
BROM_DEBUGGER ?= KMC
# replace TwlSDK
CTR_DEBUGGER ?= $(BROM_DEBUGGER)
#----------------------------------------------------------------------------
# BROM-SDK path settings
#
BROM_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRBROM_ROOT)))
BROM_BUILDTOOLSDIR := $(BROM_ROOT)/build/buildtools
BROM_BUILDSETUPDIR := $(BROM_ROOT)/build/buildsetup
BROM_INCDIR := $(BROM_ROOT)/include
BROM_TOOLSDIR := $(BROM_ROOT)/tools
BROM_KEYSDIR := $(BROM_ROOT)/build/keys
BROM_COMPONENTSDIR := $(BROM_ROOT)/components
BROM_ADDINS ?= $(BROM_ROOT)/add-ins
BROM_CTRSDK_ROOT ?=$(shell cygpath -w $(CTRSDK_ROOT))
BROM_CTRFIRM_ROOT ?=$(shell cygpath -w $(CTRFIRM_ROOT))
BROM_CTRFIRM_INCDIR := $(BROM_CTRFIRM_ROOT)/include
BROM_CTRFIRM_TOOLSDIR := $(BROM_CTRFIRM_ROOT)/tools
BROM_BUILDARCH ?= $(CODEGEN_PROC)-$(BROM_PLATFORM)$(BROM_CODEGEN_ARCH)
BROM_BUILDARCH_ARM11 := ARM11-$(BROM_PLATFORM)$(BROM_CODEGEN_ARCH)
BROM_BUILDARCH_ARM9 := ARM9-$(BROM_PLATFORM)$(BROM_CODEGEN_ARCH)
BROM_BUILDTYPE ?= $(BROM_BUILDARCH)/$(BROM_BUILD_DIR)
BROM_BUILDTYPE_ARM11 := $(BROM_BUILDARCH_ARM11)/$(BROM_BUILD_DIR)
BROM_BUILDTYPE_ARM9 := $(BROM_BUILDARCH_ARM9)/$(BROM_BUILD_DIR)
BROM_LIBARCH := $(CODEGEN_PROC)-$(BROM_PLATFORM)
BROM_LIBTYPE := $(BROM_LIBARCH)/$(BROM_BUILD_DIR)
BROM_LIBDIR := $(BROM_ROOT)/lib/$(BROM_LIBTYPE)
BROM_LIBSYSCALLDIR := $(BROM_ROOT)/lib/$(BROM_LIBARCH)/etc
BROM_LIBSUFFIX := .brom$(BROM_CODEGEN_ARCH)
BROM_SPECDIR := $(BROM_INCDIR)/brom/specfiles
BROM_SPECARCH := $(BROM_LIBARCH)
ifneq ($(BROM_TARGET),BROM)
BROM_SPECARCH := $(BROM_SPECARCH)-$(BROM_TARGET)
endif
DEFAULT_BROM_LCFILE := $(BROM_SPECDIR)/$(BROM_SPECARCH).ldscript
ifndef BROM_PROMGEN
DEFAULT_BROM_LCFILE_TEMPLATE := $(BROM_SPECDIR)/$(BROM_SPECARCH)$(LCF_SUFFIX_).ldscript.template
DEFAULT_BROM_LCFILE_SPEC := $(BROM_SPECDIR)/$(BROM_SPECARCH).lsf
else # BROM_PROMGEN
DEFAULT_BROM_LCFILE_TEMPLATE := $(BROM_SPECDIR)/PROM.ldscript.template
DEFAULT_BROM_LCFILE_SPEC := $(BROM_SPECDIR)/PROM.lsf
endif # BROM_PROMGEN
DEFAULT_BROM_ROM_SPEC := $(BROM_SPECDIR)/ROM-$(CTR_PLATFORM).rsf
BROM_LCF_MAPHDRS := $(BROM_INCDIR)/brom/hw/$(BROM_PROC)/mmap_global.h \
$(BROM_INCDIR)/brom/hw/$(BROM_PROC)/mmap_brom.h \
$(BROM_CTRFIRM_INCDIR)/firm/hw/$(BROM_PROC)/mmap_firm.h \
$(BROM_CTRFIRM_INCDIR)/firm/hw/$(BROM_PROC)/mmap_wram.h \
ifeq ($(BROM_PROC),ARM11)
else # BROM_PROC == ARM9
BROM_LCF_MAPHDRS += $(BROM_INCDIR)/brom/hw/$(BROM_PROC)/mmap_tcm.h
endif # BROM_PROC == ARM9
# replace TwlSDK
CTR_BUILDARCH ?= $(BROM_BUILDARCH)
### Compiler & Linker settings
#-include $(BROM_BUILDTOOLSDIR)/commondefs.cctype.$(CTR_CCTYPE)
# replace NitroSDK
LCFILE_TEMPLATE ?= $(DEFAULT_BROM_LCFILE_TEMPLATE)
LCFILE_SPEC ?= $(DEFAULT_BROM_LCFILE_SPEC)
LCFILE_AUTOGEN ?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.ldscript))
LCFILE ?= $(LCFILE_AUTOGEN)
LDRES_FILE ?= # $(LDRES_AUTOGEN)
LDEPENDS_LCF += $(BROM_BUILDTOOLSDIR)/commondefs $(BROM_LCF_MAPHDRS)
LDEPENDS_RES += $(BROM_BUILDTOOLSDIR)/commondefs
### SDK Library settings
ifeq ($(BROM_TARGET),BROM)
ifndef BROM_PROMGEN
ifeq ($(CODEGEN_PROC),ARM11)
CRT0_O ?= crt0.o crt0_secure.o
else # CODEGEN_PROC==ARM9
CRT0_O ?= crt0.o crt0_secure_sp.o
endif # CODEGEN_PROC==ARM9
endif # BROM_PROMGEN
else # BROM_TARGET
CRT0_O ?= crt0_app.o
endif # BROM_TARGET
ifdef BROM_DEF_LINK_SCATLD
CRT0_O += crt0_scat.o
endif # BROM_DEF_LINK_SCATLD
ifeq ($(CODEGEN_PROC),ARM11)
BROM_LIBS_BASE ?= \
libos \
libmi \
libpxi \
libsyscall \
libswi \
libpad \
libpm \
libgcd \
libnvram \
libacsign \
libromsd \
libprint_hex \
libvlink \
ifdef BROM_PROFILE_TYPE
BROM_LIBS_BASE += libos.$(BROM_PROFILE_TYPE)
endif
else # ($(CODEGEN_PROC),ARM9)
BROM_LIBS_BASE ?= \
libos_sp \
libmi_sp \
libpxi_sp \
libswi_sp \
libsyscall_sp \
libpad_sp \
libpm_sp \
libgcd_sp \
libnvram_sp \
libaes_sp \
libacsign_sp \
libromsd_sp \
libvlink_sp \
ifdef BROM_PROFILE_TYPE
BROM_LIBS_BASE += libos_sp.$(BROM_PROFILE_TYPE)
endif
endif
BROM_LIBS ?= $(CRT0_O) $(addsuffix $(BROM_LIBSUFFIX).a,$(BROM_LIBS_BASE))
BROM_LDEPENDS_DBG ?= $(CTRBROM_ROOT)/build/libraries/os/common/os_printf.c \
#----------------------------------------------------------------------------
### CTR-commondefs
#
include $(CTRFIRM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
# MY BUILD TOOLS
#
MAKENORFIRM := $(BROM_CTRFIRM_TOOLSDIR)/bin/makenorfirm.exe
MAKENANDFIRM := $(BROM_CTRFIRM_TOOLSDIR)/bin/makenandfirm.exe
MAKEGCDFIRM := $(BROM_CTRFIRM_TOOLSDIR)/bin/makegcdfirm.exe
OPENSSL := $(BROM_CTRFIRM_TOOLSDIR)/openssl/openssl.exe
MAKEFIRM_RSA_PRVKEY ?= $(shell cygpath -m $(BROM_CTRFIRM_TOOLSDIR))/openssl/rsa_private.der
MAKEFIRM_RSA_PUBKEY ?= $(shell cygpath -m $(BROM_CTRFIRM_TOOLSDIR))/openssl/rsa_public.der
MAKEFIRM_FLAGS ?=
ifneq ($(filter NORFIRM NANDFIRM GCDFIRM,$(FIRM_TARGET)),)
FIRM_STRIP_AXF := TRUE
endif
#----------------------------------------------------------------------------
ifeq ($(CTR_PRIVATE),TRUE)
BROM_PRIVATE := TRUE
endif
ifeq ($(CTR_WITH_ARM9),TRUE)
BROM_WITH_ARM9 := TRUE
endif
#----------------------------------------------------------------------------
### Global Library resettings
GINCLUDES := $(BROM_INCDIR) $(BROM_CTRFIRM_INCDIR) $(GINCLUDES)
GLIBRARY_DIRS := $(BROM_LIBDIR) $(GLIBRARY_DIRS)
GLIBRARIES := $(BROM_LIBS) \
# $(filter-out $(addsuffix $(CTR_LIBSUFFIX).a,$(BROM_LIBS_BASE)),$(GLIBRARIES))
#----------------------------------------------------------------------------
# CTRBROM_INSTALL_ROOT
#
ifdef CTRBROM_INSTALL_ROOT
CTRBROM_INSTALL_ROOT_ := $(CTRBROM_INSTALL_ROOT)
else
CTRBROM_INSTALL_ROOT_ := $(CTRBROM_ROOT)
endif
BROM_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRBROM_INSTALL_ROOT_)))
BROM_INSTALL_INCDIR := $(BROM_INSTALL_ROOT)/include
BROM_INSTALL_TOOLSDIR := $(BROM_INSTALL_ROOT)/tools
BROM_INSTALL_LIBDIR := $(BROM_INSTALL_ROOT)/lib/$(BROM_LIBTYPE)
BROM_INSTALL_PROMDIR := $(BROM_INSTALL_TOOLSDIR)/prom
BROM_INSTALL_COMPONENTSDIR := $(BROM_INSTALL_ROOT)/components
BROM_INSTALL_ADDINS := $(BROM_INSTALL_ROOT)/add-ins
#----------------------------------------------------------------------------
# Compiler flags
#
MACRO_FLAGS += -DBROM_PLATFORM_$(BROM_PLATFORM) \
-DBROM_TARGET_$(BROM_TARGET) \
-DBROM_KEYSDIR='$(BROM_KEYSDIR)' \
-DMAKEFIRM_RSA_PUBKEY='$(MAKEFIRM_RSA_PUBKEY)' \
-DBROM_ROOT='$(BROM_ROOT)' \
#----------------------------------------------------------------------------
endif # CTRBROM_COMMONDEFS_
#----- End of commondefs -----

View File

@ -0,0 +1,103 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - modulerules - common rules for build system
# File: modulerules
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef BROMSDK_MODULERULES_
ifdef MAKEFIRM_ARM11
MAKEROM_ARM11 = $(MAKEFIRM_ARM11)
endif
ifdef MAKEFIRM_ARM9
MAKEROM_ARM9 = $(MAKEFIRM_ARM9)
endif
#----------------------------------------------------------------------------
### CTR-modulerules
#
include $(CTRFIRM_ROOT)/build/buildtools/modulerules
#----------------------------------------------------------------------------
#
# MAKENORFIRM / MAKENANDFIRM / MAKEGCDFIRM
#
MAKEFIRM_ARM9 ?= $(MAKEROM_ARM9)
MAKEFIRM_ARM7 ?= $(MAKEROM_ARM7)
MAKEFIRM_DEFS += -DFIRM_ROOT='$(BROM_CTRFIRM_ROOT)' \
-DMAKEFIRM_ARM11='$(basename $(MAKEFIRM_ARM11))' \
-DMAKEFIRM_ARM9='$(basename $(MAKEFIRM_ARM9))' \
-DMAKEFIRM_RSA_PRVKEY='$(MAKEFIRM_RSA_PRVKEY)' \
SDEPENDS_BIN += $(MAKEFIRM_RSA_PRVKEY)
FIRM_SDEPENDS_BIN := \
$(call eupath,$(MAKEFIRM_ARM11)) \
$(call eupath,$(MAKEFIRM_ARM9)) \
.PHONY: bromtop bromlib bromdbg
bromtop:
@$(MAKE) -C $(CTRBROM_ROOT)
bromlib:
@$(MAKE) -C $(CTRBROM_ROOT)/build/libraries
bromdbg:
@$(TOUCH) $(BROM_LDEPENDS_DBG)
@$(MAKE) -C $(CTRBROM_ROOT)/build/libraries/os
@+$(REMAKE)
# .srl
# .nor
$(BINDIR)/%.srl $(BINDIR)/%.nor: $(FIRM_SDEPENDS_BIN) $(FIRM_SPEC) $(LDEPENDS_BIN) $(EDEPENDS_BIN) $(MAKEFILE)
$(MAKENORFIRM) $(MAKEFIRM_FLAGS) $(MAKEFIRM_DEFS) $(FIRM_SPEC) $@
# .nand
$(BINDIR)/%.srl $(BINDIR)/%.nand: $(FIRM_SDEPENDS_BIN) $(FIRM_SPEC) $(LDEPENDS_BIN) $(EDEPENDS_BIN) $(MAKEFILE)
$(MAKENANDFIRM) $(MAKEFIRM_FLAGS) $(MAKEFIRM_DEFS) $(FIRM_SPEC) $@
# .gcd
$(BINDIR)/%.srl $(BINDIR)/%.gcd: $(FIRM_SDEPENDS_BIN) $(FIRM_SPEC) $(LDEPENDS_BIN) $(EDEPENDS_BIN) $(MAKEFILE)
$(MAKEGCDFIRM) $(MAKEFIRM_FLAGS) $(MAKEFIRM_DEFS) $(FIRM_SPEC) $@
# .sbin
$(BINDIR)/$(TARGET_BIN_BASENAME).sbin: $(BINDIR)/$(TARGET_BIN_BASENAME).axf $(BINDIR)/$(TARGET_BIN_BASENAME).txt
objcopy -I elf32-little -O binary $< $@
# $(FROMELF) --bin -o $@ $<
# .padbin
$(BINDIR)/$(TARGET_BIN_BASENAME).padbin: $(BINDIR)/$(TARGET_BIN_BASENAME).sbin
objcopy -I binary -O binary --pad-to $(EXO_SBIN_SIZE) --gap-fill 0x00 $< $@
# .txt
$(BINDIR)/$(TARGET_BIN_BASENAME).txt: $(BINDIR)/$(TARGET_BIN_BASENAME).axf
$(FROMELF) --32x1 -cd -o $@ $<
# .exo
$(BINDIR)/$(TARGET_BIN_BASENAME).exo: $(BINDIR)/$(TARGET_BIN_BASENAME).sbin
objcopy -I binary -O srec $< $@
#----------------------------------------------------------------------------
BROMSDK_MODULERULES_ = TRUE
endif # BROMSDK_MODULERULES_
#----- End of modulerules -----

View File

@ -0,0 +1,31 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - libraries
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
init \
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,33 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - libraries - init
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = # ARM11
#ifdef CTR_WITH_ARM9
SUBDIRS += ARM9
#endif
#----------------------------------------------------------------------------
include $(CTRBROM_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,33 @@
#! make -f
#----------------------------------------------------------------------------
# Project: NitroSDK - buildsetup - create register map
# File: Makefile
#
# Copyright 2003-2004 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords:$
#----------------------------------------------------------------------------
include $(CTRFIRM_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
ifdef NITRO_PRIVATE
SUBDIRS += # versions
endif
SUBDIRS += ioreg ioreg_sp # fx
#----------------------------------------------------------------------------
include $(CTRFIRM_ROOT)/build/buildtools/modulerules
#----- End of Makefile -----

View File

@ -0,0 +1,65 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - buildsetup - create register map
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords:$
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
WORKDIR = ctr/hw/ARM11
TARGET = $(WORKDIR)/ioreg.h
CSVSRC = io_register_list.csv
SCRIPT = header_generator_ioreg.pl
NEWDIRS = $(WORKDIR)
#----------------------------------------------------------------------------
TARGET_PREFIX = $(subst .h,,$(TARGET))
TARGET_SUBFILES = $(TARGET_PREFIX)_*.h
TARGET_TMPCSV = $(TARGET_PREFIX).csv
# build
TARGETS = $(TARGET) $(TARGET_SUBFILES)
# install
INSTALL_TARGETS = $(TARGETS)
INSTALL_DIR = $(CTR_INSTALL_INCDIR)/$(WORKDIR)
override DO_INSTALL = $(DO_INSTALL_WILDCARD)
# clean/clobber
LDIRT_CLEAN = $(TARGET_TMPCSV) $(TARGETS) \
$(firstword $(subst /, ,$(WORKDIR)))
LDIRT_CLOBBER =
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGET)
$(TARGET): $(CSVSRC) $(SCRIPT)
$(CP) $(CSVSRC) $(TARGET_TMPCSV)
$(PERL) $(SCRIPT) $(TARGET_TMPCSV)
#----------------------------------------------------------------------------
include $(CTRSDK_ROOT)/build/buildtools/modulerules
#----- End of Makefile -----

View File

@ -0,0 +1,678 @@
#!/usr/bin/perl -s
##############################################################################
#
# Project: CtrSDK - header generator -
# File: header_generator_ioreg.pl
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
##############################################################################
#
# ヘッダファイルのマクロ生成スクリプト
#
# 使用法:
# conv.pl [-v] [-dup] filename1.csv [filename2.csv ...]
#
# CSVファイルからマクロの定義が書かれているヘッダファイル
# filename1.h (filename2.h...)を出力します。
#
# CSVファイルのフォーマットについては(SDKRoot)/docs/private/how-to-make-headers.txt
# をご覧下さい。
#
use Text::ParseWords;
#
# グローバル変数
#
$line_no = 0;
%name_hash = ();
@hash_array = ();
#
# verbose出力
#
sub verbose {
if ($verbose_mode == 1) {
print STDERR @_;
}
}
#
# フィールドの最初と最後の空白を取り除く
#
sub trim {
my @out = @_;
for (@out) {
s/^\s+//;
s/\s+$//;
}
return @out;
}
#
# CSV解析ルーチン
#
sub parse_csv {
my @fields = quotewords(",", 0, shift @_);
@fields = trim(@fields);
my $tmp;
# 行末の,,,,を取り除く
while(defined($tmp = pop @fields) && $tmp =~ /^$/ ) {
;
}
push @fields, $tmp;
return @fields;
}
#
# プリプロセッサ
#
sub preprocess {
return parse_csv(shift @_);
}
#
# マクロ名の重複チェック
#
sub check_macro_duplicate {
my $name = shift @_;
my $condition = shift @_;
my $no = shift @_;
if ($condition ne "") {
return 0;
}
if (exists $name_hash{$name}) {
if ($duplicate_ok == 1) {
print STDERR "WARNING: generating duplicate macro \'$name\' in line $no\n";
} else {
die "ERROR: duplicate macro \'$name\' in line $no";
}
return 1;
} else {
$name_hash{$name} = 1;
return 0;
}
}
#
# 解析
#
sub analyze {
my @fields = @_;
my $fields;
my $tmphash;
my $address, $condition, $name, $bitwidth, $rw, $category, $volatile;
$tmphash = {};
$address = shift @fields;
die "ERROR: Illegal address \'$address\' in line $line_no\n" unless ($address =~ /^0x[0-9A-Fa-f]+$/);
$condition = shift @fields;
die "ERROR: Illegal condition name \'$condition\' in line $line_no\n" unless ($address =~ /^[A-Za-z0-9_()&|!]+$/);
$name = shift @fields;
die "ERROR: Illegal macro name \'$name\' in line $line_no\n" unless ($name =~ /^[A-Za-z0-9_]+$/);
check_macro_duplicate($name, $condition, $line_no);
$bitwidth = shift @fields;
if ($bitwidth eq "8") {
$mask_format = "0x%02x";
} elsif ($bitwidth eq "16") {
$mask_format = "0x%04x";
} elsif ($bitwidth eq "32") {
$mask_format = "0x%08x";
} elsif ($bitwidth eq "64") {
$mask_format = "0x%016x";
} else {
die "ERROR: Illegal bitwidth \'$bitwidth\' in line $line_no\n";
}
$rw = shift @fields;
$category = shift @fields;
$volatile = shift @fields;
$tmphash->{"condition"} = $condition;
$tmphash->{"name"} = $name;
$tmphash->{"offset"} = $address;
$tmphash->{"bitwidth"} = $bitwidth;
$tmphash->{"rw"} = $rw;
if ($rw eq "r") {
$tmphash->{"const"} = "const";
} else {
$tmphash->{"const"} = "";
}
$tmphash->{"category"} = $category;
if ($volatile eq "volatile") {
$tmphash->{"volatile"} = "v";
} elsif ($volatile eq "permanent") {
$tmphash->{"volatile"} = "";
} else {
die "ERROR: specify volatile/permanent in line $line_no\n";
}
@{$tmphash->{"option"}} = splice @fields, 0;
$tmphash->{"mask_format"} = $mask_format;
$tmphash->{"line_no"} = $line_no;
return $tmphash;
}
#
# 配列へ要素を追加
# 重複があれば線形リストとしてつなげる
#
sub push_fields {
my $hash = shift @_;
my $array_num;
my $tmp_hash;
# 既に同じ名前のものが登録されている場合はハッシュテーブルへ線形リストとして追加
if ( exists($index_name_hash{ $hash->{"name"} }) ) {
$array_num = $index_name_hash{ $hash->{"name"} }; # 対応する配列のインデックスを取得
# (condition eq "")のものが線形リストの最後になるよう追加
$tmp_hash = $hash_array[ $array_num ];
if ( $tmp_hash->{"condition"} eq "") {
$hash->{"next"} = $tmp_hash;
$hash_array[ $array_num] = $hash;
return;
}
while ( exists($tmp_hash->{"next"}) ) {
if ($tmp_hash->{"next"}->{"condition"} eq "") {
$hash->{"next"} = $tmp_hash->{"next"};
$tmp_hash->{"next"} = $hash;
return;
}
$tmp_hash = $tmp_hash->{"next"};
}
$tmp_hash->{"next"} = $hash;
} else {
$array_num = @hash_array;
$index_name_hash{ $hash->{"name"} } = $array_num;
push @hash_array, $hash;
}
}
#
# カテゴリ情報収集
#
sub collect_category {
my %cat_hash;
my $hash;
foreach $hash (@hash_array) {
$cat_hash{$hash->{"category"}} = 1;
}
return (keys %cat_hash);
}
#
# 条件のマージ
#
sub merge_condition {
my $cond1 = shift @_;
my $cond2 = shift @_;
my $name = shift @_;
my $merged_cond;
if ( $cond1 eq "" || $cond2 eq "") {
$merged_cond = "";
return $merged_cond;
}
if ( "$cond1" eq "!$cond2" || "!$cond1" eq "$cond2" ) {
$merge_cond = "";
} else {
$merged_cond = "$cond1 || $cond2";
}
return $merged_cond;
}
#
# レジスタのオフセット定義取得
#
sub cull_register_offset_def {
my $hash = shift @_;
my $offset_name;
my @tmp_hash;
my @def_array = ();
my $i, $k;
$i = 0;
while ( 1 ) {
{
$offset_name = "REG_$hash->{'name'}_OFFSET";
$hash->{"offset_def"} = $offset_name;
$hash->{"address_def"} = "REG_$hash->{'name'}_ADDR";
# この変数の定義は後で使用するので残しておく
$hash->{"valname_def"} = "REG_$hash->{'category'}_$hash->{'name'}";
$hash->{"valname_def_new"} = "reg_$hash->{'category'}_$hash->{'name'}";
}
$tmp_hash[$i]->{"condition"} = $hash->{"condition"};
$tmp_hash[$i]->{"name"} = $hash->{"name"};
$tmp_hash[$i]->{"offset_def"} = $hash->{"offset_def"};
$tmp_hash[$i]->{"offset"} = $hash->{"offset"};
$tmp_hash[$i]->{"address_def"} = $hash->{"address_def"};
$tmp_hash[$i]->{"valname_def"} = $hash->{"valname_def"};
$tmp_hash[$i]->{"valname_def_new"} = $hash->{"valname_def_new"};
my $val = "(*($hash->{'const'} REGType$hash->{'bitwidth'}$hash->{'volatile'} *) $hash->{'address_def'})";
$tmp_hash[$i]->{"reg_type"} = $val;
my $find_flg = 0;
#reg_typeとoffsetが同じならconditionをマージ
foreach $k (@def_array) {
if ( $k->{'condition'} eq "" ) {
# 条件無しのフィールドは最後に来るはずで、先に既に存在する場合は条件設定がおかしい
print STDERR "WARNING: illegal condition in \'$k->{'name'}\'\n";
}
if ( ($k->{"reg_type"} eq $tmp_hash[$i]->{"reg_type"}) && ($k->{"offset"} eq $tmp_hash[$i]->{"offset"}) )
{
$k->{'condition'} = merge_condition( $k->{'condition'}, $tmp_hash[$i]->{'condition'}, $k->{'name'} );
$find_flg = 1;
last;
}
}
if ($find_flg == 0) {
push @def_array, $tmp_hash[$i];
$i++;
}
# リストにまだ残っているなら次を処理
if (exists($hash->{"next"})) {
$hash = $hash->{"next"};
} else {
last;
}
}
return @def_array;
}
#
# アウトプット
#
sub output {
my $output_filename = shift @_;
my $category = shift @_;
# 出力ファイルのオープン
open OUT, ">$output_filename" or die "ERROR: Cannot create file \'$output_filename\'\n";
my $handle = OUT;
# my $handle = STDOUT;
my $include_guard = $output_filename;
$include_guard =~ s/[.\/]/_/g;
$include_guard = uc($include_guard). "_";
#
# 出力
#
print $handle <<ENDDOC;
/*---------------------------------------------------------------------------*
Project: CtrSDK - IO Register List -
File: $output_filename
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
*---------------------------------------------------------------------------*/
//
// I was generated automatically, don't edit me directly!!!
//
#ifndef $include_guard
#define $include_guard
#ifndef SDK_ASM
#include <ctr/types.h>
#include <ctr/hw/ARM11/mmap_global.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* Definition of Register offsets, addresses and variables.
*/
ENDDOC
my $hash, $tmp_hash;
foreach $hash (@hash_array) {
next if ($hash->{"category"} ne $category);
print $handle "/* $hash->{'name'} */\n\n";
my @reg_array = cull_register_offset_def($hash); # 重複した項目を最適化
my $nest_state = 0;
foreach $tmp_hash (@reg_array)
{
if ($tmp_hash->{"condition"} ne "") {
if ($nest_state == 0) {
$nest_state = 1;
printf $handle "#if %s\n\n", $tmp_hash->{'condition'};
} elsif ($nest_state == 1) {
printf $handle "\n#elif %s\n\n", $tmp_hash->{'condition'};
}
} elsif ($nest_state == 1) {
printf $handle "\n#else\n\n";
}
printf $handle "#define %-50s %s\n", $tmp_hash->{'offset_def'}, $tmp_hash->{'offset'};
printf $handle "#define %-50s %s\n", $tmp_hash->{"address_def"}, "(HW_REG_BASE + $tmp_hash->{'offset_def'})";
printf $handle "#define %-50s %s\n", $tmp_hash->{"valname_def_new"}, $tmp_hash->{"reg_type"};
if ($nest_state == 1) {
printf $handle "// endif %s\n", $tmp_hash->{"condition"}
}
}
printf $handle "\n";
if ($nest_state == 1) {
printf $handle "#endif\n\n";
}
}
print $handle <<ENDDOC;
/*
* Definitions of Register fields
*/
ENDDOC
my $hash;
my $nest_state;
foreach $hash (@hash_array) {
next if ($hash->{"category"} ne $category);
$nest_state = 0;
printf $handle "\n";
print $handle "/* $hash->{'name'} */\n";
while ( 1 ) {
if ($hash->{"condition"} ne "") {
if ($nest_state == 0) {
$nest_state = 1;
printf $handle "#if %s\n", $hash->{'condition'};
} elsif ($nest_state == 1) {
printf $handle "#elif %s\n", $hash->{'condition'};
}
} elsif ($nest_state == 1) {
printf $handle "#else\n";
}
my $no = $hash->{"line_no"};
my @array = @{$hash->{"option"}};
my $field_macro_func = "#define $hash->{'valname_def'}_FIELD(";
my $field_macro_flag = 0;
my $field_macro_body = " (u$hash->{'bitwidth'})( \\\n";
my $fieldname, $fieldshift, $fieldsize;
while($fieldname = shift @array) {
my $shift_macro;
die "ERROR: Field option not good in line $no\n" if (!defined($fieldshift = shift @array));
die "ERROR: Field option not good in line $no\n" if (!defined($fieldsize = shift @array));
print $handle "\n";
# REG_XXX_XXXXX_SHIFTの出力
{
my $name = "$hash->{'valname_def'}_" . $fieldname . "_SHIFT";
check_macro_duplicate($name, $hash->{'condition'}, $no);
$shift_macro = $name;
printf $handle "#define %-50s %s\n", $name, $fieldshift;
}
# REG_XXX_XXXXX_SIZEの出力
{
my $name = "$hash->{'valname_def'}_" . $fieldname . "_SIZE";
check_macro_duplicate($name, $hash->{'condition'}, $no);
printf $handle "#define %-50s %s\n", $name, $fieldsize;
}
# REG_XXX_XXXXX_MASKの出力
{
my $width = $hash->{"bitwidth"};
my $mask_val = 1 << $fieldshift;
my $tmp = $mask_val;
my $i;
for ($i = 0; $i < $fieldsize - 1; $i++) {
$mask_val = $mask_val << 1;
$mask_val = $mask_val + $tmp;
}
my $name = "$hash->{'valname_def'}_" . $fieldname . "_MASK";
check_macro_duplicate($name, $hash->{'condition'}, $no);
printf $handle "#define %-50s $hash->{'mask_format'}\n", $name, $mask_val;
}
# REG_XXX_XXXXX_FIELDの定義の一行分を作成
my $fn = lc($fieldname);
if ($field_macro_flag == 1) {
$field_macro_func = $field_macro_func . ", " . $fn;
$field_macro_body = $field_macro_body . " | \\\n" . " ((u32)($fn) << $shift_macro)";
} else {
$field_macro_func = $field_macro_func . " " . $fn;
$field_macro_body = $field_macro_body . " ((u32)($fn) << $shift_macro)";
$field_macro_flag = 1;
}
}
if ($field_macro_flag == 1) {
# REG_XXX_XXXXX_FIELDの出力
$field_macro_func .= " ) \\\n";
$field_macro_func .= $field_macro_body;
print $handle "\n#ifndef SDK_ASM\n";
print $handle $field_macro_func, ")\n";
print $handle "#endif\n\n"
}
if ($nest_state == 1) {
printf $handle "// endif %s\n", $hash->{"condition"};
if ( !exists($hash->{"next"})) {
printf $handle "#endif \n\n";
}
}
# リストにまだ残っているなら次を表示
if (exists($hash->{'next'})) {
$hash = $hash->{'next'};
} else {
last;
}
}
}
print $handle <<ENDDOC;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* $include_guard */
#endif
ENDDOC
verbose("done.\n");
}
#
# コマンドラインオプションの設定
#
# -vか-verboseが指定されているとverboseモード
if ($v == 1 || $verbose == 1) {
$verbose_mode = 1;
verbose("verbose mode on\n");
} else {
$verbose_mode = 0;
}
# -nodupが指定されているとマクロ名の重複を許さない
if ($nodup == 1) {
$duplicate_ok = 0;
} else {
$duplicate_ok = 1;
}
#
# メインルーチン
#
foreach $filename (@ARGV) {
$line_no = 0;
@hash_array = ();
open INPUTFILE, "$filename" or die "ERROR: Cannot open file \'$filename\'\n";
my $line;
while($line = <INPUTFILE>) {
$line_no++;
$line =~ s/\"//g;
$line =~ s/\#.*//;
next if ($line =~ /^[\s,]*$/);
@fields = preprocess($line);
push @hash_array, analyze(@fields);
}
verbose("$line_no lines read\n");
my @categories = collect_category();
my $category;
my @headerfile_array = ();
foreach $category (@categories) {
my $output_filename = $filename;
if (($output_filename =~ s/\.csv/\.h/) == 0) {
$output_filename .= ".h";
}
$output_filename =~ s/\.h/_$category.h/;
push @headerfile_array, $output_filename;
verbose("Output filename is $output_filename\n");
output($output_filename, $category);
}
my $master_filename = $filename;
if (($master_filename =~ s/\.csv/\.h/) == 0) {
$master_filename .= ".h";
}
open MASTER, ">$master_filename" or die "ERROR: Cannot create file \'$master_filename$'\n";
my $include_guard = $master_filename;
$include_guard =~ s/[.\/]/_/g;
$include_guard = uc($include_guard). "_";
print MASTER <<ENDDOC;
/*---------------------------------------------------------------------------*
Project: CtrSDK - IO Register List -
File: $master_filename
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
*---------------------------------------------------------------------------*/
#ifndef $include_guard
#define $include_guard
#ifdef __cplusplus
extern "C" {
#endif
ENDDOC
foreach $header_file (@headerfile_array) {
print MASTER "#include <$header_file>\n"
}
print MASTER <<ENDDOC;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* $include_guard */
#endif
ENDDOC
}

View File

@ -0,0 +1,500 @@
#offset,condition,name,bit,rw,category,volatile/permanent,fieldname,shift,bit,,,,,,,,,,,,,,,,,,,,,
#表示ステータス,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x004,,DISPSTAT,16,rw,GX,volatile,VCOUNTER,7,9,INI,6,1,VQI,5,1,HBI,4,1,VBI,3,1,LYC,2,1,HBLK,1,1,VBLK,0,1
0x006,,VCOUNT,16,rw,GX,volatile,VCOUNTER,0,10,,,,,,,,,,,,,,,,,,,,,
#DMA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x0b0,,DMA0SAD,32,rw,MI,volatile,DMASRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x0b4,,DMA0DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0b8,,DMA0CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0bc,,DMA1SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0c0,,DMA1DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0c4,,DMA1CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0c8,,DMA2SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0cc,,DMA2DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0d0,,DMA2CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0d4,,DMA3SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0d8,,DMA3DAD,32,rw,MI,volatile,DMADEST,0,28,,,,,,,,,,,,,,,,,,,,,
0x0dc,,DMA3CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16,,,,,,
#新規DMA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4100,,NDMAGCNT,32,rw,MI,volatile,ARBITER,31,1,CPUCYCLE,16,4,,,,,,,,,,,,,,,,,,,,,,,,
0x4104,,NDMA0SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4108,,NDMA0DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x410c,,NDMA0TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4110,,NDMA0WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4114,,NDMA0BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4118,,NDMA0FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x411c,,NDMA0CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x4120,,NDMA1SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4124,,NDMA1DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4128,,NDMA1TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x412c,,NDMA1WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4130,,NDMA1BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4134,,NDMA1FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4138,,NDMA1CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x413c,,NDMA2SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4140,,NDMA2DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4144,,NDMA2TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4148,,NDMA2WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x414c,,NDMA2BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4150,,NDMA2FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4154,,NDMA2CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x4158,,NDMA3SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x415c,,NDMA3DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4160,,NDMA3TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4164,,NDMA3WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4168,,NDMA3BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x416c,,NDMA3FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4170,,NDMA3CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
#タイマ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100,,TM0CNT_L,16,rw,OS,volatile,TIMER0CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x102,,TM0CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,PS,0,2,,,,,,,,,,,,,,,,,,
0x104,,TM1CNT_L,16,rw,OS,volatile,TIMER1CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x106,,TM1CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
0x108,,TM2CNT_L,16,rw,OS,volatile,TIMER2CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x10a,,TM2CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
0x10c,,TM3CNT_L,16,rw,OS,volatile,TIMER2CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x10e,,TM3CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
#SIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"#レジスタ0x128,0x12aは状況でビットの意味が大きく変わるので多重に定義してあります。",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x120,,SIODATA32,32,rw,EXI,volatile,H,16,16,L,0,16,,,,,,,,,,,,,,,,,,,,,
0x120,,SIOMULTI0,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x122,,SIOMULTI1,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x124,,SIOMULTI2,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x126,,SIOMULTI3,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x128,,SIOCNT,16,rw,EXI,volatile,CKUP,15,1,I,14,1,MD1,13,1,BITLEN,12,1,START,7,1,TSEND,3,1,TRECV,2,1,SCLOCKHZ,1,1,SCLOCK,0,1
0x128,,SIOCNT_MULTI,16,rw,EXI,volatile,CKUP,15,1,I,14,1,MD1,13,1,MD0,12,1,START,7,1,ERROR,6,1,MULTIID,4,2,SDMON,3,1,SIMON,2,1,BAUD,0,2,,,,,,,,,,,,,,,,,,
0x128,,SIOCNT_UART,16,rw,EXI,volatile,CKUP,15,1,MD1,13,1,MD0,12,1,RECVEF,11,1,SENDEF,10,1,PARITYEF,9,1,FIFOEF,8,1,DATALEN,7,1,ERROR,6,1,RECV,5,1,SEND,4,1,PARITYCNT,3,1,CTS,2,1,BAUD,0,2,,,,,,
0x12a,,SIOCNT_H,16,rw,EXI,volatile,RFFUL,15,1,TFEMP,14,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x12a,,SIOMLT_SEND,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x12a,,SIODATA8,16,rw,EXI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#キー,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x130,,KEYINPUT,16,rw,PAD,volatile,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1,,,,,,,,,,,,,,,,,,
0x132,,KEYCNT,16,rw,PAD,volatile,LOGIC,15,1,INTR,14,1,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1,,,,,,,,,,,,
#シリアル通信 汎用端子,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x134,,RCNT0_L,16,rw,EXI,volatile,RE1,15,1,RE0,14,1,I,8,1,DIR_SO,7,1,DIR_SI,6,1,DIR_SD,5,1,DIR_SC,4,1,DATA_SO,3,1,DATA_SI,2,1,DATA_SD,1,1,DATA_SC,0,1,,,,,,,,,,,,,,,
0x136,,RCNT0_H,16,rw,EXI,volatile,DATA_R7,7,1,DATA_R6,6,1,DATA_R5,5,1,DATA_R4,4,1,DATA_R3,3,1,DATA_R2,2,1,DATA_R1,1,1,DATA_R0,0,1,,,,,,,,,,,,,,,,,,,,,,,,
0x138,,RCNT1,16,rw,EXI,volatile,DIR_RF,15,1,DIR_RE,14,1,DIR_RD,13,1,DIR_RC,12,1,DATA_RF,11,1,DATA_RE,10,1,DATA_RD,9,1,DATA_RC,8,1,DIR_RB,7,1,DIR_RA,6,1,DIR_R9,5,1,DIR_R8,4,1,DATA_RB,3,1,DATA_RA,2,1,DATA_R9,1,1,DATA_R8,0,1
#JOY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x140,,JOYCNT,16,rw,EXI,volatile,MOD,7,1,I,6,1,SEND,2,1,RECV,1,1,RESET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x150,,JOY_RECV,32,rw,EXI,volatile,RECVDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x154,,JOY_TRANS,32,rw,EXI,volatile,SENDDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x158,,JOY_STAT,16,rw,EXI,volatile,GEN,4,2,SSTATUS,3,1,RSTATUS,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
# ARM9 とのインターフェイス,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x180,,MAINPINTF,16,rw,PXI,volatile,I,14,1,IREQ,13,1,A7STATUS,8,4,A9STATUS,0,4,,,,,,,,,,,,,,,,,,,,,,,,
0x184,,MAINP_FIFO_CNT,16,rw,PXI,volatile,E,15,1,ERR,14,1,RECV_RI,10,1,RECV_FULL,9,1,RECV_EMP,8,1,SEND_CL,3,1,SEND_TI,2,1,SEND_FULL,1,1,SEND_EMP,0,1,,,,,,,,,
0x188,,SEND_FIFO,32,rw,PXI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100000,,RECV_FIFO,32,rw,PXI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカード,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a0,,MCCNT0,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x1a2,,MCD0,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100010,,MCD1,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a4,,MCCNT1,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x1a8,,MCCMD0,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1ac,,MCCMD1,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1b0,,MCSCR0,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b4,,MCSCR1,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b8,,MCSCR2,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカードA(無印の別名定義),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a0,,MCCNT0_A,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x1a2,,MCD0_A,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100010,,MCD1_A,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a4,,MCCNT1_A,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x1a8,,MCCMD0_A,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1ac,,MCCMD1_A,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1b0,,MCSCR0_A,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b4,,MCSCR1_A,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b8,,MCSCR2_A,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカードB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21a0,,MCCNT0_B,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x21a2,,MCD0_B,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x102010,,MCD1_B,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21a4,,MCCNT1_B,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x21a8,,MCCMD0_B,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x21ac,,MCCMD1_B,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b0,,MCSCR0_B,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b4,,MCSCR1_B,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b8,,MCSCR2_B,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#SPI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1c0,,SPICNT,16,rw,SPI,volatile,E,15,1,I,14,1,MODE,11,1,CLKMODE,10,1,SEL,8,2,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1c2,,SPID,16,rw,SPI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#外部メモリ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x204,,EXMEMCNT_L,16,rw,MI,volatile,EP,15,1,EMODE,14,1,ECE2,13,1,MP,11,1,MP_A,11,1,MP_B,10,1,CP,7,1,PHI,5,2,ROM2nd,4,1,ROM1st,2,2,RAM,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x206,,EXMEMCNT_H,16,rw,MI,volatile,PHI33M,7,1,WW1_2nd,5,1,WW1_1st,3,2,WW0_2nd,2,1,WW0_1st,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#割り込み,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x208,,IME,16,rw,OS,volatile,IME,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x210,,IE,32,rw,OS,volatile,ND3,31,1,ND2,30,1,ND1,29,1,ND0,28,1,MIB,27,1,MCB,26,1,DWE,25,1,WL,24,1,SPI,23,1,PM,22,1,DRE,21,1,MI,20,1,MIA,20,1,MC,19,1,MCA,19,1,IFN,18,1,IFE,17,1,A7,16,1,MCBDET,15,1,MCADET,14,1,I_D,13,1,K,12,1,D3,11,1,D2,10,1,D1,9,1,D0,8,1,SIO,7,1,T3,6,1,T2,5,1,T1,4,1,T0,3,1,VE,2,1,HB,1,1,VB,0,1
0x214,,IF,32,rw,OS,volatile,ND3,31,1,ND2,30,1,ND1,29,1,ND0,28,1,MIB,27,1,MCB,26,1,DWE,25,1,WL,24,1,SPI,23,1,PM,22,1,DRE,21,1,MI,20,1,MIA,20,1,MC,19,1,MCA,19,1,IFN,18,1,IFE,17,1,A7,16,1,MCBDET,15,1,MCADET,14,1,I_D,13,1,K,12,1,D3,11,1,D2,10,1,D1,9,1,D0,8,1,SIO,7,1,T3,6,1,T2,5,1,T1,4,1,T0,3,1,VE,2,1,HB,1,1,VB,0,1
0x218,,IE2,16,rw,OS,volatile,MIC,14,1,I2C,13,1,AES,12,1,SD2A,11,1,SD2,10,1,SD1A,9,1,SD1,8,1,GPIO33_3,7,1,GPIO33_2,6,1,GPIO33_1,5,1,GPIO33_0,4,1,GPIO18_2,2,1,GPIO18_1,1,1,GPIO18_0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21c,,IF2,16,rw,OS,volatile,MIC,14,1,I2C,13,1,AES,12,1,SD2A,11,1,SD2,10,1,SD1A,9,1,SD1,8,1,GPIO33_3,7,1,GPIO33_2,6,1,GPIO33_1,5,1,GPIO33_0,4,1,GPIO18_2,2,1,GPIO18_1,1,1,GPIO18_0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#本体内メモリ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x240,,WVRAMSTAT,16,rw,MI,volatile,WRAM_1,9,1,WRAM_0,8,1,VRAM_D,1,1,VRAM_C,0,1,,,,,,,,,,,,
#PAUSE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x300,,PAUSE,16,rw,OS,volatile,MOD,14,2,CHK,0,1,,,,,,,,,,,,,,,,,,
#パワーコントロール,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x304,,POWCNT,16,rw,SND,volatile,EWL,1,1,SPE,0,1,,,,,,,,,,,,,,,,,,
#サウンド,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x400,,SOUND0CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x400,,SOUND0CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x400,,SOUND0CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x402,,SOUND0CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x403,,SOUND0CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x404,,SOUND0SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x408,,SOUND0TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x40a,,SOUND0RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x40c,,SOUND0RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x410,,SOUND1CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x410,,SOUND1CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x410,,SOUND1CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x412,,SOUND1CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x413,,SOUND1CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x414,,SOUND1SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x418,,SOUND1TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x41a,,SOUND1RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x41c,,SOUND1RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x420,,SOUND2CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x420,,SOUND2CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x420,,SOUND2CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x422,,SOUND2CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x423,,SOUND2CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x424,,SOUND2SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x428,,SOUND2TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x42a,,SOUND2RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x42c,,SOUND2RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x430,,SOUND3CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x430,,SOUND3CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x430,,SOUND3CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x432,,SOUND3CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x433,,SOUND3CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x434,,SOUND3SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x438,,SOUND3TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x43a,,SOUND3RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x43c,,SOUND3RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x440,,SOUND4CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x440,,SOUND4CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x440,,SOUND4CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x442,,SOUND4CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x443,,SOUND4CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x444,,SOUND4SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x448,,SOUND4TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x44a,,SOUND4RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x44c,,SOUND4RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x450,,SOUND5CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x450,,SOUND5CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x450,,SOUND5CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x452,,SOUND5CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x453,,SOUND5CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x454,,SOUND5SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x458,,SOUND5TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x45a,,SOUND5RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x45c,,SOUND5RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x460,,SOUND6CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x460,,SOUND6CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x460,,SOUND6CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x462,,SOUND6CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x463,,SOUND6CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x464,,SOUND6SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x468,,SOUND6TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x46a,,SOUND6RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x46c,,SOUND6RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x470,,SOUND7CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x470,,SOUND7CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x470,,SOUND7CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x472,,SOUND7CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x473,,SOUND7CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x474,,SOUND7SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x478,,SOUND7TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x47a,,SOUND7RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x47c,,SOUND7RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x480,,SOUND8CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x480,,SOUND8CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x480,,SOUND8CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x482,,SOUND8CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x483,,SOUND8CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x484,,SOUND8SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x488,,SOUND8TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x48a,,SOUND8RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x48c,,SOUND8RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x490,,SOUND9CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x490,,SOUND9CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x490,,SOUND9CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x492,,SOUND9CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x493,,SOUND9CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x494,,SOUND9SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x498,,SOUND9TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x49a,,SOUND9RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x49c,,SOUND9RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4a0,,SOUND10CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4a0,,SOUND10CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4a0,,SOUND10CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4a2,,SOUND10CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4a3,,SOUND10CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4a4,,SOUND10SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4a8,,SOUND10TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4aa,,SOUND10RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ac,,SOUND10RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4b0,,SOUND11CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4b0,,SOUND11CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4b0,,SOUND11CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4b2,,SOUND11CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4b3,,SOUND11CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4b4,,SOUND11SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4b8,,SOUND11TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ba,,SOUND11RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4bc,,SOUND11RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4c0,,SOUND12CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4c0,,SOUND12CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4c0,,SOUND12CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4c2,,SOUND12CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4c3,,SOUND12CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4c4,,SOUND12SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4c8,,SOUND12TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ca,,SOUND12RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4cc,,SOUND12RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4d0,,SOUND13CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4d0,,SOUND13CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4d0,,SOUND13CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4d2,,SOUND13CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4d3,,SOUND13CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4d4,,SOUND13SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4d8,,SOUND13TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4da,,SOUND13RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4dc,,SOUND13RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4e0,,SOUND14CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4e0,,SOUND14CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4e0,,SOUND14CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4e2,,SOUND14CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4e3,,SOUND14CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4e4,,SOUND14SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4e8,,SOUND14TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ea,,SOUND14RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ec,,SOUND14RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4f0,,SOUND15CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4f0,,SOUND15CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4f0,,SOUND15CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f2,,SOUND15CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f3,,SOUND15CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,,,,,,,
0x4f4,,SOUND15SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f8,,SOUND15TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4fa,,SOUND15RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4fc,,SOUND15RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,,,,,,,
#サウンドマスターコントロール,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x500,,SOUNDCNT,16,rw,SND,volatile,E,15,1,MIX_CH3,13,1,MIX_CH1,12,1,ROUT,10,2,LOUT,8,2,VOLUME,0,7,,,,,,,,,,,,
0x501,,SOUNDCNT_8,8,rw,SND,volatile,E,7,1,MIX_CH3,5,1,MIX_CH1,4,1,ROUT,2,2,LOUT,0,2,,,,,,,,,,,,,,,
0x500,,SOUNDCNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x504,,SOUND_BIAS,16,rw,SND,volatile,BIAS,0,10,,,,,,,,,,,,,,,,,,,,,,,,,,,
#キャプチャ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x508,,SNDCAPCNT,16,rw,SND,volatile,CAP1_E,15,1,CAP1_FORMAT,11,1,CAP1_REPEAT,10,1,CAP1_IN,9,1,CAP1_OUT,8,1,CAP0_E,7,1,CAP0_FORMAT,3,1,CAP0_REPEAT,2,1,CAP0_IN,1,1,CAP0_OUT,0,1
0x508,,SNDCAP0CNT,8,rw,SND,volatile,E,7,1,FORMAT,3,1,REPEAT,2,1,IN,1,1,OUT,0,1,,,,,,,,,,,,,,,
0x509,,SNDCAP1CNT,8,rw,SND,volatile,E,7,1,FORMAT,3,1,REPEAT,2,1,IN,1,1,OUT,0,1,,,,,,,,,,,,,,,
0x510,,SNDCAP0DAD,32,w,SND,volatile,DEST,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x514,,SNDCAP0LEN,16,rw,SND,volatile,LEN,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x518,,SNDCAP1DAD,32,w,SND,volatile,DEST,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x51c,,SNDCAP1LEN,16,rw,SND,volatile,LEN,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規コンフィグ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#0x4000のSCFG_ROMは直後に分けて二重定義しています。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4000,,ROM,32,rw,SCFG,volatile,ROMWE,16,1,ARM7FUSE,10,1,ARM7RSEL,9,1,ARM7SEL,8,1,ARM9RSEL,1,1,ARM9SEL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4000,,A9ROM,8,rw,SCFG,volatile,RSEL,1,1,SEC,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4001,,A7ROM,8,rw,SCFG,volatile,FUSE,2,1,RSEL,1,1,SEC,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4002,,ROMWE,16,rw,SCFG,volatile,WE,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4004,,CLK,16,rw,SCFG,volatile,SNDMCLK,8,1,WRAMHCLK,7,1,AESHCLK,2,1,SD2HCLK,1,1,SD1HCLK,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4006,,JTAG,16,rw,SCFG,volatile,DSPJE,8,1,CPUJE,1,1,ARM7SEL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4008,,EXT,32,rw,SCFG,volatile,CFG,31,1,PUENABLE,28,1,SD20,28,1,NEWB_ACCESS_E,16,10,WRAM,25,1,MC_B,24,1,GPIO,23,1,I2C,22,1,I2S,21,1,MIC,20,1,SD2,19,1,SD1,18,1,AES,17,1,DMAC,16,1,NITROB_EX_E,8,8,PSRAM,14,2,VRAM,13,1,LCDC,12,1,SIO,11,1,DSEL,10,1,SPI,9,1,INTC,8,1,NITROB_MOD_E,0,8,MC,7,1,SND,2,1,SDMA,1,1,DMA,0,1
0x4010,,MC1,32,rw,MI,volatile,CC,16,16,SWP,15,1,SL2_STATUS,4,4,SL2_M1,7,1,SL2_M0,6,1,SL2_CDET,4,1,SL1_STATUS,0,4,SL1_M1,3,1,SL1_M0,2,1,SL1_CDET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4010,,MC,16,rw,MI,volatile,SWP,15,1,SL2_MODE,6,2,SL2_CDET,4,1,SL1_MODE,2,2,SL1_CDET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4012,,MCCHAT,16,rw,MI,volatile,CC,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4014,,MC2,16,rw,MI,volatile,CA,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4020,,WL,16,rw,SCFG,volatile,OFFB,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4024,,OP,16,r,SCFG,volatile,OP1,1,1,OP0,0,1,OPT,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
#共有メモリバンク制御,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4040,,MBK1,32,r,MI,volatile,WA3_E,31,1,WA3_OF,26,2,WA3_M,24,1,WA2_E,23,1,WA2_OF,18,2,WA2_M,16,1,WA1_E,15,1,WA1_OF,10,2,WA1_M,8,1,WA0_E,7,1,WA0_OF,2,2,WA0_M,0,1
0x4040,,MBK_A0,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4041,,MBK_A1,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4042,,MBK_A2,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4043,,MBK_A3,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4044,,MBK2,32,r,MI,volatile,WB3_E,31,1,WB3_OF,26,3,WB3_M,24,2,WB2_E,23,1,WB2_OF,18,3,WB2_M,16,2,WB1_E,15,1,WB1_OF,10,3,WB1_M,8,2,WB0_E,7,1,WB0_OF,2,3,WB0_M,0,2
0x4044,,MBK_B0,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4045,,MBK_B1,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4046,,MBK_B2,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4047,,MBK_B3,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4048,,MBK3,32,r,MI,volatile,WB7_E,31,1,WB7_OF,26,3,WB7_M,24,2,WB6_E,23,1,WB6_OF,18,3,WB6_M,16,2,WB5_E,15,1,WB5_OF,10,3,WB5_M,8,2,WB4_E,7,1,WB4_OF,2,3,WB4_M,0,2
0x4048,,MBK_B4,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4049,,MBK_B5,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404a,,MBK_B6,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404b,,MBK_B7,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404c,,MBK4,32,r,MI,volatile,WC3_E,31,1,WC3_OF,26,3,WC3_M,24,2,WC2_E,23,1,WC2_OF,18,3,WC2_M,16,2,WC1_E,15,1,WC1_OF,10,3,WC1_M,8,2,WC0_E,7,1,WC0_OF,2,3,WC0_M,0,2
0x404c,,MBK_C0,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404d,,MBK_C1,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404e,,MBK_C2,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404f,,MBK_C3,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4050,,MBK5,32,r,MI,volatile,WC7_E,31,1,WC7_OF,26,3,WC7_M,24,2,WC6_E,23,1,WC6_OF,18,3,WC6_M,16,2,WC5_E,15,1,WC5_OF,10,3,WC5_M,8,2,WC4_E,7,1,WC4_OF,2,3,WC4_M,0,2
0x4050,,MBK_C4,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4051,,MBK_C5,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4052,,MBK_C6,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4053,,MBK_C7,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4054,,MBK6,32,rw,MI,volatile,WA_EADDR,20,9,WA_ISIZE,12,2,WA_SADDR,4,8,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4058,,MBK7,32,rw,MI,volatile,WB_EADDR,19,10,WB_ISIZE,12,2,WB_SADDR,3,9,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x405c,,MBK8,32,rw,MI,volatile,WC_EADDR,19,10,WC_ISIZE,12,2,WC_SADDR,3,9,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4060,,MBK9,32,rw,MI,volatile,WC_LOCKST,16,8,WB_LOCKST,8,8,WA_LOCKST,0,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4060,,MBK_A_LOCK,8,rw,MI,volatile,A3,3,1,A2,2,1,A1,1,1,A0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4061,,MBK_B_LOCK,8,rw,MI,volatile,B7,7,1,B6,6,1,B5,5,1,B4,4,1,B3,3,1,B2,2,1,B1,1,1,B0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4062,,MBK_C_LOCK,8,rw,MI,volatile,C7,7,1,C6,6,1,C5,5,1,C4,4,1,C3,3,1,C2,2,1,C1,1,1,C0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#AES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4400,,AES_CNT,32,rw,AES,volatile,E,31,1,I,30,1,MODE,28,2,KEY,24,4,SEL1,27,1,SEL0,26,1,BUSY,25,1,SET,24,1,CCM_DEC,20,2,VALID,21,1,MSEL,20,1,ADE,19,1,MAC_LEN,16,3,OFIFO_DREQ,14,2,IFIFO_DREQ,12,2,FIFO_CLR,10,2,OFIFO_CLR,11,1,IFIFO_CLR,10,1,OFIFO_CNT,5,5,IFIFO_CNT,0,5
0x4404,,AES_LEN,32,w,AES,volatile,PL,16,16,AL,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4408,,AES_IFIFO,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x440c,,AES_OFIFO,32,r,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4420,,AES_NONCE0,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4424,,AES_NONCE1,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4428,,AES_NONCE2,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x442c,,AES_NONCE3,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4430,,AES_MAC0,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4434,,AES_MAC1,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4438,,AES_MAC2,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x443c,,AES_MAC3,32,w,AES,volatile
0x4440,,AES_KEY_A0,32,w,AES,volatile
0x4444,,AES_KEY_A1,32,w,AES,volatile
0x4448,,AES_KEY_A2,32,w,AES,volatile
0x444c,,AES_KEY_A3,32,w,AES,volatile
0x4450,,AES_ID_A0,32,w,AES,volatile
0x4454,,AES_ID_A1,32,w,AES,volatile
0x4458,,AES_ID_A2,32,w,AES,volatile
0x445c,,AES_ID_A3,32,w,AES,volatile
0x4460,,AES_SEED_A0,32,w,AES,volatile
0x4464,,AES_SEED_A1,32,w,AES,volatile
0x4468,,AES_SEED_A2,32,w,AES,volatile
0x446c,,AES_SEED_A3,32,w,AES,volatile
0x4470,,AES_KEY_B0,32,w,AES,volatile
0x4474,,AES_KEY_B1,32,w,AES,volatile
0x4478,,AES_KEY_B2,32,w,AES,volatile
0x447c,,AES_KEY_B3,32,w,AES,volatile
0x4480,,AES_ID_B0,32,w,AES,volatile
0x4484,,AES_ID_B1,32,w,AES,volatile
0x4488,,AES_ID_B2,32,w,AES,volatile
0x448c,,AES_ID_B3,32,w,AES,volatile
0x4490,,AES_SEED_B0,32,w,AES,volatile
0x4494,,AES_SEED_B1,32,w,AES,volatile
0x4498,,AES_SEED_B2,32,w,AES,volatile
0x449c,,AES_SEED_B3,32,w,AES,volatile
0x44a0,,AES_KEY_C0,32,w,AES,volatile
0x44a4,,AES_KEY_C1,32,w,AES,volatile
0x44a8,,AES_KEY_C2,32,w,AES,volatile
0x44ac,,AES_KEY_C3,32,w,AES,volatile
0x44b0,,AES_ID_C0,32,w,AES,volatile
0x44b4,,AES_ID_C1,32,w,AES,volatile
0x44b8,,AES_ID_C2,32,w,AES,volatile
0x44bc,,AES_ID_C3,32,w,AES,volatile
0x44c0,,AES_SEED_C0,32,w,AES,volatile
0x44c4,,AES_SEED_C1,32,w,AES,volatile
0x44c8,,AES_SEED_C2,32,w,AES,volatile
0x44cc,,AES_SEED_C3,32,w,AES,volatile
0x44d0,,AES_KEY_D0,32,w,AES,volatile
0x44d4,,AES_KEY_D1,32,w,AES,volatile
0x44d8,,AES_KEY_D2,32,w,AES,volatile
0x44dc,,AES_KEY_D3,32,w,AES,volatile
0x44e0,,AES_ID_D0,32,w,AES,volatile
0x44e4,,AES_ID_D1,32,w,AES,volatile
0x44e8,,AES_ID_D2,32,w,AES,volatile
0x44ec,,AES_ID_D3,32,w,AES,volatile
0x44f0,,AES_SEED_D0,32,w,AES,volatile
0x44f4,,AES_SEED_D1,32,w,AES,volatile
0x44f8,,AES_SEED_D2,32,w,AES,volatile
0x44fc,,AES_SEED_D3,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#I2C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4501,,I2C_CNT,8,rw,OS,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,
0x4500,,I2C_DAT,8,rw,OS,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規マイク,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4600,,MIC_CNT,16,rw,OS,volatile,E,15,1,I,13,2,CL,12,1,STATUS,8,4,ERR,11,1,FULL,10,1,HALF,9,1,EMP,8,1,CONTROL,0,4,F,2,2,R,1,1,L,0,1
0x4604,,MIC_DAT,32,r,OS,volatile,SECOND,16,16,FIRST,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規サウンド,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4700,,SMX_CNT,16,rw,SND,volatile,E,15,1,MUTE,14,1,FSEL,13,1,MIX_RATE,0,4,,,,,,,,,,,,,,,,,,,,,,,,
#SDインターフェース1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4800,,SD1_CMD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4802,,SD1_PORTSEL,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4804,,SD1_ARG0,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4806,,SD1_ARG1,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4808,,SD1_STOP,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x480a,,SD1_SECCNT,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x480c,,SD1_RSP0,16,r,SD,volatile
0x480e,,SD1_RSP1,16,r,SD,volatile
0x4810,,SD1_RSP2,16,r,SD,volatile
0x4812,,SD1_RSP3,16,r,SD,volatile
0x4814,,SD1_RSP4,16,r,SD,volatile
0x4816,,SD1_RSP5,16,r,SD,volatile
0x4818,,SD1_RSP6,16,r,SD,volatile
0x481a,,SD1_RSP7,16,r,SD,volatile
0x481c,,SD1_INFO1,16,rw,SD,volatile
0x481e,,SD1_INFO2,16,rw,SD,volatile
0x4820,,SD1_INFO1_MASK,16,rw,SD,volatile
0x4822,,SD1_INFO2_MASK,16,rw,SD,volatile
0x4824,,SD1_CLK_CTRL,16,rw,SD,volatile
0x4826,,SD1_SIZE,16,rw,SD,volatile
0x4828,,SD1_OPTION,16,rw,SD,volatile
0x482a,,SD1_ERR_STS1,16,r,SD,volatile
0x482c,,SD1_ERR_STS2,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x482e,,SD1_BUF0,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4830,,SDIO1_MODE,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4834,,SDIO1_INFO1,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4838,,SDIO1_INF1_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48d8,,SD1_CC_EXT_MODE,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48e0,,SD1_SOFT_RST,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48e2,,SD1_VERSION,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f2,,SD1_PWR,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f4,,SD1_EXT_SDIO,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f6,,SD1_EXT_WP,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f8,,SD1_EXT_CD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fa,,SD1_EXT_CD_DAT3,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fc,,SD1_EXT_CD_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fe,,SD1_EXT_CD_DAT3_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4900,,SD1_CNT,16,rw,SD,volatile,FEIE,12,1,FFIE,11,1,FCLR,10,1,NEMP,9,1,FULL,8,1,FIFO,1,1
0x4904,,SD1_FDS,16,rw,SD,volatile,SIZE,0,10
0x4908,,SD1_FSC,16,rw,SD,volatile,COUNT,0,16
0x490c,,SD1_FI,32,rw,SD,volatile,,,
#SDインターフェース2,,,,,,,,,
0x4a00,,SD2_CMD,16,rw,SD,volatile,,,
0x4a02,,SD2_PORTSEL,16,rw,SD,volatile,,,
0x4a04,,SD2_ARG0,16,rw,SD,volatile,,,
0x4a06,,SD2_ARG1,16,rw,SD,volatile,,,
0x4a08,,SD2_STOP,16,rw,SD,volatile,,,
0x4a0a,,SD2_SECCNT,16,rw,SD,volatile,,,
0x4a0c,,SD2_RSP0,16,r,SD,volatile,,,
0x4a0e,,SD2_RSP1,16,r,SD,volatile,,,
0x4a10,,SD2_RSP2,16,r,SD,volatile,,,
0x4a12,,SD2_RSP3,16,r,SD,volatile,,,
0x4a14,,SD2_RSP4,16,r,SD,volatile,,,
0x4a16,,SD2_RSP5,16,r,SD,volatile,,,
0x4a18,,SD2_RSP6,16,r,SD,volatile
0x4a1a,,SD2_RSP7,16,r,SD,volatile
0x4a1c,,SD2_INFO1,16,rw,SD,volatile
0x4a1e,,SD2_INFO2,16,rw,SD,volatile
0x4a20,,SD2_INFO1_MASK,16,rw,SD,volatile
0x4a22,,SD2_INFO2_MASK,16,rw,SD,volatile
0x4a24,,SD2_CLK_CTRL,16,rw,SD,volatile
0x4a26,,SD2_SIZE,16,rw,SD,volatile
0x4a28,,SD2_OPTION,16,rw,SD,volatile
0x4a2a,,SD2_ERR_STS1,16,r,SD,volatile
0x4a2c,,SD2_ERR_STS2,16,r,SD,volatile
0x4a2e,,SD2_BUF0,16,rw,SD,volatile
0x4a30,,SDIO2_MODE,16,rw,SD,volatile
0x4a34,,SDIO2_INFO1,16,rw,SD,volatile
0x4a38,,SDIO2_INF1_MASK,16,rw,SD,volatile
0x4ad8,,SD2_CC_EXT_MODE,16,rw,SD,volatile
0x4ae0,,SD2_SOFT_RST,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4ae2,,SD2_VERSION,16,r,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af2,,DS2_PWR,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af4,,SD2_EXT_SDIO,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af6,,SD2_EXT_WP,16,r,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af8,,SD2_EXT_CD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afa,,SD2_EXT_CD_DAT3,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afc,,SD2_EXT_CD_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afe,,SD2_EXT_CD_DAT3_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b00,,SD2_CNT,16,rw,SD,volatile,FEIE,12,1,FFIE,11,1,FCLR,10,1,NEMP,9,1,FULL,8,1,FIFO,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b04,,SD2_FDS,16,rw,SD,volatile,SIZE,0,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b08,,SD2_FSC,16,rw,SD,volatile,COUNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b0c,,SD2_FI,32,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#GPIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4c00,,GPIO2_CNT,32,rw,OS,volatile,IE7,31,1,IE6,30,1,IE5,29,1,IE4,28,1,IE2,26,1,IE1,25,1,IE0,24,1,IM7,23,1,IM6,22,1,IM5,21,1,IM4,20,1,IM2,18,1,IM1,17,1,IM0,16,1,DR7,15,1,DR6,14,1,DR5,13,1,DR4,12,1,DR2,10,1,DR1,9,1,DR0,8,1,R7,7,1,R6,6,1,R5,5,1,R4,4,1,R2,2,1,R1,1,1,R0,0,1
0x4c04,,GPIO2_CNT2,16,rw,OS,volatile,VO,8,1,WO,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#FuseROM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4d00,,CHIP_ID0,32,r,OS,volatile,WAFER2,28,4,WAFER1,24,4,X3,20,4,X2,16,4,X1,12,4,Y3,8,4,Y2,4,4,Y1,0,4
0x4d04,,CHIP_ID1,32,r,OS,volatile,FAB2,25,4,FAB1,20,5,LOT5,16,4,LOT4,12,4,LOT3,8,4,LOT2,4,4,LOT1,0,4,,,
0x4d08,,ID_VERIFY,16,r,OS,volatile,ERR,0,1,,,,,,,,,,,,,,,,,,,,,
Can't render this file because it has a wrong number of fields in line 17.

Binary file not shown.

View File

@ -0,0 +1,63 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - buildsetup - create register map
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords:$
#----------------------------------------------------------------------------
WORKDIR = ctr/hw/ARM9
TARGET = $(WORKDIR)/ioreg.h
CSVSRC = io_register_list.csv
SCRIPT = ./header_generator_ioreg_sp.pl
NEWDIRS = $(WORKDIR)
#----------------------------------------------------------------------------
TARGET_PREFIX = $(subst .h,,$(TARGET))
TARGET_SUBFILES = $(TARGET_PREFIX)_*.h
TARGET_TMPCSV = $(TARGET_PREFIX).csv
# build
TARGETS = $(TARGET) $(TARGET_SUBFILES)
# install
INSTALL_TARGETS = $(TARGETS)
INSTALL_DIR = $(CTR_INSTALL_INCDIR)/$(WORKDIR)
override DO_INSTALL = $(DO_INSTALL_WILDCARD)
# clean/clobber
LDIRT_CLEAN = $(TARGET_TMPCSV) $(TARGETS) \
$(firstword $(subst /, ,$(WORKDIR)))
LDIRT_CLOBBER =
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGET)
$(TARGET): $(CSVSRC) $(SCRIPT)
$(CP) $(CSVSRC) $(TARGET_TMPCSV)
$(PERL) $(SCRIPT) $(TARGET_TMPCSV)
#----------------------------------------------------------------------------
include $(CTRSDK_ROOT)/build/buildtools/modulerules
#----- End of Makefile -----

View File

@ -0,0 +1,692 @@
#!/usr/bin/perl -s
##############################################################################
#
# Project: CtrSDK - header generator -
# File: header_generator_ioreg.pl
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
##############################################################################
#
# ヘッダファイルのマクロ生成スクリプト
#
# 使用法:
# conv.pl [-v] [-dup] filename1.csv [filename2.csv ...]
#
# CSVファイルからマクロの定義が書かれているヘッダファイル
# filename1.h (filename2.h...)を出力します。
#
# CSVファイルのフォーマットについては(SDKRoot)/docs/private/how-to-make-headers.txt
# をご覧下さい。
#
use Text::ParseWords;
#
# グローバル変数
#
$line_no = 0;
%name_hash = ();
%index_name_hash = ();
@hash_array = ();
#
# verbose出力
#
sub verbose {
if ($verbose_mode == 1) {
print STDERR @_;
}
}
#
# フィールドの最初と最後の空白を取り除く
#
sub trim {
my @out = @_;
for (@out) {
s/^\s+//;
s/\s+$//;
}
return @out;
}
#
# CSV解析ルーチン
#
sub parse_csv {
my @fields = quotewords(",", 0, shift @_);
@fields = trim(@fields);
my $tmp;
# 行末の,,,,を取り除く
while(defined($tmp = pop @fields) && $tmp =~ /^$/ ) {
;
}
push @fields, $tmp;
return @fields;
}
#
# プリプロセッサ
#
sub preprocess {
return parse_csv(shift @_);
}
#
# マクロ名の重複チェック
#
sub check_macro_duplicate {
my $name = shift @_;
my $condition = shift @_;
my $no = shift @_;
if ($condition ne "") {
return 0;
}
if (exists $name_hash{$name}) {
if ($duplicate_ok == 1) {
print STDERR "WARNING: generating duplicate macro \'$name\' in line $no\n";
} else {
die "ERROR: duplicate macro \'$name\' in line $no";
}
return 1;
} else {
$name_hash{$name} = 1;
return 0;
}
}
#
# 解析
#
sub analyze {
my @fields = @_;
my $fields;
my $tmphash;
my $address, $condition, $name, $bitwidth, $rw, $category, $volatile;
$tmphash = {};
$address = shift @fields;
die "ERROR: Illegal address \'$address\' in line $line_no\n" unless ($address =~ /^0x[0-9A-Fa-f]+$/);
$condition = shift @fields;
die "ERROR: Illegal condition name \'$condition\' in line $line_no\n" unless ($address =~ /^[A-Za-z0-9_()&|!]+$/);
$name = shift @fields;
die "ERROR: Illegal macro name \'$name\' in line $line_no\n" unless ($name =~ /^[A-Za-z0-9_]+$/);
check_macro_duplicate($name, $condition, $line_no);
$bitwidth = shift @fields;
if ($bitwidth eq "8") {
$mask_format = "0x%02x";
} elsif ($bitwidth eq "16") {
$mask_format = "0x%04x";
} elsif ($bitwidth eq "32") {
$mask_format = "0x%08x";
} elsif ($bitwidth eq "64") {
$mask_format = "0x%016x";
} else {
die "ERROR: Illegal bitwidth \'$bitwidth\' in line $line_no\n";
}
$rw = shift @fields;
$category = shift @fields;
$volatile = shift @fields;
$tmphash->{"condition"} = $condition;
$tmphash->{"name"} = $name;
$tmphash->{"offset"} = $address;
$tmphash->{"bitwidth"} = $bitwidth;
$tmphash->{"rw"} = $rw;
if ($rw eq "r") {
$tmphash->{"const"} = "const";
} else {
$tmphash->{"const"} = "";
}
$tmphash->{"category"} = $category;
if ($volatile eq "volatile") {
$tmphash->{"volatile"} = "v";
} elsif ($volatile eq "permanent") {
$tmphash->{"volatile"} = "";
} else {
die "ERROR: specify volatile/permanent in line $line_no\n";
}
@{$tmphash->{"option"}} = splice @fields, 0;
$tmphash->{"mask_format"} = $mask_format;
$tmphash->{"line_no"} = $line_no;
return $tmphash;
}
#
# 配列へ要素を追加
# 重複があれば線形リストとしてつなげる
#
sub push_fields {
my $hash = shift @_;
my $array_num;
my $tmp_hash;
# 既に同じ名前のものが登録されている場合はハッシュテーブルへ線形リストとして追加
if ( exists($index_name_hash{ $hash->{"name"} }) ) {
$array_num = $index_name_hash{ $hash->{"name"} }; # 対応する配列のインデックスを取得
# (condition eq "")のものが線形リストの最後になるよう追加
$tmp_hash = $hash_array[ $array_num ];
if ( $tmp_hash->{"condition"} eq "") {
$hash->{"next"} = $tmp_hash;
$hash_array[ $array_num] = $hash;
return;
}
while ( exists($tmp_hash->{"next"}) ) {
if ($tmp_hash->{"next"}->{"condition"} eq "") {
$hash->{"next"} = $tmp_hash->{"next"};
$tmp_hash->{"next"} = $hash;
return;
}
$tmp_hash = $tmp_hash->{"next"};
}
$tmp_hash->{"next"} = $hash;
} else {
$array_num = @hash_array;
$index_name_hash{ $hash->{"name"} } = $array_num;
push @hash_array, $hash;
}
}
#
# カテゴリ情報収集
#
sub collect_category {
my %cat_hash;
my $hash;
foreach $hash (@hash_array) {
$cat_hash{$hash->{"category"}} = 1;
}
return (keys %cat_hash);
}
#
# 条件のマージ
#
sub merge_condition {
my $cond1 = shift @_;
my $cond2 = shift @_;
my $name = shift @_;
my $merged_cond;
if ( $cond1 eq "" || $cond2 eq "") {
$merged_cond = "";
return $merged_cond;
}
if ( "$cond1" eq "!$cond2" || "!$cond1" eq "$cond2" ) {
$merge_cond = "";
} else {
$merged_cond = "$cond1 || $cond2";
}
return $merged_cond;
}
#
# レジスタのオフセット定義取得
#
sub cull_register_offset_def {
my $hash = shift @_;
my $offset_name;
my @tmp_hash;
my @def_array = ();
my $i, $k;
$i = 0;
while ( 1 ) {
{
$offset_name = "REG_$hash->{'name'}_OFFSET";
$hash->{"offset_def"} = $offset_name;
$hash->{"address_def"} = "REG_$hash->{'name'}_ADDR";
# この変数の定義は後で使用するので残しておく
$hash->{"valname_def"} = "REG_$hash->{'category'}_$hash->{'name'}";
$hash->{"valname_def_new"} = "reg_$hash->{'category'}_$hash->{'name'}";
}
$tmp_hash[$i]->{"condition"} = $hash->{"condition"};
$tmp_hash[$i]->{"name"} = $hash->{"name"};
$tmp_hash[$i]->{"offset_def"} = $hash->{"offset_def"};
$tmp_hash[$i]->{"offset"} = $hash->{"offset"};
$tmp_hash[$i]->{"address_def"} = $hash->{"address_def"};
$tmp_hash[$i]->{"valname_def"} = $hash->{"valname_def"};
$tmp_hash[$i]->{"valname_def_new"} = $hash->{"valname_def_new"};
my $val = "(*($hash->{'const'} REGType$hash->{'bitwidth'}$hash->{'volatile'} *) $hash->{'address_def'})";
$tmp_hash[$i]->{"reg_type"} = $val;
my $find_flg = 0;
#reg_typeとoffsetが同じならconditionをマージ
foreach $k (@def_array) {
if ( $k->{'condition'} eq "" ) {
# 条件無しのフィールドは最後に来るはずで、先に既に存在する場合は条件設定がおかしい
print STDERR "WARNING: illegal condition in \'$k->{'name'}\'\n";
}
if ( ($k->{"reg_type"} eq $tmp_hash[$i]->{"reg_type"}) && ($k->{"offset"} eq $tmp_hash[$i]->{"offset"}) )
{
$k->{'condition'} = merge_condition( $k->{'condition'}, $tmp_hash[$i]->{'condition'}, $k->{'name'} );
$find_flg = 1;
last;
}
}
if ($find_flg == 0) {
push @def_array, $tmp_hash[$i];
$i++;
}
# リストにまだ残っているなら次を処理
if (exists($hash->{"next"})) {
$hash = $hash->{"next"};
} else {
last;
}
}
return @def_array;
}
#
# アウトプット
#
sub output {
my $output_filename = shift @_;
my $category = shift @_;
# 出力ファイルのオープン
open OUT, ">$output_filename" or die "ERROR: Cannot create file \'$output_filename\'\n";
my $handle = OUT;
# my $handle = STDOUT;
my $include_guard = $output_filename;
$include_guard =~ s/[.\/]/_/g;
$include_guard = uc($include_guard). "_";
#
# 出力
#
print $handle <<ENDDOC;
/*---------------------------------------------------------------------------*
Project: CtrSDK - IO Register List -
File: $output_filename
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
*---------------------------------------------------------------------------*/
//
// I was generated automatically, don't edit me directly!!!
//
#ifndef $include_guard
#define $include_guard
#ifndef SDK_ASM
#include <ctr/types.h>
#include <ctr/hw/ARM9/mmap_global.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* Definition of Register offsets, addresses and variables.
*/
ENDDOC
my $hash, $tmp_hash;
foreach $hash (@hash_array) {
next if ($hash->{"category"} ne $category);
print $handle "/* $hash->{'name'} */\n\n";
my @reg_array = cull_register_offset_def($hash); # 重複した項目を最適化
my $nest_state = 0;
foreach $tmp_hash (@reg_array)
{
if ($tmp_hash->{"condition"} ne "") {
if ($nest_state == 0) {
$nest_state = 1;
printf $handle "#if %s\n\n", $tmp_hash->{'condition'};
} elsif ($nest_state == 1) {
printf $handle "\n#elif %s\n\n", $tmp_hash->{'condition'};
}
} elsif ($nest_state == 1) {
printf $handle "\n#else\n\n";
}
printf $handle "#define %-50s %s\n", $tmp_hash->{'offset_def'}, $tmp_hash->{'offset'};
printf $handle "#define %-50s %s\n", $tmp_hash->{"address_def"}, "(HW_REG_BASE + $tmp_hash->{'offset_def'})";
printf $handle "#define %-50s %s\n", $tmp_hash->{"valname_def_new"}, $tmp_hash->{"reg_type"};
if ($nest_state == 1) {
if ( $tmp_hash->{"condition"} ne "" ) {
printf $handle "// endif %s\n", $tmp_hash->{"condition"};
} else {
printf $handle "// endif else\n";
}
}
}
if ($nest_state == 1) {
printf $handle "#endif\n";
}
printf $handle "\n";
}
print $handle <<ENDDOC;
/*
* Definitions of Register fields
*/
ENDDOC
my $hash;
my $nest_state;
foreach $hash (@hash_array) {
next if ($hash->{"category"} ne $category);
$nest_state = 0;
printf $handle "\n";
print $handle "/* $hash->{'name'} */\n";
while ( 1 ) {
if ($hash->{"condition"} ne "") {
if ($nest_state == 0) {
$nest_state = 1;
printf $handle "#if %s\n", $hash->{'condition'};
} elsif ($nest_state == 1) {
printf $handle "#elif %s\n", $hash->{'condition'};
}
} elsif ($nest_state == 1) {
printf $handle "#else\n";
}
my $no = $hash->{"line_no"};
my @array = @{$hash->{"option"}};
my $field_macro_func = "#define $hash->{'valname_def'}_FIELD(";
my $field_macro_flag = 0;
my $field_macro_body = " (u$hash->{'bitwidth'})( \\\n";
my $fieldname, $fieldshift, $fieldsize;
while($fieldname = shift @array) {
my $shift_macro;
die "ERROR: Field option not good in line $no\n" if (!defined($fieldshift = shift @array));
die "ERROR: Field option not good in line $no\n" if (!defined($fieldsize = shift @array));
print $handle "\n";
# REG_XXX_XXXXX_SHIFTの出力
{
my $name = "$hash->{'valname_def'}_" . $fieldname . "_SHIFT";
check_macro_duplicate($name, $hash->{'condition'}, $no);
$shift_macro = $name;
printf $handle "#define %-50s %s\n", $name, $fieldshift;
}
# REG_XXX_XXXXX_SIZEの出力
{
my $name = "$hash->{'valname_def'}_" . $fieldname . "_SIZE";
check_macro_duplicate($name, $hash->{'condition'}, $no);
printf $handle "#define %-50s %s\n", $name, $fieldsize;
}
# REG_XXX_XXXXX_MASKの出力
{
my $width = $hash->{"bitwidth"};
my $mask_val = 1 << $fieldshift;
my $tmp = $mask_val;
my $i;
for ($i = 0; $i < $fieldsize - 1; $i++) {
$mask_val = $mask_val << 1;
$mask_val = $mask_val + $tmp;
}
my $name = "$hash->{'valname_def'}_" . $fieldname . "_MASK";
check_macro_duplicate($name, $hash->{'condition'}, $no);
printf $handle "#define %-50s $hash->{'mask_format'}\n", $name, $mask_val;
}
# REG_XXX_XXXXX_FIELDの定義の一行分を作成
my $fn = lc($fieldname);
if ($field_macro_flag == 1) {
$field_macro_func = $field_macro_func . ", " . $fn;
$field_macro_body = $field_macro_body . " | \\\n" . " ((u32)($fn) << $shift_macro)";
} else {
$field_macro_func = $field_macro_func . " " . $fn;
$field_macro_body = $field_macro_body . " ((u32)($fn) << $shift_macro)";
$field_macro_flag = 1;
}
}
if ($field_macro_flag == 1) {
# REG_XXX_XXXXX_FIELDの出力
$field_macro_func .= " ) \\\n";
$field_macro_func .= $field_macro_body;
print $handle "\n#ifndef SDK_ASM\n";
print $handle $field_macro_func, ")\n";
print $handle "#endif\n\n"
}
if ($nest_state == 1) {
if ( $hash->{"condition"} ne "") {
printf $handle "// endif %s\n", $hash->{"condition"};
} else {
printf $handle "// endif else\n";
}
if ( !exists($hash->{"next"})) {
printf $handle "#endif \n\n";
}
}
# リストにまだ残っているなら次を表示
if (exists($hash->{'next'})) {
$hash = $hash->{'next'};
} else {
last;
}
}
}
print $handle <<ENDDOC;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* $include_guard */
#endif
ENDDOC
verbose("done.\n");
}
#
# コマンドラインオプションの設定
#
# -vか-verboseが指定されているとverboseモード
if ($v == 1 || $verbose == 1) {
$verbose_mode = 1;
verbose("verbose mode on\n");
} else {
$verbose_mode = 0;
}
# -nodupが指定されているとマクロ名の重複を許さない
if ($nodup == 1) {
$duplicate_ok = 0;
} else {
$duplicate_ok = 1;
}
#
# メインルーチン
#
foreach $filename (@ARGV) {
$line_no = 0;
@hash_array = ();
open INPUTFILE, "$filename" or die "ERROR: Cannot open file \'$filename\'\n";
my $line;
while($line = <INPUTFILE>) {
$line_no++;
$line =~ s/\"//g;
$line =~ s/\#.*//;
next if ($line =~ /^[\s,]*$/);
@fields = preprocess($line);
push_fields( analyze(@fields) );
}
verbose("$line_no lines read\n");
my @categories = collect_category();
my $category;
my @headerfile_array = ();
foreach $category (@categories) {
my $output_filename = $filename;
if (($output_filename =~ s/\.csv/\.h/) == 0) {
$output_filename .= ".h";
}
$output_filename =~ s/\.h/_$category.h/;
push @headerfile_array, $output_filename;
verbose("Output filename is $output_filename\n");
output($output_filename, $category);
}
my $master_filename = $filename;
if (($master_filename =~ s/\.csv/\.h/) == 0) {
$master_filename .= ".h";
}
open MASTER, ">$master_filename" or die "ERROR: Cannot create file \'$master_filename$'\n";
my $include_guard = $master_filename;
$include_guard =~ s/[.\/]/_/g;
$include_guard = uc($include_guard). "_";
print MASTER <<ENDDOC;
/*---------------------------------------------------------------------------*
Project: CtrSDK - IO Register List -
File: $master_filename
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
*---------------------------------------------------------------------------*/
#ifndef $include_guard
#define $include_guard
#ifdef __cplusplus
extern "C" {
#endif
ENDDOC
foreach $header_file (@headerfile_array) {
print MASTER "#include <$header_file>\n"
}
print MASTER <<ENDDOC;
#ifdef __cplusplus
} /* extern "C" */
#endif
/* $include_guard */
#endif
ENDDOC
}

View File

@ -0,0 +1,500 @@
#offset,condition,name,bit,rw,category,volatile/permanent,fieldname,shift,bit,,,,,,,,,,,,,,,,,,,,,
#表示ステータス,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x004,,DISPSTAT,16,rw,GX,volatile,VCOUNTER,7,9,INI,6,1,VQI,5,1,HBI,4,1,VBI,3,1,LYC,2,1,HBLK,1,1,VBLK,0,1
0x006,,VCOUNT,16,rw,GX,volatile,VCOUNTER,0,10,,,,,,,,,,,,,,,,,,,,,
#DMA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x0b0,,DMA0SAD,32,rw,MI,volatile,DMASRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x0b4,,DMA0DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0b8,,DMA0CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0bc,,DMA1SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0c0,,DMA1DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0c4,,DMA1CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0c8,,DMA2SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0cc,,DMA2DAD,32,rw,MI,volatile,DMADEST,0,27,,,,,,,,,,,,,,,,,,,,,
0x0d0,,DMA2CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16
0x0d4,,DMA3SAD,32,rw,MI,volatile,DMASRC,0,28,,,,,,,,,,,,,,,,,,,,,
0x0d8,,DMA3DAD,32,rw,MI,volatile,DMADEST,0,28,,,,,,,,,,,,,,,,,,,,,
0x0dc,,DMA3CNT,32,rw,MI,volatile,E,31,1,I,30,1,TIMING,28,2,SB,26,1,CM,25,1,SAR,23,2,DAR,21,2,WORDCNT,0,16,,,,,,
#新規DMA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4100,,NDMAGCNT,32,rw,MI,volatile,ARBITER,31,1,CPUCYCLE,16,4,,,,,,,,,,,,,,,,,,,,,,,,
0x4104,,NDMA0SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4108,,NDMA0DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x410c,,NDMA0TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4110,,NDMA0WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4114,,NDMA0BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4118,,NDMA0FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x411c,,NDMA0CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x4120,,NDMA1SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4124,,NDMA1DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4128,,NDMA1TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x412c,,NDMA1WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4130,,NDMA1BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4134,,NDMA1FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4138,,NDMA1CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x413c,,NDMA2SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4140,,NDMA2DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4144,,NDMA2TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4148,,NDMA2WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x414c,,NDMA2BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x4150,,NDMA2FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4154,,NDMA2CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
0x4158,,NDMA3SAD,32,rw,MI,volatile,DMASRC,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x415c,,NDMA3DAD,32,rw,MI,volatile,DMADEST,2,30,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4160,,NDMA3TCNT,32,rw,MI,volatile,TOTALCNT,0,28,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4164,,NDMA3WCNT,32,rw,MI,volatile,WORDCNT,0,24,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4168,,NDMA3BCNT,32,rw,MI,volatile,PS,16,2,ICNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x416c,,NDMA3FDATA,32,rw,MI,volatile,FDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4170,,NDMA3CNT,32,rw,MI,volatile,E,31,1,I,30,1,CM,29,1,IM,28,1,MODE,24,4,WORDCNT,16,4,SRL,15,1,SAR,13,2,DRL,12,1,DAR,10,2
#タイマ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100,,TM0CNT_L,16,rw,OS,volatile,TIMER0CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x102,,TM0CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,PS,0,2,,,,,,,,,,,,,,,,,,
0x104,,TM1CNT_L,16,rw,OS,volatile,TIMER1CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x106,,TM1CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
0x108,,TM2CNT_L,16,rw,OS,volatile,TIMER2CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x10a,,TM2CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
0x10c,,TM3CNT_L,16,rw,OS,volatile,TIMER2CNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x10e,,TM3CNT_H,16,rw,OS,volatile,E,7,1,I,6,1,CH,2,1,PS,0,2,,,,,,,,,,,,,,,
#SIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"#レジスタ0x128,0x12aは状況でビットの意味が大きく変わるので多重に定義してあります。",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x120,,SIODATA32,32,rw,EXI,volatile,H,16,16,L,0,16,,,,,,,,,,,,,,,,,,,,,
0x120,,SIOMULTI0,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x122,,SIOMULTI1,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x124,,SIOMULTI2,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x126,,SIOMULTI3,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,
0x128,,SIOCNT,16,rw,EXI,volatile,CKUP,15,1,I,14,1,MD1,13,1,BITLEN,12,1,START,7,1,TSEND,3,1,TRECV,2,1,SCLOCKHZ,1,1,SCLOCK,0,1
0x128,,SIOCNT_MULTI,16,rw,EXI,volatile,CKUP,15,1,I,14,1,MD1,13,1,MD0,12,1,START,7,1,ERROR,6,1,MULTIID,4,2,SDMON,3,1,SIMON,2,1,BAUD,0,2,,,,,,,,,,,,,,,,,,
0x128,,SIOCNT_UART,16,rw,EXI,volatile,CKUP,15,1,MD1,13,1,MD0,12,1,RECVEF,11,1,SENDEF,10,1,PARITYEF,9,1,FIFOEF,8,1,DATALEN,7,1,ERROR,6,1,RECV,5,1,SEND,4,1,PARITYCNT,3,1,CTS,2,1,BAUD,0,2,,,,,,
0x12a,,SIOCNT_H,16,rw,EXI,volatile,RFFUL,15,1,TFEMP,14,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x12a,,SIOMLT_SEND,16,rw,EXI,volatile,DATA,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x12a,,SIODATA8,16,rw,EXI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#キー,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x130,,KEYINPUT,16,rw,PAD,volatile,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1,,,,,,,,,,,,,,,,,,
0x132,,KEYCNT,16,rw,PAD,volatile,LOGIC,15,1,INTR,14,1,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1,,,,,,,,,,,,
#シリアル通信 汎用端子,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x134,,RCNT0_L,16,rw,EXI,volatile,RE1,15,1,RE0,14,1,I,8,1,DIR_SO,7,1,DIR_SI,6,1,DIR_SD,5,1,DIR_SC,4,1,DATA_SO,3,1,DATA_SI,2,1,DATA_SD,1,1,DATA_SC,0,1,,,,,,,,,,,,,,,
0x136,,RCNT0_H,16,rw,EXI,volatile,DATA_R7,7,1,DATA_R6,6,1,DATA_R5,5,1,DATA_R4,4,1,DATA_R3,3,1,DATA_R2,2,1,DATA_R1,1,1,DATA_R0,0,1,,,,,,,,,,,,,,,,,,,,,,,,
0x138,,RCNT1,16,rw,EXI,volatile,DIR_RF,15,1,DIR_RE,14,1,DIR_RD,13,1,DIR_RC,12,1,DATA_RF,11,1,DATA_RE,10,1,DATA_RD,9,1,DATA_RC,8,1,DIR_RB,7,1,DIR_RA,6,1,DIR_R9,5,1,DIR_R8,4,1,DATA_RB,3,1,DATA_RA,2,1,DATA_R9,1,1,DATA_R8,0,1
#JOY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x140,,JOYCNT,16,rw,EXI,volatile,MOD,7,1,I,6,1,SEND,2,1,RECV,1,1,RESET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x150,,JOY_RECV,32,rw,EXI,volatile,RECVDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x154,,JOY_TRANS,32,rw,EXI,volatile,SENDDATA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x158,,JOY_STAT,16,rw,EXI,volatile,GEN,4,2,SSTATUS,3,1,RSTATUS,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
# ARM9 とのインターフェイス,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x180,,MAINPINTF,16,rw,PXI,volatile,I,14,1,IREQ,13,1,A7STATUS,8,4,A9STATUS,0,4,,,,,,,,,,,,,,,,,,,,,,,,
0x184,,MAINP_FIFO_CNT,16,rw,PXI,volatile,E,15,1,ERR,14,1,RECV_RI,10,1,RECV_FULL,9,1,RECV_EMP,8,1,SEND_CL,3,1,SEND_TI,2,1,SEND_FULL,1,1,SEND_EMP,0,1,,,,,,,,,
0x188,,SEND_FIFO,32,rw,PXI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100000,,RECV_FIFO,32,rw,PXI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカード,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a0,,MCCNT0,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x1a2,,MCD0,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100010,,MCD1,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a4,,MCCNT1,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x1a8,,MCCMD0,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1ac,,MCCMD1,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1b0,,MCSCR0,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b4,,MCSCR1,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b8,,MCSCR2,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカードA(無印の別名定義),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a0,,MCCNT0_A,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x1a2,,MCD0_A,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x100010,,MCD1_A,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1a4,,MCCNT1_A,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x1a8,,MCCMD0_A,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1ac,,MCCMD1_A,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x1b0,,MCSCR0_A,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b4,,MCSCR1_A,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1b8,,MCSCR2_A,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#メモリカードB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21a0,,MCCNT0_B,16,rw,MI,volatile,E,15,1,I,14,1,SEL,13,1,BUSY,7,1,MODE,6,1,BAUDRATE,0,2,,,,,,,,,,,,,,,,,,
0x21a2,,MCD0_B,16,rw,MI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x102010,,MCD1_B,32,rw,MI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21a4,,MCCNT1_B,32,rw,MI,volatile,START,31,1,WR,30,1,RESB,29,1,RTM,28,1,CT,27,1,PC,24,3,RDY,23,1,L2,16,6,SCR,15,1,SE,14,1,DS,13,1,L1,0,13
0x21a8,,MCCMD0_B,32,w,MI,volatile,CMD3,24,8,CMD2,16,8,CMD1,8,8,CMD0,0,8,,,,,,,,,,,,,,,,,,,,,,,,
0x21ac,,MCCMD1_B,32,w,MI,volatile,CMD7,24,8,CMD6,16,8,CMD5,8,8,CMD4,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b0,,MCSCR0_B,32,w,MI,volatile,SCRA,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b4,,MCSCR1_B,32,w,MI,volatile,SCRB,0,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21b8,,MCSCR2_B,32,w,MI,volatile,SCRB,26,7,SCRA,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#SPI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1c0,,SPICNT,16,rw,SPI,volatile,E,15,1,I,14,1,MODE,11,1,CLKMODE,10,1,SEL,8,2,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x1c2,,SPID,16,rw,SPI,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#外部メモリ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x204,,EXMEMCNT_L,16,rw,MI,volatile,EP,15,1,EMODE,14,1,ECE2,13,1,MP,11,1,MP_A,11,1,MP_B,10,1,CP,7,1,PHI,5,2,ROM2nd,4,1,ROM1st,2,2,RAM,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x206,,EXMEMCNT_H,16,rw,MI,volatile,PHI33M,7,1,WW1_2nd,5,1,WW1_1st,3,2,WW0_2nd,2,1,WW0_1st,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#割り込み,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x208,,IME,16,rw,OS,volatile,IME,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x210,,IE,32,rw,OS,volatile,ND3,31,1,ND2,30,1,ND1,29,1,ND0,28,1,MIB,27,1,MCB,26,1,DWE,25,1,WL,24,1,SPI,23,1,PM,22,1,DRE,21,1,MI,20,1,MIA,20,1,MC,19,1,MCA,19,1,IFN,18,1,IFE,17,1,A7,16,1,MCBDET,15,1,MCADET,14,1,I_D,13,1,K,12,1,D3,11,1,D2,10,1,D1,9,1,D0,8,1,SIO,7,1,T3,6,1,T2,5,1,T1,4,1,T0,3,1,VE,2,1,HB,1,1,VB,0,1
0x214,,IF,32,rw,OS,volatile,ND3,31,1,ND2,30,1,ND1,29,1,ND0,28,1,MIB,27,1,MCB,26,1,DWE,25,1,WL,24,1,SPI,23,1,PM,22,1,DRE,21,1,MI,20,1,MIA,20,1,MC,19,1,MCA,19,1,IFN,18,1,IFE,17,1,A7,16,1,MCBDET,15,1,MCADET,14,1,I_D,13,1,K,12,1,D3,11,1,D2,10,1,D1,9,1,D0,8,1,SIO,7,1,T3,6,1,T2,5,1,T1,4,1,T0,3,1,VE,2,1,HB,1,1,VB,0,1
0x218,,IE2,16,rw,OS,volatile,MIC,14,1,I2C,13,1,AES,12,1,SD2A,11,1,SD2,10,1,SD1A,9,1,SD1,8,1,GPIO33_3,7,1,GPIO33_2,6,1,GPIO33_1,5,1,GPIO33_0,4,1,GPIO18_2,2,1,GPIO18_1,1,1,GPIO18_0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x21c,,IF2,16,rw,OS,volatile,MIC,14,1,I2C,13,1,AES,12,1,SD2A,11,1,SD2,10,1,SD1A,9,1,SD1,8,1,GPIO33_3,7,1,GPIO33_2,6,1,GPIO33_1,5,1,GPIO33_0,4,1,GPIO18_2,2,1,GPIO18_1,1,1,GPIO18_0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#本体内メモリ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x240,,WVRAMSTAT,16,rw,MI,volatile,WRAM_1,9,1,WRAM_0,8,1,VRAM_D,1,1,VRAM_C,0,1,,,,,,,,,,,,
#PAUSE,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x300,,PAUSE,16,rw,OS,volatile,MOD,14,2,CHK,0,1,,,,,,,,,,,,,,,,,,
#パワーコントロール,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x304,,POWCNT,16,rw,SND,volatile,EWL,1,1,SPE,0,1,,,,,,,,,,,,,,,,,,
#サウンド,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x400,,SOUND0CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x400,,SOUND0CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x400,,SOUND0CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x402,,SOUND0CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x403,,SOUND0CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x404,,SOUND0SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x408,,SOUND0TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x40a,,SOUND0RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x40c,,SOUND0RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x410,,SOUND1CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x410,,SOUND1CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x410,,SOUND1CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x412,,SOUND1CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x413,,SOUND1CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x414,,SOUND1SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x418,,SOUND1TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x41a,,SOUND1RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x41c,,SOUND1RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x420,,SOUND2CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x420,,SOUND2CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x420,,SOUND2CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x422,,SOUND2CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x423,,SOUND2CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x424,,SOUND2SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x428,,SOUND2TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x42a,,SOUND2RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x42c,,SOUND2RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x430,,SOUND3CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x430,,SOUND3CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x430,,SOUND3CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x432,,SOUND3CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x433,,SOUND3CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x434,,SOUND3SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x438,,SOUND3TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x43a,,SOUND3RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x43c,,SOUND3RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x440,,SOUND4CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x440,,SOUND4CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x440,,SOUND4CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x442,,SOUND4CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x443,,SOUND4CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x444,,SOUND4SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x448,,SOUND4TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x44a,,SOUND4RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x44c,,SOUND4RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x450,,SOUND5CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x450,,SOUND5CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x450,,SOUND5CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x452,,SOUND5CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x453,,SOUND5CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x454,,SOUND5SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x458,,SOUND5TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x45a,,SOUND5RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x45c,,SOUND5RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x460,,SOUND6CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x460,,SOUND6CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x460,,SOUND6CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x462,,SOUND6CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x463,,SOUND6CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x464,,SOUND6SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x468,,SOUND6TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x46a,,SOUND6RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x46c,,SOUND6RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x470,,SOUND7CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x470,,SOUND7CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x470,,SOUND7CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x472,,SOUND7CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x473,,SOUND7CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x474,,SOUND7SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x478,,SOUND7TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x47a,,SOUND7RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x47c,,SOUND7RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x480,,SOUND8CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x480,,SOUND8CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x480,,SOUND8CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x482,,SOUND8CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x483,,SOUND8CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x484,,SOUND8SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x488,,SOUND8TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x48a,,SOUND8RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x48c,,SOUND8RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x490,,SOUND9CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x490,,SOUND9CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x490,,SOUND9CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x492,,SOUND9CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x493,,SOUND9CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x494,,SOUND9SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x498,,SOUND9TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x49a,,SOUND9RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x49c,,SOUND9RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4a0,,SOUND10CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4a0,,SOUND10CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4a0,,SOUND10CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4a2,,SOUND10CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4a3,,SOUND10CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4a4,,SOUND10SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4a8,,SOUND10TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4aa,,SOUND10RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ac,,SOUND10RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4b0,,SOUND11CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4b0,,SOUND11CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4b0,,SOUND11CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4b2,,SOUND11CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4b3,,SOUND11CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4b4,,SOUND11SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4b8,,SOUND11TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ba,,SOUND11RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4bc,,SOUND11RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4c0,,SOUND12CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4c0,,SOUND12CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4c0,,SOUND12CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4c2,,SOUND12CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4c3,,SOUND12CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4c4,,SOUND12SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4c8,,SOUND12TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ca,,SOUND12RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4cc,,SOUND12RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4d0,,SOUND13CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4d0,,SOUND13CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4d0,,SOUND13CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4d2,,SOUND13CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4d3,,SOUND13CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4d4,,SOUND13SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4d8,,SOUND13TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4da,,SOUND13RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4dc,,SOUND13RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4e0,,SOUND14CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4e0,,SOUND14CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4e0,,SOUND14CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,
0x4e2,,SOUND14CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,
0x4e3,,SOUND14CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,
0x4e4,,SOUND14SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,
0x4e8,,SOUND14TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ea,,SOUND14RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,
0x4ec,,SOUND14RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,
0x4f0,,SOUND15CNT,32,rw,SND,volatile,E,31,1,FORMAT,29,2,REPEAT,27,2,DUTY,24,3,PAN,16,7,HOLD,15,1,SHIFT,8,2,VOLUME,0,7
0x4f0,,SOUND15CNT_VOL_16,16,rw,SND,volatile,HOLD,15,1,SHIFT,8,2,VOLUME,0,7,,,,,,,,,,,,,,,
0x4f0,,SOUND15CNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f2,,SOUND15CNT_PAN,8,rw,SND,volatile,PAN,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f3,,SOUND15CNT_8,8,rw,SND,volatile,E,7,1,FORMAT,5,2,REPEAT,3,2,DUTY,0,3,,,,,,,,,,,,,,,,,,
0x4f4,,SOUND15SAD,32,w,SND,volatile,SRC,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4f8,,SOUND15TMR,16,w,SND,volatile,TIMER,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4fa,,SOUND15RPT_PT,16,w,SND,volatile,POINT,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4fc,,SOUND15RPT_LEN,32,w,SND,volatile,LEN,0,22,,,,,,,,,,,,,,,,,,,,,,,,,,,
#サウンドマスターコントロール,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x500,,SOUNDCNT,16,rw,SND,volatile,E,15,1,MIX_CH3,13,1,MIX_CH1,12,1,ROUT,10,2,LOUT,8,2,VOLUME,0,7,,,,,,,,,,,,
0x501,,SOUNDCNT_8,8,rw,SND,volatile,E,7,1,MIX_CH3,5,1,MIX_CH1,4,1,ROUT,2,2,LOUT,0,2,,,,,,,,,,,,,,,
0x500,,SOUNDCNT_VOL,8,rw,SND,volatile,VOLUME,0,7,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x504,,SOUND_BIAS,16,rw,SND,volatile,BIAS,0,10,,,,,,,,,,,,,,,,,,,,,,,,,,,
#キャプチャ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x508,,SNDCAPCNT,16,rw,SND,volatile,CAP1_E,15,1,CAP1_FORMAT,11,1,CAP1_REPEAT,10,1,CAP1_IN,9,1,CAP1_OUT,8,1,CAP0_E,7,1,CAP0_FORMAT,3,1,CAP0_REPEAT,2,1,CAP0_IN,1,1,CAP0_OUT,0,1
0x508,,SNDCAP0CNT,8,rw,SND,volatile,E,7,1,FORMAT,3,1,REPEAT,2,1,IN,1,1,OUT,0,1,,,,,,,,,,,,,,,
0x509,,SNDCAP1CNT,8,rw,SND,volatile,E,7,1,FORMAT,3,1,REPEAT,2,1,IN,1,1,OUT,0,1,,,,,,,,,,,,,,,
0x510,,SNDCAP0DAD,32,w,SND,volatile,DEST,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x514,,SNDCAP0LEN,16,rw,SND,volatile,LEN,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x518,,SNDCAP1DAD,32,w,SND,volatile,DEST,0,27,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x51c,,SNDCAP1LEN,16,rw,SND,volatile,LEN,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規コンフィグ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#0x4000のSCFG_ROMは直後に分けて二重定義しています。,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4000,,ROM,32,rw,SCFG,volatile,ROMWE,16,1,ARM7FUSE,10,1,ARM7RSEL,9,1,ARM7SEL,8,1,ARM9RSEL,1,1,ARM9SEL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4000,,A9ROM,8,rw,SCFG,volatile,RSEL,1,1,SEC,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4001,,A7ROM,8,rw,SCFG,volatile,FUSE,2,1,RSEL,1,1,SEC,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4002,,ROMWE,16,rw,SCFG,volatile,WE,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4004,,CLK,16,rw,SCFG,volatile,SNDMCLK,8,1,WRAMHCLK,7,1,AESHCLK,2,1,SD2HCLK,1,1,SD1HCLK,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4006,,JTAG,16,rw,SCFG,volatile,DSPJE,8,1,CPUJE,1,1,ARM7SEL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4008,,EXT,32,rw,SCFG,volatile,CFG,31,1,PUENABLE,28,1,SD20,28,1,NEWB_ACCESS_E,16,10,WRAM,25,1,MC_B,24,1,GPIO,23,1,I2C,22,1,I2S,21,1,MIC,20,1,SD2,19,1,SD1,18,1,AES,17,1,DMAC,16,1,NITROB_EX_E,8,8,PSRAM,14,2,VRAM,13,1,LCDC,12,1,SIO,11,1,DSEL,10,1,SPI,9,1,INTC,8,1,NITROB_MOD_E,0,8,MC,7,1,SND,2,1,SDMA,1,1,DMA,0,1
0x4010,,MC1,32,rw,MI,volatile,CC,16,16,SWP,15,1,SL2_STATUS,4,4,SL2_M1,7,1,SL2_M0,6,1,SL2_CDET,4,1,SL1_STATUS,0,4,SL1_M1,3,1,SL1_M0,2,1,SL1_CDET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4010,,MC,16,rw,MI,volatile,SWP,15,1,SL2_MODE,6,2,SL2_CDET,4,1,SL1_MODE,2,2,SL1_CDET,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4012,,MCCHAT,16,rw,MI,volatile,CC,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4014,,MC2,16,rw,MI,volatile,CA,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4020,,WL,16,rw,SCFG,volatile,OFFB,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4024,,OP,16,r,SCFG,volatile,OP1,1,1,OP0,0,1,OPT,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
#共有メモリバンク制御,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4040,,MBK1,32,r,MI,volatile,WA3_E,31,1,WA3_OF,26,2,WA3_M,24,1,WA2_E,23,1,WA2_OF,18,2,WA2_M,16,1,WA1_E,15,1,WA1_OF,10,2,WA1_M,8,1,WA0_E,7,1,WA0_OF,2,2,WA0_M,0,1
0x4040,,MBK_A0,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4041,,MBK_A1,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4042,,MBK_A2,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4043,,MBK_A3,8,r,MI,volatile,E,7,1,OF,2,2,M,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4044,,MBK2,32,r,MI,volatile,WB3_E,31,1,WB3_OF,26,3,WB3_M,24,2,WB2_E,23,1,WB2_OF,18,3,WB2_M,16,2,WB1_E,15,1,WB1_OF,10,3,WB1_M,8,2,WB0_E,7,1,WB0_OF,2,3,WB0_M,0,2
0x4044,,MBK_B0,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4045,,MBK_B1,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4046,,MBK_B2,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4047,,MBK_B3,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4048,,MBK3,32,r,MI,volatile,WB7_E,31,1,WB7_OF,26,3,WB7_M,24,2,WB6_E,23,1,WB6_OF,18,3,WB6_M,16,2,WB5_E,15,1,WB5_OF,10,3,WB5_M,8,2,WB4_E,7,1,WB4_OF,2,3,WB4_M,0,2
0x4048,,MBK_B4,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4049,,MBK_B5,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404a,,MBK_B6,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404b,,MBK_B7,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404c,,MBK4,32,r,MI,volatile,WC3_E,31,1,WC3_OF,26,3,WC3_M,24,2,WC2_E,23,1,WC2_OF,18,3,WC2_M,16,2,WC1_E,15,1,WC1_OF,10,3,WC1_M,8,2,WC0_E,7,1,WC0_OF,2,3,WC0_M,0,2
0x404c,,MBK_C0,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404d,,MBK_C1,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404e,,MBK_C2,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x404f,,MBK_C3,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4050,,MBK5,32,r,MI,volatile,WC7_E,31,1,WC7_OF,26,3,WC7_M,24,2,WC6_E,23,1,WC6_OF,18,3,WC6_M,16,2,WC5_E,15,1,WC5_OF,10,3,WC5_M,8,2,WC4_E,7,1,WC4_OF,2,3,WC4_M,0,2
0x4050,,MBK_C4,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4051,,MBK_C5,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4052,,MBK_C6,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4053,,MBK_C7,8,r,MI,volatile,E,7,1,OF,2,3,M,0,2,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4054,,MBK6,32,rw,MI,volatile,WA_EADDR,20,9,WA_ISIZE,12,2,WA_SADDR,4,8,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4058,,MBK7,32,rw,MI,volatile,WB_EADDR,19,10,WB_ISIZE,12,2,WB_SADDR,3,9,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x405c,,MBK8,32,rw,MI,volatile,WC_EADDR,19,10,WC_ISIZE,12,2,WC_SADDR,3,9,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4060,,MBK9,32,rw,MI,volatile,WC_LOCKST,16,8,WB_LOCKST,8,8,WA_LOCKST,0,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4060,,MBK_A_LOCK,8,rw,MI,volatile,A3,3,1,A2,2,1,A1,1,1,A0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4061,,MBK_B_LOCK,8,rw,MI,volatile,B7,7,1,B6,6,1,B5,5,1,B4,4,1,B3,3,1,B2,2,1,B1,1,1,B0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4062,,MBK_C_LOCK,8,rw,MI,volatile,C7,7,1,C6,6,1,C5,5,1,C4,4,1,C3,3,1,C2,2,1,C1,1,1,C0,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#AES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4400,,AES_CNT,32,rw,AES,volatile,E,31,1,I,30,1,MODE,28,2,KEY,24,4,SEL1,27,1,SEL0,26,1,BUSY,25,1,SET,24,1,CCM_DEC,20,2,VALID,21,1,MSEL,20,1,ADE,19,1,MAC_LEN,16,3,OFIFO_DREQ,14,2,IFIFO_DREQ,12,2,FIFO_CLR,10,2,OFIFO_CLR,11,1,IFIFO_CLR,10,1,OFIFO_CNT,5,5,IFIFO_CNT,0,5
0x4404,,AES_LEN,32,w,AES,volatile,PL,16,16,AL,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4408,,AES_IFIFO,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x440c,,AES_OFIFO,32,r,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4420,,AES_NONCE0,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4424,,AES_NONCE1,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4428,,AES_NONCE2,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x442c,,AES_NONCE3,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4430,,AES_MAC0,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4434,,AES_MAC1,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4438,,AES_MAC2,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x443c,,AES_MAC3,32,w,AES,volatile
0x4440,,AES_KEY_A0,32,w,AES,volatile
0x4444,,AES_KEY_A1,32,w,AES,volatile
0x4448,,AES_KEY_A2,32,w,AES,volatile
0x444c,,AES_KEY_A3,32,w,AES,volatile
0x4450,,AES_ID_A0,32,w,AES,volatile
0x4454,,AES_ID_A1,32,w,AES,volatile
0x4458,,AES_ID_A2,32,w,AES,volatile
0x445c,,AES_ID_A3,32,w,AES,volatile
0x4460,,AES_SEED_A0,32,w,AES,volatile
0x4464,,AES_SEED_A1,32,w,AES,volatile
0x4468,,AES_SEED_A2,32,w,AES,volatile
0x446c,,AES_SEED_A3,32,w,AES,volatile
0x4470,,AES_KEY_B0,32,w,AES,volatile
0x4474,,AES_KEY_B1,32,w,AES,volatile
0x4478,,AES_KEY_B2,32,w,AES,volatile
0x447c,,AES_KEY_B3,32,w,AES,volatile
0x4480,,AES_ID_B0,32,w,AES,volatile
0x4484,,AES_ID_B1,32,w,AES,volatile
0x4488,,AES_ID_B2,32,w,AES,volatile
0x448c,,AES_ID_B3,32,w,AES,volatile
0x4490,,AES_SEED_B0,32,w,AES,volatile
0x4494,,AES_SEED_B1,32,w,AES,volatile
0x4498,,AES_SEED_B2,32,w,AES,volatile
0x449c,,AES_SEED_B3,32,w,AES,volatile
0x44a0,,AES_KEY_C0,32,w,AES,volatile
0x44a4,,AES_KEY_C1,32,w,AES,volatile
0x44a8,,AES_KEY_C2,32,w,AES,volatile
0x44ac,,AES_KEY_C3,32,w,AES,volatile
0x44b0,,AES_ID_C0,32,w,AES,volatile
0x44b4,,AES_ID_C1,32,w,AES,volatile
0x44b8,,AES_ID_C2,32,w,AES,volatile
0x44bc,,AES_ID_C3,32,w,AES,volatile
0x44c0,,AES_SEED_C0,32,w,AES,volatile
0x44c4,,AES_SEED_C1,32,w,AES,volatile
0x44c8,,AES_SEED_C2,32,w,AES,volatile
0x44cc,,AES_SEED_C3,32,w,AES,volatile
0x44d0,,AES_KEY_D0,32,w,AES,volatile
0x44d4,,AES_KEY_D1,32,w,AES,volatile
0x44d8,,AES_KEY_D2,32,w,AES,volatile
0x44dc,,AES_KEY_D3,32,w,AES,volatile
0x44e0,,AES_ID_D0,32,w,AES,volatile
0x44e4,,AES_ID_D1,32,w,AES,volatile
0x44e8,,AES_ID_D2,32,w,AES,volatile
0x44ec,,AES_ID_D3,32,w,AES,volatile
0x44f0,,AES_SEED_D0,32,w,AES,volatile
0x44f4,,AES_SEED_D1,32,w,AES,volatile
0x44f8,,AES_SEED_D2,32,w,AES,volatile
0x44fc,,AES_SEED_D3,32,w,AES,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#I2C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4501,,I2C_CNT,8,rw,OS,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,
0x4500,,I2C_DAT,8,rw,OS,volatile,DATA,0,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規マイク,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4600,,MIC_CNT,16,rw,OS,volatile,E,15,1,I,13,2,CL,12,1,STATUS,8,4,ERR,11,1,FULL,10,1,HALF,9,1,EMP,8,1,CONTROL,0,4,F,2,2,R,1,1,L,0,1
0x4604,,MIC_DAT,32,r,OS,volatile,SECOND,16,16,FIRST,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#新規サウンド,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4700,,SMX_CNT,16,rw,SND,volatile,E,15,1,MUTE,14,1,FSEL,13,1,MIX_RATE,0,4,,,,,,,,,,,,,,,,,,,,,,,,
#SDインターフェース1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4800,,SD1_CMD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4802,,SD1_PORTSEL,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4804,,SD1_ARG0,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4806,,SD1_ARG1,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4808,,SD1_STOP,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x480a,,SD1_SECCNT,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x480c,,SD1_RSP0,16,r,SD,volatile
0x480e,,SD1_RSP1,16,r,SD,volatile
0x4810,,SD1_RSP2,16,r,SD,volatile
0x4812,,SD1_RSP3,16,r,SD,volatile
0x4814,,SD1_RSP4,16,r,SD,volatile
0x4816,,SD1_RSP5,16,r,SD,volatile
0x4818,,SD1_RSP6,16,r,SD,volatile
0x481a,,SD1_RSP7,16,r,SD,volatile
0x481c,,SD1_INFO1,16,rw,SD,volatile
0x481e,,SD1_INFO2,16,rw,SD,volatile
0x4820,,SD1_INFO1_MASK,16,rw,SD,volatile
0x4822,,SD1_INFO2_MASK,16,rw,SD,volatile
0x4824,,SD1_CLK_CTRL,16,rw,SD,volatile
0x4826,,SD1_SIZE,16,rw,SD,volatile
0x4828,,SD1_OPTION,16,rw,SD,volatile
0x482a,,SD1_ERR_STS1,16,r,SD,volatile
0x482c,,SD1_ERR_STS2,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x482e,,SD1_BUF0,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4830,,SDIO1_MODE,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4834,,SDIO1_INFO1,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4838,,SDIO1_INF1_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48d8,,SD1_CC_EXT_MODE,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48e0,,SD1_SOFT_RST,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48e2,,SD1_VERSION,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f2,,SD1_PWR,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f4,,SD1_EXT_SDIO,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f6,,SD1_EXT_WP,16,r,SD,volatile,,,,,,,,,,,,,,,,,,
0x48f8,,SD1_EXT_CD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fa,,SD1_EXT_CD_DAT3,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fc,,SD1_EXT_CD_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x48fe,,SD1_EXT_CD_DAT3_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,
0x4900,,SD1_CNT,16,rw,SD,volatile,FEIE,12,1,FFIE,11,1,FCLR,10,1,NEMP,9,1,FULL,8,1,FIFO,1,1
0x4904,,SD1_FDS,16,rw,SD,volatile,SIZE,0,10
0x4908,,SD1_FSC,16,rw,SD,volatile,COUNT,0,16
0x490c,,SD1_FI,32,rw,SD,volatile,,,
#SDインターフェース2,,,,,,,,,
0x4a00,,SD2_CMD,16,rw,SD,volatile,,,
0x4a02,,SD2_PORTSEL,16,rw,SD,volatile,,,
0x4a04,,SD2_ARG0,16,rw,SD,volatile,,,
0x4a06,,SD2_ARG1,16,rw,SD,volatile,,,
0x4a08,,SD2_STOP,16,rw,SD,volatile,,,
0x4a0a,,SD2_SECCNT,16,rw,SD,volatile,,,
0x4a0c,,SD2_RSP0,16,r,SD,volatile,,,
0x4a0e,,SD2_RSP1,16,r,SD,volatile,,,
0x4a10,,SD2_RSP2,16,r,SD,volatile,,,
0x4a12,,SD2_RSP3,16,r,SD,volatile,,,
0x4a14,,SD2_RSP4,16,r,SD,volatile,,,
0x4a16,,SD2_RSP5,16,r,SD,volatile,,,
0x4a18,,SD2_RSP6,16,r,SD,volatile
0x4a1a,,SD2_RSP7,16,r,SD,volatile
0x4a1c,,SD2_INFO1,16,rw,SD,volatile
0x4a1e,,SD2_INFO2,16,rw,SD,volatile
0x4a20,,SD2_INFO1_MASK,16,rw,SD,volatile
0x4a22,,SD2_INFO2_MASK,16,rw,SD,volatile
0x4a24,,SD2_CLK_CTRL,16,rw,SD,volatile
0x4a26,,SD2_SIZE,16,rw,SD,volatile
0x4a28,,SD2_OPTION,16,rw,SD,volatile
0x4a2a,,SD2_ERR_STS1,16,r,SD,volatile
0x4a2c,,SD2_ERR_STS2,16,r,SD,volatile
0x4a2e,,SD2_BUF0,16,rw,SD,volatile
0x4a30,,SDIO2_MODE,16,rw,SD,volatile
0x4a34,,SDIO2_INFO1,16,rw,SD,volatile
0x4a38,,SDIO2_INF1_MASK,16,rw,SD,volatile
0x4ad8,,SD2_CC_EXT_MODE,16,rw,SD,volatile
0x4ae0,,SD2_SOFT_RST,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4ae2,,SD2_VERSION,16,r,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af2,,DS2_PWR,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af4,,SD2_EXT_SDIO,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af6,,SD2_EXT_WP,16,r,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4af8,,SD2_EXT_CD,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afa,,SD2_EXT_CD_DAT3,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afc,,SD2_EXT_CD_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4afe,,SD2_EXT_CD_DAT3_MASK,16,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b00,,SD2_CNT,16,rw,SD,volatile,FEIE,12,1,FFIE,11,1,FCLR,10,1,NEMP,9,1,FULL,8,1,FIFO,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b04,,SD2_FDS,16,rw,SD,volatile,SIZE,0,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b08,,SD2_FSC,16,rw,SD,volatile,COUNT,0,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4b0c,,SD2_FI,32,rw,SD,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#GPIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4c00,,GPIO2_CNT,32,rw,OS,volatile,IE7,31,1,IE6,30,1,IE5,29,1,IE4,28,1,IE2,26,1,IE1,25,1,IE0,24,1,IM7,23,1,IM6,22,1,IM5,21,1,IM4,20,1,IM2,18,1,IM1,17,1,IM0,16,1,DR7,15,1,DR6,14,1,DR5,13,1,DR4,12,1,DR2,10,1,DR1,9,1,DR0,8,1,R7,7,1,R6,6,1,R5,5,1,R4,4,1,R2,2,1,R1,1,1,R0,0,1
0x4c04,,GPIO2_CNT2,16,rw,OS,volatile,VO,8,1,WO,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#FuseROM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
0x4d00,,CHIP_ID0,32,r,OS,volatile,WAFER2,28,4,WAFER1,24,4,X3,20,4,X2,16,4,X1,12,4,Y3,8,4,Y2,4,4,Y1,0,4
0x4d04,,CHIP_ID1,32,r,OS,volatile,FAB2,25,4,FAB1,20,5,LOT5,16,4,LOT4,12,4,LOT3,8,4,LOT2,4,4,LOT1,0,4,,,
0x4d08,,ID_VERIFY,16,r,OS,volatile,ERR,0,1,,,,,,,,,,,,,,,,,,,,,
Can't render this file because it has a wrong number of fields in line 17.

Binary file not shown.

View File

@ -0,0 +1,65 @@
#! make -f
#----------------------------------------------------------------------------
# Project: NitroSDK - buildsetup - versions
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
CTR_FORCE_BUILD = True
include $(CTRSDK_ROOT)/build/buildtools/commondefs
-include $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
TARGETS = version.h
ifeq ($(CTRSDK_VERSION_MAJOR),4)
TARGETS_MAKEFILE = $(ROOT)/release/Makefile.4x
else
ifeq ($(CTRSDK_VERSION_MAJOR),3)
TARGETS_MAKEFILE = $(ROOT)/release/Makefile.3x
else
ifeq ($(CTRSDK_VERSION_MAJOR),2)
TARGETS_MAKEFILE = $(ROOT)/release/Makefile.2x
else
TARGETS_MAKEFILE = $(ROOT)/release/Makefile
endif
endif
endif
INSTALL_TARGETS = $(TARGETS)
INSTALL_DIR = $(CTR_INSTALL_INCDIR)/nitro
LDIRT_CLEAN = $(TARGETS)
include $(CTRSDK_ROOT)/build/buildtools/modulerules
do-build: $(TARGETS)
SDK_BUILDVER_CW_CC = $(shell echo $(SDK_CW_BUILD_VERSION_CC) | sed -e 's/^\(.\)/\1/')
SDK_BUILDVER_CW_LD = $(shell echo $(SDK_CW_BUILD_VERSION_LD) | sed -e 's/^\(.\)/\1/')
SDK_BUILDNUM_CW_CC = $(shell echo $(SDK_CW_BUILD_NUMBER_CC) | sed -e 's/^0*\(.\)/\1/')
SDK_BUILDNUM_CW_LD = $(shell echo $(SDK_CW_BUILD_NUMBER_LD) | sed -e 's/^0*\(.\)/\1/')
MAKEVER_FLAGS = VERSIONFILE=$(TARGETS) \
SDK_BUILDVER_CW_CC=$(SDK_BUILDVER_CW_CC) \
SDK_BUILDVER_CW_LD=$(SDK_BUILDVER_CW_LD) \
SDK_BUILDNUM_CW_CC=$(SDK_BUILDNUM_CW_CC) \
SDK_BUILDNUM_CW_LD=$(SDK_BUILDNUM_CW_LD)
$(TARGETS): $(TARGETS_MAKEFILE)
@$(ECHO) SDK_BUILDVER_CW_CC=$(SDK_BUILDVER_CW_CC)
@$(ECHO) SDK_BUILDVER_CW_LD=$(SDK_BUILDVER_CW_LD)
@$(ECHO) SDK_BUILDNUM_CW_CC=$(SDK_BUILDNUM_CW_CC)
@$(ECHO) SDK_BUILDNUM_CW_LD=$(SDK_BUILDNUM_CW_LD)
@$(MAKE) -s -f $(TARGETS_MAKEFILE) $(MAKEVER_FLAGS) version > /dev/null
#===== End of Makefile =====

View File

@ -0,0 +1,20 @@
#ifndef CTRSDK_VERSION_H_
#define CTRSDK_VERSION_H_
#define SDK_VERSION_DATE 20070704
#define SDK_VERSION_TIME 1421
#define SDK_VERSION_MAJOR 4
#define SDK_VERSION_MINOR 0
#define SDK_VERSION_RELSTEP 30000
#define SDK_BUILDVER_CW_CC 3.0
#define SDK_BUILDVER_CW_LD 2.0
#define SDK_BUILDNUM_CW_CC 123
#define SDK_BUILDNUM_CW_LD 84
#ifndef SDK_VERSION_NUMBER
#define SDK_VERSION_NUMBER(major, minor, relstep) \
(((major) << 24) | ((minor) << 16) | ((relstep) << 0))
#define SDK_CURRENT_VERSION_NUMBER \
SDK_VERSION_NUMBER(SDK_VERSION_MAJOR, SDK_VERSION_MINOR, SDK_VERSION_RELSTEP)
#endif
#endif

View File

@ -0,0 +1,21 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrFirm - @privatedefs
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: 2007-07-31#$
# $Rev: 387 $
# $Author: terui $
#----------------------------------------------------------------------------
CTR_WITH_ARM9 := TRUE
#===== End of @privatedefs =====

View File

@ -0,0 +1,21 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - _privatedefs
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: 2007-07-31#$
# $Rev: 387 $
# $Author: terui $
#----------------------------------------------------------------------------
CTR_PRIVATE := TRUE
#===== End of _privatedefs =====

View File

@ -0,0 +1,488 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - commondefs - common definitions for build system
# File: commondefs
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef CTRSDK_COMMONDEFS_
CTRSDK_COMMONDEFS_ = TRUE
#
# SDK root directory
#
CTRSDK_ROOT ?= C:/ctr_sdk
#
# SDK Major Version
#
CTRSDK_VERSION_MAJOR ?= 4
#
# CodeGen Target
#
# CTR_PLATFORM = [TEG/TS]
# CTR_MEMSIZE = [64M/128M]
# CTR_CODEGEN = [ARM/THUMB]
# CTR_PROC = [ARM11/ARM9/ARM7]
#
CTR_PLATFORM ?= TS
CTR_MEMSIZE ?= 64M
CTR_CODEGEN ?= ARM
CTR_PROC ?= ARM11
ifndef CODEGEN_PROC
CODEGEN_PROC := $(CTR_PROC)
endif
ifeq ($(CTR_CODEGEN),ALL)
CTR_CODEGEN_ALL ?= TRUE
override CTR_CODEGEN = ARM
endif
ifeq ($(CTR_CODEGEN),ARM)
CODEGEN_ARCH =
else # ($(CTR_CODEGEN),THUMB)
CODEGEN_ARCH = .thumb
endif
CODEGEN_CC ?= $(CTR_CODEGEN)
CODEGEN_AS ?= ARM
TS_VERSION = $(if $(CTR_TS_VERSION),_TS$(CTR_TS_VERSION))
#
# C Compiler type
#
# CTR_CCTYPE = [CW/SNC]
#
CTR_CCTYPE ?= CW
#
# Binary build tool switch
#
ifeq ($(CTR_ELFTOBIN),)
CTR_MAKEROM ?= TRUE
endif
ifeq ($(CTR_MAKEROM)$(CTR_PLATFORM),TS)
__error:
@echo "---- Stop, Don't use ELFTOBIN with CTR_PLATFORM=TS ----"
@exit 1
endif
#
# RomSpeedType for makerom.exe
#
# one of [MROM/1TROM/UNDEFINED]
#
CTR_ROMSPEED ?= UNDEFINED
#
# SDK build type
#
# one of [CTR_DEBUG/CTR_RELEASE/CTR_FINALROM]
#
ifdef CTR_DEBUG
CTR_BUILD_TYPE ?= DEBUG
CTR_BUILD_DIR ?= Debug
else
ifdef CTR_FINALROM
CTR_BUILD_TYPE ?= FINALROM
CTR_BUILD_DIR ?= Rom
else # CTR_RELEASE (default)
CTR_BUILD_TYPE ?= RELEASE
CTR_BUILD_DIR ?= Release
endif
endif
#----------------------------------------------------------------------------
# Utilities
#
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
#----------------------------------------------------------------------------
# CTR-SDK path settings
#
-include $(CTR_BUILDTOOLSDIR)/commondefs.cygpath
ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRSDK_ROOT)))
CTR_BUILDTOOLSDIR := $(ROOT)/build/buildtools
CTR_BUILDSETUPDIR := $(ROOT)/build/buildsetup
CTR_INCDIR := $(ROOT)/include
CTR_TOOLSDIR := $(ROOT)/tools
CTR_COMPONENTSDIR := $(ROOT)/components
CTR_ADDINS ?= $(ROOT)/add-ins
CTR_BUILDARCH ?= $(CODEGEN_PROC)-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDARCH_ARM11 := ARM9-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDARCH_ARM9 := ARM7-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDTYPE ?= $(CTR_BUILDARCH)/$(CTR_BUILD_DIR)
CTR_BUILDTYPE_ARM11 := $(CTR_BUILDARCH_ARM9)/$(CTR_BUILD_DIR)
CTR_BUILDTYPE_ARM9 := $(CTR_BUILDARCH_ARM7)/$(CTR_BUILD_DIR)
CTR_LIBARCH := $(CODEGEN_PROC)-$(CTR_PLATFORM)
CTR_LIBTYPE := $(CTR_LIBARCH)/$(CTR_BUILD_DIR)
CTR_LIBDIR := $(ROOT)/lib/$(CTR_LIBTYPE)
CTR_LIBSYSCALLDIR := $(ROOT)/lib/$(CTR_LIBARCH)/etc
CTR_LIBSUFFIX := $(CODEGEN_ARCH)
#----------------------------------------------------------------------------
# CTR-SYSTEM path settings
#
ifdef CTRSYSTEM_ROOT
CTRSYSTEM_ROOT_ := $(subst $(SPACE),\ ,$(subst \,/,$(CTRSYSTEM_ROOT)))
-include $(CTRSYSTEM_ROOT_)/build/buildtools/nnslibdefs
endif
CTRSYSTEM_LIBDIR ?= $(ROOT)/lib/CtrSystem/$(CTR_LIBTYPE)
CTRSYSTEM_INCDIR ?=
#----------------------------------------------------------------------------
# CTR-WIRELESS path settings
#
# libraries should be in
# $(ROOT)/lib/CtrWireless
#
# includes should be in
# $(ROOT)/include/nitro_wl/ARM11/*.h
#
# access by #include <nitro_wl/ARM11/*.h>
#
# SDK_VERSION_WL is defined in <nitro_wl/ARM11/version_wl.h>
#
CTRWIRELESS_VERSION ?= 2.78.00
CTRWIRELESS_ROOT ?= $(ROOT)/add-ins/CtrWireless/Marionea-$(CTRWIRELESS_VERSION)
CTRWIRELESS_ROOT_ = $(subst $(SPACE),\ ,$(subst \,/,$(CTRWIRELESS_ROOT)))
ifneq ($(CTR_PROC),ARM9)
CTRWIRELESS_LIBDIR ?= $(ROOT)/lib/CtrWireless/$(CTR_LIBTYPE)
CTRWIRELESS_INCDIR ?= $(ROOT)/include
endif
#----------------------------------------------------------------------------
# Compiler settings
#
CTR_FORCE_BUILD ?= $(strip $(TARGET_BIN) $(TARGET_OBJ) $(TARGET_NEF) $(TARGET_LIB) $(TARGET_SIGN_BIN))
ifneq ($(CTR_FORCE_BUILD),)
### module subdir src/ obj/ lib/ include/
DEFAULT_SRCDIR := ./src
DEFAULT_INCDIR := ./include
DEFAULT_ETCDIR := ./etc
LCF_SUFFIX_ := $(if $(CTR_DIGEST),-C)
CTR_SPECDIR := $(CTR_INCDIR)/nitro/specfiles
DEFAULT_LCFILE := $(CTR_SPECDIR)/$(CTR_LIBARCH).lcf
DEFAULT_LCFILE_TEMPLATE := $(CTR_SPECDIR)/$(CTR_LIBARCH)$(LCF_SUFFIX_).lcf.template
DEFAULT_LCFILE_SPEC := $(CTR_SPECDIR)/$(CTR_LIBARCH).lsf
DEFAULT_ROM_SPEC := $(CTR_SPECDIR)/ROM-$(CTR_PLATFORM).rsf
SRCDIR ?= $(DEFAULT_SRCDIR)
INCDIR ?= $(DEFAULT_INCDIR)
ETCDIR ?= $(DEFAULT_ETCDIR)
OBJDIR ?= ./obj/$(CTR_BUILDTYPE)
BINDIR ?= ./bin/$(CTR_BUILDTYPE)
LIBDIR ?= ./lib/$(CTR_BUILDTYPE)
DEPENDDIR ?= ./depend/$(CTR_BUILDTYPE)
LIBSYSCALL_ = $(if $(LIBSYSCALL),$(LIBSYSCALL),$(CTR_LIBSYSCALLDIR)/libsyscall.a)
### Compiler & Linker settings
-include $(CTR_BUILDTOOLSDIR)/commondefs.cctype.$(CTR_CCTYPE)
ifneq ($(CTR_MAKEROM),)
LCFILE_TEMPLATE ?= $(DEFAULT_LCFILE_TEMPLATE)
LCFILE_SPEC ?= $(DEFAULT_LCFILE_SPEC)
LCFILE_AUTOGEN ?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.lcf))
LCFILE ?= $(LCFILE_AUTOGEN)
DEFAULT_LDRES_TEMPLATE := $(CTR_SPECDIR)/$(basename $(notdir $(LD))).response.template
LDRES_TEMPLATE ?= $(DEFAULT_LDRES_TEMPLATE)
LDRES_AUTOGEN ?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.response))
LDRES_FILE ?= $(LDRES_AUTOGEN)
else
LCFILE ?= $(DEFAULT_LCFILE)
endif
TARGETS = $(addprefix $(BINDIR)/,$(TARGET_BIN) $(TARGET_NEF) $(TARGET_SIGN_BIN)) \
$(addprefix $(OBJDIR)/,$(TARGET_OBJ)) \
$(addprefix $(LIBDIR)/,$(TARGET_LIB))
TARGET_BIN_BASENAME = $(notdir $(basename $(firstword $(TARGET_BIN) $(TARGET_NEF))))
TARGET_NAME ?= $(TARGET_BIN_BASENAME)
### Debugger settings
ifndef IS_CTR_DIR
ifdef IS_IRIS_DIR
IS_CTR_DIR = $(IS_IRIS_DIR)
endif
endif
-include $(CTR_BUILDTOOLSDIR)/commondefs.emtype.ISD
### SDK Library settings
CRT0_O ?= crt0.o
ifeq ($(CODEGEN_PROC),ARM11)
CTR_LIBS ?= libfx$(CTR_LIBSUFFIX).a \
libgx$(CTR_LIBSUFFIX).a \
libos$(TS_VERSION)$(CTR_LIBSUFFIX).a \
libmi$(CTR_LIBSUFFIX).a \
libsnd$(CTR_LIBSUFFIX).a \
libpxi$(CTR_LIBSUFFIX).a \
libext$(CTR_LIBSUFFIX).a \
libfs$(CTR_LIBSUFFIX).a \
libdgt$(CTR_LIBSUFFIX).a \
libcp$(CTR_LIBSUFFIX).a \
libspi$(TS_VERSION)$(CTR_LIBSUFFIX).a \
librtc$(CTR_LIBSUFFIX).a \
libprc$(CTR_LIBSUFFIX).a \
libcard$(CTR_LIBSUFFIX).a \
libwm$(CTR_LIBSUFFIX).a \
libwbt$(CTR_LIBSUFFIX).a \
libmb$(CTR_LIBSUFFIX).a \
libctrdg$(CTR_LIBSUFFIX).a \
libmath$(CTR_LIBSUFFIX).a \
libcht$(CTR_LIBSUFFIX).a \
libstd$(CTR_LIBSUFFIX).a \
libenv$(CTR_LIBSUFFIX).a \
$(notdir $(LIBSYSCALL_)) \
$(CRT0_O)
ifdef CTR_PROFILE_TYPE
CTR_LIBS += libos.$(CTR_PROFILE_TYPE)$(CTR_LIBSUFFIX).a
endif
else # ($(CODEGEN_PROC),ARM9)
CTR_LIBS ?= libos_sp$(CTR_LIBSUFFIX).a \
libmi_sp$(CTR_LIBSUFFIX).a \
libsnd_sp$(CTR_LIBSUFFIX).a \
libpxi_sp$(CTR_LIBSUFFIX).a \
libpad_sp$(CTR_LIBSUFFIX).a \
libexi_sp$(CTR_LIBSUFFIX).a \
libfs_sp$(CTR_LIBSUFFIX).a \
libcard_sp$(CTR_LIBSUFFIX).a \
librtc_sp$(CTR_LIBSUFFIX).a \
libspi_sp$(CTR_LIBSUFFIX).a \
libtp_sp$(CTR_LIBSUFFIX).a \
libnvram_sp$(CTR_LIBSUFFIX).a \
libmic_sp$(TS_VERSION)$(CTR_LIBSUFFIX).a \
libpm_sp$(CTR_LIBSUFFIX).a \
libctrdg_sp$(CTR_LIBSUFFIX).a \
libwvr_sp$(CTR_LIBSUFFIX).a \
libstd_sp$(CTR_LIBSUFFIX).a \
libsubpsyscall.a \
$(CRT0_O)
ifdef CTR_PROFILE_TYPE
CTR_LIBS += libos_sp.$(CTR_PROFILE_TYPE)$(CTR_LIBSUFFIX).a
endif
endif
### Global Library settings
DEFAULT_GINCLUDES := $(INCDIR) $(SRCDIR) \
$(CTRSYSTEM_INCDIR) $(CTRWIRELESS_INCDIR) \
$(CTR_INCDIR) $(ISD_INCDIRS)
DEFAULT_GLIBRARY_DIRS := $(LIBDIR) $(dir $(LIBSYSCALL_)) \
$(CTRSYSTEM_LIBDIR) $(CTRWIRELESS_LIBDIR) \
$(CTR_LIBDIR) $(ISD_LIBDIRS)
DEFAULT_GLIBRARIES := $(CTRSYSTEM_LIBS) $(CTR_LIBS) $(STUBS_LIBS) $(ISD_LIBS)
GINCLUDES ?= $(DEFAULT_GINCLUDES)
GLIBRARY_DIRS ?= $(DEFAULT_GLIBRARY_DIRS)
GLIBRARIES ?= $(DEFAULT_GLIBRARIES)
LINCLUDES ?=
LLIBRARY_DIRS ?=
LLIBRARIES ?=
LNEWDIRS ?=
NEWDIRS ?= $(if $(SRCS),$(OBJDIR) $(DEPENDDIR)) \
$(if $(TARGET_LIB),$(LIBDIR)) \
$(if $(TARGET_BIN)$(TARGET_NEF),$(BINDIR)) \
$(LNEWDIRS)
GDIRT_CLEAN_DIRS := ./obj ./bin ./lib ./depend
GDIRT_CLOBBER_DIRS :=
endif
#----------------------------------------------------------------------------
# MAKE COMMAND SETTINGS
#
# --no-print-directory: No print directory when 'change directory'
# -r no builtin rules
# -R no builtin variables
# -j do make with multi-thread (not used now)
#
MAKEFILE = $(firstword $(MAKEFILE_LIST))
MAKEFLAGS_SHORT = $(filter -%,$(filter-out --%,$(MAKEFLAGS)))
MAKEFLAGS += -R -r
# Check -w option
ifeq (,$(findstring w,$(MAKEFLAGS_SHORT)))
MAKEFLAGS += --no-print-directory
endif
# Check -k option
ifeq (,$(findstring k,$(MAKEFLAGS_SHORT)))
AND = &&
else
AND = ;
endif
# Check -s option
ifneq (,$(findstring s,$(MAKEFLAGS_SHORT)))
CTR_STDOUT = > /dev/null
endif
#----------------------------------------------------------------------------
# CYGWIN TOOLS
#
CD := cd
CP := cp -rf
RM := rm -rf
MV := mv
MKDIRP := mkdir -p
SED := sed
INSTALL := install -p
TOUCH := touch
ECHO := echo
PERL := perl
OBJCOPY := objcopy -I elf32-little -O binary
REMAKE := $(MAKE) -f $(MAKEFILE)
LEX := flex
YACC := bison -y
CC_X86 := gcc -mno-cygwin
CXX_X86 := g++ -mno-cygwin
LD_X86 := gcc -mno-cygwin
AR_X86 := ar ruc
#----------------------------------------------------------------------------
# MY BUILD TOOLS
#
MAKELCF := $(CTR_TOOLSDIR)/bin/makelcf.exe
MAKEBANNER := $(CTR_TOOLSDIR)/bin/makebanner.exe
ADDBANNER := $(CTR_TOOLSDIR)/bin/addbanner.exe
NTEXCONV := $(CTR_TOOLSDIR)/bin/ntexconv.exe
COMPSTATIC := $(CTR_TOOLSDIR)/bin/compstatic.exe
MAKEROM := $(CTR_TOOLSDIR)/bin/makerom.exe
EMUCHILD := $(CTR_TOOLSDIR)/bin/emuchild.exe
ATTACHSIGN := $(CTR_TOOLSDIR)/bin/attachsign.exe
BIN2OBJ := $(CTR_TOOLSDIR)/bin/bin2obj.exe
MAKELCF_FLAGS ?=
MAKEBANNER_FLAGS ?=
MAKEROM_FLAGS ?=
COMPSTATIC_FLAGS ?=
DEFAULT_COMP_ARM9 ?= $(if $(findstring TEG,$(CTR_PLATFORM)),ferret,mongoose)
DEFAULT_ADDRESS_DTCM ?= $(if $(findstring TEG,$(CTR_PLATFORM)),0x02380000,0x027e0000)
DEFAULT_COMPSUFFIX ?= _LZ
DEFAULT_MAKEROM_ARM11 := $(CTR_COMPONENTSDIR)/printserver/$(CTR_BUILDTYPE_ARM9)/main.nef
DEFAULT_MAKEROM_ARM9 := $(CTR_COMPONENTSDIR)/$(DEFAULT_COMP_ARM9)/$(CTR_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM9)_sub$(TS_VERSION).nef
DEFAULT_MAKEROM_ROMROOT := ./files
DEFAULT_MAKEROM_ROMFILES :=
DEFAULT_MAKEROM_ROMSPEED ?= $(CTR_ROMSPEED)
#----------------------------------------------------------------------------
# LIST OF JUNKS for "make
#
GDIRT_CLEAN = a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS)
GDIRT_CLOBBER = $(GDIRT_CLOBBER_DIRS)
GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS)))
#----------------------------------------------------------------------------
# CTRSDK_INSTALL_ROOT
#
ifdef CTRSDK_INSTALL_ROOT
CTRSDK_INSTALL_ROOT_ := $(CTRSDK_INSTALL_ROOT)
else
CTRSDK_INSTALL_ROOT_ := $(CTRSDK_ROOT)
endif
CTR_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRSDK_INSTALL_ROOT_)))
CTR_INSTALL_INCDIR := $(CTR_INSTALL_ROOT)/include
CTR_INSTALL_TOOLSDIR := $(CTR_INSTALL_ROOT)/tools
CTR_INSTALL_LIBDIR := $(CTR_INSTALL_ROOT)/lib/$(CTR_LIBTYPE)
CTR_INSTALL_COMPONENTSDIR := $(CTR_INSTALL_ROOT)/components
CTR_INSTALL_ADDINS := $(CTR_INSTALL_ROOT)/add-ins
#----------------------------------------------------------------------------
# PRIVATE FLAGS
#
-include $(CTR_BUILDTOOLSDIR)/_privatedefs
-include $(CTR_BUILDTOOLSDIR)/@privatedefs
#----------------------------------------------------------------------------
# Load add-ins' commondefs
#
-include $(CTR_BUILDTOOLSDIR)/commondefs.add-ins.*
#----------------------------------------------------------------------------
# DEFAULT TARGET
#
ifdef CTR_UTEST
default all: utest
else
default all: build
endif
#----------------------------------------------------------------------------
endif # CTRSDK_COMMONDEFS_
#----- End of commondefs -----

View File

@ -0,0 +1,41 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - UnitTest Tool
# File: commondefs.add-ins.utest
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
#
# UNIT TEST on ARM11
#
ifeq ($(CODEGEN_PROC),ARM11)
ELIBRARIES += libutest$(CTR_LIBSUFFIX).a
MAKE_UTEST_MAIN = $(CTR_TOOLSDIR)/bin/make_utest_main__
UTEST_MAIN_SRC = $(OBJDIR)/utest_main__.c
UTEST_MAIN_BIN = utest_main__.srl
ifdef UTEST_CHECKASSERT
MACRO_FLAGS += -DSDK_CHECKASSERT
endif
#
# UNIT TEST on ARM9
#
else # ($(CODEGEN_PROC),ARM9)
# Not support unit test on ARM9
endif
#===== End of commondefs.add-ins.utest =====

View File

@ -0,0 +1,510 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - buildtools - compiler dependant settings for CW
# File: commondefs.cctype.CW
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
EMPTY ?=
SPACE ?= $(EMPTY) $(EMPTY)
#----------------------------------------------------------------------------
CTR_STD_PCHDR ?= True
#----------------------------------------------------------------------------
CWFOLDER_IRIS ?= C:/Program Files/Metrowerks/CW for NINTENDO DS V1.2
CWFOLDER_CTR ?= $(CWFOLDER_IRIS)
LM_LICENSE_FILE := $(subst /,\,$(CWFOLDER_CTR))\license.dat
CW_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CWFOLDER_CTR)))
CW_BINDIR := $(CW_ROOT)/ARM_Tools/Command_Line_Tools
CW_ARMDIR := $(CW_ROOT)/ARM_EABI_Support
#----------------------------------------------------------------------------
SDK_VERINFO_CW_CC := $(CTR_BUILDTOOLSDIR)/verinfo.cw.cc
SDK_VERINFO_CW_LD := $(CTR_BUILDTOOLSDIR)/verinfo.cw.ld
ifeq ($(MAKECMDGOALS),do-build)
-include $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
#--------CW2.0beta2 以降のバージョンへの対応
ifndef SDK_CW_BUILD_VERSION_CC
#--------SDK_CW_BUILD_VERSION_CCが定義されていない場合makeでverinfoを作成
MAKE_VERINFO := $(shell make make-verinfo)
-include $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
endif
ifeq ($(shell expr "$(SDK_CW_BUILD_VERSION_CC)" ">=" 3.0),1)
CW_MAJOR_VER ?= 2
endif
# "__declspec(force_export)" support
ifeq ($(shell expr "$(SDK_CW_BUILD_VERSION_CC)" ">=" 3.0),1)
SDK_CW_FORCE_EXPORT_SUPPORT := yes
endif
endif
CW_MAJOR_VER ?= 1
######## IRIS V0.2 Hotfix 1
######## CTR V0.3
#CW_AVOID_STRB := -avoid_strb all,noerr
#
######## CTR V0.4 or other
CW_AVOID_STRB := -avoid_byte strb -warn_byte none
#CW_AVOID_STRB := -avoid_byte strb -warn_byte all
#
#----------------------------------------------------------------------------
MWCC := $(CW_BINDIR)/mwccarm.exe
MWAS := $(CW_BINDIR)/mwasmarm.exe
MWLD := $(CW_BINDIR)/mwldarm.exe
MWAR := $(MWLD)
CC := $(MWCC)
AS := $(MWAS)
LD := $(MWLD)
AR := $(MWAR)
ELFTOBIN := $(CW_BINDIR)/elftobin.exe
ELFTOBIN_TYPE := $(CTR_PLATFORM)$(CODEGEN_ARCH)/$(CTR_BUILD_DIR)
ELFTOBIN_ARM11 ?= $(CTR_COMPONENTSDIR)/printserver/$(CTR_BUILDTYPE_ARM11)/printserver.nef
ELFTOBIN_ARM9 ?= $(CTR_COMPONENTSDIR)/ferret/$(CTR_BUILDTYPE_ARM9)/ferret.nef
ELFTOBIN_ROMHEADER ?= $(CTR_TOOLSDIR)/elftobin/romHeader.bin
#----------------------------------------------------------------------------
# Workaround flags
# SDK_CW_WARNOFF_SAFESTRB : use code32.h to wipe warning STRB out
# SDK_CW_WA_OPT4 : workaround for -O4
# SDK_CW_WA_CONSTPOOLS : workaround for CW 'ConstantPools.c'line: 346
# SDK_CW_WA_OPT_BLX : workaround for blxeq,blxne with opt>=2
# SDK_CW_WA_LIBCXX : workaround for 'C++' libname in lcf
#
#--- flags ---
ifeq ($(CTR_PLATFORM),TEG)
SDK_CW_WARNOFF_SAFESTRB := yes
else
SDK_CW_WARNOFF_SAFESTRB :=
endif
######## IRIS V0.2 Hotfix 1
######## CTR V0.3
######## CTR V0.4.1
#SDK_CW_WA_OPT4 := yes
#SDK_CW_WA_CONSTPOOLS := yes
#SDK_CW_WA_OPT_BLX := yes
######## CTR V0.5
######## CTR V0.5 + HotFix1
######## CTR V0.6
#SDK_CW_WA_LIBCXX := yes
#-----------------------------------
#
ifdef SDK_CW_WA_OPT_BLX
ifdef CTR_BLXCHECKED
# workaround by pragma
MACRO_FLAGS += -DSDK_CW_WA_OPT_BLX
else
# workaround by option
SDK_CW_AVOID_ARM_ARCH5 := yes
endif
endif
ifdef SDK_CW_WARNOFF_SAFESTRB
MACRO_FLAGS += -DSDK_CW_WARNOFF_SAFESTRB
endif
ifdef SDK_CW_WA_OPT4
ifeq ($(CTR_CODEGEN),ARM)
ifneq ($(CTR_BUILD_TYPE),DEBUG)
MACRO_FLAGS += -DSDK_CW_WA_OPT4
endif
endif
endif
ifdef SDK_CW_WA_CONSTPOOLS
ifeq ($(CTR_CODEGEN),THUMB)
ifneq ($(CTR_BUILD_TYPE),DEBUG)
MACRO_FLAGS += -DSDK_CW_WA_CONSTPOOLS
endif
endif
endif
ifdef SDK_CW_FORCE_EXPORT_SUPPORT
MACRO_FLAGS += -DSDK_CW_FORCE_EXPORT_SUPPORT
endif
#----------------------------------------------------------------------------
# SDK small build
ifdef SDK_SMALL_BUILD
MACRO_FLAGS += -DSDK_SMALL_BUILD
endif
#----------------------------------------------------------------------------
# Workaround flags
# SDK_TEG_WA_VBLANK : workaround TEG vblank problems
#
ifeq ($(CTR_PLATFORM),TEG)
MACRO_FLAGS += -DSDK_TEG_WA_VBLANK
endif
#----------------------------------------------------------------------------
######## IRIS V0.2 Hotfix 1
######## CTR V0.3
######## CTR V0.4
#CW_LIBNAME_RULE_A := ARM
#CW_LIBNAME_RULE_T := Thumb
#CW_LIBNAME_RULE_AI := ARM_i
#CW_LIBNAME_RULE_RA := ARM_Runtime
#CW_LIBNAME_RULE_RT := Thumb_Runtime
#CW_LIBNAME_RULE_RAI := ARM_Runtime_i
######## CTR V0.5 or other
CW_LIBNAME_RULE_A := CTR_A
CW_LIBNAME_RULE_T := CTR_T
CW_LIBNAME_RULE_AI := CTR_Ai
CW_LIBNAME_RULE_RA := CTR_Runtime_A
CW_LIBNAME_RULE_RT := CTR_Runtime_T
CW_LIBNAME_RULE_RAI := CTR_Runtime_Ai
#
CW_INCDIRS = $(CW_ARMDIR)/msl/MSL_C/MSL_ARM/Include \
$(CW_ARMDIR)/msl/MSL_C/MSL_Common/Include \
$(CW_ARMDIR)/msl/MSL_C/MSL_Common_Embedded/Math/Include \
$(CW_ARMDIR)/msl/MSL_C++/MSL_ARM/Include \
$(CW_ARMDIR)/msl/MSL_C++/MSL_Common/Include \
$(CW_ARMDIR)/msl/MSL_Extras/MSL_Common/Include \
$(CW_ARMDIR)/Profiler/include
#--------CW2.0beta2 以降のバージョンではRuntimeのディレクトリが変更されたため
ifeq ($(CW_MAJOR_VER),2)
CW_INCDIRS += $(CW_ARMDIR)/msl/MSL_Extras/MSL_ARM/Include
endif
CW_CXX = $(if $(SDK_CW_WA_LIBCXX),CXX,CPP)
CW_LIBCXX_DIR = $(if $(SDK_CW_WA_LIBCXX),$(ROOT)/lib/CodeWarrior,$(CW_ARMDIR)/msl/MSL_C++/MSL_ARM/Lib)
#--------CW2.0beta2 以降のバージョンではRuntimeのディレクトリが変更されたため
ifeq ($(CW_MAJOR_VER),2)
CW_LIBDIRS ?= $(CW_ARMDIR)/msl/MSL_C/MSL_ARM/Lib \
$(CW_LIBCXX_DIR) \
$(CW_ARMDIR)/msl/MSL_Extras/MSL_ARM/Lib \
$(CW_ARMDIR)/Runtime/Runtime_ARM/Runtime_CTR/Lib \
$(CW_ARMDIR)/Mathlib/lib
endif
CW_LIBDIRS ?= $(CW_ARMDIR)/msl/MSL_C/MSL_ARM/Lib \
$(CW_LIBCXX_DIR) \
$(CW_ARMDIR)/msl/MSL_Extras/MSL_ARM/Lib \
$(CW_ARMDIR)/Runtime/Lib \
$(CW_ARMDIR)/Mathlib/lib
ifeq ($(CODEGEN_PROC)-$(CTR_PLATFORM),ARM9-TEG)
CW_SUFFIX = _LE_strb.a
else
CW_SUFFIX = _LE.a
endif
ifeq ($(CODEGEN_PROC),ARM9)
CW_LIBFP ?= FP_fastI_v5t_LE.a
# CW_LIBFP ?= FP_fixedI_v5t_LE.a
# CW_LIBFP ?= FP_flush0_v5t_LE.a
# CW_LIBFP ?= FP_fullI_v5t_LE.a
else
CW_LIBFP ?= FP_fastI_v4t_LE.a
# CW_LIBFP ?= FP_fixedI_v4t_LE.a
# CW_LIBFP ?= FP_flush0_v4t_LE.a
# CW_LIBFP ?= FP_fullI_v4t_LE.a
endif
CW_LIBCXX_ARM = MSL_$(CW_CXX)_$(CW_LIBNAME_RULE_AI)$(CW_SUFFIX)
CW_LIBS_ARM = MSL_C_$(CW_LIBNAME_RULE_AI)$(CW_SUFFIX) \
MSL_Extras_$(CW_LIBNAME_RULE_AI)$(CW_SUFFIX) \
$(CW_LIBCXX_ARM) \
$(CW_LIBFP) \
$(CW_LIBNAME_RULE_RAI)$(CW_SUFFIX)
# Workaround for Byte Access: Don't use thumb libraries if ARM9-TEG
ifeq ($(CODEGEN_PROC)-$(CTR_PLATFORM),ARM9-TEG)
CW_LIBCXX_THUMB = $(CW_LIBCXX_ARM)
CW_LIBS_THUMB = $(CW_LIBS_ARM)
else
CW_LIBCXX_THUMB = MSL_$(CW_CXX)_$(CW_LIBNAME_RULE_T)_LE.a
CW_LIBS_THUMB = MSL_C_$(CW_LIBNAME_RULE_T)_LE.a \
MSL_Extras_$(CW_LIBNAME_RULE_T)_LE.a \
$(CW_LIBCXX_THUMB) \
$(CW_LIBFP) \
$(CW_LIBNAME_RULE_RT)_LE.a
endif
ifeq ($(CODEGEN_PROC),ARM11)
STUBS_LIBS += libstubscw$(CTR_LIBSUFFIX).a
else # ($(CODEGEN_PROC),ARM9)
STUBS_LIBS += libstubscw_sp$(CTR_LIBSUFFIX).a
endif
$(ECHO) "==== test";
#----------------------------------------------------------------------------
# switch by codegen target
# CTR_PLATFORM TEG/TS
# CTR_MEMSIZE 64M/128M
# CODEGEN_PROC ARM11/ARM9
# CODEGEN_CC ARM/THUMB
# CODEGEN_AS ARM/THUMB
#
MACRO_FLAGS += -DSDK_$(CTR_PLATFORM) \
-DSDK_$(CTR_MEMSIZE) \
-DSDK_$(CODEGEN_PROC)
MACRO_FLAGS_CC += -DSDK_CODE_$(CODEGEN_CC)
MACRO_FLAGS_AS += -DSDK_CODE_$(CODEGEN_AS)
#-------------------------------------- CODEGEN_PROC ARM11/ARM9
ifeq ($(CODEGEN_PROC),ARM9)
CCFLAGS_PROC := -proc $(if $(SDK_CW_AVOID_ARM_ARCH5),arm7tdmi,arm946e)
ASFLAGS_PROC := -proc arm5TE
ifeq ($(CTR_PLATFORM),TEG)
CCFLAGS_PROC += $(CW_AVOID_STRB)
endif
else # ($(CODEGEN_PROC),ARM7)
CCFLAGS_PROC := -proc arm7tdmi
ASFLAGS_PROC := -proc arm4T
endif # ($(CODEGEN_PROC))
#-------------------------------------- CTR_CODEGEN ARM/THUMB
ifeq ($(CTR_CODEGEN),ARM)
CW_LIBS ?= $(CW_LIBS_ARM)
else # ($(CTR_CODEGEN),THUMB)
CW_LIBS ?= $(CW_LIBS_THUMB)
endif
#-------------------------------------- CODEGEN_CC ARM/THUMB
ifeq ($(CODEGEN_CC),THUMB)
CCFLAGS_ISET := -thumb
else
CCFLAGS_ISET := -nothumb
endif
#-------------------------------------- CODEGEN_AS ARM/THUMB
ifeq ($(CODEGEN_AS),THUMB)
ASFLAGS_ISET := -16
else
ASFLAGS_ISET := -32
endif
CCFLAGS_ARCH ?= $(CCFLAGS_PROC) $(CCFLAGS_ISET) -nopic -nopid -interworking
ASFLAGS_ARCH ?= $(ASFLAGS_PROC) $(ASFLAGS_ISET)
LDFLAGS_ARCH ?= $(CCFLAGS_PROC) $(CCFLAGS_ISET) -nopic -nopid -interworking
ARFLAGS_ARCH ?=
#----------------------------------------------------------------------------
# standard includes/libraries for CodeWarrior
#
export MWCIncludes := $(subst \;, ,$(subst $(SPACE),;,$(CW_INCDIRS)))
export MWLibraries := $(subst \;, ,$(subst $(SPACE),;,$(CW_LIBDIRS)))
export MWLibraryFiles := $(subst \;, ,$(subst $(SPACE),;,$(CW_LIBS)))
#----------------------------------------------------------------------------
# switch by C Compiler CW/SNC
#
MACRO_FLAGS += -DSDK_$(CTR_CCTYPE)
#----------------------------------------------------------------------------
# switch by DEBUG/RELEASE/FINALROM
#
MACRO_FLAGS += -DSDK_$(CTR_BUILD_TYPE)
ifeq ($(CTR_BUILD_TYPE),DEBUG)
CCFLAGS_OPT ?= -O0 -inline off
ASFLAGS_OPT ?=
LDFLAGS_OPT ?=
ARFLAGS_OPT ?=
else
CCFLAGS_OPT_O_ = -O4 -inline on,noauto
ifeq ($(CODEGEN_PROC),ARM11)
CCFLAGS_OPT_O_ += -opt speed
else
CCFLAGS_OPT_O_ += -opt space
endif
ifeq ($(CTR_BUILD_TYPE),FINALROM)
CCFLAGS_OPT ?= $(CCFLAGS_OPT_O_)
ASFLAGS_OPT ?=
LDFLAGS_OPT ?=
ARFLAGS_OPT ?=
else # ($(CTR_BUILD_TYPE),RELEASE) # (default)
CCFLAGS_OPT ?= $(CCFLAGS_OPT_O_)
ASFLAGS_OPT ?=
LDFLAGS_OPT ?=
ARFLAGS_OPT ?=
endif
endif
ifndef CTR_NO_OPT_G
CCFLAGS_OPT += -g
LDFLAGS_OPT += -g
endif
#--------CW2.0beta2 以降のバージョンではサイズ増大問題回避のため -ipa file オプションが必須
ifeq ($(CW_MAJOR_VER),2)
CCFLAGS_OPT += -ipa file
endif
#----------------------------------------------------------------------------
# switch for code profiling
#
ifdef CTR_PROFILE
CCFLAGS_OPT += -profile
endif
ifdef CTR_PROFILE_TYPE
CCFLAGS_OPT += -DSDK_PROFILE_$(CTR_PROFILE_TYPE)
endif
#----------------------------------------------------------------------------
# switch for anti-thread policy
#
ifdef CTR_NO_THREAD
MACRO_FLAGS += -DSDK_NO_THREAD
endif
#----------------------------------------------------------------------------
# switch for AUTOTEST/UNITTEST
#
ifdef CTR_AUTOTEST
MACRO_FLAGS += -DSDK_AUTOTEST
endif
ifdef CTR_UTEST
MACRO_FLAGS += -DSDK_UTEST
endif
#----------------------------------------------------------------------------
# Switch for using system call when SVC_WaitVBlankIntr
#
ifdef CTR_SVC_WAITVBLANK_COMPATIBLE
MACRO_FLAGS += -DSDK_SVC_WAITVBLANK_COMPATIBLE
endif
#----------------------------------------------------------------------------
# Switch for automatic PrintServer
#
ifdef CTR_ENABLE_ARM9_PRINT
MACRO_FLAGS += -DSDK_ENABLE_ARM9_PRINT
endif
#----------------------------------------------------------------------------
# switch for TS board
#
# Default value of CTR_TS_VERSION is defined in <nitro/spec.h>
#
# CTR_TS_VERSION = [0/100/200]
#
# 0 : Prototype breadboard ~ ISD-BOX Ver.C
# 100 : ISD-BOX Ver.D
# 200 : ISD-BOX Ver.E
#
#
ifdef CTR_TS_VERSION
MACRO_FLAGS += -DSDK_TS_VERSION=$(CTR_TS_VERSION)
endif
#----------------------------------------------------------------------------
# my macro flags
#
MACRO_FLAGS += $(LMACRO_FLAGS)
#----------------------------------------------------------------------------
CCFLAGS_WARNING_FULL = all,cmdline,illpragmas,emptydecl,possible,unusedarg,unusedvar,unused,extracomma,pedantic,hidevirtual,implicitconv,impl_int2float,impl_float2int,impl_signedunsigned,notinlined,largeargs,structclass,padding,notused,missingreturn,unusedexpr,ptrintconv,anyptrintconv,undefmacro,filecaps,sysfilecaps,tokenpasting
CCFLAGS_MSGSTYLE ?= -msgstyle std
ifdef CTR_WARNING_STRICT
CCFLAGS_WARNING ?= -w $(CCFLAGS_WARNING_FULL)
else
CCFLAGS_WARNING ?= -w all
endif
LDFLAGS_WARNING ?= -w on
ARFLAGS_WARNING ?= -w on
ifeq ($(CTRSDK_LANG),en)
CCFLAGS_ENCODING ?= -enc ascii
else
CCFLAGS_ENCODING ?= -enc SJIS
endif
CCFLAGS_CHARTYPE ?= -char signed
CCFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(CCFLAGS_WARNING) $(CCFLAGS_ENCODING) $(CCFLAGS_CHARTYPE)
ASFLAGS_MISC = $(CCFLAGS_MSGSTYLE)
LDFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(LDFLAGS_WARNING)
ARFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(ARFLAGS_WARNING)
#----------------------------------------------------------------------------
CCFLAGS_SYS ?= -stdinc -enum int -stdkeywords off -Cpp_exceptions off
ASFLAGS_SYS ?= -nostdinc -DSDK_ASM
LDFLAGS_SYS ?= -stdlib -map closure -main _start
ARFLAGS_SYS ?= -library
CCFLAGS = -lang c $(CCFLAGS_ARCH) $(CCFLAGS_OPT) $(CCFLAGS_MISC) \
$(CCFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_CC)
CXXFLAGS = -lang c++ $(CCFLAGS_ARCH) $(CCFLAGS_OPT) $(CCFLAGS_MISC) \
$(CCFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_CC)
ASFLAGS = $(ASFLAGS_ARCH) $(ASFLAGS_OPT) $(ASFLAGS_MISC) \
$(ASFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_AS)
LDFLAGS = $(LDFLAGS_ARCH) $(LDFLAGS_OPT) $(LDFLAGS_MISC) \
$(LDFLAGS_SYS)
ARFLAGS = $(ARFLAGS_ARCH) $(ARFLAGS_OPT) $(ARFLAGS_MISC) \
$(ARFLAGS_SYS)
#----- End of commondefs.cctype.CW -----

View File

@ -0,0 +1,321 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrFirm - buildtools - compiler dependant settings for RCVT
# File: commondefs.cctype.RVCT
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
EMPTY ?=
SPACE ?= $(EMPTY) $(EMPTY)
#----------------------------------------------------------------------------
RVCT_PATH ?= $(ARMROOT)\RVCT
RVCT_ROOT = $(patsubst %/,%,$(subst $(SPACE),\ ,$(subst \,/,$(RVCT_PATH))))
RVCT_BINDIR = $(patsubst %/,%,$(subst $(SPACE),\ ,$(subst \,/,$(RVCT30BIN))))
#----------------------------------------------------------------------------
RVCTCC := $(RVCT_BINDIR)/armcc.exe
RVCTAS := $(RVCT_BINDIR)/armasm.exe
RVCTLD := $(RVCT_BINDIR)/armlink.exe
RVCTAR := $(RVCT_BINDIR)/armar.exe
FROMELF := $(RVCT_BINDIR)/fromelf.exe
S3TOEXO := $(BROM_TOOLSDIR)/s3toexo/s3toexo.pl
CC := $(RVCTCC)
AS := $(RVCTAS)
LD := $(RVCTLD)
AR := $(RVCTAR)
#----------------------------------------------------------------------------
ifeq ($(EXO_PLATFORM),DSTEG)
EXO_SBIN_SIZE ?= 0x00008400
else
EXO_SBIN_SIZE ?= 0x00010000
endif
ifeq ($(CODEGEN_PROC),ARM11)
EXO_OFFSET ?= 0x00000000
else # ($(CODEGEN_PROC),ARM9)
EXO_OFFSET ?= EXO_SBIN_SIZE
endif
EXO_FLAGS += --base $(EXO_OFFSET)
#----------------------------------------------------------------------------
# SDK small build
#
ifdef SDK_SMALL_BUILD
MACRO_FLAGS += -DSDK_SMALL_BUILD
endif
#----------------------------------------------------------------------------
RVCT_INCDIRS = $(patsubst %/,%,$(subst $(SPACE),\ ,$(subst \,/,$(RVCT30INC))))
RVCT_LIBDIRS = $(patsubst %/,%,$(subst $(SPACE),\ ,$(subst \,/,$(RVCT30LIB))))
#----------------------------------------------------------------------------
# switch by codegen target
# CTR_PLATFORM TEG/TS
# CTR_MEMSIZE 64M/128M
# CODEGEN_PROC ARM11/ARM9
# CODEGEN_CC ARM/THUMB
#
MACRO_FLAGS += -DSDK_$(CTR_PLATFORM) \
-DSDK_$(CTR_MEMSIZE) \
-DSDK_$(CODEGEN_PROC)
MACRO_FLAGS_CC += -DSDK_CODE_$(CODEGEN_CC)
#-------------------------------------- CODEGEN_PROC ARM11/ARM9/ARM7
ifeq ($(CODEGEN_PROC),ARM11)
CCFLAGS_PROC := --cpu ARM11
ASFLAGS_PROC := --cpu ARM11
else # ($(CODEGEN_PROC),ARM9)
ifeq ($(CODEGEN_PROC),ARM9)
CCFLAGS_PROC := --cpu ARM946E-S
ASFLAGS_PROC := --cpu ARM946E-S
else # ($(CODEGEN_PROC),ARM7)
CCFLAGS_PROC := --cpu ARM7TDMI
ASFLAGS_PROC := --cpu ARM7TDMI
endif # ($(CODEGEN_PROC))
endif # ($(CODEGEN_PROC))
#-------------------------------------- CTR_CODEGEN ARM/THUMB
ifeq ($(CTR_CODEGEN),ARM)
RVCT_LIBS ?= $(RVCT_LIBS_ARM)
else # ($(CTR_CODEGEN),THUMB)
RVCT_LIBS ?= $(RVCT_LIBS_THUMB)
endif
#-------------------------------------- CODEGEN_CC ARM/THUMB
ifeq ($(CODEGEN_CC),THUMB)
CCFLAGS_ISET := --thumb
else
CCFLAGS_ISET :=
endif
#-------------------------------------- CODEGEN_AS ARM/THUMB
ifeq ($(CODEGEN_AS),THUMB)
ASFLAGS_ISET :=
else
ASFLAGS_ISET :=
endif
CCFLAGS_ARCH ?= $(CCFLAGS_PROC) $(CCFLAGS_ISET)
ASFLAGS_ARCH ?= $(ASFLAGS_PROC) $(ASFLAGS_ISET)
LDFLAGS_ARCH ?=
ARFLAGS_ARCH ?=
#----------------------------------------------------------------------------
# switch by C Compiler CW/SNC/RVCT
#
MACRO_FLAGS += -DSDK_$(CTR_CCTYPE) # -D__RVCT__
#----------------------------------------------------------------------------
# switch by DEBUG/RELEASE/FINALROM
#
MACRO_FLAGS += -DSDK_$(CTR_BUILD_TYPE) -DBROM_BUILDTYPE_ARM11=$(BROM_BUILDTYPE_ARM11) -DBROM_BUILDTYPE_ARM9=$(BROM_BUILDTYPE_ARM9)
ifeq ($(CTR_BUILD_TYPE),DEBUG)
CCFLAGS_OPT_O_ = -O0
CCFLAGS_OPT_G_ = -g
else
ifeq ($(CTR_BUILD_TYPE),FINALROM)
CCFLAGS_OPT_O_ = -O3 -Ospace
CCFLAGS_OPT_G_ =
else # ($(CTR_BUILD_TYPE),RELEASE) # (default)
CCFLAGS_OPT_O_ = -O3 -Ospace
CCFLAGS_OPT_G_ =
endif
endif
CCFLAGS_OPT ?= $(CCFLAGS_OPT_G_) $(CCFLAGS_OPT_O_)
ASFLAGS_OPT ?=
LDFLAGS_OPT ?=
ARFLAGS_OPT ?=
#----------------------------------------------------------------------------
# switch for anti-thread policy
#
ifdef CTR_NO_THREAD
MACRO_FLAGS += -DSDK_NO_THREAD
endif
#----------------------------------------------------------------------------
# switch for AUTOTEST/UNITTEST
#
ifdef CTR_AUTOTEST
MACRO_FLAGS += -DSDK_AUTOTEST
endif
ifdef CTR_UTEST
MACRO_FLAGS += -DSDK_UTEST
endif
#----------------------------------------------------------------------------
# switch for TS board
#
# Default value of CTR_TS_VERSION is defined in <nitro/spec.h>
#
# CTR_TS_VERSION = [0/100/200]
#
# 0 : Prototype breadboard ~ ISD-BOX Ver.C
# 100 : ISD-BOX Ver.D
# 200 : ISD-BOX Ver.E
#
ifdef CTR_TS_VERSION
MACRO_FLAGS += -DSDK_TS_VERSION=$(CTR_TS_VERSION)
endif
#----------------------------------------------------------------------------
# switch for anti-thread policy
#
ifdef BROM_DEF_LINK_SCATLD
MACRO_FLAGS += -DBROM_DEF_LINK_SCATLD
endif
#----------------------------------------------------------------------------
# my macro flags
#
MACRO_FLAGS += $(LMACRO_FLAGS)
#----------------------------------------------------------------------------
# Demote the following compiler warnings to remarks:
#
# 66: enumeration value is out of "int" range
# 108: signed bit field of length 1
# 177: variable was declared but never referenced
# 236: controlling expression is constant
# 1256: "unsigned char" would have been promoted to "int"
# when passed through the ellipsis parameter; use the latter type instead
#A1581W: Added 2 bytes of padding at address 0x3e2
T_CFLAGS_WARN += --diag_remark 236,177
T_CFLAGS_WARN += --diag_suppress 66,108,1256,A1581W
# Promote the following compiler warnings to errors:
#
# 61: integer operation result is out of range
# 68: integer conversion resulted in a change of sign
# 88: assignment in condition
# 111: statement is unreachable
# 174: expression has no effect
# 188: enumerated type mixed with another type
# 223: function "<foo>" declared implicitly
# 550: variable was set but never used
# 3017: <foo> may be used before being set
T_CFLAGS_WARN += --diag_error 68,88,111,174,188,223,3017
# Demote the following linker warnings to suppresses:
#
# L6314W: No section matches pattern
# L6329W: Pattern * only matches removed unused sections
T_LDFLAGS_WARN += --diag_suppress L6314W,L6329W
ifdef BROM_PROMGEN
# L6305W: Image does not have an entry point. (Not specified or not set due to multiple choices.)
T_LDFLAGS_WARN += --diag_suppress L6305W
endif # BROM_PROMGEN
# Promote the following linker warnings to errors:
#
# L6332W: Undefined symbol
T_LDFLAGS_WARN += --diag_error L6332W
CCFLAGS_WARNING ?= $(T_CFLAGS_WARN)
LDFLAGS_WARNING ?= $(T_LDFLAGS_WARN)
ARFLAGS_WARNING ?=
ifeq ($(CTRSDK_LANG),en)
CCFLAGS_ENCODING ?=
else
CCFLAGS_ENCODING ?= --multibyte-chars
endif
CCFLAGS_CHARTYPE ?=
CCFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(CCFLAGS_WARNING) $(CCFLAGS_ENCODING) $(CCFLAGS_CHARTYPE)
ASFLAGS_MISC = $(CCFLAGS_MSGSTYLE)
LDFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(LDFLAGS_WARNING)
ARFLAGS_MISC = $(CCFLAGS_MSGSTYLE) $(ARFLAGS_WARNING)
#----------------------------------------------------------------------------
CCFLAGS_SYS ?= \
--no_unaligned_access \
--no_exceptions \
--no_exceptions_unwind \
--gnu \
--debug \
--split_sections \
--apcs /interwork \
-Ono_ldrd -Ono_memcpy --dwarf2 \
T_ENTRYPOINT = _start
LDFLAGS_SYS ?= \
--callgraph --no_locals --map --mangled --symbols \
--info=common,sizes,veneers,totals \
--list=$(BINDIR)/realview.map \
--locals \
--scanlib \
--no_exceptions \
--exceptions_tables=nocreate \
--datacompressor off \
--remove \
--pad 0xFF \
--scatter $(LCFILE) \
ifndef BROM_PROMGEN
LDFLAGS_SYS += \
--entry $(T_ENTRYPOINT) --unresolved=$(T_ENTRYPOINT) \
endif # BROM_PROMGEN
# --keep '*crt0.*o(.ARM.exidx)' \
# --info=unused \
ARFLAGS_SYS ?= -rcuT
CCFLAGS = $(CCFLAGS_ARCH) $(CCFLAGS_OPT) $(CCFLAGS_MISC) \
$(CCFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_CC)
CXXFLAGS = $(CCFLAGS_ARCH) $(CCFLAGS_OPT) $(CCFLAGS_MISC) \
$(CCFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_CC)
ASFLAGS = $(ASFLAGS_ARCH) $(ASFLAGS_OPT) $(ASFLAGS_MISC)
# $(ASFLAGS_SYS) $(MACRO_FLAGS) $(MACRO_FLAGS_AS)
LDFLAGS = $(LDFLAGS_ARCH) $(LDFLAGS_OPT) $(LDFLAGS_MISC) \
$(LDFLAGS_SYS)
ARFLAGS = $(ARFLAGS_ARCH) $(ARFLAGS_OPT) $(ARFLAGS_MISC) \
$(ARFLAGS_SYS)
#----- End of commondefs.cctype.RVCT -----

View File

@ -0,0 +1,152 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK
# File: commondefs
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: 2008-09-29#$
# $Rev: 8757 $
# $Author: adachi_hiroaki $
#----------------------------------------------------------------------------
ifndef CTRFIRM_COMMONDEFS_CYGPATH_
CTRFIRM_COMMONDEFS_CYGPATH_ = TRUE
#----------------------------------------------------------------
#
# cygpath
#
CYGPATH ?= cygpath
# 高速 cygpath は標準では無効 (make 3.80 では eval 関数に不具合があり動作しないため)
CYGPATH_NOCMD ?= FALSE
# 自動判別する場合は上の定義を消す(動作未確認)
#ifndef CYGPATH_NOCMD
#
#MAKE_VERSION := $(shell $(MAKE) -v | $(HEAD) -1 | $(AWK) '{print $3}')
#
#ifndef MSYSTEM
#
#ifeq ($(shell(expr "$(MAKE_VERSION)" ">=" "3.81")),1)
#CYGPATH_NOCMD=TRUE
#else # MAKE_VERSION
#CYGPATH_NOCMD=FALSE
#endif # MAKE_VERSION
#
#endif # MSYSTEM
#
#endif # CYGPATH_NOCMD
# cygdrive path prefix を取得
ifeq ($(CYGPATH_MOUNTPOINT),)
CYGPATH_MOUNTPOINT := $(patsubst %/,%,$(dir $(shell $(CYGPATH) -u c:/)))
endif # CYGPATH_MOUNTPOINT
ifeq ($(CYGPATH_NOCMD),TRUE)
ifeq ($(CYGPATH_DRIVELIST),)
# 安全
CYGPATH_DRIVELIST_ALL = $(shell DRIVES=`$(MOUNT) | $(GREP) 'type user' | $(CUT) -c1 | tr '\n' ' '` \
&& echo $${DRIVES} `echo $${DRIVES} | $(TR) '[a-z]' '[A-Z]'`)
# 最小限で速い
CYGPATH_DRIVELIST_FAST = $(shell $(CYGPATH) -aw '$(CTRSDK_ROOT)c' \
'$(CWFOLDER_CTR)c' \
'$(CTRSYSTEM_ROOT)c' \
'$(IS_CTR_DIR)c' '$(IS_TWL_DIR)c' \
| $(CUT) -c1)
CYGPATH_DRIVELIST := $(sort $(CYGPATH_DRIVELIST_FAST))
#CYGPATH_DRIVELIST := $(sort $(CYGPATH_DRIVELIST_ALL))
endif # CYGPATH_DRIVELIST
define cygpathm
$(strip $(eval VALUE=$(1))$(foreach DRIVE,$(CYGPATH_DRIVELIST),$(eval VALUE:=$$(patsubst $(CYGPATH_MOUNTPOINT)/$(DRIVE)/%,$(DRIVE):/%,$$(subst \,/,$$(VALUE)))))$(VALUE))
endef # cygpathm
define cygpathu
$(strip $(eval VALUE:=$(1))$(foreach DRIVE,$(CYGPATH_DRIVELIST),$(eval VALUE:=$$(patsubst $(DRIVE):/%,$(CYGPATH_MOUNTPOINT)/$(DRIVE)/%,$$(subst \,/,$$(VALUE)))))$(VALUE))
endef # cygpathu
define cygpathm_multi
$(foreach pathvar,$(1),$(call cygpathm,$(pathvar)))
endef # cygpathm_multi
define cygpathu_multi
$(foreach pathvar,$(1),$(call cygpathu,$(pathvar)))
endef # cygpathu_multi
define eupath
$(subst $(SPACE),\ ,$(call cygpathu,$(subst \ , ,$(1))))
endef # eupath
define empath
$(subst $(SPACE),\ ,$(call cygpathm,$(subst \ , ,$(1))))
endef # empath
else # CYGPATH_NOCMD
define empath
$(subst $(SPACE),\ ,$(shell $(CYGPATH) -m $(subst \,\\,$(subst \ , ,$(1)))))
endef # empath
ifdef MSYSTEM
define eupath
$(call empath,$(1))
endef #eupath
define cygpathu
$(shell cygpath -m $(subst \,\\,$(subst \ , ,$(1))))
endef
else # MSYSTEM
define eupath
$(subst $(SPACE),\ ,$(shell $(CYGPATH) -u $(subst \,\\,$(subst \ , ,$(1)))))
endef
define cygpathu
$(shell cygpath -u $(subst \,\\,$(subst \ , ,$(1))))
endef
endif # MSYSTEM
define cygpathm
$(shell cygpath -m $(subst \,\\,$(subst \ , ,$(1))))
endef
define cygpathu_multi
$(call cygpathu,$(1))
endef
define cygpathm_multi
$(call cygpathm,$(1))
endef
endif # CYGPATH_NOCMD
export CYGPATH_MOUNTPOINT CYGPATH_DRIVELIST CYGPATH_NOCMD
define encode_specialchar
$(subst $(SPACE),%20,$(1))
endef
define decode_specialchar
$(subst %20,$(SPACE),$(1))
endef
#----------------------------------------------------------------------------
endif # CTRFIRM_COMMONDEFS_CYGPATH_
#----- End of commondefs -----

View File

@ -0,0 +1,61 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - buildtools - debugger dependant settings for ISDbgr
# File: commondefs.emtype.ISD
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifdef IS_CTR_DEBUGGER_DIR
#----------------------------------------------------------------------------
# Setting for IS-NITRO-EMULATOR
#----------------------------------------------------------------------------
EMPTY ?=
SPACE ?= $(EMPTY) $(EMPTY)
CTR_ISD_ROOT := $(patsubst %/,%,$(subst $(SPACE),\ ,$(subst \,/,$(IS_CTR_DEBUGGER_DIR))))
CTR_ISD_ROOT_NOSPACE := $(subst \,/,$(shell cygpath -d $(CTR_ISD_ROOT)))
#----------------------------------------------------------------------------
ifeq ($(CODEGEN_PROC),ARM9)
CTR_ISD_INCDIRS := $(CTR_ISD_ROOT)/Target/include/ARM9
CTR_ISD_LIBDIRS := $(CTR_ISD_ROOT_NOSPACE)/Target/lib/ARM9-TS
ifeq ($(CTR_CODEGEN),ARM)
CTR_ISD_LIBS := libistdmainparm.a
else # ($(CTR_CODEGEN),THUMB)
CTR_ISD_LIBS := libistdmainpthumb.a
endif
else # ($(CODEGEN_PROC),ARM7)
CTR_ISD_INCDIRS := $(CTR_ISD_ROOT)/Target/include/ARM7
CTR_ISD_LIBDIRS := $(CTR_ISD_ROOT_NOSPACE)/Target/lib/ARM7-TS
ifeq ($(CTR_CODEGEN),ARM)
CTR_ISD_LIBS := libistdsubparm.a
else # ($(CTR_CODEGEN),THUMB)
CTR_ISD_LIBS := libistdsubpthumb.a
endif
endif
#----------------------------------------------------------------------------
else
endif
#----- End of commondefs.emtype.ISD -----

View File

@ -0,0 +1,395 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - modulerules - common rules for build system
# File: modulerules
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef CTRSDK_MODULERULES_
#----------------------------------------------------------------------------
# Implicit RULES
#----------------------------------------------------------------------------
.SUFFIXES: # Delete all suffix rules
ifneq ($(CTR_FORCE_BUILD),)
VPATH = $(SRCDIR)
SSRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS)))
ASRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS_AUTOLOAD)))
VSRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS_OVERLAY)))
SOBJS_CC = $(filter %.o,$(SSRCFILES:.c=.o))
SOBJS_AS = $(filter %.o,$(SSRCFILES:.s=.o))
SOBJS_CXX = $(filter %.o,$(SSRCFILES:.cpp=.o))
AOBJS_CC = $(filter %.o,$(ASRCFILES:.c=.o))
AOBJS_AS = $(filter %.o,$(ASRCFILES:.s=.o))
AOBJS_CXX = $(filter %.o,$(ASRCFILES:.cpp=.o))
VOBJS_CC = $(filter %.o,$(VSRCFILES:.c=.o))
VOBJS_AS = $(filter %.o,$(VSRCFILES:.s=.o))
VOBJS_CXX = $(filter %.o,$(VSRCFILES:.cpp=.o))
OBJS_CC = $(SOBJS_CC) $(AOBJS_CC) $(VOBJS_CC)
OBJS_AS = $(SOBJS_AS) $(AOBJS_AS) $(VOBJS_AS)
OBJS_CXX = $(SOBJS_CXX) $(AOBJS_CXX) $(VOBJS_CXX)
OBJS_STATIC = $(SOBJS_CC) $(SOBJS_AS) $(SOBJS_CXX) $(EXT_OBJS)
OBJS_AUTOLOAD = $(AOBJS_CC) $(AOBJS_AS) $(AOBJS_CXX) $(EXT_OBJS_AUTOLOAD)
OBJS_OVERLAY = $(VOBJS_CC) $(VOBJS_AS) $(VOBJS_CXX) $(EXT_OBJS_OVERLAY)
OBJS = $(OBJS_STATIC) $(OBJS_AUTOLOAD) $(OBJS_OVERLAY)
-include $(CTR_BUILDTOOLSDIR)/modulerules.cctype.$(CTR_CCTYPE)
# Common Rules
# .bin .srl
ifdef CTR_MAKEROM
#
# MAKEROM
#
ROM_SPEC ?= $(DEFAULT_ROM_SPEC)
MAKEROM_ARM11 ?= $(DEFAULT_MAKEROM_ARM11)
MAKEROM_ARM9 ?= $(DEFAULT_MAKEROM_ARM9)
MAKEROM_ROMROOT ?= $(DEFAULT_MAKEROM_ROMROOT)
MAKEROM_ROMFILES ?= $(DEFAULT_MAKEROM_ROMFILES)
MAKEROM_ROMSPEED ?= $(DEFAULT_MAKEROM_ROMSPEED)
MAKEROM_FLAGS ?=
MAKEROM_FLAGS += $(if $(CTR_FINALROM),,-F)
MAKEROM_DEFS = -DCTRSDK_ROOT='$(ROOT)' \
-DTARGET_NAME='$(TARGET_NAME)' \
-DMAKEROM_ROMROOT='$(MAKEROM_ROMROOT)' \
-DMAKEROM_ROMFILES='$(MAKEROM_ROMFILES)' \
-DMAKEROM_ROMSPEED='$(MAKEROM_ROMSPEED)' \
-DBINDIR='$(BINDIR)' \
-DCOMPDIR='$(CTR_COMPONENTSDIR)' \
-DCOMPTYPE11='$(CTR_BUILDTYPE_ARM11)' \
-DCOMPTYPE9='$(CTR_BUILDTYPE_ARM9)' \
-DPROC='$(CODEGEN_PROC)' \
-DPLATFORM='$(CTR_PLATFORM)' \
-DCODEGEN='$(CODEGEN_ARCH)' \
-DBUILD='$(CTR_BUILD_DIR)' \
-DCOMPSUFFIX9='$(COMPSUFFIX)' \
-DCOMPSUFFIX7=''
TARGET_ROM = $(strip $(findstring .srl,$(TARGET_BIN)) \
$(findstring .bin,$(TARGET_BIN)))
ifneq ($(strip $(OBJS) $(LLIBRARIES)),) # any object?
ifeq ($(CODEGEN_PROC),ARM11)
SDEPENDS_BIN = $(BINDIR)/%.nef $(MAKEROM_ARM11)
MAKEROM_DEFS += -DMAKEROM_ARM11='$(basename $@)' \
-DMAKEROM_ARM9='$(basename $(MAKEROM_ARM9))'
else # !ARM11
SDEPENDS_BIN = $(BINDIR)/%.nef $(MAKEROM_ARM11)
MAKEROM_DEFS += -DMAKEROM_ARM11='$(basename $(MAKEROM_ARM11))' \
-DMAKEROM_ARM9='$(basename $@)'
endif # -ARM11
else # !OBJS !LLIBRARIES
SDEPENDS_BIN = $(MAKEROM_ARM11) $(MAKEROM_ARM7)
MAKEROM_DEFS += -DMAKEROM_ARM11='$(basename $(MAKEROM_ARM11))' \
-DMAKEROM_ARM9='$(basename $(MAKEROM_ARM9))'
endif # -OBJS -LLIBRARIES
ifndef USE_MY_RULE_BIN
$(BINDIR)/%.bin $(BINDIR)/%.srl: $(SDEPENDS_BIN) $(ROM_SPEC) $(LDEPENDS_BIN) $(EDEPENDS_BIN)
$(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_DEFS) $(ROM_SPEC) $@
endif # -USE_MY_RULE_BIN
$(BINDIR)/$(TARGET_SIGN_BIN): $(BINDIR)/$(TARGET_BIN)
$(CTRSDK_ROOT)/tools/bin/attachsign.exe -D $(addprefix $(BINDIR)/,$(TARGET_BIN))
else # !CTR_MAKEROM
#
# ELFTOBIN
#
ifndef USE_MY_RULE_BIN
ifeq ($(CODEGEN_PROC),ARM11)
$(BINDIR)/%.bin $(BINDIR)/%.srl: $(BINDIR)/%.nef $(LDEPENDS_BIN) $(EDEPENDS_BIN)
$(ELFTOBIN) $< $(ELFTOBIN_ARM7) $(ELFTOBIN_ROMHEADER) -o $@
else # !ARM11
$(BINDIR)/%.bin $(BINDIR)/%.srl: $(BINDIR)/%.nef $(LDEPENDS_BIN) $(EDEPENDS_BIN)
$(ELFTOBIN) $(ELFTOBIN_ARM9) $< $(ELFTOBIN_ROMHEADER) -o $@
endif # -ARM11
endif # -USE_MY_RULE_BIN
endif # -CTR_MAKEROM
endif # -CTR_FORCE_BUILD
# .bnr .bsf
%.bnr: %.bsf
$(MAKEBANNER) $(MAKEBANNER_FLAGS) $< $@
%.nbfc %.nbfp: %.bmp
$(NTEXCONV) -no -bg -bgb -bgnc $< >/dev/null
#----------------------------------------------------------------------------
# MAKE TARGETS
#----------------------------------------------------------------------------
.PHONY: all default build install clean clobber full super-full
BUILDCMDS = all default build
#----------------------------------------------------------------------------
SUBDIR_FLAGS += $(if $(CTR_CODEGEN_ALL),CTR_CODEGEN_ALL=False)
define MAKE_SUBDIR
+$(foreach DIR,$(SUBDIRS),$(MAKE) $(SUBDIR_FLAGS) -C $(DIR) $(MAKECMDGOALS) $(AND)) true
+$(foreach FILE,$(SUBMAKES),$(MAKE) $(SUBDIR_FLAGS) -C $(dir $(FILE)) -f $(notdir $(FILE)) $(MAKECMDGOALS) $(AND)) true
endef
ifeq ($(MAKEFILE),Makefile)
MAKEFILE_ =
else
MAKEFILE_ = /$(MAKEFILE)
endif
define ECHO_CURDIR
$(ECHO) "==== $(CURDIR)$(MAKEFILE_)";
endef
define DO_INSTALL_FILES
$(INSTALL) -d $(1) $(AND) \
$(foreach FILE, $(2), \
if [ ! -e $(1)/$(notdir $(FILE)) -o \
$(FILE) -nt $(1)/$(notdir $(FILE)) ]; \
then \
$(ECHO) " install: $(FILE) -> $(1)" $(AND) \
$(INSTALL) $(FILE) $(1)/$(notdir $(FILE)); \
fi $(AND) ) true
endef
DO_INSTALL = $(call DO_INSTALL_FILES,$(INSTALL_DIR),$(INSTALL_TARGETS))
INSTALL_INDEX_SRC = $(firstword $(INSTALL_TARGETS))
INSTALL_INDEX_DEST = $(INSTALL_DIR)/$(notdir $(INSTALL_INDEX_SRC))
define DO_INSTALL_WILDCARD
$(INSTALL) -d $(INSTALL_DIR) $(AND) \
if [ ! -e $(INSTALL_INDEX_DEST) -o \
$(INSTALL_INDEX_SRC) -nt $(INSTALL_INDEX_DEST) ]; \
then \
$(foreach FILE, $(INSTALL_TARGETS), \
$(ECHO) " install: $(FILE) -> $(INSTALL_DIR)" $(AND) \
$(INSTALL) $(FILE) $(INSTALL_DIR) $(AND) ) true; \
fi
endef
#----------------------------------------------------------------------------
# make parallelly
#----------------------------------------------------------------------------
SUBDIRS_PREFIX = make-subdir-p-
SUBDIRS_PARALLEL = $(addprefix $(SUBDIRS_PREFIX),$(SUBDIRS_P))
$(SUBDIRS_PARALLEL):$(SUBDIRS_PREFIX)%:
$(MAKE) -C $(*F) $(MAKECMDGOALS)
#----------------------------------------------------------------------------
# make build
#----------------------------------------------------------------------------
.PHONY: do-build
build:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifneq ($(strip $(NEWDIRS)),)
@$(MKDIRP) $(NEWDIRS)
endif
@+$(REMAKE) do-build
ifdef INSTALL_TARGETS
@$(DO_INSTALL)
endif
ifeq ($(CTR_CODEGEN_ALL),True)
ifeq ($(CTR_CODEGEN),ARM)
@+$(REMAKE) CTR_CODEGEN_ALL=False CTR_CODEGEN=THUMB build
endif
endif
#----------------------------------------------------------------------------
# make install
#----------------------------------------------------------------------------
install:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifdef INSTALL_TARGETS
@$(DO_INSTALL)
endif
ifeq ($(CTR_CODEGEN_ALL),True)
ifeq ($(CTR_CODEGEN),ARM)
@+$(REMAKE) CTR_CODEGEN_ALL=False CTR_CODEGEN=THUMB install
endif
endif
#----------------------------------------------------------------------------
# make full
#----------------------------------------------------------------------------
define makefull
@echo [[[ make full $(1) $(CURDIR) ]]]
@+unset CTR_DEBUG CTR_RELEASE CTR_FINALROM CTR_CODEGEN_ALL; \
$(foreach b,FINALROM RELEASE DEBUG, \
$(foreach a,ARM THUMB, \
date "+::: %Y/%m/%d %H:%M:%S $a-$b" $(AND) \
$(REMAKE) CTR_$b=TRUE CTR_CODEGEN=$a CTR_CODEGEN_ALL=False $(1) $(AND) \
) \
) true
endef
full:
$(call makefull,build)
full-install:
$(call makefull,install)
#----------------------------------------------------------------------------
# make super-full
#----------------------------------------------------------------------------
define makesuperfull
@echo [[[ make super-full $(1) $(CURDIR) ]]]
@+unset CTR_DEBUG CTR_RELEASE CTR_FINALROM CTR_CODEGEN_ALL; \
$(foreach p,TS TEG, \
$(foreach b,FINALROM RELEASE DEBUG, \
$(foreach a,ARM THUMB, \
date "+::: %Y/%m/%d %H:%M:%S $a-$b" $(AND) \
$(REMAKE) CTR_$b=TRUE CTR_PLATFORM=$p CTR_CODEGEN=$a CTR_CODEGEN_ALL=False $(1) $(AND) \
)\
)\
) true
endef
super-full:
$(call makesuperfull,build)
super-full-install:
$(call makesuperfull,install)
#----------------------------------------------------------------------------
# Autotest using IS-NITRO-EMULATOR
#----------------------------------------------------------------------------
ifdef IS_CTR_DIR
AUTOTESTLOG := $(ROOT)/autotest.log
.PHONY: autotest do-autotest do-autotest-test
autotest:
@+$(REMAKE) clobber
@+$(REMAKE) build CTR_AUTOTEST=TRUE
@$(RM) $(AUTOTESTLOG)
@+$(REMAKE) do-autotest
@$(SED) -e 's/\r//g;s/$$/\r/g;' $(AUTOTESTLOG) > $(AUTOTESTLOG).tmp
@$(MV) $(AUTOTESTLOG).tmp $(AUTOTESTLOG)
do-autotest:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifneq ($(TARGET_ROM),)
@+$(REMAKE) test-run
endif
endif
#----------------------------------------------------------------------------
# make clobber & clean
#----------------------------------------------------------------------------
.PHONY: clobber-installed
clobber:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN)
-$(RM) $(GDIRT_CLOBBER) $(LDIRT_CLOBBER) $(EDIRT_CLOBBER)
ifneq ($(GDIRT_INSTALLED),)
ifneq ($(CTR_FORCE_BUILD),)
$(call makefull,clobber-installed)
else
@+$(REMAKE) clobber-installed
endif
endif
clobber-installed:
-$(RM) $(GDIRT_INSTALLED)
#----------------------------------------------------------------------------
super-clobber:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN)
-$(RM) $(GDIRT_CLOBBER) $(LDIRT_CLOBBER) $(EDIRT_CLOBBER)
ifneq ($(GDIRT_INSTALLED),)
$(call makesuperfull,clobber-installed)
endif
#----------------------------------------------------------------------------
clean:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN)
#----------------------------------------------------------------------------
# source file dependancies
#----------------------------------------------------------------------------
#
# dynamic dependancy generation
# like as $(OBJDIR)/main.o: main.c
#
DEP_SRCS_ALL = $(SRCS) $(SRCS_AUTOLOAD) $(SRCS_OVERLAY)
define RuleCtoObj
$$(OBJDIR)/$$(notdir $$(basename $(1))).o: $(1)
endef
endif # CTRSDK_MODULERULES_
# Put this sentance out of include-guard to avoid $(eval xxx) limitation
$(foreach FILE,$(DEP_SRCS_ALL),$(eval $(call RuleCtoObj,$(FILE))))
ifndef CTRSDK_MODULERULES_
#
# include dependancies file
#
ifeq ($(MAKECMDGOALS),do-build)
ifdef SRCS
-include $(DEPENDDIR)/*.d
endif
endif
#----------------------------------------------------------------------------
# for IS-NITRO-EMULATOR
#----------------------------------------------------------------------------
ifdef IS_CTR_DIR
-include $(CTR_BUILDTOOLSDIR)/modulerules.emtype.ISD
endif
#----------------------------------------------------------------------------
# Load add-ins' modulerules
#----------------------------------------------------------------------------
-include $(CTR_BUILDTOOLSDIR)/modulerules.add-ins.*
#----------------------------------------------------------------------------
CTRSDK_MODULERULES_ = TRUE
endif # CTRSDK_MODULERULES_
#----- End of modulerules -----

View File

@ -0,0 +1,57 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - modulerules - common rules for build system
# File: modulerules
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef TWLSDK_MODULERULES_
#----------------------------------------------------------------------------
.PHONY: twltop twllib twldbg link
link:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-rm $(BINDIR)/$(TARGET_BIN_BASENAME).axf $(BINDIR)/$(TARGET_BIN_BASENAME).nef
@+$(REMAKE)
twltop:
@$(MAKE) -C $(TWLSDK_ROOT)
twllib:
@$(MAKE) -C $(TWLSDK_ROOT)/build/buildsetup
@$(MAKE) -C $(TWLSDK_ROOT)/build/libraries
twldbg:
@$(TOUCH) $(TWL_LDEPENDS_DBG)
@$(MAKE) -C $(TWLSDK_ROOT)/build/libraries/os
@+$(REMAKE)
# .axf
$(BINDIR)/$(TARGET_BIN_BASENAME).axf: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX)
ifeq ($(CTR_CCTYPE),RVCT)
$(LD) $(LDFLAGS) $(LIBRARY_DIRS) -o $@ $(GLIBRARIES) $(OBJS)
else
$(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@
ifeq ($(TWL_PLATFORM),TS)
cp $(BINDIR)/$(TARGET_BIN_BASENAME).axf $(BINDIR)/$(TARGET_BIN_BASENAME).nef
endif
ifdef FIRM_STRIP_AXF
$(OBJCOPY) $@ $(BINDIR)/$(TARGET_BIN_BASENAME).sbin
endif
endif
#----------------------------------------------------------------------------
TWLSDK_MODULERULES_ = TRUE
endif # TWLSDK_MODULERULES_
#----- End of modulerules -----

View File

@ -0,0 +1,53 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - modulerules - common rules for build system
# File: modulerules
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef TWLDLL_MODULERULES_
#----------------------------------------------------------------------------
#MakefileでDLL_FILESを定義しておくとmake dllでstaticsymlist.cができます
DLL_LIBS ?= $(addprefix $(TWL_LIBDIR)/,$(addsuffix $(TWL_LIBSUFFIX).a,$(DLL_FILES)))
NODBG_LIBS ?= $(addprefix $(TWL_LIBDIR)/,$(addsuffix $(TWL_LIBSUFFIX).nodbg.a,$(DLL_FILES)))
STATIC_LIBS ?= $(addprefix $(TWL_LIBDIR)/,$(TWL_LIBS))
.PHONY: dll
dll:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifdef DLL_FILES
$(foreach DLLFILE, $(DLL_LIBS), \
$(TWLSDK_ROOT)/tools/stripdebug/stripdebug.exe -o $(subst .a,.nodbg.a,$(DLLFILE)) $(DLLFILE);)
$(TWLSDK_ROOT)/tools/makelst/makelst.exe -o $(SRCDIR)/staticsymlist.c \
-static $(STATIC_LIBS) \
-dll $(NODBG_LIBS)
endif
#
# $(foreach DLLFILE, $(DLL_LIBS), \
# $(TWLSDK_ROOT)/tools/makelst/makelst.exe -o staticsymlist.c \
# -static $(STATIC_LIBS) \
# -dll $(TWL_LIBDIR)/$(DLLFILE)
#)
#
#----------------------------------------------------------------------------
TWLDLL_MODULERULES_ = TRUE
endif # TWLDLL_MODULERULES_
#----- End of modulerules -----

View File

@ -0,0 +1,67 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - UnitTest Tool
# File: modulerules.add-ins.utest
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
.PHONY: utest
#
# UNIT TEST on ARM11
#
ifeq ($(CODEGEN_PROC),ARM11)
UTEST_MAKEOPTS = \
SRCS="$(SRCS) $(UTEST_MAIN_SRC)" \
LIBRARIES_UNLINK=$(TARGET_LIB) \
TARGET_BIN=$(UTEST_MAIN_BIN) \
TARGET_NEF= \
TARGET_LIB= \
TARGET_OBJ= \
TARGET_SIGN_BIN= \
UTEST_OBJS_TESTEE="$(OBJS)" \
UTEST_CHECKASSERT=True \
CTR_UTEST=True
utest:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifneq ($(strip $(TARGET_LIB)),)
ifneq ($(strip $(NEWDIRS)),)
@$(MKDIRP) $(NEWDIRS) $(BINDIR)
endif
@$(REMAKE) -s $(UTEST_MAIN_SRC) $(UTEST_MAKEOPTS)
@if [ -e $(UTEST_MAIN_SRC) ]; \
then \
$(REMAKE) -s do-build $(UTEST_MAKEOPTS) && \
$(REMAKE) -s run TARGET_BIN=$(UTEST_MAIN_BIN); \
fi
endif
$(UTEST_MAIN_SRC): $(UTEST_OBJS_TESTEE)
@$(MAKE_UTEST_MAIN) -c $(UTEST_MAIN_SRC) $(UTEST_OBJS_TESTEE)
#
# UNIT TEST on ARM9
#
else # ($(CODEGEN_PROC),ARM9)
utest:
@ # Not support unit test on ARM9
endif
#===== End of modulerules.add-ins.utest =====

View File

@ -0,0 +1,338 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - buildtools - compiler dependant settings for CodeWarrior
# File: modulerules.cctype.CW
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
AINCLUDE_DIRS = $(LINCLUDES) $(EINCLUDES) $(GINCLUDES)
ALIBRARY_DIRS = $(LLIBRARY_DIRS) $(ELIBRARY_DIRS) $(GLIBRARY_DIRS)
ALIBRARIES = $(LLIBRARIES) $(ELIBRARIES) $(GLIBRARIES)
#
# (make version 3.80)
#
# VPATH does not support the path name included white space like "C:/Program Files"
# Please, be careful !!!
#
ifdef MSYSTEM
CTR_LIBVPATH_ = $(subst \:,\ ,$(subst $(SPACE),:,$(ALIBRARY_DIRS)))
else
CYGDRV ?= $(shell cygpath -u c:)/..
ALIBVPATH = $(subst : ,,$(patsubst %:,$(CYGDRV)/%:,$(subst :,: ,$(ALIBRARY_DIRS))))
endif
vpath %.a $(ALIBVPATH)
vpath %.o $(ALIBVPATH)
INCLUDE_DIRS = $(subst \ -I,\ ,$(addprefix -I,$(AINCLUDE_DIRS)))
LIBRARY_DIRS = $(subst \ -L,\ ,$(addprefix -L,$(ALIBRARY_DIRS)))
LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES)))
INCLUDES = -gccinc -I. $(INCLUDE_DIRS)
ifdef MSYSTEM # for MinGW32
QUOTE ='
else
QUOTE ="
endif
#----------------------------------------------------------------------------
.PRECIOUS: $(OBJDIR)/%.o $(BINDIR)/%.nef $(LCFILE) $(PCHDR_H) $(PCHDR_PCH)
#
# Generate dependency files
#
DEPEND_RULE = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s/\\\\\\([^ ]\\)/\\/\\1/g;$(QUOTE)
DEPEND_RULE2 = $(QUOTE)s/^[^\\t].*: //;s/^\\t//;s/ \\\\$$//;s/\\([^ ].*\\)/\\1:/;1s/^./\\n&/;$(QUOTE)
define MOVE_SRC_DEPEND
$(SED) -e $(DEPEND_RULE) $(*F).d > $(*F).2.d && \
$(SED) -e $(DEPEND_RULE2) $(*F).2.d > $(*F).3.d && \
$(CAT) $(*F).2.d $(*F).3.d > $(DEPENDDIR)/$(*F).d && \
$(RM) $(*F).d $(*F).2.d $(*F).3.d
endef
ifdef CTR_STD_PCHDR
ifndef CTR_NO_STD_PCHDR
# .mch
PCHDR_SRC = $(ROOT)/include/nitro.h
PCHDR_CACHE = $(ROOT)/cache/include
PCHDR_C_DEFS = $(sort $(filter -DSDK_%,$(CCFLAGS)))
PCHDR_C_NODEF = $(filter-out -D%,$(CCFLAGS))
PCHDR_C_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_C_DEFS))))
PCHDR_C_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_C_NAME).C
PCHDR_C_MCH = $(PCHDR_C_BASE).mch
PCHDR_C_DEPEND = $(PCHDR_C_BASE).depend
PCHDR_CCFLAGS = -include $(PCHDR_C_MCH)
CCFLAGS_NOLDEF = $(PCHDR_C_DEFS) $(PCHDR_C_NODEF)
PCHDR_CXX_DEFS = $(sort $(filter -DSDK_%,$(CXXFLAGS)))
PCHDR_CXX_NODEF = $(filter-out -D%,$(CXXFLAGS))
PCHDR_CXX_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_CXX_DEFS))))
PCHDR_CXX_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_CXX_NAME).CXX
PCHDR_CXX_MCH = $(PCHDR_CXX_BASE).mch
PCHDR_CXX_DEPEND= $(PCHDR_CXX_BASE).depend
PCHDR_CXXFLAGS = -include $(PCHDR_CXX_MCH)
CXXFLAGS_NOLDEF = $(PCHDR_CXX_DEFS) $(PCHDR_CXX_NODEF)
GDIRT_CLOBBER += $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC)).*
ifeq ($(MAKECMDGOALS),do-build)
## $(call BUILD_PCHDR,$(BASE),$(CCFLAGS))
define BUILD_PCHDR
@$(CP) $(PCHDR_SRC) $(1).h
($(CD) $(dir $(1).mch) && \
$(CC) $(subst -include ,-DSDK_PCHDR_DUMMY_,$(2)) $(INCLUDES) -MD -precompile $(notdir $(1).mch) $(1).h)
@($(ECHO) $(1).mch: $(PCHDR_SRC) \\ > $(1).depend && \
$(SED) -e '1d' -e $(DEPEND_RULE) $(1).d >> $(1).depend && $(RM) $(1).d $(1).h)
endef
# precomipled header for C
ifneq ($(strip $(OBJS_CC)),)
-include $(PCHDR_C_DEPEND)
$(PCHDR_C_DEPEND): $(PCHDR_C_MCH)
$(PCHDR_C_MCH):
$(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF))
endif
# precomipled header for C++
ifneq ($(strip $(OBJS_CXX)),)
-include $(PCHDR_CXX_DEPEND)
$(PCHDR_CXX_DEPEND): $(PCHDR_CXX_MCH)
$(PCHDR_CXX_MCH):
$(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF))
endif
endif # do-build
endif # CTR_NO_STD_PCHDR
endif # CTR_STD_PCHDR
# .c
$(OBJS_CC):%.o:
$(CC) $(CCFLAGS) $(INCLUDES) $(PCHDR_CCFLAGS) -c $(shell cygpath -m $<) -MD -o $@
@$(MOVE_SRC_DEPEND)
# .cpp
$(OBJS_CXX):%.o:
$(CC) $(CXXFLAGS) $(INCLUDES) $(PCHDR_CXXFLAGS) -c $(shell cygpath -m $<) -MD -o $@
@$(MOVE_SRC_DEPEND)
# .s
$(OBJS_AS):%.o:
$(AS) $(ASFLAGS) $(INCLUDES) -c $(shell cygpath -m $<) -MD -o $@
@$(MOVE_SRC_DEPEND)
# .lcf .par
ifdef LCFILE_SPEC
ADDRESS_DTCM ?= $(DEFAULT_ADDRESS_DTCM)
# exporting
GLIBRARIES_LINK = $(filter-out $(LIBRARIES_UNLINK),$(ELIBRARIES) $(GLIBRARIES))
LLIBRARIES_LINK = $(filter-out $(LIBRARIES_UNLINK),$(LLIBRARIES))
MAKELCF_DEFS = -DCTRSDK_ROOT='$(ROOT)' \
-DTARGET_NAME='$(TARGET_NAME)' \
-DOBJS_STATIC='$(OBJS_STATIC)' \
-DOBJS_AUTOLOAD='$(OBJS_AUTOLOAD)' \
-DOBJS_OVERLAY='$(OBJS_OVERLAY)' \
-DGLIBS='$(GLIBRARIES_LINK)' \
-DLLIBS='$(LLIBRARIES_LINK)' \
-DCW_LIBS='$(CW_LIBS)' \
-DOBJDIR='$(OBJDIR)' \
-DLIBDIR='$(LIBDIR)' \
-DBINDIR='$(BINDIR)' \
-DPROC='$(CODEGEN_PROC)' \
-DPLATFORM='$(CTR_PLATFORM)' \
-DCODEGEN='$(CODEGEN_ARCH)' \
-DBUILD='$(CTR_BUILD_DIR)' \
-DADDRESS_DTCM='$(ADDRESS_DTCM)'
MAKELCF_FORMAT = -V$(CW_MAJOR_VER)
MAKELCF_OPTS = $(MAKELCF_FLAGS) $(MAKELCF_DEFS) $(MAKELCF_FORMAT)
$(LCFILE_AUTOGEN): $(LCFILE_SPEC) $(LCFILE_TEMPLATE) $(MAKEFILE) $(CTR_BUILDTOOLSDIR)/commondefs $(LDEPENDS_LCF)
$(MAKELCF) $(MAKELCF_OPTS) $< $(LCFILE_TEMPLATE) $@
$(LDRES_AUTOGEN): $(LCFILE_SPEC) $(LDRES_TEMPLATE) $(MAKEFILE) $(CTR_BUILDTOOLSDIR)/commondefs $(LDEPENDS_RES)
@$(MAKELCF) $(MAKELCF_OPTS) $< $(LDRES_TEMPLATE) $@
endif
# compress/digest
ifeq ($(CODEGEN_PROC),ARM11)
ifdef CTR_COMPRESS
COMPSTATIC_CMDS = -11 -c
#COMPSTATIC_CMDS = -9 -c
endif
ifdef CTR_DIGEST
COMPSTATIC_CMDS += -a
endif
endif
ifdef COMPSTATIC_CMDS
COMPSUFFIX ?= $(DEFAULT_COMPSUFFIX)
ifneq ($(COMPSUFFIX),)
COMPSTATIC_FLAGS += -e$(COMPSUFFIX)
endif
endif
# libcxx workaround
ifdef SDK_CW_WA_LIBCXX
CW_LIBCXX = $(CW_LIBCXX_DIR)/$(CW_LIBCXX_ARM)
$(CW_LIBCXX): $(ROOT)/build/buildsetup/libcxx/Makefile
$(MAKE) -f $<
endif
# .nef
ifndef USE_MY_RULE_NEF
ifneq ($(CTR_MAKEROM),)
$(BINDIR)/$(TARGET_BIN_BASENAME).nef: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX)
$(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@
ifdef COMPSTATIC_CMDS
$(COMPSTATIC) $(COMPSTATIC_CMDS) $(COMPSTATIC_FLAGS) -f $(BINDIR)/component.files $(CTR_STDOUT)
endif
else
$(BINDIR)/$(TARGET_BIN_BASENAME).nef: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(CW_LIBCXX)
$(LD) $(LDFLAGS) $(LIBRARY_DIRS) $(OBJS) $(LIBRARIES) $(LCFILE) -o $@
endif
endif
# .a
ifndef USE_MY_RULE_A
$(LIBDIR)/$(TARGET_LIB): $(OBJS) $(MAKEFILE)
$(AR) $(ARFLAGS) $(OBJS) -o $@
endif
#----------------------------------------------------------------------------
# Get SDK_CW_BUILD_VERSION SDK_CW_BUILD_NUMBER
#
# IRIS V0.2 Hotfix 1
# SDK_CW_BUILD_VERSION_CC=2.0
# SDK_CW_BUILD_VERSION_LD=2.0
# SDK_CW_BUILD_NUMBER_CC=0038
# SDK_CW_BUILD_NUMBER_LD=0050
#
# NITRO V0.3
# SDK_CW_BUILD_NUMBER_CC=0038
# SDK_CW_BUILD_NUMBER_LD=0056
#
# NITRO V0.4.1
# SDK_CW_BUILD_NUMBER_CC=0043
# SDK_CW_BUILD_NUMBER_LD=0057
#
# NITRO V0.5
# SDK_CW_BUILD_NUMBER_CC=0046
# SDK_CW_BUILD_NUMBER_LD=0058
#
# NITRO V0.5 + HotFix1
# SDK_CW_BUILD_NUMBER_CC=0049
# SDK_CW_BUILD_NUMBER_LD=0061
#
# NITRO V0.6
# SDK_CW_BUILD_NUMBER_CC=0050
# SDK_CW_BUILD_NUMBER_LD=0062
#
# NITRO V0.6.1
# SDK_CW_BUILD_NUMBER_CC=0050
# SDK_CW_BUILD_NUMBER_LD=0063
#
# NITRO V0.7
# SDK_CW_BUILD_NUMBER_CC=0050
# SDK_CW_BUILD_NUMBER_LD=0063
#
# NITRO V1.0
# SDK_CW_BUILD_NUMBER_CC=0056
# SDK_CW_BUILD_NUMBER_LD=0067
#
# NITRO V1.0.2
# SDK_CW_BUILD_NUMBER_CC=0068
# SDK_CW_BUILD_NUMBER_LD=0068
#
# NITRO V1.2
# SDK_CW_BUILD_NUMBER_CC=0073
# SDK_CW_BUILD_NUMBER_LD=0072
#
# NITRO V1.2SP1
# SDK_CW_BUILD_NUMBER_CC=0074
# SDK_CW_BUILD_NUMBER_LD=0072
#
# NITRO V1.2SP2+patch
# SDK_CW_BUILD_NUMBER_CC=0080
# SDK_CW_BUILD_NUMBER_LD=0074
#
# NITRO V1.2SP3
# SDK_CW_BUILD_NUMBER_CC=0084
# SDK_CW_BUILD_NUMBER_LD=0077
#
# NITRO V1.2SP4
# SDK_CW_BUILD_NUMBER_CC=0087
# SDK_CW_BUILD_NUMBER_LD=7702
#
# NITRO V2.0beta
# SDK_CW_BUILD_VERSION_CC=3.0
# SDK_CW_BUILD_VERSION_LD=2.0
# SDK_CW_BUILD_NUMBER_CC=0107
# SDK_CW_BUILD_NUMBER_LD=0077
#
# NITRO V2.0
# SDK_CW_BUILD_NUMBER_CC=0114
# SDK_CW_BUILD_NUMBER_LD=0082
#
ifneq ($(findstring $(MAKECMDGOALS),do-build make-verinfo clean-verinfo),)
.PHONY: make-verinfo
make-verinfo: $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
$(SDK_VERINFO_CW_CC): $(MWCC)
@$(MWCC) -version | \
$(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,3\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_CC=\1\nSDK_CW_BUILD_NUMBER_CC=\3\nSDK_CW_BUILD_NUMBER2_CC=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_CC)
@$(TOUCH) -r $(MWCC) $(SDK_VERINFO_CW_CC)
$(SDK_VERINFO_CW_LD): $(MWLD)
@$(MWLD) -version | \
$(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,3\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_LD=\1\nSDK_CW_BUILD_NUMBER_LD=\3\nSDK_CW_BUILD_NUMBER2_LD=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_LD)
@$(TOUCH) -r $(MWLD) $(SDK_VERINFO_CW_LD)
endif
.PHONY: clean-verinfo
clean-verinfo:
@$(RM) $(CTR_BUILDTOOLSDIR)/verinfo.*
#----------------------------------------------------------------------------
# Check codegen bug around blxeq/blxne
#
.PHONY: codecheck
codecheck:
@$(ECHO) --- checking codegen ---
@$(CTR_TOOLSDIR)/bin/blxchecker
#----- End of modulerules.cctype.CW -----

View File

@ -0,0 +1,150 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrFirm - buildtools - compiler dependant settings for ProDG
# File: modulerules.cctype.RVCT
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
AINCLUDE_DIRS = $(LINCLUDES) $(EINCLUDES) $(GINCLUDES) $(RVCT_INCDIRS)
ALIBRARY_DIRS = $(LLIBRARY_DIRS) $(ELIBRARY_DIRS) $(GLIBRARY_DIRS) # $(RVCT_LIBDIRS)
ALIBRARIES = $(LLIBRARIES) $(ELIBRARIES) $(GLIBRARIES)
#
# (make version 3.80)
#
# VPATH does not support the path name included white space like "C:/Program Files"
# Please, be careful !!!
#
ifdef MSYSTEM
CTR_LIBVPATH_ = $(subst \:,\ ,$(subst $(SPACE),:,$(ALIBRARY_DIRS)))
else
CYGDRV ?= $(shell cygpath -u c:)/..
ALIBVPATH = $(subst : ,,$(patsubst %:,$(CYGDRV)/%:,$(subst :,: ,$(ALIBRARY_DIRS))))
endif
vpath %.a $(ALIBVPATH)
vpath %.o $(ALIBVPATH)
INCLUDE_DIRS = $(subst \ -I,\ ,$(addprefix -I,$(AINCLUDE_DIRS)))
LIBRARY_DIRS = $(subst \ -L,\ ,$(addprefix --userlibpath ,$(ALIBRARY_DIRS)))
LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES)))
INCLUDES = -I. $(INCLUDE_DIRS)
ifdef MSYSTEM # for MinGW32
QUOTE ='
else
QUOTE ="
endif
#----------------------------------------------------------------------------
.PRECIOUS: $(OBJDIR)/%.o $(BINDIR)/%.nef $(LCFILE)
#
# Generate dependency files
#
DEPEND_RULE = $(QUOTE)s/^\(.*\)\s\(.*\)$$/&\n\2:/;$(QUOTE)
define MOVE_SRC_DEPEND
$(SED) -e $(DEPEND_RULE) $(*F).d > $(DEPENDDIR)/$(*F).d && $(RM) $(*F).d
endef
# .c
$(OBJS_CC):%.o:
$(CC) $(CCFLAGS) $(INCLUDES) -c $(shell cygpath -m $<) --depend_format=unix_escaped --depend $(*F).d -o $@
@$(MOVE_SRC_DEPEND)
# .cpp
$(OBJS_CXX):%.o:
$(CC) $(CXXFLAGS) $(INCLUDES) -c $(shell cygpath -m $<) --depend_format=unix_escaped --depend $(*F).d -o $@
@$(MOVE_SRC_DEPEND)
# .s
$(OBJS_AS):%.o:
$(AS) $(ASFLAGS) --depend $(*F).d -o $@ $(shell cygpath -m $<)
@$(MOVE_SRC_DEPEND)
# .lcf .par
ifdef LCFILE_SPEC
ADDRESS_DTCM ?= $(DEFAULT_ADDRESS_DTCM)
# exporting
MAKELCF_DEFS = -DCTRSDK_ROOT='$(ROOT)' \
-DTARGET_NAME='$(TARGET_NAME)' \
-DOBJS_STATIC='$(OBJS_STATIC)' \
-DOBJS_AUTOLOAD='$(OBJS_AUTOLOAD)' \
-DOBJS_OVERLAY='$(OBJS_OVERLAY)' \
-DGLIBS='$(GLIBRARIES)' \
-DLLIBS='$(LLIBRARIES)' \
-DCW_LIBS='$(SN_LIBS)' \
-DOBJDIR='$(OBJDIR)' \
-DLIBDIR='$(LIBDIR)' \
-DBINDIR='$(BINDIR)' \
-DPROC='$(CODEGEN_PROC)' \
-DPLATFORM='$(CTR_PLATFORM)' \
-DCODEGEN='$(CODEGEN_ARCH)' \
-DBUILD='$(CTR_BUILD_DIR)' \
-DADDRESS_DTCM='$(ADDRESS_DTCM)'
MAKELCF_OPTS = $(MAKELCF_FLAGS) $(MAKELCF_DEFS)
$(LCFILE_AUTOGEN): $(LCFILE_TEMPLATE) $(MAKEFILE) $(LDEPENDS_LCF)
$(CC) $(CCFLAGS) $(INCLUDES) -E -o $(LCFILE_AUTOGEN) $(LCFILE_TEMPLATE)
$(LDRES_AUTOGEN): $(LCFILE_SPEC) $(LDRES_TEMPLATE) $(MAKEFILE) $(LDEPENDS_RES)
$(MAKELCF) $(MAKELCF_OPTS) $< $(LDRES_TEMPLATE) $@
endif
# compress/digest
ifeq ($(CODEGEN_PROC),ARM11)
ifdef CTR_COMPRESS
COMPSTATIC_CMDS = -11 -c
#COMPSTATIC_CMDS = -9 -c
endif
ifdef CTR_DIGEST
COMPSTATIC_CMDS += -a
endif
endif
ifdef COMPSTATIC_CMDS
COMPSUFFIX ?= $(DEFAULT_COMPSUFFIX)
ifneq ($(COMPSUFFIX),)
COMPSTATIC_FLAGS += -e$(COMPSUFFIX)
endif
endif
# .nef
ifndef USE_MY_RULE_NEF
$(BINDIR)/$(TARGET_BIN_BASENAME).nef: $(OBJS) $(MAKEFILE) $(LDEPENDS_NEF) $(LDRES_FILE) $(ALIBRARIES)
# $(LD) $(LDFLAGS) -T $(LCFILE) -LSF $(LCFILE_SPEC) -Map $@.xMAP $(LIBRARY_DIRS) @$(LDRES_FILE) -o $@
$(LD) $(LDFLAGS) -T $(LCFILE) -Map $@.xMAP $(LIBRARY_DIRS) @$(LDRES_FILE) -o $@
ifdef COMPSTATIC_CMDS
$(COMPSTATIC) $(COMPSTATIC_CMDS) $(COMPSTATIC_FLAGS) -f $(BINDIR)/component.files $(CTR_STDOUT)
endif
endif
# .a
ifndef USE_MY_RULE_A
$(LIBDIR)/$(TARGET_LIB): $(OBJS) $(MAKEFILE)
$(AR) $(ARFLAGS) $@ $(OBJS)
endif
#----- End of modulerules.cctype.RVCT -----

View File

@ -0,0 +1,41 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - buildtools - debugger dependant settings for ISDbgr
# File: modulerules.emtype.ISD
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Run command for IS-NITRO-EMULATOR
#----------------------------------------------------------------------------
ifneq ($(TARGET_ROM),)
.PHONY: run test-run
run:
@if [ -e "$(ISD_NITLOAD_GCC)" ]; \
then \
$(ISD_NITLOAD_GCC) -p $(BINDIR)/$(firstword $(TARGET_BIN)); \
else \
$(ISD_NITLOAD) -p $(BINDIR)/$(firstword $(TARGET_BIN)); \
fi
#test-run:
# @echo ==== $(CURDIR) > $(AUTOTESTLOG).tmp
# @echo :TEST-TARGET: [$(BINDIR)/$(firstword $(TARGET_BIN))] >> $(AUTOTESTLOG).tmp
# @echo >> $(AUTOTESTLOG).tmp
# cscript $(NITRO_TOOLSDIR)/bin/runEmu.js //Nologo //T:60 $(BINDIR)/$(firstword $(TARGET_BIN)) $(AUTOTESTLOG).tmp
# @gawk '/<AUTO-TEST> / || NR <= 30' $(AUTOTESTLOG).tmp >> $(AUTOTESTLOG)
# @echo >> $(AUTOTESTLOG)
endif
#----- End of modulerules.emtype.ISD -----

View File

@ -0,0 +1,158 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - modulerules - common rules for build system
# File: modulerules.x86
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Implicit RULES
#----------------------------------------------------------------------------
WARNING = -Wall
LEX = flex
YACC = bison -y
# workaround for flex gen code to avoid warnings
%.yy.o:WARNING += -Wno-unused-label -Wno-unused-function
ifdef DEBUG
MACROS += -DDEBUG -g
endif
ifdef CTR_DEBUG
MACROS += -g
endif
define COMPILE_C
$(CC_X86) $(MACROS) -DSDK_WIN32 $(WARNING) -c -I. -I$(CTR_INCDIR) $< -o $@
endef
define COMPILE_CXX
$(CXX_X86) $(MACROS) -DSDK_WIN32 $(WARNING) -c -I. -I$(CTR_INCDIR) $< -o $@
endef
%.o: %.c
$(COMPILE_C)
%.o: %.cpp
$(COMPILE_CXX)
%.yy.c: %.l
$(LEX) -P$(basename $<)_yy -o$@ $<
%.tab.c: %.y
$(YACC) -d -p $(basename $<)_yy -b $(basename $<) $<
%.tab.h: %.tab.c
#----------------------------------------------------------------------------
# MAKE TARGETS
#----------------------------------------------------------------------------
.PHONY: all default build do-build install do-install \
clean clobber super-clobber
#----------------------------------------------------------------------------
define MAKE_SUBDIR
+$(foreach DIR,$(SUBDIRS),$(MAKE) -C $(DIR) $(MAKECMDGOALS) $(AND)) true
+$(foreach FILE,$(SUBMAKES),$(MAKE) -C $(dir $(FILE)) -f $(notdir $(FILE)) $(MAKECMDGOALS) $(AND)) true
endef
ifeq ($(MAKEFILE),Makefile)
MAKEFILE_ =
else
MAKEFILE_ = /$(MAKEFILE)
endif
define ECHO_CURDIR
$(ECHO) "==== $(CURDIR)$(MAKEFILE_)";
endef
#----------------------------------------------------------------------------
# make build
#----------------------------------------------------------------------------
build:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifdef TARGETS
ifdef NEWDIRS
@$(MKDIRP) $(NEWDIRS)
endif
@+$(REMAKE) do-build
ifdef INSTALL_TARGETS
@+$(REMAKE) do-install
endif
endif
#----------------------------------------------------------------------------
# make install
#----------------------------------------------------------------------------
install:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
ifdef INSTALL_TARGETS
@+$(REMAKE) do-install
endif
define DO_INSTALL
$(INSTALL) -d $(INSTALL_DIR) $(AND) \
$(foreach FILE, $(INSTALL_TARGETS), \
if [ ! -e $(INSTALL_DIR)/$(notdir $(FILE)) -o \
$(FILE) -nt $(INSTALL_DIR)/$(notdir $(FILE)) ]; \
then \
$(ECHO) " install: $(FILE) -> $(INSTALL_DIR)" $(AND) \
$(INSTALL) $(FILE) $(INSTALL_DIR)/$(notdir $(FILE)); \
fi $(AND) ) true
endef
do-install:
@$(DO_INSTALL)
#----------------------------------------------------------------------------
# make do-autotest
#----------------------------------------------------------------------------
do-autotest:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
#----------------------------------------------------------------------------
# make clobber & clean
#----------------------------------------------------------------------------
super-clobber clobber:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN)
-$(RM) $(GDIRT_CLOBBER) $(LDIRT_CLOBBER)
-$(RM) $(GDIRT_INSTALLED)
#----------------------------------------------------------------------------
clean:
@$(MAKE_SUBDIR)
@$(ECHO_CURDIR)
-$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN)
#----- End of modulerules -----

View File

@ -0,0 +1,80 @@
#!/usr/bin/perl
##############################################################################
#
# Project: CtrSDK - code formatter-
# File: sdk_indent.pl
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: sdk_indent.pl,v $
# Revision 1.2 2004/02/05 07:09:01 yasu
# change SDK prefix iris -> nitro
#
# Revision 1.1 2003/12/01 11:17:08 nishida_kenji
# 新規
#
# $NoKeywords: $
##############################################################################
foreach $filename (@ARGV) {
print STDERR "processing $filename\n";
open INFILE, "$filename" or die "cannot open infile $filename\n";
$intext = "";
while(<INFILE>) {
$intext .= $_;
}
close(INFILE);
next if ($intext =~ m/\Wasm\W/s); #asmがあったら何もしない
{
# intext処理部
$intext =~ s/extern\s+\"C\"[^{]*\{/extern \"C\";/s; # extern "C" {のカッコが邪魔
$intext =~ s/\#ifdef\s+__cplusplus\s+\}/\#ifdef __cplusplus\n\/* \} *\//s;
}
{
# open2がおかしいのでベタに書くことにする
open OUTFILE, ">indent.tmp" or die "cannot open outfile indent.tmp\n";
print OUTFILE $intext;
close(OUTFILE);
}
$tpdefs = "\
-T BOOL -T f64 -T u64 -T s64 -T f32 -T u32 -T s32 -T u16 -T s16 -T u8 -T s8 \
-T VecFx16 -T VecFx32 -T OS_Thread -T OS_Mutex -T OS_MessageQueue -T OS_Context \
-T MtxFx44 -T MtxFx43 -T MtxFx33 -T MtxFx22 -T LockWord -T LockByte -T G3XMiscStatus \
-T G3DLInfo -T G3BoxTestParam -T G2OamAttr -T G2OamAffine -T fxdiv_ -T fx64Tmp_ \
-T G2ENUM_OAM_SHAPE";
system "indent -bap -bbo -bli0 -bls -c60 -cd60 -cli0 -cp8 -nbfda -i4 -l120 -lc120 -lps -nbc -ncs -npsl -nsob -nut -npcs -nprs -saf -sai -saw -ss $tdefs indent.tmp";
open INFILE2, "indent.tmp" or die "cannot open infile indent.tmp\n";
$outtext = "";
while(<INFILE2>) {
$outtext .= $_;
}
unlink("indent.tmp");
unlink("indent.tmp~");
close(INFILE2);
{
# outtext処理部
$outtext =~ s/extern\s+\"C\";/extern \"C\" \{/s; # extern "C" {のカッコをつける
$outtext =~ s/\#ifdef\s+__cplusplus\s+\/\* \} \*\//\#ifdef __cplusplus\n\}/s;
}
open OUTFILE2, ">$filename" or die "cannot open outfile $filename\n";
print OUTFILE2 $outtext;
close(OUTFILE2);
}

View File

@ -0,0 +1,15 @@
/*---------------------------------------------------------------------------*
Project: NitroSDK - OS -
File: XXXXXXXX.c
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/

View File

@ -0,0 +1,12 @@
/*---------------------------------------------------------------------------*
Name: OSExceptionInit
Description: Performs exception initialization.
- installs the first level exception handlers
- set up exception table and common exception handler
Arguments: installDBIntegrator if TRUE, copy OSDBIntegrator into
low memory.
Returns: None.
*---------------------------------------------------------------------------*/

View File

@ -0,0 +1,40 @@
#! make -f
#----------------------------------------------------------------------------
# Project: NitroSDK - -
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
SRCS = main.c
TARGET_BIN = main.srl
#SRCDIR = # using default
#LCFILE = # using default
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(CTRSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,44 @@
#! make -f
#----------------------------------------------------------------------------
# Project: NitroSDK - -
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
# Codegen for sub processer
CODEGEN_PROC = ARM9
SRCS = main.c
TARGET_BIN = main.srl
#SRCDIR =
#LCFILE =
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(CTRSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,31 @@
#! make -f
#----------------------------------------------------------------------------
# Project: NitroSDK - -
# File: Makefile
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
include $(CTRSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,3 @@
SDK_CW_BUILD_VERSION_CC=3.0
SDK_CW_BUILD_NUMBER_CC=137
SDK_CW_BUILD_NUMBER2_CC=13700

View File

@ -0,0 +1,3 @@
SDK_CW_BUILD_VERSION_LD=2.0
SDK_CW_BUILD_NUMBER_LD=87
SDK_CW_BUILD_NUMBER2_LD=8700

View File

@ -0,0 +1,20 @@
#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - versiondefs
# File: versiondefs
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded insructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
-include $(NITROSDK_ROOT)/include/nitro/version.h
#===== End of versiondefs =====

17
trunk/setup Normal file
View File

@ -0,0 +1,17 @@
#!/usr/bin/bash
#----------------------------------------------------------------
# This script is not for execute directly.
# Please use 'source ./setup'.
#----------------------------------------------------------------
export CTRFIRM_ROOT=`cygpath -m $PWD`
export CTRBROM_ROOT=$CTRFIRM_ROOT/bootrom
export CTRSDK_ROOT=$CTRFIRM_ROOT
export CYGPATH_NOCMD='TRUE'
echo "Set CTRFIRM_ROOT: $CTRFIRM_ROOT"
echo "Set CTRBROM_ROOT: $CTRBROM_ROOT"
echo "Set CTRSDK_ROOT: $CTRSDK_ROOT"
echo "Set CYGPATH_NOCMD: $CYGPATH_NOCMD"