From 3a8df327b078362ec31049033e18516d9dbc2d12 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 28 Aug 2008 09:34:38 +0000 Subject: [PATCH] =?UTF-8?q?CARD=20ROM=20HEADER=E3=82=92=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=A0=E3=81=91=E3=81=AE=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=83=A9=E3=83=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2310 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../CardRomHeaderChecker/Card/Makefile | 51 ++++ .../CardRomHeaderChecker/Card/ROM-TS.rsf | 196 ++++++++++++++ build/debugsoft/CardRomHeaderChecker/Makefile | 35 +++ .../CardRomHeaderChecker/Nand/Makefile | 52 ++++ .../CardRomHeaderChecker/Nand/ROM-TS_nand.rsf | 243 ++++++++++++++++++ .../common/0CAA/libsyscall.a | Bin 0 -> 3132 bytes .../common/0CAA/rom_header_0caa.template.sbin | Bin 0 -> 16384 bytes .../common/banner/Makefile | 49 ++++ .../common/banner/banner_v3.bsf | Bin 0 -> 996 bytes .../common/banner/icon/gameIcon.bmp | Bin 0 -> 630 bytes .../CardRomHeaderChecker/common/src/main.c | 94 +++++++ 11 files changed, 720 insertions(+) create mode 100644 build/debugsoft/CardRomHeaderChecker/Card/Makefile create mode 100644 build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf create mode 100644 build/debugsoft/CardRomHeaderChecker/Makefile create mode 100644 build/debugsoft/CardRomHeaderChecker/Nand/Makefile create mode 100644 build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.rsf create mode 100644 build/debugsoft/CardRomHeaderChecker/common/0CAA/libsyscall.a create mode 100644 build/debugsoft/CardRomHeaderChecker/common/0CAA/rom_header_0caa.template.sbin create mode 100644 build/debugsoft/CardRomHeaderChecker/common/banner/Makefile create mode 100644 build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf create mode 100644 build/debugsoft/CardRomHeaderChecker/common/banner/icon/gameIcon.bmp create mode 100644 build/debugsoft/CardRomHeaderChecker/common/src/main.c diff --git a/build/debugsoft/CardRomHeaderChecker/Card/Makefile b/build/debugsoft/CardRomHeaderChecker/Card/Makefile new file mode 100644 index 00000000..b3fc5974 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/Card/Makefile @@ -0,0 +1,51 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - tests - appjumpTest - Card +# 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. +# +# $Date:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- + +TARGET_PLATFORM := TWL + +SUBDIRS = ../common/banner \ + $(ROOT)/build/demos/gx/UnitTours/DEMOLib + +TARGET_BIN = CardRomHeaderChecker.srl +#INCDIR = ../common/include +SRCDIR = ../common/src +SRCS = main.c + +ROM_SPEC = ./ROM-TS.rsf + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs +include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib + +# インストール指定 +ifneq ($(TWL_IPL_RED_ROOT),) +INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/CardRomHeaderChecker +INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) +endif + + +do-build: $(TARGETS) + +#---------------------------------------------------------------------------- + +LIBSYSCALL = ../common/0CAA/libsyscall.a + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + +#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf b/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf new file mode 100644 index 00000000..03f8d658 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/Card/ROM-TS.rsf @@ -0,0 +1,196 @@ +#---------------------------------------------------------------------------- +# Project: TwlSDK - include +# File: ROM-TS.rsf +# +# 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:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- +# +# TWL ROM SPEC FILE +# + +Arm9 +{ + Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" + Elf "$(MAKEROM_ARM9:r).tef" +} + +Arm7 +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" + Elf "$(MAKEROM_ARM7_BASE:r).tef" +} + +Arm9.Ltd +{ + Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" +} + +Arm7.Ltd +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" +} + +Property +{ + ### + ### Settings for FinalROM + ### + #### BEGIN + # + # TITLE NAME: Your product name within 12bytes + # + TitleName "CardRH Check" + + # + # MAKER CODE: Your company ID# in 2 ascii words + # issued by NINTENDO + # + #MakerCode "00" + + # + # REMASTER VERSION: Mastering version + # + #RomVersion 0 + + # + # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] + # + RomSpeedType $(MAKEROM_ROMSPEED) + + # + # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] + # + #RomSize 256M + + # + # ROM PADDING: TRUE if finalrom + # + #RomFootPadding TRUE + + # + # ROM HEADER TEMPLATE: Provided to every product by NINTENDO + # + RomHeaderTemplate ../common/0CAA/rom_header_0caa.template.sbin + + # + # BANNER FILE: generated from Banner Spec File + # + BannerFile ../common/banner/banner.bnr + + ### + ### Setting for TWL + ### + + # + # ROM HEADER Ltd: Provided to every product by NINTENDO + # + RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin + + # + # Digest parameters: + # + DigestParam 1024 32 + + # + # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD + # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] + # don't have to edit + # + WramMapping $(MAKEROM_WRAM_MAPPING) + + # + # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] + # + CardRegion ALL + + # + # Codec mode: + # don't have to edit + # + CodecMode $(MAKEROM_CODEC_MODE) + + # + # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] + # + #WiFiConnectionIcon FALSE + + # + # Disp DSWireless Icon for Launcher [TRUE/FALSE] + # + #DSWirelessIcon FALSE + + # + # Agree EULA [TRUE/FALSE] + # + #AgreeEULA FALSE + + # + # Agree EULA version [1 - 255] + # + #AgreeEULAVersion 1 + + ### + #### END +} + +RomSpec +{ + Offset 0x00000000 + Segment ALL + HostRoot $(MAKEROM_ROMROOT) + Root / + File $(MAKEROM_ROMFILES) +} + +Rating +{ + # + # Permited age to play for each rating organization + # + # Supported organization + # - CERO (OGN0) : for Japan + # - ESRB (OGN1) : for North America + # - BBFC (OGN2) : obsolete organization + # - USK (OGN3) : for German + # - PEGI_GEN (OGN4) : for Europe + # - PEGI_FINLAND (OGN5) : obsolete organization + # - PEGI_PRT (OGN6) : for Portugal + # - PEGI_BBFC (OGN7) : for UK + # - OFLC (OGN8) : for Australia and NewZealand + # - GRB (OGN9) : for Korea + # - OGN10 : reserved + # - OGN11 : reserved + # - OGN12 : reserved + # - OGN13 : reserved + # - OGN14 : reserved + # - OGN15 : reserved + # + # Available age [ 0 - 31 / PENDING / FREE ] + + CERO FREE +# ESRB FREE +# USK FREE +# PEGI_GEN FREE +# PEGI_PRT FREE +# PEGI_BBFC FREE +# OFLC FREE +# GRB FREE +} diff --git a/build/debugsoft/CardRomHeaderChecker/Makefile b/build/debugsoft/CardRomHeaderChecker/Makefile new file mode 100644 index 00000000..d5d8dc26 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/Makefile @@ -0,0 +1,35 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - debugsoft - ApplicationJump +# 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. +# +# $Date:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- +TARGET_PLATFORM = TWL + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +SUBDIRS = Card \ + Nand + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- + +#===== End of Makefile ===== + + diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/Makefile b/build/debugsoft/CardRomHeaderChecker/Nand/Makefile new file mode 100644 index 00000000..841b2d18 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/Nand/Makefile @@ -0,0 +1,52 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - tests - appjumpTest - Card +# 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. +# +# $Date:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- + +TARGET_PLATFORM := TWL +TWL_NANDAPP := TRUE + +SUBDIRS = ../common/banner \ + $(ROOT)/build/demos/gx/UnitTours/DEMOLib + +TARGET_BIN = CardRomHeaderChecker.tad +#INCDIR = ../common/include +SRCDIR = ../common/src +SRCS = main.c + +ROM_SPEC = ./ROM-TS_nand.rsf + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs +include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib + +# インストール指定 +ifneq ($(TWL_IPL_RED_ROOT),) +INSTALL_DIR = $(TWL_IPL_RED_ROOT)/debugsoft/CardRomHeaderChecker +INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) +endif + + +do-build: $(TARGETS) + +#---------------------------------------------------------------------------- + +LIBSYSCALL = ../common/0CAA/libsyscall.a + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + +#===== End of Makefile ===== diff --git a/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.rsf b/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.rsf new file mode 100644 index 00000000..746fee8c --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/Nand/ROM-TS_nand.rsf @@ -0,0 +1,243 @@ +#---------------------------------------------------------------------------- +# Project: TwlSDK - include +# File: ROM-TS.rsf +# +# 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:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- +# +# TWL ROM SPEC FILE +# + +Arm9 +{ + Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" + Elf "$(MAKEROM_ARM9:r).tef" +} + +Arm7 +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" + Elf "$(MAKEROM_ARM7_BASE:r).tef" +} + +Arm9.Ltd +{ + Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" +} + +Arm7.Ltd +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" +} + +Property +{ + ### + ### Settings for FinalROM + ### + #### BEGIN + # + # TITLE NAME: Your product name within 12bytes + # + TitleName "CardRH Check" + + # + # MAKER CODE: Your company ID# in 2 ascii words + # issued by NINTENDO + # + #MakerCode "00" + + # + # REMASTER VERSION: Mastering version + # + #RomVersion 0 + + # + # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] + # + RomSpeedType $(MAKEROM_ROMSPEED) + + # + # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] + # + #RomSize 256M + + # + # ROM PADDING: TRUE if finalrom + # + #RomFootPadding TRUE + + # + # ROM HEADER TEMPLATE: Provided to every product by NINTENDO + # + RomHeaderTemplate ../common/0CAA/rom_header_0caa.template.sbin + + # + # BANNER FILE: generated from Banner Spec File + # + BannerFile ../common/banner/banner.bnr + + # + # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] + # + #PermitLandingNormalJump FALSE + + # + # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] + # + #PermitLandingTmpJump FALSE + + ### + ### Setting for TWL + ### + + # + # ROM HEADER Ltd: Provided to every product by NINTENDO + # + RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin + + # + # Digest parameters: + # + DigestParam 1024 32 + + # + # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD + # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] + # don't have to edit + # + WramMapping $(MAKEROM_WRAM_MAPPING) + + # + # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] + # + CardRegion ALL + + # + # Codec mode: + # don't have to edit + # + CodecMode $(MAKEROM_CODEC_MODE) + + # + # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] + # + #WiFiConnectionIcon FALSE + + # + # Disp DSWireless Icon for Launcher [TRUE/FALSE] + # + #DSWirelessIcon FALSE + + # + # Agree EULA [TRUE/FALSE] + # + #AgreeEULA FALSE + + # + # Agree EULA version [1 - 255] + # + #AgreeEULAVersion 1 + + ### + #### END +} + +AppendProperty +{ + # + # Boot allowed Media: [GameCard] + # + Media NAND + + # + # GameCode for TitleID : Your GameCode in 4 ascii words + # + #GameCode ABCJ + + # + # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] + # + #PublicSaveDataSize 0K + + # + # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] + # + #PrivateSaveDataSize 0K + + # + # Enable SubBannerFile + #SubBannerFile TRUE + + # + # Game card power on: [TRUE/FALSE] + # + #GameCardOn FALSE + + # + # Game card transferd to nitro mode: [TRUE/FALSE] + # + #GameCardNitroMode FALSE +} + +RomSpec +{ + Offset 0x00000000 + Segment ALL + HostRoot $(MAKEROM_ROMROOT) + Root / + File $(MAKEROM_ROMFILES) +} + +Rating +{ + # + # Permited age to play for each rating organization + # + # Supported organization + # - CERO (OGN0) : for Japan + # - ESRB (OGN1) : for North America + # - BBFC (OGN2) : obsolete organization + # - USK (OGN3) : for German + # - PEGI_GEN (OGN4) : for Europe + # - PEGI_FINLAND (OGN5) : obsolete organization + # - PEGI_PRT (OGN6) : for Portugal + # - PEGI_BBFC (OGN7) : for UK + # - OFLC (OGN8) : for Australia and NewZealand + # - GRB (OGN9) : for Korea + # - OGN10 : reserved + # - OGN11 : reserved + # - OGN12 : reserved + # - OGN13 : reserved + # - OGN14 : reserved + # - OGN15 : reserved + # + # Available age [ 0 - 31 / PENDING / FREE ] + + CERO FREE +# ESRB FREE +# USK FREE +# PEGI_GEN FREE +# PEGI_PRT FREE +# PEGI_BBFC FREE +# OFLC FREE +# GRB FREE +} diff --git a/build/debugsoft/CardRomHeaderChecker/common/0CAA/libsyscall.a b/build/debugsoft/CardRomHeaderChecker/common/0CAA/libsyscall.a new file mode 100644 index 0000000000000000000000000000000000000000..d48f7df64767be8e094984164ec30735dc48b0c2 GIT binary patch literal 3132 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 BCXfIC literal 0 HcmV?d00001 diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile b/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile new file mode 100644 index 00000000..1f8aa1d4 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/common/banner/Makefile @@ -0,0 +1,49 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# 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. +# +# $Date:: $ +# $Rev$ +# $Author$ +#---------------------------------------------------------------------------- + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + +ICON_DIR = ./icon + +BANNER_ICON = $(ICON_DIR)/gameIcon.bmp +BANNER_SPEC = banner_v3.bsf + +TARGETS = banner.bnr +INSTALL_DIR = ./ +INSTALL_TARGETS = $(TARGETS) + +BANNER_ICON_NAME = $(basename $(BANNER_ICON)) + +LDIRT_CLEAN = $(TARGETS) \ + $(BANNER_ICON_NAME).nbfs \ + $(BANNER_ICON_NAME).nbfc \ + $(BANNER_ICON_NAME).nbfp \ + $(TARGETS:.bnr=.srl) + +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- +# build +#---------------------------------------------------------------------------- +do-build: $(TARGETS) + +$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) + $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ + $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) + +# diff --git a/build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf b/build/debugsoft/CardRomHeaderChecker/common/banner/banner_v3.bsf new file mode 100644 index 0000000000000000000000000000000000000000..427fb48c166798ec3213513d3982498b0b586646 GIT binary patch literal 996 zcmc(e&rZTX5XQf&B)-EYoWU3p4;&#>G@`~L_odaeu~bv4#Ftlpv&$3gL9)qo{(U>& z>`Z@uhMFl?CZ|z24%@5cyr{#Q>jSMo%T%jDKi5FRV|K*+kBoJl)~aB#htcbik<(6} zczS$W7&;x`USs!IEp{Db0n!uM<)tJIjxhKSb}8)Mt=@fE~(DqpPI$(Q>ootz~S|L6m5{iauHE^#eDPA{qH4C()U$!JjF}lEfLO+8J||L!NRbbT!g5Xj8;}PAcnd^lLFJG3Nye biM1q|4&}dNEpFD6SHq|ur1jIB=a0ApQ*xyk literal 0 HcmV?d00001 diff --git a/build/debugsoft/CardRomHeaderChecker/common/src/main.c b/build/debugsoft/CardRomHeaderChecker/common/src/main.c new file mode 100644 index 00000000..96d2f6a0 --- /dev/null +++ b/build/debugsoft/CardRomHeaderChecker/common/src/main.c @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------* + Project: TwlSDK - template - demos + File: main.c + + Copyright 2003-2005,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:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ +#include +#include +#include +#include "DEMO.h" + +#define LABEL_COLOR (GX_RGBA(0, 31, 31, 1)) +#define VALUE_COLOR (GX_RGBA(31, 31, 31, 1)) + +void TwlMain(void) +{ + ROM_Header *prh; + char str[100]; + u16 row = 0; + u16 shift = 16; + + OS_Init(); + (void)OS_EnableIrq(); + (void)OS_EnableInterrupts(); + + // この固定メモリアドレスにカードROMヘッダがある + prh = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; + + DEMOInitCommon(); + DEMOInitVRAM(); + DEMOInitDisplayBitmap(); + DEMOHookConsole(); + + DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); + DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); + DEMOStartDisplay(); + + DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); + DEMODrawText( 8, 0, "Card ROM Header Checker" ); + + row = 24; + DEMOSetBitmapTextColor(LABEL_COLOR); + DEMODrawText( 8, row, "Title Name: " ); + MI_CpuClear8( str, 100 ); + MI_CpuCopy8( prh->s.title_name, str, TITLE_NAME_MAX ); + DEMOSetBitmapTextColor(VALUE_COLOR); + DEMODrawText( 96, row, str ); + row += shift; + + DEMOSetBitmapTextColor(LABEL_COLOR); + DEMODrawText( 8, row, "Game Code: " ); + MI_CpuClear8( str, 100 ); + MI_CpuCopy8( prh->s.game_code, str, GAME_CODE_MAX ); + DEMOSetBitmapTextColor(VALUE_COLOR); + DEMODrawText( 96, row, str ); + row += shift; + + DEMOSetBitmapTextColor(LABEL_COLOR); + DEMODrawText( 8, row, "TitleID_Hi: " ); + prh = (ROM_Header*)HW_TWL_CARD_ROM_HEADER_BUF; + DEMOSetBitmapTextColor(VALUE_COLOR); + DEMODrawText( 96, row, "0x%08x", prh->s.titleID_Hi ); + row += shift; + + DEMOSetBitmapTextColor(LABEL_COLOR); + DEMODrawText( 8, row, "TitleID_Lo: " ); + MI_CpuClear8( str, 100 ); + MI_CpuCopy8( prh->s.titleID_Lo, str, 4 ); + DEMOSetBitmapTextColor(VALUE_COLOR); + DEMODrawText( 96, row, str ); + row += shift; + + row += shift; + DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); + DEMODrawText( 8, row, "End." ); + + while (1) + { + DEMO_DrawFlip(); + OS_WaitVBlankIntr(); + } +} + +/*====== End of main.c ======*/